Essayez de convertir les coordonnées de latitude / longitude et du monde entre elles avec python

Ce que je voulais faire

--Je souhaite agréger les informations de latitude et de longitude en unités divisées en maillages.

Ce que j'ai fait

Sur la base des informations contenues dans le site http://www.trail-note.net/tech/coordinate/ de TRAIL NOTE, j'ai essayé d'en faire une fonction qui convertit les coordonnées de latitude / longitude et du monde avec python.

la mise en oeuvre

Je viens de copier le contenu de ↑.

from math import pi
from math import tanh
from math import sin
from math import asin
from numpy import arctanh

# refer from http://www.trail-note.net/tech/coordinate/

def tile2latlon(x, y, z):
    L = 85.05112878
    lon = ((x / 2.0**(z+7) )-1) * 180
    lat = 180/pi * (asin(tanh(-pi/2**(z+7)*y + arctanh(sin(pi/180*L)))))
    return [lat, lon]

def latlon2tile2(lat, lon, z):
    L = 85.05112878
    x = int((lon/180 + 1) * 2**(z+7))
    y = int( (2**(z+7) / pi * ( -arctanh(sin(pi*lat/180)) + arctanh(sin(pi*L/180)) ) ))
    return [x,y]

Vérification

Entrez une latitude et une longitude connues et vérifiez-les sur Cartes de l'Institut national de recherche foncière.

#simbashi
lat = 35.666280
lon = 139.758375
# lat = 30.335927
# lon = 130.504283

pix = 256
# lat/lon to tile
for z in range(15,19):
    a,b = latlon2tile2(lat,lon,z)
    print [a,b]
    print 'http://cyberjapandata.gsi.go.jp/xyz/std/{0}/{1:d}/{2:d}.png'.format(z,a/pix,b/pix)
    a,b = tile2latlon(a,b,z)
    print [a,b]

Une fois exécuté, il sera affiché comme ceci, de sorte qu'il correspond à la lat / long d'origine, et la précision augmente à mesure que le niveau de zoom augmente. J'ai confirmé l'emplacement sur la carte réelle. (La carte de l'Institut national de recherche foncière est jusqu'au niveau de zoom 18)

[7450910, 3303678]
http://cyberjapandata.gsi.go.jp/xyz/std/15/29105/12904.png
[35.66629207402928, 139.75836753845215]
[14901820, 6607356]
http://cyberjapandata.gsi.go.jp/xyz/std/16/58210/25809.png
[35.66629207402928, 139.75836753845215]
[29803640, 13214713]
http://cyberjapandata.gsi.go.jp/xyz/std/17/116420/51619.png
[35.66628335763601, 139.75836753845215]
[59607281, 26429426]
http://cyberjapandata.gsi.go.jp/xyz/std/18/232840/103239.png
[35.66628335763601, 139.75837290287018]

Éléments à confirmer

――Je ne comprends pas vraiment le système de géographie --Il semble y avoir une bibliothèque telle que pyproj, il est donc préférable de l'utiliser. Si vous savez comment l'utiliser, faites-le moi savoir!

Recommended Posts

Essayez de convertir les coordonnées de latitude / longitude et du monde entre elles avec python
Coordonnées de latitude et de longitude ↔ Conversion de coordonnées UTM avec python
[Python] Convertit un conteneur à usage général et une classe entre eux
Essayez le fonctionnement de la base de données avec Python et visualisez avec d3
Essayez d'ouvrir une sous-fenêtre avec PyQt5 et Python
Essayez d'exploiter Facebook avec Python
Essayez de convertir la CLI cloudmonkey en python3 -1
Essayez d'afficher la carte google et la carte géographique avec python
[Python] Essayez de reconnaître les caractères des images avec OpenCV et pyocr
Essayez de reproduire un film couleur avec Python
Fractal pour faire et jouer avec Python
Essayez de convertir en données ordonnées avec les pandas
Essayez de créer foldl et foldr avec Python: lambda. Aussi mesure du temps
Hello World et détection de visage avec OpenCV 4.3 + Python
Grattage de la nourriture avec python et sortie en CSV
MessagePack-Try pour lier Java et Python avec RPC
Essayez de résoudre le diagramme homme-machine avec Python
Essayez de dessiner une courbe de vie avec python
Essayez de communiquer avec EV3 et PC! (MQTT)
Dites bonjour au monde avec Python avec IntelliJ
Essayez de créer un code de "décryptage" en Python
Essayez de générer automatiquement des documents Python avec Sphinx
WEB grattage avec python et essayez de créer un nuage de mots à partir des critiques
Essayez de créer un groupe de dièdre avec Python
[Formation Python partie 3] Convertissez les pandas DataFrame, Series et Standard List entre eux
Essayez de détecter les poissons avec python + OpenCV2.4 (inachevé)
Effectuez une recherche Twitter à partir de Python et essayez de générer des phrases avec la chaîne de Markov.
Donnez les données de séquence de points de latitude et de longitude et essayez d'identifier la route à partir des données d'OpenStreetMap
Procédure pour charger MNIST avec python et sortie en png
Essayez de résoudre le livre des défis de programmation avec python3
Faisons un outil de veille de commande avec python
Je veux gérer l'optimisation avec python et cplex
Essayez de résoudre le problème d'affectation du médecin de formation avec Python
Installez le sélénium sur votre Mac et essayez-le avec python
YOLP: extraire la latitude et la longitude avec l'API Yahoo! Geocoder.
Convertir la latitude, la longitude et l'altitude GPS en coordonnées orthogonales tridimensionnelles
Essayez de gratter avec Python.
API Nifty Cloud facile à utiliser avec botocore et python
Essayez de le faire avec GUI, PyQt en Python
écran et écran partagé avec connexion python et ssh au serveur distant
Essayez Amazon Simple Workflow Service (SWF) avec Python et boto3
Essayez d'afficher diverses informations utiles pour le débogage avec python
[AWS] Essayez d'ajouter la bibliothèque Python à la couche avec SAM + Lambda (Python)
[Python] Comment jouer avec les variables de classe avec décorateur et métaclasse
Essayez de lier iTunes et Hue of Collection Case avec MQTT
Essayez d'automatiser le fonctionnement des périphériques réseau avec Python
[Jouons avec Python] Traitement d'image en monochrome et points
Convertir une vidéo en noir et blanc avec ffmpeg + python + opencv
J'ai essayé de créer une interface graphique à trois yeux côte à côte avec Python et Tkinter
C'est Halloween donc je vais essayer de le cacher avec Python
Essayez simplement de recevoir un webhook avec ngrok et Python