2009-08-10 21 views
88

Czy mogę wykonać proste obliczenia, które zamieniają km na wartość, którą mogę dodać do spławu długiego lub lon, aby obliczyć ramkę ograniczającą dla wyszukiwań? To nie musi być całkowicie dokładne.Proste obliczenia do pracy z odległością lat/lon + km?

Na przykład: jeśli dano lat/lon for London, England (51.5001524, -0,1262362) i chciałem obliczyć jaka lat będzie 25 km na wschód/zachód od tego miejsca, i co lon byłoby 25 km na północ/na południe od tego punktu, co powinienem zrobić, aby przekonwertować 25 km na dziesiętny, aby dodać do powyższych wartości?

szukam do zasady-of-kciuk, a mianowicie: 1 km == +/- 0.XXX

Edit:

Mój oryginalny wyszukiwania dla "łac lon" nie zrobił” t powrót ten wynik:

How to calculate the bounding box for a given lat/lng location?

przyjęty odpowiedź wydaje się wystarczające dla moich potrzeb.

Odpowiedz

171

Przybliżone konwersji są następujące:

  • Szerokość: 1 ° = 110,574 km
  • Długość: 1 ° = 111,320 * cos (szerokość geograficzna) km

To nie w pełni poprawne dla spłaszczenia biegunowego Ziemi - prawdopodobnie potrzebowalibyście bardziej skomplikowanej formuły z wykorzystaniem elipsoidy odniesienia WGS84 (model używany do GPS). Ale błąd jest prawdopodobnie nieistotny dla twoich celów.

Źródło: http://en.wikipedia.org/wiki/Latitude

Uwaga: Należy pamiętać, że LatLong współrzędne wyrażone są w stopniach, podczas gdy funkcja w większości (? Wszystko) języków cos zazwyczaj przyjmuje radiany, więc degree to radians conversion jest potrzebne.

+0

Masz na myśli cos (długość geograficzna) w drugiej formule? – Odys

+1

Jak do tego doszło? Brakuje mi czegoś, czy mógłbyś wyjaśnić obliczenia długości geograficznej? Ty – Odys

+4

@Odys: Jeśli porównujesz dwa punkty, które leżą na tej samej linii długości geograficznej (północ/południe), leżą na wielkim okręgu, a współczynnik konwersji to tylko obwód biegunowy Ziemi podzielony przez 360 stopni. Ale jest inaczej w przypadku pomiarów wschód-zachód, ponieważ (z wyjątkiem równika) nie mierzy się wzdłuż "wielkiego koła", więc "obwód" przy danej szerokości geograficznej jest mniejszy. A współczynnik korygujący okazuje się być cosinusem szerokości geograficznej. –

3

Jeśli używasz Java, JavaScript lub PHP, potem jest biblioteką, która zrobi te obliczenia dokładnie, używając trochę zabawnie skomplikowany (ale nadal szybki) trygonometrii:

http://www.jstott.me.uk/jcoord/

+0

Witryna ma teraz bibliotekę. – midfield99

0

http://www.jstott.me.uk/jcoord/ - użyj tego biblioteka

  LatLng lld1 = new LatLng(40.718119, -73.995667); 
      LatLng lld2 = new LatLng(51.499981, -0.125313); 
      Double distance = lld1.distance(lld2); 
      Log.d(TAG, "Distance in kilometers " + distance); 
Powiązane problemy