Данные географического региона для стран / штатов / океанов - PullRequest
1 голос
/ 03 сентября 2010

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

Регионы могут быть следующих типов:

  • Континент
  • Страна
  • Озеро
  • Море
  • ДМЗ
  • Пустыня
  • Ледяной шельф

..и так далее.

Я представляю каждый регион в виде многоугольника.Для любой заданной точки я бы проверил, содержится ли она в каждом многоугольнике.Альтернативные идеи очень приветствуются.

Я также надеюсь найти общедоступные наборы данных, которые содержат некоторые или все эти границы.

Некоторые из этих многоугольников будут чрезвычайно детализированы (возможно, более подробно).подробней, чем мне нужно) и поэтому мне нужны советы по эффективному выполнению этих расчетов.Методы для упрощения 2D-полигонов также будут полезны, я ожидаю.Каковы лучшие практики для такого рода вещей?

Кто-нибудь может порекомендовать какие-либо хорошие ресурсы этих данных, какие-либо конкретные подходы к программированию или существующие библиотеки программного обеспечения, которые делают подобные вещи?

EDIT

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

Ответы [ 2 ]

1 голос
/ 04 сентября 2010

Отличным ресурсом является Natural Earth .

Natural Earth - это набор данных карты общего доступа, доступный в масштабе 1: 10 м, 1: 50 м и 1: 110 миллионов. Благодаря тесной интеграции векторных и растровых данных с помощью Natural Earth вы можете создавать разнообразные визуально привлекательные карты с картографией или программным обеспечением ГИС.

Данные предоставляются в виде шейп-файлов ESRI. Существует множество библиотек Shapefile.

Если вы не можете найти поддержку Shapefiles на ваших языках программирования, в этом PDF указан формат файла.

1 голос
/ 03 сентября 2010

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

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

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