Определить, находится ли данный лат / лонг в пределах США - PullRequest
3 голосов
/ 26 августа 2011

Как я могу определить, находится ли данный лат / лонг в пределах США?Я бы хотел, чтобы бэкэнд-код вел себя так, как в США, так и за пределами США.Из-за требований приложения IP Geolocation здесь не вариант.

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

Ответы [ 2 ]

5 голосов
/ 26 августа 2011

Если у вас есть представление США в виде многоугольника, вы можете использовать алгоритм «точка в многоугольнике», например, тест пересечения чисел , чтобы проверить, находится ли точка внутри многоугольника. или нет. Этот тип запроса выполняется за O(n) время для многоугольника с n ребрами.

Если вы хотите что-то более быстрое, но приблизительное, вы можете выполнить (автономно) пространственную декомпозицию своего многоугольника с помощью чего-то вроде квадродерева и определить, какие листовые блоки в дереве лежат в границах. Среднее время выполнения (в режиме онлайн) для поиска вмещающего конечного поля для точки будет тогда O(log(n)) для дерева с n прямоугольниками.

Надеюсь, это поможет.

2 голосов
/ 23 апреля 2018

Если вас все еще интересует вопрос, вы можете скачать шейп-файлы для США.

Например,

https://www.weather.gov/gis/USStates включает все штаты и территории.Таким образом, этот шейп-файл состоит из 57 мультиполигонов.

https://www.census.gov/geo/maps-data/data/cbf/cbf_nation.html имеет шейп-файл, содержащий один мультиполигон.

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

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

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