查询了错误代码0x8004023C,There is not enough memory。
尝试在建缓冲区前使用Simplify(),但未解决这个问题。
可以用ArcGIS里的简化面工具(制图工具——制图综合——简化面)处理矢量图斑,最大允许偏移量设置为100米就可以(更小的还没有尝试)。
如果在代码里处理,可以用道格拉斯简化面算法,代码用了这位大佬的:
https://blog.csdn.net/weixin_42562567/article/details/108599686
自己浅修改了一下。
出现这个问题的原因是原图形边界点太多。比如五万左右点的图形不会出现这种问题,而十几万数量点的图形就会报错。解决逻辑是获取要做缓冲区图形的边界点集,判断一下数量,如果点数到一定数量,就进行简化面处理。
//获取点集。pfeature是要做缓冲区的数据
IPointCollection pPointCollection = pfeature.shape as IPointCol