Python 使用 Google API 进行反向地理编码的代码
Python code for reverse Geo-coding using Google API
我正在 json 文件 (geo.json) 中获取地理数据,该文件具有以下结构
{"userId":"Geo-data","data":{"mocked":false,"timestamp":1548173963281,"coords":{"speed":0,"heading":0,"accuracy":20.20400047302246,"longitude":88.4048656,"altitude":0,"latitude":22.5757344}}}
我只想打印与上述数据对应的地点详细信息,如果可能的话在地图上显示它 also.I 已经尝试使用 geopy
下面的代码
from geopy.geocoders import Nominatim
geolocator = Nominatim()
location = geolocator.reverse("22.5757344, 88.4048656")
print(location.address)
print((location.latitude, location.longitude))
但是我得到的位置不是很准确。而相同的坐标在 https://www.latlong.net/Show-Latitude-Longitude.html 中给出了很好的结果
我还有一个 Google API 键。然而,到目前为止,我发现的所有参考资料几乎就像一个项目本身,对像我这样的初学者来说有点矫枉过正。 geopy 代码很好,但定位精度很差。请帮忙。
P.S
我也尝试过地理编码器
import geocoder
g = geocoder.google([45.15, -75.14], method='reverse')
print(g.city)
print(g.state)
print(g.state_long)
print(g.country)
print(g.country_long)
但是在所有情况下它都在打印 'None'。
您可以考虑从 OpenStreetMap Nominatim provider to Google Geocoding 切换。那么,下面的例子似乎是returns你期望的地址:
from geopy.geocoders import GoogleV3
geolocator = GoogleV3(api_key=google_key)
locations = geolocator.reverse("22.5757344, 88.4048656")
if locations:
print(locations[0].address) # select first location
结果
R-1, GA Block, Sector III, Salt Lake City, Kolkata, West Bengal 700106, India
您可以尝试 Google 地图服务库的 Python 客户端,可以在
找到
https://github.com/googlemaps/google-maps-services-python
这是 Google 地图 API Web 服务请求的包装库,由 Googlers 开发。代码截图如下
import googlemaps
gmaps = googlemaps.Client(key='Add Your Key here')
# Look up an address with reverse geocoding
reverse_geocode_result = gmaps.reverse_geocode((22.5757344, 88.4048656))
此代码 returns 地址 R-1, GA Block, Sector III, Salt Lake City, Kolkata, West Bengal 700106, India
类似于您在 Geocoder 工具中看到的结果:
有关详细信息,请查看 github 中的文档。
希望对您有所帮助!
我正在 json 文件 (geo.json) 中获取地理数据,该文件具有以下结构
{"userId":"Geo-data","data":{"mocked":false,"timestamp":1548173963281,"coords":{"speed":0,"heading":0,"accuracy":20.20400047302246,"longitude":88.4048656,"altitude":0,"latitude":22.5757344}}}
我只想打印与上述数据对应的地点详细信息,如果可能的话在地图上显示它 also.I 已经尝试使用 geopy
下面的代码from geopy.geocoders import Nominatim
geolocator = Nominatim()
location = geolocator.reverse("22.5757344, 88.4048656")
print(location.address)
print((location.latitude, location.longitude))
但是我得到的位置不是很准确。而相同的坐标在 https://www.latlong.net/Show-Latitude-Longitude.html 中给出了很好的结果 我还有一个 Google API 键。然而,到目前为止,我发现的所有参考资料几乎就像一个项目本身,对像我这样的初学者来说有点矫枉过正。 geopy 代码很好,但定位精度很差。请帮忙。
P.S 我也尝试过地理编码器
import geocoder
g = geocoder.google([45.15, -75.14], method='reverse')
print(g.city)
print(g.state)
print(g.state_long)
print(g.country)
print(g.country_long)
但是在所有情况下它都在打印 'None'。
您可以考虑从 OpenStreetMap Nominatim provider to Google Geocoding 切换。那么,下面的例子似乎是returns你期望的地址:
from geopy.geocoders import GoogleV3
geolocator = GoogleV3(api_key=google_key)
locations = geolocator.reverse("22.5757344, 88.4048656")
if locations:
print(locations[0].address) # select first location
结果
R-1, GA Block, Sector III, Salt Lake City, Kolkata, West Bengal 700106, India
您可以尝试 Google 地图服务库的 Python 客户端,可以在
找到https://github.com/googlemaps/google-maps-services-python
这是 Google 地图 API Web 服务请求的包装库,由 Googlers 开发。代码截图如下
import googlemaps
gmaps = googlemaps.Client(key='Add Your Key here')
# Look up an address with reverse geocoding
reverse_geocode_result = gmaps.reverse_geocode((22.5757344, 88.4048656))
此代码 returns 地址 R-1, GA Block, Sector III, Salt Lake City, Kolkata, West Bengal 700106, India
类似于您在 Geocoder 工具中看到的结果:
有关详细信息,请查看 github 中的文档。
希望对您有所帮助!