中地數碼MapGIS CS二次開發(fā)-玩轉GIS拓撲檢查

  在學習GIS專業(yè)知識或者從事GIS行業(yè)工作時,大家可能經常會接觸到“拓撲”、“空間拓撲關系”、“拓撲檢查”等類似的概念,那么究竟什么是“拓撲”?為什么需要在GIS數據處理的過程中進行拓撲檢查?以及如何通過二次開發(fā)實現拓撲檢查的功能?

  1.什么是拓撲?

  首先,我們簡要介紹下拓撲的基本概念,先看看下面一段定義:

  拓撲學是研究幾何圖形或空間在連續(xù)改變形狀后還能保持不變的一些性質的一個學科,通過將空間幾何實體抽象成與其大小、形狀無關的點,將連接實體的線路抽象成線,進而研究點、線、面之間的關系。

  其實簡單來說,拓撲學屬于數學中幾何學的一個分支,它與通常的平面幾何、立體幾何有所不同,不研究幾何對象的長短、面積等度量性質,而是研究幾何對象之間的關系。

  比如著名的哥尼斯堡七橋問題:是否存在這樣的走法,即任意從A、B、C、D出發(fā),走遍七座橋,每個橋只能通過一次,再回到出發(fā)點?

圖 1 哥尼斯堡七橋問題

  在GIS中,拓撲處理的核心是建立拓撲關系,拓撲關系是地理對象在空間位置上的相互關系,如結點與線、線與面之間的連接關系??臻g實體之間的拓撲關系是GIS進行空間分析和決策的基礎之一。

圖 2 空間拓撲關系

  2.GIS數據為什么要進行拓撲檢查?

  眾所周知,空間數據在采集和編輯過程中,常會不可避免地出現一些數據錯誤。例如,同一個結點或同一條線被數字化了兩次;相鄰的面狀幾何對象在采集過程中出現了裂縫或者相交;多邊形不封閉;多邊形的邊為懸線等等,導致假結點、冗余結點、懸線、重復線等錯誤數據的產生。

圖 3 線中包含重復結點

圖 4 區(qū)(多邊形)有空隙

圖 5 區(qū)(多邊形)不封閉

  這些數據錯誤往往量大,而且比較隱蔽,肉眼不容易識別出來,通過手工方法也不易去除,導致采集的空間數據之間的拓撲關系和實際地物之間的拓撲關系不符合,以致影響后續(xù)的數據處理和分析工作,進而影響數據的質量和可用性。因此,需要進行拓撲處理消除這些冗余和錯誤的數據。

  3.二次開發(fā)實現拓撲檢查

  由于拓撲檢查在GIS數據生產與使用過程中起到的關鍵作用,因此在各大GIS軟件中拓撲相關功能也成為必不可少的GIS模塊。其原理往往大同小異,即通過建立不同的拓撲規(guī)則對數據進行拓撲檢查。

  下面以MapGIS桌面二次開發(fā)為例,給大家介紹如何在桌面GIS應用中快速開發(fā)實現拓撲檢查功能:

  一、實現思路

  MapGIS桌面二次開發(fā)SDK在MapGIS.SpatialAnalysis程序集中封裝了專門的拓撲檢查類SPTopologyChecker,用于實現拓撲檢查功能?;緦崿F思路如下:

圖 6 拓撲檢查實現思路

  二、接口詳解

  設置拓撲規(guī)則,通過AddTopologyRule方法可以設置拓撲檢查時的規(guī)則;MapGIS將多種不同類型的拓撲規(guī)則封裝為枚舉類型供該方法作為參數設置,滿足不同情況下的拓撲檢查需求。

圖 7 部分拓撲規(guī)則

  設置拓撲檢查數據,SetCheckSfcls方法可以設置要進行拓撲檢查的矢量數據,其中第二個數據對象為參考數據,即是否為兩個數據之間的拓撲檢查,若僅為單個數據本身的拓撲,第二個對象傳入空值null即可。

  拓撲檢查,值得注意的是CheckTopology方法包含了兩個參數,分別是SPTopologyCheckParameter拓撲檢查參數對象和SPTopologyErrorManager拓撲錯誤管理對象,顧名思義分別是用于設置拓撲查詢的參數和管理拓撲錯誤的。簡單來說,拓撲參數對象可以設置拓撲檢查時的容差、最小長度、面積等檢查指標,而錯誤管理對象則保存檢查處的錯誤結果,包括錯誤類型、對應的要素等,便于進行后續(xù)的錯誤修改。詳細接口信息可參考我們的在線API文檔:

  三、拓撲檢查

  通過上面介紹的接口,我們即可通過MapGIS桌面二次開發(fā)SDK實現GIS中常用的拓撲檢查功能,下圖為單個區(qū)圖層使用部分規(guī)則進行拓撲檢查的結果:

圖 8 拓撲檢查結果

  其中,錯誤管理部分展示的內容即為從SPTopologyErrorManager對象中獲取的各條拓撲錯誤信息。

  以上是本次為大家分享的MapGIS二次開發(fā)實現拓撲檢查功能的全部內容,如果大家想要更深入的了解這部分內容或者對MapGIS平臺提供的其他二次開發(fā)功能感興趣,歡迎通過4008809970熱線或司馬云云聽聯系我們。

  同時,我們在司馬云開發(fā)世界中提供了全套的開發(fā)資源供大家免費獲取,幫助大家快速上手二次開發(fā)。

  

圖 9 MapGIS 桌面開發(fā)包

  

圖 10 MapGIS桌面二次開發(fā)示例

  

圖 11 云聽社區(qū)

  隨著GIS產品的不斷創(chuàng)新發(fā)展,GIS平臺二次開發(fā)技能需求愈發(fā)凸顯。未來,中地數碼將始終踐行以“GIS平臺+生態(tài)發(fā)展”的融合創(chuàng)新戰(zhàn)略打造GIS生態(tài)圈,積極擁抱業(yè)內合作伙伴,聚焦二次開發(fā)服務,為用戶帶來更加高效的二次開發(fā)技能培訓及實戰(zhàn)演練,滿足用戶“簡便、易用、高效”的二次開發(fā)訴求。

(免責聲明:本網站內容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網站出現的信息,均僅供參考。本網站將盡力確保所提供信息的準確性及可靠性,但不保證有關資料的準確性及可靠性,讀者在使用前請進一步核實,并對任何自主決定的行為負責。本網站對有關資料所引致的錯誤、不確或遺漏,概不負任何法律責任。
任何單位或個人認為本網站中的網頁或鏈接內容可能涉嫌侵犯其知識產權或存在不實內容時,應及時向本網站提出書面權利通知或不實情況說明,并提供身份證明、權屬證明及詳細侵權或不實情況證明。本網站在收到上述法律文件后,將會依法盡快聯系相關文章源頭核實,溝通刪除相關內容或斷開相關鏈接。 )