我正在使用谷歌的折線,我想給出一組坐標并生成正確的折線,反之亦然。特別是最后我想對結果(折線)進行url編碼。當我插入一條折線時:
code = '((akntGkozv@kcCka@us@y{DfvAm{BnuCj_Aus@fzG))'
我使用polyline包:https://pypi.org/project/polyline/,首先我解碼折線以查看坐標:
coordinates = polyline.decode(code)
print(coordinates)
>> [(3e-05, -0.0001), (-0.0001, -7e-05), (-0.0002, -0.0002), (45.46221, 35.36626), (45.4621, 35.36617), (45.48328, 35.39727), (45.48317, 35.39718), (45.5172, 35.39707), (45.51711, 35.39816), (45.51723, 35.39814), (45.5172, 35.38418), (45.51823, 35.3843), (45.51821, 35.38428), (45.49413, 35.37398), (45.52816, 35.37387), (45.52807, 35.32855), (45.5281, 35.32845), (45.52823, 35.32848), (45.52813, 35.32861)]
這里的一切都很好,當我嘗試將坐標編碼回折線時問題就來了(這是我的最終目標,因為最后我想給出一些坐標并獲得相應的折線)
new_code = polyline.encode(coordinates)
print(new_code)
>> ERXERXakntGkozvETPkcCkaETPusETPyEWBDfvAmEWBBnuCj_AusETPfzGERYERY
這與原來的略有不同,如果放回網址它不起作用!
所以我的問題是:
什么樣的編碼是
new_code?我嘗試使用百分比 url 對其進行編碼,urllib.parse.quote(new_code)但結果完全相同,也許我需要指定一些特定的編碼樣式但我沒有找到任何東西。我使用的折線是米蘭市內的一個正方形(因此識別該區域只需要 4 個點,最多 5 個),但坐標結果來自
polyline.decode給我一個包含 19 個點的串列,其坐標不是偶數靠近米蘭市。為什么?
uj5u.com熱心網友回復:
好的,所以基本上我所有的問題都來自我正在考慮的字串:((akntGkozv@kcCka@us@y{DfvAm{BnuCj_Aus@fzG))
包含((和))不是折線的一部分,而是兩個((,))并由我正在使用的網站的特定網址插入。一個簡單的替換和編碼回傳正確的折線:
code = '((akntGkozv@kcCka@us@y{DfvAm{BnuCj_Aus@fzG))'
code = code.replace('(', '').replace(')', '')
code = urllib.parse.unquote(code)
print(code)
>> irotG_hzv@woBmE}i@yjE`oBwkDf|ChRhMzeG}~BxcB
事實上,如果放在polyline.decode回傳值中,我使用的坐標正好是:
coordinates = polyline.decode(code)
print(coordinates)
>> [(45.46869, 9.15088), (45.48673, 9.15191), (45.4936, 9.18452), (45.47567, 9.21216), (45.45051, 9.20907), (45.44822, 9.16701), (45.46869, 9.15088)]
正好是 7(現在我已經將形狀更改為六邊形而不是正方形)并且正好指向米蘭市
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/483946.html
