前台实现河流道路的动态切割,以ArcGIS Server为例

前台实现河流道路的动态切割,以ArcGIS Server为例

上图是河流及其中心线,实现一定距离的河流截取。其本质是实现多边形的裁剪。

首先说明一下GIS中,地理多边形的构成:多边形是由一组闭合的曲线(正向或负向)组成。正向的曲线取其内部,负向的曲线取其外部,共同组成了多边形,如图:

前台实现河流道路的动态切割,以ArcGIS Server为例前台实现河流道路的动态切割,以ArcGIS Server为例

这里只处理简单多边形,不考虑环形以及飞地多边形。我们以河流中心线为基准,可以得到两条垂直于中心线的切割线。我们只需要将这两段线段之间的多边形节点分别提取,然后顺时针重构即可。但是提取这些点时,要分以下四种情况:

前台实现河流道路的动态切割,以ArcGIS Server为例  前台实现河流道路的动态切割,以ArcGIS Server为例 

 前台实现河流道路的动态切割,以ArcGIS Server为例  前台实现河流道路的动态切割,以ArcGIS Server为例

0<n1<p1<p2<n2:取节点n1—p1和p2—n2

0<p1<p2<n1<n2:取节点0—p1、p2—n1、n2—最后节点

0<n1<n2<p1<p2:取节点0—n1、n2—p1、p2—最后节点

p1<n1<n2<p2:取节点p1—n1和n2—p2

获取到新的节点组合后,即可形成切割后的多边形。

关于切割线或线段,我使用的是切割线,可能会与多边形相交得出2个以上的交点,但是我们只需要其中的两个,我是以距离来筛选出最近的这两个交点。最终效果如下:

前台实现河流道路的动态切割,以ArcGIS Server为例

前台实现河流道路的动态切割,以ArcGIS Server为例

上一篇:DEV控件校验常用方式


下一篇:qtp type和set方法的区别