PTT推薦

Re: [問卦] 急!!怎麼樣把大量的地址轉成經緯度

看板Gossiping標題Re: [問卦] 急!!怎麼樣把大量的地址轉成經緯度作者
msun
(直接黑單可悲仔)
時間推噓 推:0 噓:0 →:0

※ 引述《zjes40604 (癡漢衝衝衝)》之銘言:
: 如題
: 認真文無藏頭!!!
: 肥宅我主管突然給我一大批地址(約500組)
: 要叫我今天下班前把經緯度都標出來
: 肥宅我上網看了一下
: 發覺很多人都說用Python
: 但肥宅我私校文組畢業 根本不會這種東西
: 想請問各位有沒有更好的辦法QQ
:
: ----
: Sent from BePTT on my Samsung SM-N9750
將大量的地址轉換成經緯度通常需要使用地理編碼服務。這些服務會將地址(例如城市、街道名稱等)轉換為經度和緯度。以下是幾種常見的方法:
1. 使用 Google Maps API

Google 提供了強大的地理編碼 API,可以批量將地址轉換為經緯度。你需要註冊一個
API 密鑰並設置 API 請求。

範例:

import requests

def get_lat_lon(address, api_key):
url = f"https://maps.googleapis.com/maps/api/geocode/json?address={address}&key={api_key}"
response = requests.get(url)
result = response.json()
if result['status'] == 'OK':
lat = result['results'][0]['geometry']['location']['lat']
lon = result['results'][0]['geometry']['location']['lng']
return lat, lon
else:
return None, None

api_key = "你的API密鑰"
address = "台北市信義路五段"
lat, lon = get_lat_lon(address, api_key)
print(f"Latitude: {lat}, Longitude: {lon}")

2. 使用 OpenStreetMap(Nominatim API)

這是一個免費且開源的地理編碼服務,可以用來批量轉換地址。

範例:

import requests

def get_lat_lon_osm(address):
url = f"https://nominatim.openstreetmap.org/search?q={address}&format=json"
response = requests.get(url)
result = response.json()
if result:
lat = result[0]['lat']
lon = result[0]['lon']
return lat, lon
return None, None

address = "台北市信義路五段"
lat, lon = get_lat_lon_osm(address)
print(f"Latitude: {lat}, Longitude: {lon}")

3. 批量處理

如果有大量的地址,可以將地址放入一個列表,然後對每個地址進行循環處理並轉換。需要注意的是,一些服務可能對免費使用者有請求頻率限制,為避免超出限制,可以設定適當的延遲。

addresses = ["台北市信義路五段", "台中市中港路", "高雄市左營區"]
for address in addresses:
lat, lon = get_lat_lon_osm(address)
print(f"Address: {address}, Latitude: {lat}, Longitude: {lon}")

注意事項:

限制:一些服務,如 Google Maps API,對免費使用者有請求次數限制,超過限制可能需要付費。
準確度:不同的地理編碼服務可能會返回不同的結果。需要根據實際需求選擇最合適的服務。

--

※ PTT留言評論
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.160.248.41 (臺灣)
PTT 網址