Используя данные Файла форм для определения окружения для долготы/широты

Я пытаюсь определить окружение для местоположения, на основе свободно опубликованных данных Файла форм Zillow.

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

Кто-либо может указать на меня в правильном направлении? Даже уверенный, где запустить.

Это - то, где я захватил файлы Файла форм: http://www.zillow.com/howto/api/neighborhood-boundaries.htm

6
задан Kunal 17 December 2009 в 01:43
поделиться

2 ответа

Если вы еще не получили ответа по этой теме, предлагаемый вами метод не является самым эффективным. Я постараюсь рассказать, как сделать это более эффективно.

Начните с импорта вашего шейп-файла в базу данных / хранилище данных GeoSpatial.

Шаблон сравнения широта / долгота все еще можно использовать, но он только потребует от вас дополнительной работы. Геопространственные базы данных / хранилища данных предоставляют функции для сравнения геометрии (точки, линии, многоугольники). Вместо использования широты и долготы все типы геометрии хранятся в одном столбце геометрии. Затем функции позволяют сравнивать расстояние, размер, наложение, пересечение и другие сравнения.

Как преобразовывается шейп-файл?

Шейп-файл - это набор табличных данных, названия района и дополнительных полей, а также способ сопоставить эти записи с пространственно представленным местоположением. Это геопространственная база данных в группе файлов. На ум приходит сравнение: кто-то использует доступ в качестве базы данных по сравнению с традиционной серверной базой данных. Доступны наборы инструментов / библиотеки, которые преобразуют шейп-файл в геопространственную базу данных. Вы можете найти дополнительную информацию, выполнив поиск по GDAL.

Надеюсь, это было полезно.

3
ответ дан 9 December 2019 в 20:44
поделиться

Вот пример использования 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 с помощью простого запроса.

9
ответ дан 9 December 2019 в 20:44
поделиться
Другие вопросы по тегам:

Похожие вопросы: