如何在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")
geocode函式返回一個Location物件,其中包含有關地理編碼位置的資訊。可以透過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
結論
在Python中獲取地理位置資料,Google Maps API是最受歡迎和最友好的方法之一,但還有其他選擇。透過安裝googlemaps庫並提供有效的API金鑰,我們可以快速獲取任何地址的經度和緯度座標。其他選擇包括OpenStreetMap API和GeoPy庫。
安全性以及靈活性。通過幾個簡單的步驟,開發人員可以定義自定義裝飾器並將其應用於檢視,以修改其行為或強制執行訪問控制。
資料結構
網路
關係資料庫管理系統 (RDBMS)
作業系統
Java
iOS
HTML
CSS
Android
Python
C語言程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP