Реализация поиска объектов по разным атрибутам (пересечения улиц... и т.д.)

flames

Guest
Реализация поиска объектов по разным атрибутам (пересечения улиц... и т.д.)

В частности интересует, как находить нужные объекты из базы по атрибутам (пересечения улиц, "квадрат улиц", район где находится искомый -е объекты, т.е. привязка объектов географически, например, сколько домов на одной улице и т.д.)
1. Интересует логика работы (как правильно построить базы, реализовать поиск и т.д.)
2. Это уже после 1 привязать это к графической карте. (это пока не важно)

Подскажите куда смотреть, кто сталкивался с разработкой подобных вещей.

П.С. Знание PHP начальное. поэтому буду признателен за несильно навороченные ответы.

:)
 

deek

Новичок
> Знание PHP начальное.
php тут никаким боком не относится. указанное можно реализовать на чем угодно. ничего специального в PHP для ГИС не предусмотрено.

google it:
PostGIS + PostgreSQL
Mapinfo SpatialWare + supported DBMS
ESRI ArcSDE + supported DBMS
Oracle 10i Locator
 

flames

Guest
Автор оригинала: deek
> Знание PHP начальное.
php тут никаким боком не относится. указанное можно реализовать на чем угодно. ничего специального в PHP для ГИС не предусмотрено.

google it:
PostGIS + PostgreSQL
Mapinfo SpatialWare + supported DBMS
ESRI ArcSDE + supported DBMS
Oracle 10i Locator
Хотелось бы найти решение основываясь на PHP+MySql не прибегая к дополнительному программному обеспечению.

Вообще-то я спрашивал реализацию алгоритма и баз.

;)

-~{}~ 01.08.05 11:57:

Неужели никто не сталкивался с реализацией похожих проектов?
:confused:
 

deek

Новичок
> Вообще-то я спрашивал реализацию алгоритма и баз.

реализация географических баз данных на основе релиционных СУБД бывает двух видов:

1) поддерживающая стандарты OpenGIS (OGC)
вот, на этой странице: http://www.opengeospatial.org/specs/?page=specs , спецификация называется Simple Features - SQL (SFS)

2) не поддерживающая стандарты OpenGIS, собственная реализация вендора ГИС-системы или СУБД. отличается более мощными возможностями по сравнению с 1).

---

в частности, MySQL частично поддерживает SFS:
http://dev.mysql.com/doc/mysql/en/spatial-extensions-in-mysql.html

PostgreSQL с расширением PostGIS реализует SFS более полно и я бы тебе рекомендовал пользоваться именно им.

---

так как из твоего вопроса непонятно ничего конкретного - какую именно функциональность необходимо реализовать - то больше я тебе ответить вряд ли что-то смогу.
 

flames

Guest
так как из твоего вопроса непонятно ничего конкретного - какую именно функциональность необходимо реализовать - то больше я тебе ответить вряд ли что-то смогу.
функциональность следующая. Есть определенный город(любой), там соответственно много разных улиц.
На улицах есть дома, в которых есть квартиры с разными параметрами(1, 2,3 комн, площадь и т.д.).
Я все "допетрить" немогу, каким образом мне сделать базу, чтобы по параметрам, например по пересечениям улиц по моему выбору (это может быть несколько улиц которые образуют замкнутую фигуру, неважно квадрат, прямоугольник, круг-если улица МКАД какая-нибудь), найти необходимую квартиру, дом или группу квартир, домов которые удовлетворяют выбранным условиям, в данном примере находятся в районе выбранных улиц.

Чувствую что ГИС система не совсем то что нужно для реализации этого решения, может я ошибаюсь.

Направите на путь истинный?
 

deek

Новичок
отвяжись от понятий "улица, дом, группа квартир", и скажи точно, что ты хочешь:

а) найти точки ("дома, квартиры"), попадающие внутрь многоугольника ("несколько улиц которые образуют замкнутую фигуру");

б) найти записи из таблицы houses, находящейся в отношении 1:M c таблицей streets, зная id нескольких записей из таблицы streets.

в первом случае нужны географические алгоритмы, во втором достаточно обычного объединения таблиц на SQL.
 

flames

Guest
Автор оригинала: deek

б) найти записи из таблицы houses, находящейся в отношении 1:M c таблицей streets, зная id нескольких записей из таблицы streets.

достаточно обычного объединения таблиц на SQL.
вот этот помоему больше подходит вариант.

Это выходит, что каждый дом я должен привязать к определенной улице(id) на которой он расположен, близ лежащие улицы от этого дома и т.д. ?

А как тогда найти пересечения улиц?

Ивиняюсь что я опять про дома, просто так объяснять легче...
 

deek

Новичок
второй вариант выглядит так:

streets
----------------------------
id integer primary key,
title varchar

houses
----------------------------
id integer primary key,
street_id integer references streets.id,
house_number integer

в первой таблице хранятся названия улиц. во второй - дома, находящиеся на этих улицах.

что такое "близ лежащие улицы от этого дома и т.д." я не понимаю. напиши четко, по русски, с примерами - что ты хочешь. обязательно - с вариантами собственных решений. начальной информации у тебя уже целый вагон.

ps. или откажись от этой работы, пока еще не поздно.
 

flames

Guest
Автор оригинала: deek
второй вариант выглядит так:

streets
----------------------------
id integer primary key,
title varchar

houses
----------------------------
id integer primary key,
street_id integer references streets.id,
house_number integer

в первой таблице хранятся названия улиц. во второй - дома, находящиеся на этих улицах.

что такое "близ лежащие улицы от этого дома и т.д." я не понимаю. напиши четко, по русски, с примерами - что ты хочешь. обязательно - с вариантами собственных решений. начальной информации у тебя уже целый вагон.

ps. или откажись от этой работы, пока еще не поздно.
Да ты прав, инфы уже выши крыши, буду реализовывать и уже по мере продвижения, я напишу что получается.

П.С. Это не работа, а мой интерес научиться ;-)

Спасибо!
 

Шамиль

Новичок
Делал когда-то сайт для агенства недвижимости и была идея реализовать выделение цветом на карте города улиц.
До конца я её не реализовал, поскольку заказчик оказался слегка жмотистым :) :)
а идея была такая: сидел чувак и в фотошопе снимал координаты начала улицы и её конца по картинке, затем эти координаты забивались в базу и по ним с помощью GD рисовались линеечки на плане, выделяющие нужную улицу. Естественно, к этим точкам было привязано название улицы и прочее, но повторюсь - работа оказалась очень трудоемкая и автоматизировать её не удалось :( хотя то что удалось сделать до того как идею забросили выглядело красиво :)

добавлю еще, что линеечки были ломаными, как и положено нормальной улице в городе :) и пришлось придумывать плавающее количество координат для каждой линеечки. Это уже не сложно.
 

flames

Guest
Автор оригинала: Шамиль
работа оказалась очень трудоемкая и автоматизировать её не удалось :( хотя то что удалось сделать до того как идею забросили выглядело красиво :)
Интересно, остался ли тестовый сайт, где на это можно было взглянуть...
 
Сверху