高德地圖-地址批量轉經緯度


 

在寫論文搞數據的過程中遇到的問題,記錄一下小白快速解決辦法。

1.如果需要地址的經緯度數據,直接用這個網站地理編碼 (百度) 地址轉經緯度 - 批量工具網 (piliang.tech),里面有百度和高德地圖編碼,個人也用python和高德地圖匹配了一遍,結果是靠譜的。

所需工具:網頁,將地址從excel里粘貼過來就行。

2.如果需要識別這個地址所在省、市、區以及代碼等問題。

方法一(不推薦,存在坐標系轉換問題):先用第一步識別出經緯度,然后用Arcgis生成點數據后跟區縣數據用identity識別一下就會用點所在區縣的信息。

所需工具:Arcgis,帶有地理信息的區縣地圖

步驟:

  • 文件>添加數據-把含有經緯度坐標的數據導入Arcgis,如果出現沒有注冊類等問題,可能是因為excel版本過高,選擇97-03版的就好了
  • 在表格右鍵>顯示XY數據>X經度,Y緯度
  • 對生成的事件右鍵>數據>導出數據>添加到當前,如果不進行這一步,會沒有OID,無法進行標識

 

 

  •  加載地圖>arctoolbox>分析工具>疊加分析>標識

  •  新生成的表就包含了標識的內容,右鍵打開屬性表就可以看到

方法二:用python和高德地圖直接返回省、市、區等信息 

所需工具:高德開放平台 | 高德地圖API (amap.com),python(下載Anaconda用spyder,選這個是因為里面含有很多打包好的函數可以直接用,或者熟練運用python的朋友可以隨心意)

解決辦法主要分為兩步

1.從高德地圖獲取key

2.用python進行地址解析,返回經緯度

  •  高德地圖API注冊,在我的應用里面申請key,選web服務

 

 

 

  •  打開spyder,輸入以下代碼,運行快捷鍵shift+enter,選中前三行,右下角沒有報錯就證明可以引用
import requests
import json
import codecs
from openpyxl import Workbook

wb = Workbook()
sheet = wb.active
sheet.title="qiang"
def get_location(address,i):
    print(i)
    url = "http://restapi.amap.com/v3/geocode/geo"
    data = {'key':'*****',#在高德地圖獲得的key
            'address': address
    }
    r = requests.post(url,data=data).json()
    sheet["A{0}".format(i)].value = address.strip('\n')
    print(r)
    if r['status']=='1':
        if len(r['geocodes'])>0:
            GPS = r['geocodes'][0]['location']
            sheet["B{0}".format(i)].value='['+GPS+']'#這里獲取經緯度
            citycode = r['geocodes'][0]['citycode']
            sheet["E{0}".format(i)].value='['+citycode+']'#這里獲取城市行政區划代碼
            adcode = r['geocodes'][0]['adcode']
            sheet["G{0}".format(i)].value='['+adcode+']'#這里獲取區縣行政區划代碼
        else:
            sheet["B{0}".format(i)].value='[]'
    else:
        sheet["B{0}".format(i)].value='none'
f=codecs.open(r"D:\import.csv","r","utf-8")#導入文件
i=0
while True:
    line=f.readline()
    i=i+1
    if not line:
        f.close()
        wb.save(r"D:/results.csv")#導出位置
        break
    get_location(line,i)
  •  導出csv的經緯度坐標為[,]格式,用excel>數據>分列,可以提取出來

注:不論是第一種方法還是第二種方法,都有識別精確度的問題,批量識別以后建議還是瀏覽一遍有沒有異常。咨詢過身邊的同學老師,普遍是直接用火星坐標系定位到WGS84里面,但是個人認為有些不精准,關於火星坐標系和WGS84的轉換另寫一篇。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM