Leaflet: Für Koordinaten zu Längengrad-Breitengrad wechseln?

Erstellt am 25. Feb. 2013  ·  22Kommentare  ·  Quelle: Leaflet/Leaflet

An einigen Stellen betrachte ich APIs, die für die GeoJSON-Eingabe und -Ausgabe erstellt wurden und die Koordinaten umdrehen und Begrenzungsrahmen rekonstruieren müssen, damit Leaflet gelesen werden kann. Die APIs von Leaflet so zu ändern, dass alle Dinge auf die Art von GeoJSON tun, wäre (wunderbar, aber) eine große, bahnbrechende Änderung. Sie alle automatisch erkennen zu lassen, wäre fehleranfällig, und ein is_geojson Argument für viele Funktionen wäre lahm.

Vielleicht ist GeoJSON überall etwas, über das man in 1.0.0 nachdenken sollte, und ein globales Flag, L.GEOJSON_API könnte ein besseres kurzfristiges Ziel für die [lat, lon] Verknüpfung sein, um [lon, lat] . für toJSON Methoden, um GeoJSON zurückzugeben, und für Grenzen, die als GeoJSON-Grenzen dargestellt und verwendet werden können.

feature

Hilfreichster Kommentar

Nur als Referenz, da dieses Problem die wichtigste Rechtfertigung zu werden scheint:
https://macwright.org/lonlat/
screenshot_20180429_225744

Welches ist richtig?
Weder. Dies ist eine Meinung ohne richtige Antwort.
Die geographische Tradition bevorzugt lat, lon. Mathematik und Software bevorzugen lon, lat.

Alle 22 Kommentare

Das ist in der Tat ein Problem. Ich verbrachte einige Zeit damit, meine Karten-App zu debuggen, nur um zu erkennen, dass das Wechseln der Koordinaten alles funktionierte. Vielleicht sollte es in der Dokumentation zu GeoJSON (Tutorial und API) explizit erwähnt werden, da ich sicher nicht der einzige war, der auf dieses Problem gestoßen ist ;-)

+1 Das ist ein großes Ärgernis von mir

+1 Das hat mich nur solide 2 Stunden Debugging gekostet.

+1 2 Stunden verlorene Zeit auch hier

+1 derzeit ist das nicht sehr konsistent

GeoServer zur Liste hinzugefügt:

[Längengrad, Breitengrad]-Reihenfolge: OpenLayers, MapboxGL, KML, GeoJSON, PostGIS, MongoDB, MySQL, GeoServer
[Breitengrad, Längengrad]-Reihenfolge: Leaflet, Google Maps API, ArangoDB.

Als Referenz befinden sich die neuen GEO-Befehle von Redis auch in der ersten Gruppe: http://redis.io/commands/geoadd

:+1:

+1 Der Wechsel zwischen PostGIS und Leaflet ist immer viel Arbeit

Diese Ausgabe ist 3 Jahre alt und Leaflet ist ein unglaublich etabliertes Projekt. Die Inkonsistenz in der größeren Geo-Welt ist bedauerlich, aber wenn @mourner und die Betreuer nicht der Meinung sind, dass es sich lohnt, wahrscheinlich viel Zeit mit der Implementierung dieser Änderung zu verbringen, würde dies mehr schaden als nützen.

Hat jemand eine Lösung für dieses Problem gefunden?

Log, lat in Geojson auf lat, lon für den Import in Leaflet umstellen?
Ich baute eine Leaflet-Karte von Wilmette, IL. Ich möchte die Stadtgrenze zeichnen. Das Geojson von https://mapzen.com/data/metro-extracts/ hat die Koordinaten als Log, lat.

Als ich mich in Codebeispielen und PlugIns umschaute, konnte ich kein Protokoll finden, Lat flopper.

Alle Ideen sind willkommen!

@lukedohner verwendet den eingebauten GeoJSON-Layer , er funktioniert sofort mit Koordinaten, die der GeoJSON-Spezifikation (lon/lat) folgen.

Wenn Sie die Achse _wirklich_ umdrehen müssen, gibt es mehrere Möglichkeiten, dies zu tun. Eine davon ist die Verwendung der

@perliedman danke für die Info =)

Nur als Referenz, da dieses Problem die wichtigste Rechtfertigung zu werden scheint:
https://macwright.org/lonlat/
screenshot_20180429_225744

Welches ist richtig?
Weder. Dies ist eine Meinung ohne richtige Antwort.
Die geographische Tradition bevorzugt lat, lon. Mathematik und Software bevorzugen lon, lat.

@ghybs Danke für die Übersicht.

In einem anderen Leben war ich Zimmermann, das heißt mit Holz bauen. ;)
In diesem Feld werden die Maße normalerweise als Höhe x Breite angegeben.
Die Standardgröße für eine Außentür beträgt 80 x 36 Zoll, was 6 Zoll entspricht
ft, 8 Zoll x 3 ft. 96 Zoll oder 8 ft.

In der Programmierung ist es normalerweise Breite x Höhe
und x Schnüre mal y Schnüre.

Scheint der Eingabereihenfolge lat, log - log, lat ähnlich zu sein.

Am So, 29.04.2018 um 16:02 Uhr, Daniel Ruf [email protected]
schrieb:

Danke für die Übersicht.


Sie erhalten dies, weil Sie erwähnt wurden.
Antworten Sie direkt auf diese E-Mail und zeigen Sie sie auf GitHub an
https://github.com/Leaflet/Leaflet/issues/1455#issuecomment-385277388 ,
oder den Thread stumm schalten
https://github.com/notifications/unsubscribe-auth/AFYxwx_jX0PU69VnBsdMuPEVsfFSjx9_ks5tthw_gaJpZM4AdMRL
.

--

Lukas Dohner
Webentwickler und Creative Technologist
NY, NY

Bitte beachten Sie meine Schleife zum Austauschen von Geojson-Breitengraden und -Breitengraden:

https://gis.stackexchange.com/questions/133059/export-to-geojson-coordinates-in-the-reverse-order/286219#286219

Es gibt Ihnen kein vollständiges Geojson-Objekt, aber die Koordinaten.
Das hat bei mir funktioniert.

Nur ein kurzer Kommentar, weil es mir so viele Kopfschmerzen bereitet hat. Ich habe versucht, Geojson in Leaflet hinzuzufügen, und ich dachte, ich müsste eine Schleife verwenden, um die Koordinaten zu tauschen und sie in L.polygons einzufügen. Aber das einzige wirkliche Problem war, dass ich L.geoJSON(geojson).addTo(map) anstelle von L.geoJson(geojson).addTo(map) verwendet habe, um die Form in die Karte zu bringen. Dies liegt daran, dass sich die Syntax zwischen den beiden Versionen unterscheidet.

@hjrobinson das ist gut zu wissen! Aber ähm... was für ein schreckliches Designmuster...

Auch wenn die Neuprojektion auf WGS 84 (EPSG 4326) nicht funktioniert (ich weiß, dass niemand gefragt hat, aber ich werde es trotzdem erwähnen), wenn Sie eine Datei mit einer nativen Projektion wie Stateplane oder benutzerdefiniert haben, können Sie in QGIS müssen in eine Editiersitzung eintreten, alle Features in der Attributtabelle auswählen, die Features kopieren und als neue Vektordatei/Layer einfügen. Stellen Sie dann sicher, dass Sie die neue Ebene als Shapefile speichern, da sonst bestimmte Geometrieprozesse wie das Erstellen von Schwerpunkten nicht funktionieren. Stellen Sie sicher, dass das Projekt auf WGS 84 eingestellt ist, bevor Sie dies tun. Sie können das Ergebnis in geojson.io online auf Genauigkeit testen.

Hallo @hjrobinson ,

Es sieht so aus, als ob Sie immer noch mit Leaflet 0.7.x oder niedriger arbeiten, wo die Syntax tatsächlich L.geoJson .

