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