[Python] Conversion de WGS84 en système de coordonnées orthogonales plan

introduction

En topographie, le résultat n'est pas exprimé par la latitude et la longitude mais par les valeurs de coordonnées d'un plan bidimensionnel appelé système de coordonnées orthogonales du plan. Ceci est un mémo sur la façon d'effectuer la conversion mutuelle.

Actuellement, 19 systèmes de coordonnées orthogonales sont utilisés au Japon. ("Système de coordonnées orthogonales planes faciles à comprendre" de National Land Research Institute)

Malentendu courant (?): Différent du système de coordonnées utilisé dans la navigation inertielle!

La conversion du système de coordonnées semble facile, mais c'est

--Convertissez les coordonnées polaires (latitude, longitude, hauteur de l'ellipse) de l'ellipse de WGS84 en valeurs de coordonnées XYZ du système de coordonnées orthogonales du système de coordonnées du centre de la terre (ECEF).

C'est "différent" de l'histoire. [Projection Gauss-Kruger](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) Cependant, je n'ai pas pu y arriver car la formule était compliquée.

Au début, je l'ai mal compris comme un simple calcul de rotation comme celui ci-dessus, et j'ai été gêné de repenser quand je parlais aux gens autour de moi en disant: «C'est un calcul si simple».

Soutien du National Land Research Institute

Vous pouvez utiliser celui fourni par le National Land Institute pour la conversion. (Comme prévu, une institution publique!)

Tout d'abord, vous pouvez entrer les valeurs de coordonnées directement dans le navigateur pour la conversion.

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

Il peut également être utilisé à partir de l'API WEB. Voici les fonctionnalités et descriptions fournies. Il y a aussi une note qu'il y a une limite de 10 fois en 10 secondes à partir de la même adresse afin que l'accès ne soit pas concentré.

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

Voici un exemple d'extraction en spécifiant le numéro du système de coordonnées orthogonales plan.

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())

Ici, le dictionnaire suivant est renvoyé:

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

EPSG

Les numéros de système de coordonnées orthogonales du plan du Japon sont définis par le Japon, mais au niveau international, ils sont définis comme EPSG. Au niveau international, il est désigné par EPSG au lieu du numéro du système de coordonnées rectangulaires plan. (Par exemple, lors de l'utilisation de metashape, qui est un logiciel d'arpentage photo.)

EPSG Système d'enquête
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

Bien que ce soit une source d'information, je ne comprends pas bien l'origine du chef de famille et de l'organisation de gestion. Ce qui suit ressemble à une autorité.

-Vous pouvez lire l'explication sur epsg.io. Par exemple, WGS84. -Vous pouvez rechercher par EPSG Geodetic Parameter Registry

Utilisez pyproj

J'ai essayé d'utiliser l'API WEB plus tôt, mais cela peut également être fait en utilisant la bibliothèque python. Je ne me souviens pas avoir eu du mal à l'installer.

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)

Lors de l'exécution, vous obtenez:

-32170.09900022997 -8445.136058616452

Je ne connais pas les chiffres valides, mais ils sont en accord avec les résultats du Geographical Survey Institute. (4 chiffres après la virgule décimale, 0,1 mm!)

Utilisation de CRS

Dans les rues, comment utiliser CRS a été introduit, mais quand j'ai essayé de l'utiliser, ...

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) )

Je reçois un avertissement lorsque je l'exécute, mais j'obtiens le même résultat.

/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)

Je pense que c'est probablement l'ancienne méthode. Je dois lire attentivement le tutoriel! https://pyproj4.github.io/pyproj/stable/examples.html

Résumé / Sentiments divers

--La conversion entre WGS84 et le système de coordonnées orthogonales plan peut être effectuée avec l'API fournie par l'Institut géographique, mais il semble que la même chose puisse être faite avec pyproj. ――Pyproj est multifonctionnel et possède des fonctions intéressantes telles que le tansform 4D, je voudrais donc vérifier s'il y a une capacité de réserve.

Etc. (08/08/2020)

Recommended Posts

[Python] Conversion de WGS84 en système de coordonnées orthogonales plan
Changements de Python 3.0 à Python 3.5
Envisagez la conversion de Python récursif en non récursif
Publier de Python vers Slack
Flirter de PHP à Python
Anaconda mis à jour de 4.2.0 à 4.3.0 (python3.5 mis à jour vers python3.6)
Passer de python2.7 à python3.6 (centos7)
Connectez-vous à sqlite depuis python
(Traduction) Connexion native de Python au système de fichiers Hadoop (HDFS)
Appelez Matlab depuis Python pour optimiser
Système Python OCR Augmentez les caractères des images pour améliorer l'efficacité du travail
Conversion de pdf en txt 1 [pdfminer]
Publication de Python sur la chronologie Facebook
[Lambda] [Python] Publier sur Twitter depuis Lambda!
Conversion MP3 → WAV avec Python
Connectez-vous à la base de données utf8mb4 à partir de python
Python (de la première fois à l'exécution)
Publier une image de Python sur Tumblr
Comment accéder à wikipedia depuis python
Python pour passer d'une autre langue
[Introduction à Python3 Day 21] Chapitre 10 Système (10.1 à 10.5)
N'a pas changé de Python 2 à 3
Mettre à jour Mac Python de 2 à 3
[Python] Résumé du traitement de conversion mathématique (coordonnées orthogonales, conversion de coordonnées polaires, etc.) [math, numpy, etc.]
[Python] Simulation de fluide: de linéaire à non linéaire
De Python à l'utilisation de MeCab (et CaboCha)
Comment mettre à jour Google Sheets à partir de Python
Manuel Python privé (mis à jour de temps en temps)
Je veux utiliser jar de python
Conversion facile de l'heure UTC en heure locale
Conversion de katakana en voyelle kana [python]
Notification push du serveur Python vers Android
Connexion de python à MySQL sur CentOS 6.4
Portage et modification du solveur de doublets de python2 vers python3.
Comment accéder à RDS depuis Lambda (python)
Python> Numéros de sortie de 1 à 100, 501 à 600> Pour csv
Convertir de Markdown en HTML en Python
[Amazon Linux] Passage de la série Python 2 à la série Python 3
Explication API pour toucher mastodonte de python
Connectez-vous à l'API Websocket de Coincheck depuis Python
Essayez de mesurer la position d'un objet sur le bureau (système de coordonnées réel) à partir de l'image de la caméra avec Python + OpenCV
Envoyer un message de Slack à un serveur Python
Modifier Excel à partir de Python pour créer un tableau croisé dynamique
Conversion du système de coordonnées en ECEF et géodésique
Comment ouvrir un navigateur Web à partir de python
Étude de Python Hour7: Comment utiliser les classes
[Python] Conversion de DICOM en PNG ou CSV
Importer un fichier Excel depuis Python (enregistré dans DB)
Coordonnées de latitude et de longitude ↔ Conversion de coordonnées UTM avec python
[Python] Je veux gérer 7DaysToDie depuis Discord! 1/3
[Python] Comment lire les données de CIFAR-10 et CIFAR-100
[Bash] Obtenez la puissance de python de bash en utilisant la documentation ici
Comment générer un objet Python à partir de JSON
Comment bien gérer les commandes Linux à partir de Python
[Python] Flux du scraping Web à l'analyse des données
Je veux utiliser le solveur ceres de python
Conversion par lots de fichiers Excel en JSON [Python]
Ce que j'ai fait lors de la mise à jour de Python 2.6 vers 2.7
[Python] Je veux gérer 7DaysToDie depuis Discord! 2/3