合并的地块带有小缝隙怎么办
我们会有这样的业务操作,合并两个地块或者更多的地块,这种操作要非常细心,如果每个地块精度不一样,恭喜你会造成一个大地块会有很多缝隙,这些缝隙面积甚至小于0.01平方米,这样对于业务需求来说是不正确。那么如何解决这个问题,一开始我稀里糊涂去把这个地块的多部件出来,然后小于0.01我就把他转成顺时针,(逆时针的polygon就是带缝隙的地块),然后再和其他分出来的地块合并,没想到这样操作导致面积差距好大,连其他大的缝隙也给合了。后来想下有个比较简单的操作
1 public IPolygon fillGeometry(IPolygon polgyon) 2 { 3 double unionarea = 0.5; 4 5 IGeometryCollection igeoColl = polgyon as IGeometryCollection; 6 7 try 8 { 9 for (int i = 0; i < igeoColl.GeometryCount; i++) 10 { 11 IGeometry currentGeometry = igeoColl.get_Geometry(i); 12 double area = (currentGeometry as IArea).Area; 13 // 面积小于0 是 带洞的ring (逆时针的polygon)判断是否超过警戒值 去填充 14 if (area < 0) 15 { 16 if (Math.Abs(area) < unionarea) 17 { 18 igeoColl.RemoveGeometries(i, 1); 19 igeoColl.GeometriesChanged(); 20 i--; 21 } 22 } 23 } 24 } 25 catch(Exception e) 26 { 27 return polgyon; 28 } 29 30 return polgyon; 31 32 }
标签:
gis
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律