Leaflet 1.0.0 wurde im September 2016 veröffentlicht und die Syntax wurde aus Konsistenzgründen in L.geoJSON geändert, aber die Abwärtskompatibilität mit L.geoJson wurde beibehalten. Eine Begründung finden Sie unter https://github.com/Leaflet/Leaflet/issues/2444 .
Die aktuelle stabile Version ist 1.3.1.

Bitte stellen Sie sicher, dass Sie die richtige Dokumentationsseite für die von Ihnen verwendete Version verwenden.
Wenn möglich, sollten Sie ein Upgrade in Betracht ziehen.

Was die Koordinaten angeht, wie oben hervorgehoben und wie Sie bemerkt haben, wird die L.geoJSON / L.geoJson Factory gerne GeoJSON-konforme Daten parsen, dh mit [longitude, latitude] Reihenfolge, und die Koordinaten automatisch wechseln intern beim Erstellen von Leaflet-Layern daraus.

Vielleicht könnte die Dokumentation diesen Punkt noch deutlicher machen.

Ich entschuldige mich für die Unklarheit. Ich arbeite immer noch an einer früheren Version der Broschüre, weil ich geojson-vt benötige. Das Vektorraster-Plugin scheint im Vergleich dazu einige Leistungsprobleme zu haben. Aber da könnte ich auch falsch liegen. Danke für die Rückmeldung. Ich hatte Daten, die in die USA gehörten, die
landete im Ozean vor der Küste Afrikas oder in China. Ich hatte die Daten von der Stadt, in der ich wohne. Als ich es repariert hatte, wollte ich jedem helfen, der das gleiche Problem hatte. Ich benutze Leaflet erst seit ein paar Monaten. Ich werde das nächste Mal gründlicher sein.

Am Do, den 28. Juni 2018 um 18:12 schrieb ghybs [email protected] :

Hallo @hjrobinson https://github.com/hjrobinson ,

Anscheinend arbeiten Sie noch mit Leaflet 0.7.x oder niedriger, wobei die
Syntax war tatsächlich L.geoJson
https://leafletjs.com/reference-0.7.7.html#geojson .

Broschüre 1.0.0 https://github.com/Leaflet/Leaflet/releases/tag/v1.0.0
wurde im September 2016 veröffentlicht und die Syntax wurde in L.geoJSON geändert
https://leafletjs.com/reference-1.3.0.html#geojson für Konsistenz, aber
Abwärtskompatibilität mit L.geoJson wurde beibehalten. Siehe #2444
https://github.com/Leaflet/Leaflet/issues/2444 zur Begründung.
Die aktuelle stabile Version ist 1.3.1.

Bitte stellen Sie sicher, dass Sie die richtige Dokumentationsseite für die Version verwenden
du benutzt.
Wenn möglich, sollten Sie ein Upgrade in Betracht ziehen.

Was die Koordinaten betrifft, wie oben hervorgehoben
https://github.com/Leaflet/Leaflet/issues/1455#issuecomment-313685187
und wie Sie bemerkt haben, freut sich die L.geoJSON / L.geoJson-Fabrik
Analysieren von GeoJSON-konformen Daten
https://tools.ietf.org/html/rfc7946#section-3.1.1 , dh mit [Längengrad,
Breitengrad] und schalten die Koordinaten automatisch intern um, wenn
daraus Leaflet-Schichten bauen.

Vielleicht könnte die Dokumentation diesen Punkt noch deutlicher machen.


Sie erhalten dies, weil Sie erwähnt wurden.
Antworten Sie direkt auf diese E-Mail und zeigen Sie sie auf GitHub an
https://github.com/Leaflet/Leaflet/issues/1455#issuecomment-401218281 ,
oder den Thread stumm schalten
https://github.com/notifications/unsubscribe-auth/AcRaE1ffpG2zQWexqU9PN4E462dq6pcMks5uBX7vgaJpZM4AdMRL
.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen