灵活的多段线编码:坐标对或三元组列表的有损压缩表示
flexpolyline的Python项目详细描述
柔性折线
这是flexiblepolyline格式的python实现。在
折线编码是坐标对列表或 坐标三元组。它通过:
- 减少每个值的小数位数。在
- 仅编码与上一点的偏移量。在
- 为每个坐标增量使用可变长度。在
- 使用64个URL安全字符来显示结果。在
安装
pipinstallflexpolyline
使用
编码
encode(iterable, precision=5, third_dim=ABSENT, third_dim_precision=0)
将坐标列表(或迭代器)编码为相应的字符串表示形式。有关进一步的定制,请参阅下面的可选参数。坐标顺序是(lat, lng[, third_dim])
。在
Output:BFoz5xJ67i1B1B7PzIhaxL7Y
。在
以高度作为第三个坐标的三维情况的另一个例子:
example=[(50.1022829,8.6982122,10),(50.1020076,8.6956695,20),(50.1006313,8.6914960,30),(50.0987800,8.6875156,40),]print(fp.encode(example,third_dim=flexpolyline.ALTITUDE))
Output:BlBoz5xJ67i1BU1B7PUzIhaUxL7YU
解码
decode(encoded_string)
解码传递的编码字符串并返回元组列表(lat, lng[, third_dim])
。在
iter_decode(encoded_string)
类似于decode
,但返回一个迭代器。在
dict_decode(encoded_string)
与decode
类似,但返回字典列表。密钥"lat"
和"lng"
始终存在,而三维密钥取决于三维编码的类型。它可以是下列值之一:"alt"
,"elv"
,"lvl"
,"cst1"
或{
iter_dict_decode(encoded_string)
类似于dict_decode
,但返回一个迭代器。在
get_third_dimension(encoded_string)
返回与字符串中编码的第三维度相对应的值。模块中定义的可能值是:ABSENT
,ALTITUDE
,LEVEL
,ELEVATION
,CUSTOM1
和{
示例
二维多段线解码示例:
importflexpolylineasfpprint(fp.decode("BFoz5xJ67i1B1B7PzIhaxL7Y"))
Output:
[
(50.10228, 8.69821),
(50.10201, 8.69567),
(50.10063, 8.69150),
(50.09878, 8.68752)
]
从三维多段线解码dict的示例:
importflexpolylineasfpprint(fp.dict_decode("BlBoz5xJ67i1BU1B7PUzIhaUxL7YU"))
Output:
[
{'lat': 50.10228, 'lng': 8.69821, 'alt': 10},
{'lat': 50.10201, 'lng': 8.69567, 'alt': 20},
{'lat': 50.10063, 'lng': 8.69150, 'alt': 30},
{'lat': 50.09878, 'lng': 8.68752, 'alt': 40}
]
- 项目
标签: