Berechnen Sie den Mittelpunkt mehrerer Breiten- / Längenkoordinatenpaare
Da eine Reihe von Längen-und Breitengrad Punkte, wie kann ich berechnen die breiten-und Längengrad des Mittelpunkts der dass-Satz (aka ein Punkt, der center würde eine Sicht auf alle Punkte)?
BEARBEITEN von: Python-Lösung, die ich verwendet habe:
Convert lat/lon (must be in radians) to Cartesian coordinates for each location.
X = cos(lat) * cos(lon)
Y = cos(lat) * sin(lon)
Z = sin(lat)
Compute average x, y and z coordinates.
x = (x1 + x2 + ... + xn) / n
y = (y1 + y2 + ... + yn) / n
z = (z1 + z2 + ... + zn) / n
Convert average x, y, z coordinate to latitude and longitude.
Lon = atan2(y, x)
Hyp = sqrt(x * x + y * y)
Lat = atan2(z, hyp)
InformationsquelleAutor der Frage zeke | 2011-07-12
Du musst angemeldet sein, um einen Kommentar abzugeben.
Der einfache Ansatz von nur durchschnittlich, Sie hat komische Grenzfälle mit Winkel, wenn Sie wickeln von 359' zurück auf 0'.
Einen viel früher die Frage auf, SO bat Sie darum, die Durchschnitt eine Menge von Kompass-Winkel.
Eine Erweiterung des Ansatzes empfohlen, da für sphärische Koordinaten wäre:
InformationsquelleAutor der Antwort Alnitak
Dank! Hier ist ein C# - version von OP-Lösungen in Grad. Es nutzt die System.- Gerät.Lage.GeoCoordinate Klasse
InformationsquelleAutor der Antwort Yodacheese
Ich fand diesen Beitrag sehr nützlich, also hier ist die Lösung in PHP. Ich habe mit diesem erfolgreich und wollte einfach nur um ein anderes zu retten dev einige Zeit.
InformationsquelleAutor der Antwort Tom Tucker
Sehr nützlichen Beitrag! Ich habe diese umgesetzt in JavaScript, hiermit meinen code. Ich habe diese verwendet werden, erfolgreich.
InformationsquelleAutor der Antwort Gio
Im Interesse der möglicherweise rettende jemand ein oder zwei Minuten, hier ist die Lösung, die verwendet wurde, in Objective-C statt python. Diese version nimmt ein NSArray von NSValues enthalten MKMapCoordinates, das war in meiner Implementierung:
InformationsquelleAutor der Antwort Daryll H.
Javascript-version der ursprünglichen Funktion
InformationsquelleAutor der Antwort Kelvin Spencer
Wenn Sie interessiert sind bei der Beschaffung eine sehr vereinfachte 'Zentrum' der Punkte (zum Beispiel, um einfach center eine Karte in die Mitte des gmaps polygon), dann hier ist eine einfache Ansatz, der für mich gearbeitet.
Diese gibt die mittlere lat/lng-Koordinate für den Mittelpunkt des Polygons.
InformationsquelleAutor der Antwort Kerry Emerson
sehr schöne Lösungen, nur das, was ich brauchte für meine swift-Projekt, so hier ist ein swift-port. Dank & hier ist auch ein Spielplatz-Projekt:
https://github.com/ppoh71/playgounds/tree/master/centerLocationPoint.playground
InformationsquelleAutor der Antwort ppoh71
In Django ist dies trivial (und funktioniert tatsächlich, ich hatte Probleme mit einer Reihe von Lösungen, die nicht richtig zurückgegeben negative Breite).
Zum Beispiel, sagen wir, Sie sind mit django-geopostcodes (ich bin der Autor).
point
ist eine Django -Point
Instanz, die dann verwendet werden können, zu tun, Dinge wie das abrufen alle Objekte, die innerhalb von 10 km, Zentrum Punkt;Ändern das raw Python ist trivial;
Unter der Haube Django ist mit GEOS - weitere details bei https://docs.djangoproject.com/en/1.10/ref/contrib/gis/geos/
InformationsquelleAutor der Antwort alexhayes
Dies ist die gleiche wie die eines gewichteten durchschnittlichen problem, bei dem alle GEWICHTE gleich sind, und es gibt zwei Dimensionen.
Finden Sie den Mittelwert von allen breiten für Ihren center-Breite und der Durchschnitt aller Längengrade für die Mitte Länge.
Gewährleistungsausschluss: Dies ist ein Nähe-Distanz-approximation und der Fehler widerspenstigen werden, wenn die Abweichungen vom Mittelwert mehr als ein paar Meilen durch die Krümmung der Erde. Denken Sie daran, dass die breiten-und Längengrade sind Grad (nicht wirklich ein Gitter).
InformationsquelleAutor der Antwort jpredham
Wenn Sie möchten, zu berücksichtigen, die den ellipsoid verwendet wird, finden Sie die Formeln
hier http://www.ordnancesurvey.co.uk/oswebsite/gps/docs/A_Guide_to_Coordinate_Systems_in_Great_Britain.pdf
siehe Anhang B
Das Dokument enthält viele andere nützliche Dinge
B
InformationsquelleAutor der Antwort Bill
Wenn Sie möchten, dass alle Punkte sichtbar zu werden in das Bild, Sie würde wollen, dass die extrema in Breite und Länge und stellen Sie sicher, dass Ihre Ansicht enthält diese Werte mit dem, was Grenze, die Sie wollen.
(Von Alnitak Antwort, wie Sie berechnen die extrema kann ein wenig problematisch, aber wenn Sie ein paar Grad auf beiden Seiten der Länge umschließt, dann werden Sie rufen Sie die Aufnahme und nehmen Sie die Rechte Reihe.)
Wenn Sie nicht wollen, zu verfälschen was auch immer anzeigen, dass diese Punkte auf, dann passen Sie den Begrenzungsrahmen des Seitenverhältnisses so, dass es passt, was Pixel, die Sie haben zugeteilt, um die Ansicht, sondern beinhaltet noch den extrema.
Behalten die Punkte zentriert an einem beliebigen Zoom-Ebene, berechnet den Mittelpunkt der bounding-box, die "einfach passt" die Punkte wie oben, und halten Sie diesen Punkt als Mittelpunkt.
InformationsquelleAutor der Antwort John
Out-of-Objekt in PHP. Angesichts array von Koordinaten-Paaren, Retouren center.
Ergriffen Idee von #4
InformationsquelleAutor der Antwort DabitNG