Определите, находится ли одна координата в радиусе другого

Скажем, у меня есть Таблица строк, которые содержат координаты.

Каков был бы лучший способ вытянуть только строки координат, которые находятся в радиусе другой координаты?

Для упрощения моего вопроса я даю следующий пример:

Table like:
Columns: Latitude, Longitude.
Row1:    23.44444  24.55555
Row2:    32.44444  28.22222
Row3:    35.11111  32.12345

В SQL-операторе, как я получаю строки координат, которые находятся в радиусе Row3, например?

18
задан Peter O. 7 December 2012 в 23:57
поделиться

3 ответа

В этом сообщении показано, как это сделать в SQL Server.

А вот как это сделать в MySQL:

SELECT ((ACOS(SIN($lat * PI() / 180) * SIN(lat * PI() / 180) + 
         COS($lat * PI() / 180) * COS(lat * PI() / 180) * COS(($lon - lon) * 
         PI() / 180)) * 180 / PI()) * 60 * 1.1515) AS distance 
FROM members 
HAVING distance<='10' ORDER BY distance ASC
31
ответ дан 30 November 2019 в 07:49
поделиться

выглядит так, как будто формула расстояния выглядит так:

D = 60* 1.1515 * acos (sin(pi*y/180) * sin(pi*Y/180) +
                       cos(pi*y/180) * cos(pi*Y/180) * cos((z-Z) *pi / 180) 
                 )  * 180 / pi)

где Y и Z - точки каждой строки, которую вы хотите проверить, а y и z - точки примерной строки.

поэтому вы можете сделать такую ​​вещь:

  1. выберите каждую строку в таблице и получите ее долг и широту .
  2. примените запрос из this , изменив $ lon и $ lat в точку 1 формы данных

Я не знаю, как это сделать при доступе. Но этот путь и медленный, и прямой.

1
ответ дан 30 November 2019 в 07:49
поделиться

Что вы имеете в виду, говоря в радиусе? Вы хотите проехать на расстоянии, скажем, 5 миль, и найти все ряды в пределах 5 миль от ряда x?

Проверьте это, если да http://www.microsoft.com/sqlserver/2008/en /us/spatial-data.aspx

0
ответ дан 30 November 2019 в 07:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: