Я пытаюсь определить окружение для местоположения, на основе свободно опубликованных данных Файла форм Zillow.
Я ничего действительно не знаю о формате Файла форм, и испытываю некоторые затруднения при нахождении учебных руководств онлайн - но я в основном хочу взять пар широты/долготы и выполнить его против данных Файла форм для определения соответствующего окружения (окружений).
Кто-либо может указать на меня в правильном направлении? Даже уверенный, где запустить.
Это - то, где я захватил файлы Файла форм: http://www.zillow.com/howto/api/neighborhood-boundaries.htm
Если вы еще не получили ответа по этой теме, предлагаемый вами метод не является самым эффективным. Я постараюсь рассказать, как сделать это более эффективно.
Начните с импорта вашего шейп-файла в базу данных / хранилище данных GeoSpatial.
Шаблон сравнения широта / долгота все еще можно использовать, но он только потребует от вас дополнительной работы. Геопространственные базы данных / хранилища данных предоставляют функции для сравнения геометрии (точки, линии, многоугольники). Вместо использования широты и долготы все типы геометрии хранятся в одном столбце геометрии. Затем функции позволяют сравнивать расстояние, размер, наложение, пересечение и другие сравнения.
Как преобразовывается шейп-файл?
Шейп-файл - это набор табличных данных, названия района и дополнительных полей, а также способ сопоставить эти записи с пространственно представленным местоположением. Это геопространственная база данных в группе файлов. На ум приходит сравнение: кто-то использует доступ в качестве базы данных по сравнению с традиционной серверной базой данных. Доступны наборы инструментов / библиотеки, которые преобразуют шейп-файл в геопространственную базу данных. Вы можете найти дополнительную информацию, выполнив поиск по GDAL.
Надеюсь, это было полезно.
Вот пример использования PostGIS, пространственного расширения postgresql. Подобные расширения существуют для mysql, oracle, mssql, sqlite и, без сомнения, других баз данных. Чтобы это работало, необходимо установить PostGIS .
Сначала вы должны преобразовать шейп-файл в файл sql:
fmark@fmark-laptop:~$ shp2pgsql -c Desktop/zillow/ZillowNeighborhoods-AK.shp zillowak > Desktop/zillow/ZillowNeighborhoods-AK.sql
Shapefile type: Polygon
Postgis type: MULTIPOLYGON[2]
Затем запустите sql в базе данных (в данном случае база данных «gis»), чтобы преобразовать файл sql в пространственно разрешенную таблицу:
fmark@fmark-laptop:~$ psql -d gis -f Desktop/zillow/ZillowNeighborhoods-AK.sql
SET
BEGIN
...
COMMIT
На этом вы, вероятно, захотите создать пространственный индекс, поскольку вы собираетесь выполнять пространственный запрос:
fmark@fmark-laptop:~$ psql -d gis
psql (8.4.2)
Type "help" for help.
gis=# CREATE INDEX idx_neighborhoods ON zillowak USING gist(the_geom);
CREATE INDEX
gis-# \q
Теперь, если у вас есть широта / долгота (в этом примере -149.309W, 60.985S), вы можете найти, в каком районе она находится в: fmark @ fmark-laptop: ~ $ psql -d gis psql (8.4.2) Введите "help" для получения справки.
gis=# select gid, state, county, city, name, regionid from zillowak WHERE ST_CONTAINS(the_geom, GeomFromText('POINT(-149.309 60.985)', -1));
gid | state | county | city | name | regionid
-----+-------+-----------+-----------+---------------+----------
29 | AK | Anchorage | Anchorage | Turnagain Arm | 275783
(1 row)
gis=# \q
fmark@fmark-laptop:~$
Этот последний этап, очевидно, можно выполнить из PHP с помощью простого запроса.