根據(jù)道路名稱獲取道路上所有經(jīng)緯度解決辦法

背景:現(xiàn)有一個(gè)需求仲闽,需要根據(jù)道路的名稱獲取到道路上所有特征點(diǎn)的經(jīng)緯度,以串聯(lián)成線顯示道路

首先想到的是調(diào)用地圖廠商如高德或者百度現(xiàn)有的webapi僵朗,能夠直接返回理想的數(shù)據(jù)赖欣,但是翻遍了這些廠商的api都沒(méi)有發(fā)現(xiàn),搜索之下有篇2020年的帖子說(shuō)調(diào)用高德隱api可以滿足要求:

http://restapi.amap.com/v3/road/roadname?city=020&key=<用戶的key>&keywords=元崗路

但是實(shí)測(cè)下來(lái)會(huì)報(bào)錯(cuò)權(quán)限問(wèn)題验庙,如圖


報(bào)錯(cuò)

說(shuō)明高德確實(shí)是有這個(gè)api的顶吮,但是因?yàn)闄?quán)限問(wèn)題被禁用了,故詢問(wèn)了一下客服不能調(diào)用的原因或者怎樣可以滿足調(diào)用條件粪薛,得到回復(fù)該接口已經(jīng)不對(duì)外開(kāi)放c擦恕!违寿!


技術(shù)回復(fù)

那么就沒(méi)有辦法了嗎湃交?并不是,既然高德的官網(wǎng)是可以實(shí)現(xiàn)這樣子的功能的話藤巢,就說(shuō)明他們是有自己的api在用的搞莺,嘗試在高德官網(wǎng)搜索道路

image.png

發(fā)現(xiàn)官方是可以實(shí)現(xiàn)的,那么我們打開(kāi)開(kāi)發(fā)者模式看看他們是怎么請(qǐng)求的掂咒,這里不得不說(shuō)藏的很深才沧!

可以看到在poiinfo接口下有一個(gè)看著像是我們想要的數(shù)據(jù):


image.png

我們把數(shù)據(jù)拷貝出來(lái)看一下


原始數(shù)據(jù)

這一個(gè)個(gè)就很像我們需要的經(jīng)緯度啊,是不是I芄巍温圆?
但是細(xì)看會(huì)發(fā)現(xiàn),這些經(jīng)緯度是被|_分割開(kāi)的孩革,如果他倆的作用是一樣的岁歉,為啥不用同樣的字符分割?但是我們也不知道人家這樣做的意圖是什么樣子的嫉戚,所以只能先按照相同的作用做分割,把數(shù)據(jù)分割好之后是這個(gè)樣子的:

初分?jǐn)?shù)據(jù)

有那個(gè)意思了澈圈,導(dǎo)入到項(xiàng)目里面一看彬檀,蒙了,連起來(lái)是個(gè)啥啊瞬女,一條路連起來(lái)像個(gè)蜘蛛網(wǎng)窍帝,當(dāng)時(shí)沒(méi)截圖大家可以腦補(bǔ)一下


項(xiàng)目效果

開(kāi)玩笑的,這邊項(xiàng)目不方便透露诽偷,寫(xiě)了個(gè)demo來(lái)按照點(diǎn)的順序展示點(diǎn)坤学,發(fā)現(xiàn)數(shù)據(jù)順序是錯(cuò)亂的


image.png

毫無(wú)章法是不是疯坤?這指定是有問(wèn)題的,想來(lái)就是點(diǎn)的順序有問(wèn)題深浮,那么就是數(shù)據(jù)分割的有問(wèn)題压怠,重新來(lái)梳理過(guò):
1、先根據(jù)|分割數(shù)組

image.png

發(fā)現(xiàn)了沒(méi)飞苇,基本上每一段數(shù)據(jù)的起點(diǎn)都是另一段數(shù)據(jù)的終點(diǎn)菌瘫,intersting,那么有沒(méi)有可能根據(jù)這個(gè)規(guī)律拼接起來(lái)就對(duì)了布卡?
2雨让、將對(duì)應(yīng)的上的路段首尾相連,理想情況應(yīng)該可以連成一條路段數(shù)據(jù)忿等,但是有時(shí)候發(fā)現(xiàn)有的路段首尾都沒(méi)有相連的其他路段栖忠,不要慌張,正常的贸街,如果是雙向道路或者一些奇怪的交叉道路庵寞,確實(shí)就應(yīng)該就多條連不起來(lái)的數(shù)據(jù)的。
3匾浪、再把上一步獲得的多條路段數(shù)據(jù)分別用_分割皇帮,再次導(dǎo)入demo中,完美蛋辈!
整理后的數(shù)據(jù)

這邊查詢的道路不一樣属拾,抱歉,但是就是這么個(gè)效果冷溶,到這邊我們就拿到了目標(biāo)道路上的所有點(diǎn)

但是這樣手動(dòng)拼接分割的操作有點(diǎn)過(guò)于的反人類

所以寫(xiě)了個(gè)簡(jiǎn)易的python腳本處理數(shù)據(jù):

import sys

def main(args):
    array = args.split('|')
    for i in range(len(array)):
        original = array[i]
        for j in range(len(array)):
            originalArray = original.split('_')
            compare = array[j]
            compareArray = compare.split('_')
            if originalArray[0] == compareArray[len(compareArray) - 1]:
                originalNew = originalArray
                del originalNew[0]
                array[i] = '@@@@@'
                array[j] = compare + '_' + '_'.join(originalNew)

    while '@@@@@' in array:
        array.remove('@@@@@')

    result = []
    for i in range(len(array)):
        locationArray = []
        locationStrArray = array[i].split('_')
        for item in locationStrArray:
            lnglat = item.split(',')
            locationArray.append([float(lnglat[0]), float(lnglat[1])])
        result.append(locationArray)
    print(result)

if __name__ == '__main__':
    main(sys.argv[1])

臨時(shí)寫(xiě)的渐白,沒(méi)考慮啥性能,莫笑逞频,最終的效果就是傳入從高德官網(wǎng)扒下來(lái)的字符串直接輸出二維路線經(jīng)緯度數(shù)組

腳本效果

最后說(shuō)兩句
該思路僅供個(gè)人使用纯衍,請(qǐng)勿用作商業(yè)用途
適合少量數(shù)據(jù)研究學(xué)習(xí)使用,如果批量獲取數(shù)據(jù)也不建議直接使用腳本爬取官方網(wǎng)站苗胀,給網(wǎng)站增加負(fù)擔(dān)襟诸,可聯(lián)系商務(wù)洽談?wù){(diào)用事宜

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市基协,隨后出現(xiàn)的幾起案子歌亲,更是在濱河造成了極大的恐慌,老刑警劉巖澜驮,帶你破解...
    沈念sama閱讀 218,941評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件陷揪,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)悍缠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,397評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門(mén)卦绣,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人飞蚓,你說(shuō)我怎么就攤上這事滤港。” “怎么了玷坠?”我有些...
    開(kāi)封第一講書(shū)人閱讀 165,345評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵蜗搔,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我八堡,道長(zhǎng)樟凄,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 58,851評(píng)論 1 295
  • 正文 為了忘掉前任兄渺,我火速辦了婚禮缝龄,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘挂谍。我一直安慰自己叔壤,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,868評(píng)論 6 392
  • 文/花漫 我一把揭開(kāi)白布口叙。 她就那樣靜靜地躺著迎变,像睡著了一般蕉世。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上,一...
    開(kāi)封第一講書(shū)人閱讀 51,688評(píng)論 1 305
  • 那天笋熬,我揣著相機(jī)與錄音它浅,去河邊找鬼羊娃。 笑死翼馆,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的启具。 我是一名探鬼主播本讥,決...
    沈念sama閱讀 40,414評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼鲁冯!你這毒婦竟也來(lái)了拷沸?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 39,319評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤薯演,失蹤者是張志新(化名)和其女友劉穎撞芍,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體涣仿,經(jīng)...
    沈念sama閱讀 45,775評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡勤庐,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,945評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了好港。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片愉镰。...
    茶點(diǎn)故事閱讀 40,096評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖钧汹,靈堂內(nèi)的尸體忽然破棺而出丈探,到底是詐尸還是另有隱情,我是刑警寧澤拔莱,帶...
    沈念sama閱讀 35,789評(píng)論 5 346
  • 正文 年R本政府宣布碗降,位于F島的核電站,受9級(jí)特大地震影響塘秦,放射性物質(zhì)發(fā)生泄漏讼渊。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,437評(píng)論 3 331
  • 文/蒙蒙 一尊剔、第九天 我趴在偏房一處隱蔽的房頂上張望爪幻。 院中可真熱鬧,春花似錦须误、人聲如沸挨稿。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 31,993評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)奶甘。三九已至,卻和暖如春祭椰,著一層夾襖步出監(jiān)牢的瞬間臭家,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,107評(píng)論 1 271
  • 我被黑心中介騙來(lái)泰國(guó)打工吭产, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留侣监,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 48,308評(píng)論 3 372
  • 正文 我出身青樓臣淤,卻偏偏與公主長(zhǎng)得像橄霉,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子邑蒋,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,037評(píng)論 2 355

推薦閱讀更多精彩內(nèi)容