Określ, czy jedna współrzędna jest w promieniu innej

Załóżmy, że mam tabelę wierszy, które zawierają współrzędne.

Jaki byłby najlepszy sposób na wyciągnięcie tylko rzędów współrzędnych, które znajdują się w promieniu innej współrzędnej?

Aby uprościć moje pytanie, podaję następujący przykład:

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

W instrukcji SQL, jak uzyskać wiersze współrzędnych, które są w promieniu Row3 na przykład?

Author: Peter O., 2009-12-13

3 answers

This post pokazuje jak to zrobić w SQL Server.

A oto jak to zrobić w 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
 29
Author: jbochi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-13 13:12:32

Wygląda na to, że wzór odległości wynosi:

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)

Gdzie Y i Z - są punktami każdego wiersza, który chcesz przetestować, a y i z - są punktami przykładowego wiersza.

Więc można zrobić coś takiego:

  1. wybierz każdy wiersz w tabeli i uzyskaj jego lon i lat.
  2. zastosuj zapytanie z to , zmieniając $lon i $lat na Formularz danych punkt 1.
Nie wiem, jak to zrobić w dostępie. Ale ta droga jest tak wąska, jak wolna.
 1
Author: Vasiliy Stavenko,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 10:31:07

Jak to w promieniu? Czy chcesz przejechać w odległości, powiedzmy 5 mil, i znaleźć wszystkie rzędy w promieniu 5 mil od rzędu x?

Sprawdź jeśli tak http://www.microsoft.com/sqlserver/2008/en/us/spatial-data.aspx

 0
Author: Paul Creasey,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2009-12-13 11:27:59