[PYTHON] Vérifiez les coordonnées sur Google Map avec Geocoder

Sur un certain site Web, j'ai senti que le drapeau de la carte Google de l'établissement était éteint, alors Comparez la latitude et la longitude calculées à partir de l'adresse et du nom de l'établissement avec la latitude et la longitude spécifiées dans Google Maps.

Vérifiez la latitude et la longitude de la tour de Tokyo sur le site de géocodage

Si vous recherchez Tokyo Tower sur le Site de géocodage, vous pouvez trouver l'adresse et les coordonnées.

〒105-0011 4-2-8 Parc Shiba, Minato-ku, Tokyo Tokyo Tower Coordonnées: 35.658581, 139.745433

Obtenez la latitude et la longitude de l'adresse avec Geocoder

Tout d'abord, installez le géocodeur.

pip install geocoder

Le code Python est très simple.

geocode.py


import geocoder
n = "Tour de Tokyo"
a = "4-2-8 Parc Shiba, Minato-ku, Tokyo"
p = [35.658581, 139.745433]

g = geocoder.google(a)
print(a, p,"<-->", g.latlng)

g = geocoder.google(n)
print(n, p,"<-->", g.latlng)

Calculer la distance entre les points

Avec ça seul, je ne sais pas à quel point il est éteint, alors [Code Python qui calcule la distance entre la latitude et la longitude de deux points] Empruntez (http://blogs.yahoo.co.jp/qga03052/33991636.html) et calculez la distance.

geocode.py


import geocoder
import math

#Calcul de la distance entre deux points(Python)
# http://blogs.yahoo.co.jp/qga03052/33991636.html
def deg2rad(deg):
    return( deg * (2 * math.pi) / 360 )

def Hubeny(lat1, lon1, lat2, lon2) :
    a =6378137.000
    b =6356752.314140
    e =math.sqrt( (a**2 - b**2) / a**2 )
    e2 =e**2
    mnum =a * (1 - e2)

    my =deg2rad((lat1+lat2) /2.0)
    dy =deg2rad( lat1-lat2)
    dx =deg2rad( lon1-lon2)
    sin =math.sin(my)
    w =math.sqrt(1.0-e2 * sin *sin)
    m =mnum /(w *w *w)
    n =a/w
    dym =dy*m
    dxncos=dx*n*math.cos(my)
    return( math.sqrt( dym**2 + dxncos**2) )

n = "Tour de Tokyo"
a = "4-2-8 Parc Shiba, Minato-ku, Tokyo"
p = [35.658581, 139.745433]

g = geocoder.google(a)
dist = Hubeny(p[0], p[1], g.latlng[0],g.latlng[1])
print(a, p,"<-->", g.latlng,dist)

g = geocoder.google(n)
dist = Hubeny(p[0], p[1], g.latlng[0],g.latlng[1])
print(n, p,"<-->", g.latlng,dist)

En conséquence, il y a eu un écart de plusieurs mètres alors que je pensais qu'ils allaient parfaitement correspondre.

4-2-8 Parc Shiba, Minato-ku, Tokyo[35.658581, 139.745433] <--> [35.6585817, 139.7454636] 2.771940296311124
Tour de Tokyo[35.658581, 139.745433] <--> [35.6585696, 139.745484] 4.78817294783698

Ce degré d'écart est suffisant, mais comme il y avait une installation qui était décalée de plusieurs centaines de mètres sur Google Map, C'est une bonne idée de supprimer sur le Web la partie pertinente avec BeautifulSoap etc. et de la vérifier.

> var myLatLng = new google.maps.LatLng(37.695042, 140.127955);

Parce qu'il est souvent décrit dans

r = re.compile(r'LatLng\((.*),(.*)\)')
m = re.search(r, str)
   if m:
      p = [float(m.group(1)),float(m.group(2))]```

Il semble que vous puissiez le trouver avec l'expression régulière.

Recommended Posts

Vérifiez les coordonnées sur Google Map avec Geocoder
Afficher plusieurs marqueurs sur Google Map
Jouez avec Turtle sur Google Colab
Présentation de l'API Google Map avec rails
Carte des informations de location sur une carte avec python
Apprentissage automatique avec Pytorch sur Google Colab
Folium: Visualisez les données sur une carte avec Python
Enregistrez le Tweet de Twitter avec Geo au format CSV et tracez-le sur Google Map.
Visualiser grib2 sur une carte avec python (matplotlib)
PIL en Python sur Windows8 (pour Google App Engine)
[Ruby on Rails] Google map plusieurs broches, bulles, liens
Afficher l'adresse saisie à l'aide de Rails gem'geocoder 'sur Google Map
Déployer des applications Go sur Google App Engine avec des actions GitHub
Apprentissage en profondeur avec Shogi AI sur Mac et Google Colab