• 通过GeometryService+gp服务实现河流污染模拟


    首先来看看最终的效果图:

    本文将说一下实现该功能的思路和方法,鉴目前项目涉及到一些保密文件,在此不便贴出代码,不过在后续的工作中,我会抽时间来一一整理本博客的所有代码,并全部共享。

    下面就来看看具体实现的思路。

    1.河流的网格划分

    关于河流的网格划分,可以参考前一篇博文:

    http://www.cnblogs.com/potential/archive/2012/12/20/2826143.html

    该文给出了网格划分的思路,在此不再多说。

    2.河流的污染预测模型的选择。

    这里本文采取了二维的河流污染扩散模型,并以中心排放为例,其他模式也是一样。这里涉及到一个比较难的问题是:如何求出每一个网格点的(X,Y)坐标,即网格点到河流中心线的距离以及沿河流方向到污染源的距离。

    本文这里提供一个解决方案是:

    (1):对于求沿河流方向到污染源的距离,可以通过路径服务实现,首先提取出河流的中心线,将该中心线构建成网络数据集,发布成网络分析服务,那么我们随便选取的两个点(两个点分别到中心线的距离都要小于网络分析服务设置的搜索容差,否则无法求出距离),通过网络分析服务可以求出其沿河流方向(中心线)的距离。

    (2):对于网格点到河流中心线的距离可以通过GIS的GeometryService的Distance操作来实现,这个比较容易。

    求得每一个网格点的(X,Y)后,接下来就是根据选定的污染扩散模型,计算每一个点的浓度。

    3.污染物浓度分布的可视化

    在得到每一个点的浓度之后,那么接下来就是进行插值渲染。但是这里我们需要注意的就是,我们要保证渲染的图层落在河流之内。也就是上图的彩色区域都在河流中。然后我们会注意到一个问题,默认插值时的范围都是矩形,如果不进行其他的操作,那么我们的得到的图层将是一个矩形区域,这显然不符合河流污染物的扩散,因此需要裁剪掉河流以外的区域。这里实现插值的过程采用的是GP服务,GP服务的模型如下所示:

    这里通过掩膜提取对插值的删格图像进行裁剪,以保证插值图层在河流的之内。

    关于GP服务的发布可参考这里:

    http://www.cnblogs.com/potential/archive/2012/10/27/2742355.html

    关于Web端调用GP服务可参考这里:

    http://www.cnblogs.com/potential/archive/2012/11/03/2752289.html

    (版权所有,转载请标明出处)

  • 相关阅读:
    广度优先搜索
    洛谷 P1126 机器人搬重物
    codevs 1058 合唱队形
    洛谷P1216 [USACO1.5]数字三角形 Number Triangles
    Codevs 1576 最长严格上升子序列
    跳马(Knight Moves), ZOJ1091, POJ2243
    洛谷 P1644 跳马问题
    NOI 2971 抓住那头牛
    NOI 2727 仙岛求药
    搜索与回溯算法
  • 原文地址:https://www.cnblogs.com/potential/p/2837762.html
Copyright © 2020-2023  润新知