Обнаружение определенной широты / долготы в штате США - PullRequest
1 голос
/ 24 марта 2011

Я знаю, что большинство людей увидят этот вопрос и укажут мне на геокод Google - но я ищу математическую формулу, которая позволяет кому-то взять точку широты и долготы и посмотреть, находится ли она внутри штата США (или ограничивающей границы).коробка).Есть ли способ через PHP, что я могу сделать расчет, чтобы увидеть, находится ли точка в определенной коробке (например, Калифорния)?

Ответы [ 2 ]

1 голос
/ 24 марта 2011

Ну, нет формулы, которая скажет вам что-нибудь о том, где находятся штаты (это было бы спойлером по поводу итогов войны между США и Мексикой, если бы она была!) Так что вам нужно получить это данные откуда-то.

Это превращается в одну из двух проблем, в зависимости от степени точности, которую вы хотите.

Если у вас есть детали прямоугольника, который показан прямоугольным при отображении на Меркаторе или аналогичной проекции (т. Е. Он имеет градусы широты для севера и юга и долготы для востока и запада), тогда формула будет просто :

inBox = latitude <= north && latitude >= south && longitude <= west && longitude >= east

Если у вас есть больше деталей, и у вас есть ряд точек, которые определяют границу состояния (очевидно, чем больше точек, тем больше точность), то это становится вариантом задачи точка-многоугольник с гарантией только с участием простых полигонов (ни один штат США не имеет границы, которая пересекает себя, и не полностью окружает то, что использовалось в этом коде C . Возможно, что будут крайние случаи, затронутые фактом, что это 2D- плоский алгоритм, а не сферический, но я полагаю, что вам понадобятся довольно точные данные о границах состояний, чтобы погрешность алгоритма была больше, чем вызванная данными.

0 голосов
/ 14 октября 2014

Самый простой способ, который я бы назвал, - это использовать граничную рамку для каждого состояния, которую можно найти в Flicker Geo API, например для CA- https://www.flickr.com/places/info/2347563

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