ArcGIS API for Silverlight 使用GeometryService進行河流網格划分(三)


先來看看最終的效果圖吧!

對於島嶼情況:

相信很多人都做過關於河流的分析,而其中多少會涉及到河流的網格划分。二這也一直是一個難點,尤其是在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.多邊形控制點直接影響着網格的質量。

如果您有什么好的建議或者改進的方法,歡迎留言分享。

(版權所有,轉載請標明出處)


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM