先来看看最终的效果图吧!
对于岛屿情况:
相信很多人都做过关于河流的分析,而其中多少会涉及到河流的网格划分。二这也一直是一个难点,尤其是在Web端(本文只针对Silverlight)。而就目前查阅的资料来看,关于这方面的资料少之又少。大部分的网格划分要不就是理论,要不就是基于桌面的,而桌面的网格划分要比Web容易的多,此外,还有一种情况就是先在ArcMap中划分好,在Web端查询一定区域的网格划分点。
Web端的河流网格划分有以下几个难点:
(1).如何对河流进行网格划分得到网格点(网格划分点落在河流之内)
(2).得到的网格点如何与Web地图结合,建立地理关系
(3).针对不同的河流复杂程度(例如:河流弯曲程度不一,包含岛屿等),网格划分方法同样适用
下面我们来看看如何解决上面的3个问题。
目前在多数的网格划分采用的是贴体网格划分,通过求解微分方程,将不规则的河流转化到X-Y坐标系下,从而便于求解,这种方式得到的网格点很好,然而繁琐,特别是在在Web端实现更加困难,同时也无法直接与地图结合。此外偏微分方程的求解还需要一定的数学功底,因此并不适合我们普通的开发人员。
在这里我们采取添加控制点——绘制多边形——等分多边形——求交线——等分交线的方式来得到最后的网格。请看下面的示意图:
a.添加控制点,得到多边形
我们绘制了一个沿着河流的多边形,接下来,我们按照设置的等分数,等分多边形,如下图所示:
这里实现的原理的,得到河流两边的控制点,根据各边的控制点,得到各边的总长度,然后根据总长度按照设置的等分数,等分两边的多边形。接着连接两边的等分点。接下来我们就需要求解这些等分线与河流的交线。如下图所示:
这样得到与河流的交线之后,我们再对每一段的交线进行等距划分,然后得到等分点,最后如下图所示:
这样我们便得到了最终的网格点。
以上过程不需要借助任何第三方控件,只需要使用ArcGIS API for Silverlight,结合GeometryService即可完成,代码量不多,实现起来也不难。
在此提供这么一种方法大家可以自己试一试。具体代码在后续的工作中将给出。
总结:
1.适用于弯曲程度不一的河流,包括河流包含岛屿等情况
2.可以按照指定的点的个数,疏密情况进行网格划分。
3.可以很好的结合Web地图
该方法的缺点:
1.目前还无法在河流交叉地方进行网格划分。
2.网格线不能保证与河流的中心线垂直。
3.多边形控制点直接影响着网格的质量。
(版权所有,转载请标明出处)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。