連續一週都在嘗試解決如何獲取一個城市全部道路名的問題。嘗試解決的方法如下:

方法一:

從高德地圖獲取該城市的行政區域邊界經緯度。

http://restapi。amap。com/v3/config/district?key=

&key={高德地圖key}

words=成都市

&subdistrict=3

&showbiz=False

&extensions=all

&offset=20

&page=1

&filter=adcode

轉為百度經緯度座標

根據轉換後的經緯度座標找到經緯度中最大值點和最小值點,生成該多邊形區域的外包矩形。經度和緯度的步長設定為0。05。

把外包矩形分成若干個小矩形。

利用百度地圖Place Api介面,在該矩形區域以“道路”為關鍵字在每個矩形區域內搜尋。並存儲獲取到的道路名和經緯度。

http

//

api

map

baidu

com

/

place

/

v2

/

search

query

=

‘道路’

&

page_size

=

20

&

page_num

=

0

&

scope

=

2

&

bounds

=

31。000

104。004

31。2

104。114

&

output

=

json

&

ak

=

{

您的

ak

}

部分結果如下:

獲取一個城市全部道路名的方法總結

獲取一個城市全部道路名的方法總結

方法二:

1。從第三方郵編網獲取該城市各區縣的街道名或地址

2。利用百度地圖Place Api介面,根據步驟1中獲取的街道名在該城市查詢結果。

http://api。map。baidu。com/place/v2/search?

query={街道名,例如‘武侯祠大街’}

&page_size=10

&page_num=0

&scope=1

®ion=成都市

&output=json&ak={百度ak}

部分結果展示如下:

獲取一個城市全部道路名的方法總結

獲取一個城市全部道路名的方法總結

3。把所有解析出的結果,再透過百度地圖Geocoding API介面,根據pois_location,即經緯度解析成結構化地址。

總結:

方法一耗時耗力,結果也並不理想,實際獲取到的道路數與方法二相差無幾。

目前打算迴歸方法二,先解決目前的問題,待日後閒下來了再改進方法一。

更正:

方法1效果比較好,原來效果不理想的原因是因為使用的百度ak佇列中的一個ak無效,所以出現了誤差。

推薦方法一。