GIS避坑(运行速度篇) —— Python读取gdb中矢量数据的坑
坑
进行的操作:使用 arcpy 去读取矢量数据(三维线数据)的空间坐标信息,并进行以每个线要素为中心扩展不同半径的管道的冲突性检测,19个图层 数据总量不到 4万条。
实际运行情况:
1、使用的检测的类是相同的类
2、除了获取坐标的方式不同外,其他代码均相同
3、相同机器及运行状态(其实用arcpy跑的时候是 晚上睡觉以后,机器状态更好)
表现情况:
1、将数据坐标信息固定到字段中,并导出为excel —— 100% 耗时
2、使用 arcpy.da.SearchCursor() 读取数据坐标(使用 ‘SHAPE@’ 或 读取其中的坐标字段并没有多少差别)—— 220% 耗时
且使用arcpy.da.SearchCursor()的函数无法使用numba进行加速,虽然pandas加速以后提升不是很明显(二者对数据的遍历均使用 for 循环)
避
1、将需要的数据固定到属性表中
2、将属性表导出为excel(其他格式或数据库里均可)
3、使用pandas去操作生成的excel
4、借助numba提前编码,提升一点速度
使用arcpy的游标去读取数据,可以随时修改,但是速度确实会比较慢,按需选择