[Python] Konvertierung von WGS84 in ein ebenes orthogonales Koordinatensystem

Einführung

Bei der Vermessung wird das Ergebnis nicht durch Breiten- und Längengrade ausgedrückt, sondern durch die Koordinatenwerte einer zweidimensionalen Ebene, die als orthogonales Koordinatensystem der Ebene bezeichnet wird. Dies ist ein Memo darüber, wie die gegenseitige Konvertierung durchgeführt wird.

Derzeit werden in Japan 19 orthogonale Koordinatensysteme verwendet. ("Leicht verständliches orthogonales Koordinatensystem der Ebene" vom National Land Research Institute)

Häufiges (?) Missverständnis: Anders als das in der Trägheitsnavigation verwendete Koordinatensystem!

Die Konvertierung des Koordinatensystems klingt einfach, ist es aber

Es ist "anders" als die Geschichte. [Gauß-Kruger-Projektion](https://ja.wikipedia.org/wiki/%E3%82%AC%E3%82%A6%E3%82%B9%E3%83%BB%E3%82%AF % E3% 83% AA% E3% 83% A5% E3% 83% BC% E3% 82% B2% E3% 83% AB% E5% 9B% B3% E6% B3% 95) Ich konnte jedoch nicht dorthin gelangen, da die Formel kompliziert war.

Zuerst habe ich es als einfache Rotationsberechnung wie oben missverstanden, und es war mir peinlich, zurück zu denken, als ich mit Leuten um mich herum sprach und sagte: "Es ist so eine einfache Berechnung."

Unterstützung durch das National Land Research Institute

Sie können die vom National Land Institute bereitgestellte für die Konvertierung verwenden. (Wie erwartet eine öffentliche Einrichtung!)

Zunächst können Sie die Koordinatenwerte zur Konvertierung direkt in den Browser eingeben.

https://vldb.gsi.go.jp/sokuchi/surveycalc/surveycalc/bl2xyf.html

Es kann auch über die WEB-API verwendet werden. Hier finden Sie die Funktionen und Beschreibungen. Es gibt auch einen Hinweis, dass es ein Limit von 10 Mal in 10 Sekunden von derselben Adresse gibt, damit der Zugriff nicht konzentriert wird.

https://vldb.gsi.go.jp/sokuchi/surveycalc/main.html

Dies ist ein Beispiel für das Extrahieren durch Angabe der Nummer des ebenen orthogonalen Koordinatensystems.

use_gsi_webapi.py



import requests
from numpy import round
lat, lon = 35.71, 139.74

url = "http://vldb.gsi.go.jp/sokuchi/surveycalc/surveycalc/bl2xy.pl?"
params={'latitude':round(lat, 8), 'longitude': round(lon, 8), "refFrame":2, "zone": 9, 'outputType':'json'}

res = requests.get(url, params=params)
if res.status_code == requests.codes.ok:
    print(res.json())

Hier wird folgendes Wörterbuch zurückgegeben:

{'OutputData': {
  'publicX': '-32170.0990',
  'publicY': '-8445.1361',
  'gridConv': '0.054477778',
  'scaleFactor': '0.99990088'}}

EPSG

Japans ebene orthogonale Koordinatensystemnummern werden von Japan festgelegt, international jedoch als EPSG. International wird es von EPSG anstelle der Nummer des ebenen rechteckigen Koordinatensystems bezeichnet. (Zum Beispiel, wenn Sie Metashape verwenden, eine Foto-Vermessungssoftware.)

EPSG Vermessungssystem
EPSG:4326 WGS 84
EPSG:6668 JGD2011
EPSG:6669 JGD2011 / Japan Plane Rectangular CS I
EPSG:6670 JGD2011 / Japan Plane Rectangular CS II
EPSG:6671 JGD2011 / Japan Plane Rectangular CS III
EPSG:6672 JGD2011 / Japan Plane Rectangular CS IV
EPSG:6673 JGD2011 / Japan Plane Rectangular CS V
EPSG:6674 JGD2011 / Japan Plane Rectangular CS VI
EPSG:6675 JGD2011 / Japan Plane Rectangular CS VII
EPSG:6676 JGD2011 / Japan Plane Rectangular CS VIII
EPSG:6677 JGD2011 / Japan Plane Rectangular CS IX
EPSG:6678 JGD2011 / Japan Plane Rectangular CS X
EPSG:6679 JGD2011 / Japan Plane Rectangular CS XI
EPSG:6680 JGD2011 / Japan Plane Rectangular CS XII
EPSG:6681 JGD2011 / Japan Plane Rectangular CS XIII
EPSG:6682 JGD2011 / Japan Plane Rectangular CS XIV
EPSG:6683 JGD2011 / Japan Plane Rectangular CS XV
EPSG:6684 JGD2011 / Japan Plane Rectangular CS XVI
EPSG:6685 JGD2011 / Japan Plane Rectangular CS XVII
EPSG:6686 JGD2011 / Japan Plane Rectangular CS XVIII
EPSG:6687 JGD2011 / Japan Plane Rectangular CS XIX

Obwohl es sich um eine Informationsquelle handelt, verstehe ich die Herkunft der Oberfamilie und der Verwaltungsorganisation nicht gut. Das Folgende fühlt sich wie Autorität an.

Verwenden Sie pyproj

Ich habe früher versucht, die WEB-API zu verwenden, dies kann jedoch auch über die Python-Bibliothek erfolgen. Ich erinnere mich nicht, dass es mir schwer gefallen ist, es zu installieren.

test_webapi.py


from pyproj import Transformer

lat, lon = 35.71, 139.74
wgs84_epsg, rect_epsg = 4326, 6677
tr = Transformer.from_proj(wgs84_epsg, rect_epsg)
x, y = tr.transform(lat, lon)
print(x, y)

Beim Ausführen erhalten Sie:

-32170.09900022997 -8445.136058616452

Ich kenne die gültigen Zahlen nicht, aber sie stimmen mit den Ergebnissen des Geographical Survey Institute überein. (4 Stellen nach dem Dezimalpunkt, 0,1 mm!)

Verwendung von CRS

Auf den Straßen wurde die Verwendung von CRS vorgestellt, aber als ich versuchte, es zu verwenden, ...

test_use_pyproj.py



import pyproj
wgs84=pyproj.CRS("EPSG:4326")
jgd2011_9 = pyproj.CRS("EPSG:6677")
lat, lon = 35.71, 139.74
print( pyproj.transform(wgs84, jgd2011_9, lat, lon) )

Ich erhalte eine Warnung, wenn ich es ausführe, aber ich erhalte das gleiche Ergebnis.

/usr/bin/ipython3:1: DeprecationWarning: This function is deprecated. See: https://pyproj4.github.io/pyproj/stable/gotchas.html#upgrading-to-pyproj-2-from-pyproj-1
(-32170.09900022997, -8445.136058616452)

Ich denke, das ist wahrscheinlich der alte Weg. Ich muss das Tutorial sorgfältig lesen! https://pyproj4.github.io/pyproj/stable/examples.html

Zusammenfassung / Verschiedene Gefühle

Usw. (2020/08/08)

Recommended Posts

[Python] Konvertierung von WGS84 in ein ebenes orthogonales Koordinatensystem
Änderungen von Python 3.0 zu Python 3.5
Betrachten Sie die Konvertierung von Python rekursiv in nicht rekursiv
Post von Python nach Slack
Flirte von PHP nach Python
Anaconda aktualisiert von 4.2.0 auf 4.3.0 (python3.5 aktualisiert auf python3.6)
Wechseln Sie von Python2.7 zu Python3.6 (centos7)
Stellen Sie von Python aus eine Verbindung zu SQLite her
(Übersetzung) Native Verbindung von Python zum Hadoop-Dateisystem (HDFS)
Rufen Sie Matlab von Python zur Optimierung auf
Python OCR System Erhöhen Sie Zeichen aus Bildern, um die Arbeitseffizienz zu verbessern
Konvertierung von pdf nach txt 1 [pdfminer]
Post von Python auf Facebook Timeline
[Lambda] [Python] Von Lambda auf Twitter posten!
MP3 → WAV-Konvertierung mit Python
Stellen Sie von Python aus eine Verbindung zur utf8mb4-Datenbank her
Python (vom ersten Mal bis zur Ausführung)
Poste ein Bild von Python auf Tumblr
So greifen Sie über Python auf Wikipedia zu
Python, um von einer anderen Sprache zu wechseln
[Einführung in Python3 Tag 21] Kapitel 10 System (10.1 bis 10.5)
Hat sich nicht von Python 2 auf 3 geändert
Aktualisieren Sie Mac Python von 2 auf 3
[Python] Zusammenfassung der mathematischen Konvertierungsverarbeitung (orthogonale Koordinate, Polarkoordinatenkonvertierung usw.) [Mathematik, Numpy usw.]
[Python] Fluidsimulation: Von linear zu nichtlinear
Von Python bis zur Verwendung von MeCab (und CaboCha)
So aktualisieren Sie Google Sheets von Python
Privates Python-Handbuch (von Zeit zu Zeit aktualisiert)
Ich möchte ein Glas aus Python verwenden
Einfache Konvertierung von UTC in Ortszeit
Konvertieren Sie von Katakana zu Vokal Kana [Python]
Push-Benachrichtigung vom Python-Server an Android
Herstellen einer Verbindung von Python zu MySQL unter CentOS 6.4
Portieren und Ändern des Doublet-Solvers von Python2 auf Python3.
Zugriff auf RDS von Lambda (Python)
Python> Ausgaben von 1 bis 100, 501 bis 600> Für CSV
In Python von Markdown in HTML konvertieren
[Amazon Linux] Wechsel von der Python 2-Serie zur Python 3-Serie
API-Erklärung zum Berühren von Mastodon aus Python
Stellen Sie von Python aus eine Verbindung zur Websocket-API von coincheck her
Versuchen Sie, die Position eines Objekts auf dem Schreibtisch (reales Koordinatensystem) anhand des Kamerabilds mit Python + OpenCV zu messen
Senden Sie eine Nachricht von Slack an einen Python-Server
Bearbeiten Sie Excel in Python, um eine Pivot-Tabelle zu erstellen
Konvertierung des Koordinatensystems in ECEF und Geodätik
So öffnen Sie einen Webbrowser über Python
Studie aus Python Hour7: Verwendung von Klassen
[Python] Konvertieren von DICOM in PNG oder CSV
Excel-Datei aus Python importieren (in DB registriert)
Längen- und Breitengradkoordinaten ↔ UTM-Koordinatenkonvertierung mit Python
[Python] Ich möchte 7DaysToDie von Discord aus verwalten! 1/3
[Python] Lesen von Daten aus CIFAR-10 und CIFAR-100
[Bash] Holen Sie sich die Kraft von Python aus Bash mithilfe der folgenden Dokumentation
So generieren Sie ein Python-Objekt aus JSON
Wie man gut mit Linux-Befehlen aus Python umgeht
[Python] Fluss vom Web-Scraping zur Datenanalyse
Ich möchte Ceres Solver aus Python verwenden
Stapelkonvertierung von Excel-Dateien in JSON [Python]
Was ich beim Update von Python 2.6 auf 2.7 gemacht habe
[Python] Ich möchte 7DaysToDie von Discord aus verwalten! 2/3