Почтовый индекс Радиус поиска - PullRequest
1 голос
/ 29 марта 2010

Мне интересно, возможно ли найти все точки по долготе и широте в радиусе X одной точки?

Итак, если я предоставлю широту / долготу -76,0000, 38,0000, можно ли просто найти все возможные координаты в пределах (например) радиуса в 10 миль от этого?

Я знаю, что есть способ рассчитать расстояние между двумя точками, поэтому мне не ясно, возможно ли это. Потому что, похоже, вам нужно знать координаты центра (в данном случае -76 и 38), а также координаты любой другой точки, чтобы определить, попадает ли она в указанный радиус. Это правильно?

Ответы [ 4 ]

1 голос
/ 15 июля 2014

Если вы признаете, что Земля является идеальной сферой, вы можете получить пространственные координаты точки с помощью

x = R.cos(Lat).cos(Long)
y = R.cos(Lat).sin(Long)
z = R.sin(Lat)

Теперь возьмем две точки и вычислите угол, который они образуют с центром Земли (используя точечное произведение):

cos(Phi) = (x'.x" + y'.y" + z'.z") / R²

(значение R упрощается).

В вашем случае угловое расстояние Phi равно 2Pi.D / R. (R = 6 378,1 км).

Точка P "находится внутри земного расстояния (D) от P ', когда произведение точек больше , чем cos (Phi).

ВНИМАНИЕ: все углы должны быть в радианах.

1 голос
/ 29 марта 2010

@ Стратегия Дэвида верна, его реализация серьезно испорчена. Я предлагаю, чтобы перед выполнением вычислений вы преобразовали свою широту и длинную пару в координаты UTM и работали с измерениями на расстоянии, а не на углах. Если вы не знакомы с Universal Transverse Mercator, нажмите Google или Wikipedia.

Я считаю, что ваша точка (-76,38) находится на UTM 37C 472995 (восток), 1564346 (север). Итак, вы хотите сделать ваши расчеты расстояния от этой точки. Работая с UTM, вам будет легче работать в метрах, поэтому ваше расстояние составляет (если вы используете статутные мили в 5280 футов) 16040 метров.

Кстати, (-76,38) находится далеко за пределами континентальной части США. Почтовое отделение США определяет почтовые индексы для Антарктики?

0 голосов
/ 29 марта 2010

Кевин прав. Нет оснований для расчета каждой возможной пары координат в радиусе.

Если вы начинаете с центральной точки pC = Point (-76.0000, 38.0000) и проверяете, находится ли произвольная точка pA = Point (Ax, Ay) в радиусе 10 миль ... используйте теорему Пифагора:

xDist = abs( pCx - Ax )
yDist = abs ( pCy - Ay )
r^2 = (xDist)^2 + (yDist)^2

Разумное приближение - запрашивать только те точки, где

pAx >= (-76.0000 - 10.0000) && pAx <= (-76.0000 + 10.0000)
pAy >= ( 38.0000 - 10.0000) && pAy <= ( 38.0000 + 10.0000)

, затем выполните более интенсивный расчет выше.

0 голосов
/ 29 марта 2010

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

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

...