География иерархии ресурсов распознавания - PullRequest
0 голосов
/ 25 апреля 2018

В настоящее время я работаю над проектом, включающим географические местоположения, и наша программа должна указать, содержится ли местоположение A в местоположении B. В настоящее время мы делаем это с использованием административных кодов в GeoNames, например, Нью-Йорк содержится в США, потому что онимеет тот же код страны, что и США.Однако этот метод не всегда работает из-за отсутствия данных, и мы рассмотрим другие методы.Если вы можете предоставить информацию относительно любого из следующего, это очень поможет:

  1. Как большинство программ геокодирования ищет информацию об иерархии?Используют ли они административные коды или заглядывают в полигоны?

  2. Как быстро можно проверить, содержится ли полигон A внутри полигона B или пересекается с ним, используя PostGIS или люцен?Я никогда не работал с полигонами - знаете ли вы какие-либо учебные пособия, объясняющие, как их использовать?

  3. Существуют ли доступные ресурсы, которые предоставляют информацию о географических местоположениях полигонов бесплатно?Я думаю, что OpenStreetMap это обеспечивает, но размер planet.osm составляет более 900 ГБ, а наша емкость составляет ~ 30 ГБ.Нам не нужна обширная информация об улицах и адресах, но нам нужно установить иерархию до уровня города / села.Я также изучил DBPedia, но, похоже, он содержит гораздо меньше информации, чем GeoNames

Большое спасибо!

1 Ответ

0 голосов
/ 27 апреля 2018

Вот несколько мыслей по вашим вопросам:

Как большинство программ геокодирования ищет информацию об иерархии? Они используют административные коды или заглядывают в полигоны?

Почти невозможно сказать, как работает большинство программ, но я могу вам сказать, что, если они полагаются только на данные, такие как почтовые индексы, вместо проверки того, находятся ли они внутри заданного пространства и времени, нет необходимости беспокоиться о любая ГИС. Конечно, работа с геокодами намного быстрее, но имеет свои ограничения, когда речь идет о любой пространственной операции, такой как покрытие, касания, перекрытия, пересечения и т. Д.

Как быстро можно проверить, содержится ли многоугольник A внутри многоугольника B или пересекается с ним, используя PostGIS или люцен? Я никогда не работал с полигонами - знаете ли вы какие-либо учебные пособия, объясняющие, как их использовать?

Использование PostGIS абсолютно безболезненно.

Пример : рассмотрим следующий BBOX POLYGON((14.45 35.87,14.56 35.87,14.56 35.80,14.45 35.80,14.45 35.87)):

enter image description here

В этом примере проверяется, находится ли POINT(14.48 35.85) внутри данного многоугольника, с помощью функции ST_Within:

enter image description here

db=# SELECT ST_Within('POINT(14.48 35.85)'::GEOMETRY,'POLYGON((14.45 35.87,14.56 35.87,14.56 35.80,14.45 35.80,14.45 35.87))'::GEOMETRY);
 st_within 
-----------
 t
(1 row)

Теперь тот же эксперимент с использованием POINT(14.35 35.95), который находится за пределами данного многоугольника:

enter image description here

db=# SELECT ST_Within('POINT(14.35 35.95)'::GEOMETRY,'POLYGON((14.45 35.87,14.56 35.87,14.56 35.80,14.45 35.80,14.45 35.87))'::GEOMETRY);
 st_within 
-----------
 f
(1 row)

Имеются ли ресурсы, которые позволяют многоугольникам бесплатно получать информацию о географических точках? Я думаю, что OpenStreetMap предоставляет его, но размер planet.osm составляет более 900 ГБ, а наша емкость в настоящее время составляет ~ 30 ГБ. Нам не нужна обширная информация об улицах и адресах, но нам нужно установить иерархию до уровня города / села. Я также посмотрел на DBPedia, но, похоже, он содержит гораздо меньше информации, чем GeoNames

Это действительно зависит от ваших требований (детализация, точность, охват и т. Д.). В Интернете есть много бесплатных источников шейп-файлов, таких как:

Если вам интересно, как импортировать шейп-файлы в PostGIS, отметьте этот ответ .

Вы можете использовать этот веб-сайт здесь для визуализации ваших WKT (общеизвестных текстов) литералов:

Калитка WKT

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...