一、共享单车数据
停车需求提取
8点时段的停车需求


电子栅栏数据:构建地理要素

二、单车与电子栅栏的空间匹配
1.提取栅栏内的停车
2.栅栏外的停车匹配最近栅栏
用KDTree方法匹配
使用geopandas在df中加入地理位置信息
使用shapely.geometry将坐标信息画成线框图
使用exec 将字符串类型的数组批量定义变量并追加

exec('point = 1')print(point) # 1# exec可将字符串当成代码执行# 可通过此方法循环创建变量
地理数据的最常见保存方式:geojson,shp文件(附带很多文件)
geojson文件,可通过geojson.io打开文件,在地图上更方便的查看
shp文件,可通过mapshaper plus打开(打开时要全部选中),可明显地识别两要素的交点
三、使用空间连接提取栅栏内的停车
使用geopandas.sjon做空间连接(输入需要2个geopandas)
使用gpd.points_from_xy(经度,纬度)生成geometry列
结果a:停车点在栅栏内
结果b:停车点不在栅栏内
四、使用KDTree计算栅栏外的停车匹配最近栅栏
KDTree算法原理






因为KDTree算法输入为点和线,
所以使用gdf.boundary,将面要素转换成线要素
可以看到,只保留边要素了
调用算法,FENICE_ID即为计算到的最近的电子栅栏是哪一个,距离是dist
当前距离是0.0000062是因为直接拿经纬度计算的,不太准确。
如果想要计算更加准确的距离,需要将两个gdf做坐标的投影变换,投影到高斯投影坐标系,这样计算出的距离就是真实的距离。
5000个点匹配到3W个栅栏,只用了320ms
可视化某个栅栏附件的停车点
- 画栅栏外的停车点,蓝色
- 画栅栏内的停车点,红色
- 画栅栏范围,绿色半透明











