背景:现有多个geojson文件,内容为某时段汽车的行驶轨迹,以经纬度的坐标保存,需要将其进行压缩重新保存为geojson
geojson格式:
{
"type": "FeatureCollection",
"features": [{
"type": "Feature",
"geometry": {
"type": "Point", "coordinates": [102.0, 0.5]},
"properties": {
"prop0": "value0"}
}]
}
详见官网:https://www.oschina.net/translate/geojson-spec?cmp
抽稀算法:道格拉斯-普克法(Douglas-Peucker algorithm)
#算法逻辑:
- 确定起终点
- 计算起终点之间所有点到起终点组成线段的距离
- 设定阈值,若最大距离小于阈值,则去除中间所有点,反之,以最大距离对应的点为界,分别对左半部分和右半部分从第2步递归计算
python实现:
# -*- coding:utf-8 -*-
"""
道格拉斯算法的实现
"""
import math
import json
import numpy as np
import matplotlib.pyplot as plt
class Point:
"""点类"""
x = 0.0
y = 0.0
index = 0 # 点在线上的索引
tag = False # 是否保留该点,默认都不保留