目前在项目中涉及到 几何图形的裁剪,在arcgis api for js 中也有相应接口,但是考虑到复杂多边形的几何运算可能会影响速度,所以将这部分的逻辑分离到后台。在后台中利用AE的接口ITopologicalOperator实现空间几何运算。
简单的使用方法如下:
public IGeometry geometryPolygonCalc(IGeometry updateGeo,IGeometry geo,string mode) { if (updateGeo == null || geo == null || mode == "" || mode == "") return null; IGeometry outputGeo = null; ITopologicalOperator2 topo = null; mode = mode.ToLower(); if (mode == "difference") { topo = updateGeo as ITopologicalOperator2; topo.IsKnownSimple_2 = true; //首先验证IsKnownSimple因为它速度更快 //在枚举特别大的时候这样更节约时间 if (!(topo.IsKnownSimple)) { if (!(topo.IsSimple)) topo.Simplify(); } outputGeo = topo.Difference(geo); } else if (mode == "clip") { topo = updateGeo as ITopologicalOperator2; topo.IsKnownSimple_2 = true; if (!(topo.IsKnownSimple)) { if (!(topo.IsSimple)) topo.Simplify(); } outputGeo = topo.Difference(topo.Difference(geo)); } else if (mode=="") { } return outputGeo; }
具体的流程可参考下面几个网址:http://www.cnblogs.com/tonywang711/archive/2012/08/30/2663652.html
http://blog.csdn.net/longronggis/article/details/8125800
http://blog.sina.com.cn/s/blog_5fd47cff01011bg9.html
AE二次开发利用ITopologicalOperator实现空间几何运算
最新推荐文章于 2022-01-18 12:12:05 发布