首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >polyline.encode奇怪格式

polyline.encode奇怪格式
EN

Stack Overflow用户
提问于 2022-05-26 07:41:01
回答 1查看 43关注 0票数 0

我与谷歌的polyline一起工作,我想给出一组坐标并生成正确的polyline,反之亦然。特别是,最后,我想对结果( polyline)进行url编码。当我插入一个折线时,例如:

代码语言:javascript
复制
code = '%28%28akntGkozv%40kcCka%40us%40y%7BDfvAm%7BBnuCj_Aus%40fzG%29%29'

我使用polyline包:https://pypi.org/project/polyline/,首先对polyline进行解码,以查看坐标:

代码语言:javascript
复制
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)时,问题就来了。

代码语言:javascript
复制
new_code = polyline.encode(coordinates)
print(new_code)
>> ERXERXakntGkozvETPkcCkaETPusETPyEWBDfvAmEWBBnuCj_AusETPfzGERYERY

这与原来的略有不同,如果把它放回url,它就不起作用了!

所以我的问题是:

  1. what类型的编码是 new_code**?**,我尝试用urllib.parse.quote(new_code)以百分比url对其进行编码,但结果完全相同,也许我需要指定某种特定的编码样式,但没有找到任何东西。

我使用的

  1. 是米兰市内的一个正方形(因此,识别这一区域只需要4个点,最多5个点),但polyline.decode的坐标结果给出了一个列表,其中有19个坐标点,这些坐标甚至都与米兰市不太接近。Why?
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-26 09:01:30

所以,基本上,我所有的问题都来自于我正在考虑的字符串:%28%28akntGkozv%40kcCka%40us%40y%7BDfvAm%7BBnuCj_Aus%40fzG%29%29包含%28%28%29%29,它们不是polyline的一部分,而是由我正在使用的站点的特定url插入的两个(())。简单的替换和编码返回正确的折线:

代码语言:javascript
复制
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中,则返回我所使用的坐标:

代码语言:javascript
复制
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(现在我已经改变了形状,所以是一个六角形而不是一个正方形),并且正好是在米兰。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72388393

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档