Dieser Beitrag wurde mit der Hilfe von Deepl übersetzt. Bitte kontaktieren Sie mich, wenn Sie diese Übersetzung verbessern möchten: [email protected]
Ich erinnere mich an meinen ersten Besuch in China im Jahr 2010. Wir buchten ein Hotel in guter Lage in Guangzhou und speicherten Koordinaten und Routen in Google Maps. Aber als wir am Zielort ankamen, war es offensichtlich, dass es keine Hotels gibt. Ich war an dem Punkt, wo mein Hotel sein sollte, aber alles, was ich um mich herum habe, ist ein riesiger Platz (花城广场 alias Flower City Square). Lange Rede kurzer Sinn. Irgendwann rettete uns ein Typ mit seinem Meizu-Telefon, indem er uns zeigte, dass unser Hotel tatsächlich ein paar Kilometer von diesem Platz entfernt ist.
Heutzutage arbeite ich mit China und stehe als Entwickler vor den gleichen Herausforderungen. Ich habe beschlossen, einen Artikel zu schreiben, in dem ich meine Erfahrungen zusammenfasse, in der Hoffnung, dass dies jemandem helfen könnte.
Bunny.net is a well-known CDN and storage among developers. Here is my python snippet on how to upload a file to the storage.
Lassen Sie uns zunächst einmal über die wichtigsten heute verwendeten Koordinatensysteme sprechen. Ein internationaler Standard ist WGS-84 (Erdkoordinaten) oder World Geodetic System, wobei 84 die letzte Revision dieses Standards aus dem Jahr 1984 ist. Dieser Standard wird von GPS verwendet. Jedes Mal, wenn Sie Google Maps (oder fast alle anderen Karten) verwenden, können Sie sich bei WGS-84 bedanken. Lassen Sie uns nun über China sprechen.
WGS-84 ⇛ GCJ-02 ⇛ BD-09
Die chinesischen Regulierungsbehörden verlangen, dass zugelassene Kartendienste den Standard GCJ-02 (chinesisch: 国测局; pinyin: guó-cè-jú) verwenden. Sie wurde 2002 vom chinesischen Staatlichen Amt für Vermessung und Kartierung formuliert. Manchmal wird GCJ-02 auch als Marskoordinaten bezeichnet. GCJ-02 basiert auf WGS-84 und verwendet einen Verschleierungsalgorithmus, der zur Verbesserung der nationalen Sicherheit zufällige Verschiebungen zu den Breiten- und Längengraden hinzufügt. Wenn der WGS-84-Punkt auf der GCJ-02-Karte platziert wird, ergibt sich im Durchschnitt eine Abweichung von etwa 300-500 m. Nur sehr wenige Punkte liegen "meilenweit" auseinander, meist nur um ein paar Blocks. Deshalb habe ich mich bei meinem ersten Besuch in China auch verlaufen.
Halten Sie sich fest. Es gibt noch mehr. Baidu ging noch weiter und implementierte eine weitere Abstraktion, die GCJ-02 weiter verschleiert. Sie wird BD-09 (Baidu, formuliert 2009) genannt. Der Hauptzweck bestand darin, die Daten von Baidu zu schützen, damit sie von Konkurrenten nicht einfach dupliziert werden können. Baidu hat interne Tools, um zwischen den drei Koordinatensystemen zu wechseln, macht aber nur GCJ-02 bis BD-09 öffentlich, um die Verwendung ihres Standards für Kacheln, Suchkoordinaten usw. zu fördern.
Nach chinesischem Recht gibt es keine offizielle API für die Umstellung auf WGS-84.
Laut Wikipedia weist "OpenStreetMap, das Crowdsourced-Projekt zur Erstellung einer Weltkarte, darauf hin, dass "private Vermessungs- und Kartierungsaktivitäten in China illegal sind". Wenn man sich die Karten von Baidu oder Mapbox anschaut, findet man jedoch oft einen OSM-Vermerk neben der Kartenlizenz. Das bedeutet, dass die Nutzung von OSM in China nicht illegal ist und dass man OSM Daten aus Satellitenbildern hinzufügen kann. Für die Erhebung von Bodendaten müssen Sie jedoch eine Vermessungslizenz erwerben (die es Ihnen ermöglicht, Daten zu sammeln und ein kommerzielles Produkt zu erstellen). Und das ist eine ganz andere Geschichte.
Wie Chris mir gegenüber erwähnte, ist eine Vermessungslizenz extrem schwer zu bekommen. Infolgedessen gibt es weniger als 20 Unternehmen, die diese Lizenz besitzen. Große Technologieunternehmen wie Alibaba mussten AutoNavi nur für diese Lizenz erwerben, Tencent musste NavInfo kaufen. Mapbox zum Beispiel ging eine Partnerschaft mit EMG ein, einem führenden Anbieter von Kartendaten für die Navigation. Didi war das erste Unternehmen, das seine Lizenz im letzten Jahrzehnt direkt erhalten hat (ein ziemlicher Meilenstein). Kartenlizenzen hingegen sind leichter zu erhalten - wenn Sie sich die lizenzierten Basiskarten in China (Mapbox, Baidu, AutoNavi usw.) unten rechts ansehen, werden Sie etwas wie "GS (2020) 123 号" sehen.
Baidu-Kartenlizenz
Wie Sie sich vorstellen können, läuft die Umrechnung folgendermaßen ab: WGS-84 ⇛ GCJ-02 ⇛ BD-09 und rückwärts. Es ist nicht zulässig, einen formellen Konvertierungsleitfaden zu veröffentlichen - jede Verwendung der Koordinatenverschiebung muss vom SDBM genehmigt werden..
Sie können jedoch Open-Source-Implementierungen für diesen Algorithmus in verschiedenen Programmiersprachen finden(e.g., eviltransform). In diesem Artikel verwende ich JavaScript-Implementierung, aber Sie können auch leicht Python, R, Go usw. finden. Schauen Sie sich den Abschnitt "Notes" in meinem Artikel an.
Unser chinesisches Büro verwendet Baidu Get Point Service, um BD-09-Koordinaten des gewünschten Objekts zu erhalten. Ein Screenshot ist unten abgebildet. Ich speichere diese Koordinaten dann in der Datenbank und führe eine Konvertierung in WGS-84 oder GCJ-02 durch, je nach Geolokalisierung des Nutzers. Für Benutzer in China müssen Sie GCJ-02 verwenden, erinnern Sie sich?
BD-09 von http://api.map.baidu.com/lbsapi/getpoint/
Ich habe ein Beispiel mit der coordtransform-Bibliothek und Mapbox erstellt, damit Sie herumspielen können. Kopieren Sie die BD-09-Koordinaten aus diesem Dienst und fügen Sie sie hier ein, um das Ergebnis der Transformation zu sehen.
Den Quellcode für dieses Beispiel finden Sie hier
Wenn Sie Ihren Nutzern aus Festlandchina ein reibungsloses Kartenerlebnis bieten möchten, haben Sie nicht viele Möglichkeiten. Google Maps funktioniert nicht ohne ein VPN. Ich liebe Baidu Maps in China. Sie bieten eine hervorragende Benutzeroberfläche mit vielen praktischen GEO-Daten. Sehen Sie sich die Details an.
Aber wenn es darum geht, eine Karte auf Ihrer Webseite einzubetten, bleibt für mich nur Mapbox. Mapbox ist ein hervorragender alternativer Kartendienst. Er ist legal und funktioniert auch ohne VPN in China einwandfrei. Aufgrund chinesischer Vorschriften werden 3 lizenzierte Basiskarten über mapbox.cn bereitgestellt. Alle Daten innerhalb Chinas sind verschoben (von ihrem Kartierungspartner), alle Daten außerhalb Chinas sind unverschiebt (aus ihren eigenen Datensätzen, einschließlich OSM).
Mapbox with a WGS-84 113.31924878632225, 23.12426152397713 koordinaten (花城广场 in Guangzhou)
Ich habe den Endpunkt api.mapbox.com mit einem globalen Zugriffstoken getestet, und es hat von Guangzhou aus einwandfrei funktioniert. Aber in dem Fall mit China, es ist ein Glücksspiel, so schlage ich vor, den Zugang Token von mapbox.cn zu erhalten.
Hier ist ein Algorithmus für Sie. Ist die GeoIP Ihres Besuchers in China?
Ich hoffe, dass dieser Beitrag jemandem Zeit erspart. Wahrscheinlich werde ich später weitere Informationen hinzufügen, da es sich um ein komplexes und nicht sehr gut verstandenes Thema handelt. Schreiben Sie mir eine Nachricht, wenn Sie Fragen oder Anregungen haben.