Python 如何获得地理位置
许多提供地理定位服务的Python库可用,特别是geopy模块,它使程序员能够对地址和地点进行地理编码和逆地理编码。geopy包简化了计算两点之间距离的过程,同时还提供了两点之间的距离计算。
在Python中有几个库可以用来操作地理数据,包括GeoDjango,GeoPandas和PyProj。这些库使程序员更容易操作地理数据,如点、线和多边形,从而可以设计需要地图和空间分析的应用程序。
geopy库可以用于在Python中获取地理位置。以下步骤将指导您如何在Python中获得地理位置:
算法
- 在命令提示符或终端中,键入pip install geopy以安装Geopy库。
-
导入所需的Geopy库模块。需要Nominatim类进行地理编码,需要Point类来表示地理点。
from geopy.geocoders import Nominatim
from geopy.point import Point
-
创建一个Nominatim类对象,这将使您能够执行地理编码。为了指定您的程序,您可以传入一个用户代理字符串。
-
要对地址或位置进行地理编码,请使用Nominatim类的geocode方法。您希望进行地理编码的地点将通过此方法提供为一个字符串。
语法
geolocator = Nominatim(user_agent="my_app")
location = geolocator.geocode("1600 Amphitheatre Parkway, Mountain View, CA")
- Location对象包括有关地址编码位置的详细信息,它是geocode函数的结果。Point对象的latitude和longitude属性提供了访问位置的纬度和经度坐标的途径。
语法
point = Point(location.latitude, location.longitude)
方法一:从名称获取位置信息
示例 – 1
通过使用geopy可以提取给定地点的坐标,或者纬度和经度。为了使用坐标表示位置,可以使用它。
# importing geopy library
from geopy.geocoders import Nominatim
# calling the Nominatim tool
loc = Nominatim(user_agent="Get Prayagraj")
# entering the location name
getLoc = loc.geocode("Civil Lines Prayagraj")
# printing address
print(getLoc.address)
# printing latitude and longitude
print("Latitude = ", getLoc.latitude, "\n")
print("Longitude = ", getLoc.longitude)
输出
Civil Lines Prayagraj , Uttar Pradesh , 211001 , India
Latitude =25.454479
Longitude = 81.8338255
方法二:使用纬度和经度确定位置
这种方法和上述方法的一切都一样,唯一的区别是我们现在将使用reverse()方法来作为geocode函数的替代,该方法接收纬度和经度作为参数,并在接收到坐标后返回地址。
示例 – 2
# importing modules
from geopy.geocoders import Nominatim
# calling the nominatim tool
geoLoc = Nominatim(user_agent="GetPrayagraj")
# passing the coordinates
locname = geoLoc.reverse("26.7674446, 81.109758")
# printing the address/location name
print(locname.address)
输出
Vinayak City Centre , Tashkant Marg , Civil Lines , Prayagraj , Uttar Pradesh , 211001 , India
结论
Google Maps API是Python中获取地理位置数据最受欢迎和用户友好的方法之一,但也有其他选择。我们可以通过安装googlemaps库并提供有效的API密钥来快速获取任何地址的经度和纬度坐标。开放街图API和GeoPy库是其他可能的选择。
安全性和灵活性。通过遵循几个简单的步骤,开发人员可以定义自定义装饰器并将它们应用于视图以修改其行为或强制访问控制。