先来看看最终的效果图吧!
对于岛屿情况:
相信很多人都做过关于河流的分析,而其中多少会涉及到河流的网格划分。二这也一直是一个难点,尤其是在Web端(本文只针对Silverlight)。而就目前查阅的资料来看,关于这方面的资料少之又少。大部分的网格划分要不就是理论,要不就是基于桌面的,而桌面的网格划分要比Web容易的多,此外,还有一种情况就是先在ArcMap中划分好,在Web端查询一定区域的网格划分点。
Web端的河流网格划分有以下几个难点:
(1).如何对河流进行网格划分得到网格点(网格划分点落在河流之内)
(2).得到的网格点如何与Web地图结合,建立地理关系
(3).针对不同的河流复杂程度(例如:河流弯曲程度不一,包含岛屿等),网格划分方法同样适用
解决了以上3个问题,那么河流网格划分问题就基本可以解决了。
下面我们来看看如何解决上面的3个问题。
目前在多数的网格划分采用的是贴体网格划分,通过求解微分方程,将不规则的河流转化到X-Y坐标系下,从而便于求解,这种方式得到的网格点很好,然而繁琐,特别是在在Web端实现更加困难,同时也无法直接与地图结合。此外偏微分方程的求解还需要一定的数学功底,因此并不适合我们普通的开发人员。
在这里我们采取添加控制点——绘制多边形——等分多边形——求交线——等分交线的方式来得到最后的网格。请看下面的示意图:
a.添加控制点,得到多边形
我们绘制了一个沿着河流的多边形,接下来,我们按照设置的等分数,等分多边形,如下图所示:
这里实现的原理的,得到河流两边的控制点,根据各边的控制点,得到各边的总长度,然后根据总长度按照设置的等分数,等分两边的多边形。接着连接两边的等分点。接下来我们就需要求解这些等分线与河流的交线。如下图所示:
这样得到与河流的交线之后,我们再对每一段的交线进行等距划分,然后得到等分点,最后如下图所示:
这样我们便得到了最终的网格点。
以上过程不需要借助任何第三方控件,只需要使用ArcGIS API for Silverlight,结合GeometryService即可完成,代码量不多,实现起来也不难。
在此提供这么一种方法大家可以自己试一试。具体代码在后续的工作中将给出。
总结:
本文方法方法的优点:
1.适用于弯曲程度不一的河流,包括河流包含岛屿等情况
2.可以按照指定的点的个数,疏密情况进行网格划分。
3.可以很好的结合Web地图
该方法的缺点:
1.目前还无法在河流交叉地方进行网格划分。
2.网格线不能保证与河流的中心线垂直。
3.多边形控制点直接影响着网格的质量。
如果您有什么好的建议或者改进的方法,欢迎留言分享。
(版权所有,转载请标明出处)
总结以上是内存溢出为你收集整理的ArcGIS API for Silverlight 使用GeometryService进行河流网格划分(三)全部内容,希望文章能够帮你解决ArcGIS API for Silverlight 使用GeometryService进行河流网格划分(三)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)