jeshy
#### 基于Douglas-Peucker算法对矢量数据简化  ####
# 当原始的矢量数据因为形状复杂,包含的点较多时,会导致其文件体积较大,
# 如果我们需要在在线地图上叠加它们,太大体积的矢量数据不仅会拖慢网络传输速度,
# 也会给图形的渲染带来更大的压力,这时对矢量数据进行简化就非常有必要。
# 基于Douglas-Peucker算法,基于预先设定的阈值ϵ,在递归判断的过程中删掉所有小于ϵ的点

# 例如: 基于-1到1之间的均匀分布,创建一条上下波动的折线,然后进行简化

import numpy as np
import shapely
import geopandas as gpd
from matplotlib import pyplot as plt
import matplotlib.patches as mpatches
np.random.seed(10)# 固定随机数种子

# 创建线
line = shapely.geometry.LineString([(_, np.random.uniform(-1, 1)) for _ in range(10)])

# 绘制简化前
ax = gpd.GeoSeries([line]).plot(color=\'red\')

# 绘制简化后
ax = gpd.GeoSeries([line]).simplify(tolerance=0.5).plot(color=\'blue\',
                                                        ax=ax,
                                                        linestyle=\'--\')
# 制作图例映射对象列表
LegendElement = [plt.Line2D([], [], color=\'red\', label=\'Uu-Simplified\'),
                 plt.Line2D([], [], color=\'blue\', linestyle=\'--\', label=\'Simplified\')]
# 将制作好的图例映射对象列表导入legend()中,并配置相关参数
ax.legend(handles=LegendElement,
          loc=\'lower left\',
          fontsize=10)
ax.set_ylim((-2.5, 1))
ax.axis(\'off\')
plt.savefig(\'VectorLineSimplify.png\', dpi=300, bbox_inches=\'tight\', pad_inches=0)
plt.show()#展示

  

分类:

技术点:

相关文章:

  • 2021-10-24
  • 2022-01-06
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2022-12-23
  • 2021-09-12
  • 2021-12-18
猜你喜欢
  • 2021-05-21
  • 2022-12-23
  • 2021-05-08
  • 2021-12-22
  • 2021-08-15
  • 2022-12-23
相关资源
相似解决方案