我与谷歌的polyline一起工作,我想给出一组坐标并生成正确的polyline,反之亦然。特别是,最后,我想对结果( polyline)进行url编码。当我插入一个折线时,例如:
code = '%28%28akntGkozv%40kcCka%40us%40y%7BDfvAm%7BBnuCj_Aus%40fzG%29%29'我使用polyline包:https://pypi.org/project/polyline/,首先对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)]这里的一切都很好,当我试图将坐标编码回polyline (这是我的最终目标,因为最后我想给出一些坐标并获得相应的polyline)时,问题就来了。
new_code = polyline.encode(coordinates)
print(new_code)
>> ERXERXakntGkozvETPkcCkaETPusETPyEWBDfvAmEWBBnuCj_AusETPfzGERYERY这与原来的略有不同,如果把它放回url,它就不起作用了!
所以我的问题是:
new_code**?**,我尝试用urllib.parse.quote(new_code)以百分比url对其进行编码,但结果完全相同,也许我需要指定某种特定的编码样式,但没有找到任何东西。我使用的
polyline.decode的坐标结果给出了一个列表,其中有19个坐标点,这些坐标甚至都与米兰市不太接近。Why?发布于 2022-05-26 09:01:30
所以,基本上,我所有的问题都来自于我正在考虑的字符串:%28%28akntGkozv%40kcCka%40us%40y%7BDfvAm%7BBnuCj_Aus%40fzG%29%29包含%28%28和%29%29,它们不是polyline的一部分,而是由我正在使用的站点的特定url插入的两个((和))。简单的替换和编码返回正确的折线:
code = '%28%28akntGkozv%40kcCka%40us%40y%7BDfvAm%7BBnuCj_Aus%40fzG%29%29'
code = code.replace('%28', '').replace('%29', '')
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://stackoverflow.com/questions/72388393
复制相似问题