在學(xué)習(xí)GIS專業(yè)知識或者從事GIS行業(yè)工作時,大家可能經(jīng)常會接觸到“拓?fù)?rdquo;、“空間拓?fù)潢P(guān)系”、“拓?fù)錂z查”等類似的概念,那么究竟什么是“拓?fù)?rdquo;?為什么需要在GIS數(shù)據(jù)處理的過程中進(jìn)行拓?fù)錂z查?以及如何通過二次開發(fā)實(shí)現(xiàn)拓?fù)錂z查的功能?
1.什么是拓?fù)?
首先,我們簡要介紹下拓?fù)涞幕靖拍睿瓤纯聪旅嬉欢味x:
拓?fù)鋵W(xué)是研究幾何圖形或空間在連續(xù)改變形狀后還能保持不變的一些性質(zhì)的一個學(xué)科,通過將空間幾何實(shí)體抽象成與其大小、形狀無關(guān)的點(diǎn),將連接實(shí)體的線路抽象成線,進(jìn)而研究點(diǎn)、線、面之間的關(guān)系。
其實(shí)簡單來說,拓?fù)鋵W(xué)屬于數(shù)學(xué)中幾何學(xué)的一個分支,它與通常的平面幾何、立體幾何有所不同,不研究幾何對象的長短、面積等度量性質(zhì),而是研究幾何對象之間的關(guān)系。
比如著名的哥尼斯堡七橋問題:是否存在這樣的走法,即任意從A、B、C、D出發(fā),走遍七座橋,每個橋只能通過一次,再回到出發(fā)點(diǎn)?
圖 1 哥尼斯堡七橋問題
在GIS中,拓?fù)涮幚淼暮诵氖墙⑼負(fù)潢P(guān)系,拓?fù)潢P(guān)系是地理對象在空間位置上的相互關(guān)系,如結(jié)點(diǎn)與線、線與面之間的連接關(guān)系。空間實(shí)體之間的拓?fù)潢P(guān)系是GIS進(jìn)行空間分析和決策的基礎(chǔ)之一。
圖 2 空間拓?fù)潢P(guān)系
2.GIS數(shù)據(jù)為什么要進(jìn)行拓?fù)錂z查?
眾所周知,空間數(shù)據(jù)在采集和編輯過程中,常會不可避免地出現(xiàn)一些數(shù)據(jù)錯誤。例如,同一個結(jié)點(diǎn)或同一條線被數(shù)字化了兩次;相鄰的面狀幾何對象在采集過程中出現(xiàn)了裂縫或者相交;多邊形不封閉;多邊形的邊為懸線等等,導(dǎo)致假結(jié)點(diǎn)、冗余結(jié)點(diǎn)、懸線、重復(fù)線等錯誤數(shù)據(jù)的產(chǎn)生。
圖 3 線中包含重復(fù)結(jié)點(diǎn)
圖 4 區(qū)(多邊形)有空隙
圖 5 區(qū)(多邊形)不封閉
這些數(shù)據(jù)錯誤往往量大,而且比較隱蔽,肉眼不容易識別出來,通過手工方法也不易去除,導(dǎo)致采集的空間數(shù)據(jù)之間的拓?fù)潢P(guān)系和實(shí)際地物之間的拓?fù)潢P(guān)系不符合,以致影響后續(xù)的數(shù)據(jù)處理和分析工作,進(jìn)而影響數(shù)據(jù)的質(zhì)量和可用性。因此,需要進(jìn)行拓?fù)涮幚硐@些冗余和錯誤的數(shù)據(jù)。
3.二次開發(fā)實(shí)現(xiàn)拓?fù)錂z查
由于拓?fù)錂z查在GIS數(shù)據(jù)生產(chǎn)與使用過程中起到的關(guān)鍵作用,因此在各大GIS軟件中拓?fù)湎嚓P(guān)功能也成為必不可少的GIS模塊。其原理往往大同小異,即通過建立不同的拓?fù)湟?guī)則對數(shù)據(jù)進(jìn)行拓?fù)錂z查。
下面以MapGIS桌面二次開發(fā)為例,給大家介紹如何在桌面GIS應(yīng)用中快速開發(fā)實(shí)現(xiàn)拓?fù)錂z查功能:
一、實(shí)現(xiàn)思路
MapGIS桌面二次開發(fā)SDK在MapGIS.SpatialAnalysis程序集中封裝了專門的拓?fù)錂z查類SPTopologyChecker,用于實(shí)現(xiàn)拓?fù)錂z查功能?;緦?shí)現(xiàn)思路如下:
圖 6 拓?fù)錂z查實(shí)現(xiàn)思路
二、接口詳解
設(shè)置拓?fù)湟?guī)則,通過AddTopologyRule方法可以設(shè)置拓?fù)錂z查時的規(guī)則;MapGIS將多種不同類型的拓?fù)湟?guī)則封裝為枚舉類型供該方法作為參數(shù)設(shè)置,滿足不同情況下的拓?fù)錂z查需求。
圖 7 部分拓?fù)湟?guī)則
設(shè)置拓?fù)錂z查數(shù)據(jù),SetCheckSfcls方法可以設(shè)置要進(jìn)行拓?fù)錂z查的矢量數(shù)據(jù),其中第二個數(shù)據(jù)對象為參考數(shù)據(jù),即是否為兩個數(shù)據(jù)之間的拓?fù)錂z查,若僅為單個數(shù)據(jù)本身的拓?fù)洌诙€對象傳入空值null即可。
拓?fù)錂z查,值得注意的是CheckTopology方法包含了兩個參數(shù),分別是SPTopologyCheckParameter拓?fù)錂z查參數(shù)對象和SPTopologyErrorManager拓?fù)溴e誤管理對象,顧名思義分別是用于設(shè)置拓?fù)洳樵兊膮?shù)和管理拓?fù)溴e誤的。簡單來說,拓?fù)鋮?shù)對象可以設(shè)置拓?fù)錂z查時的容差、最小長度、面積等檢查指標(biāo),而錯誤管理對象則保存檢查處的錯誤結(jié)果,包括錯誤類型、對應(yīng)的要素等,便于進(jìn)行后續(xù)的錯誤修改。詳細(xì)接口信息可參考我們的在線API文檔:
三、拓?fù)錂z查
通過上面介紹的接口,我們即可通過MapGIS桌面二次開發(fā)SDK實(shí)現(xiàn)GIS中常用的拓?fù)錂z查功能,下圖為單個區(qū)圖層使用部分規(guī)則進(jìn)行拓?fù)錂z查的結(jié)果:
圖 8 拓?fù)錂z查結(jié)果
其中,錯誤管理部分展示的內(nèi)容即為從SPTopologyErrorManager對象中獲取的各條拓?fù)溴e誤信息。
以上是本次為大家分享的MapGIS二次開發(fā)實(shí)現(xiàn)拓?fù)錂z查功能的全部內(nèi)容,如果大家想要更深入的了解這部分內(nèi)容或者對MapGIS平臺提供的其他二次開發(fā)功能感興趣,歡迎通過4008809970熱線或司馬云云聽聯(lián)系我們。
同時,我們在司馬云開發(fā)世界中提供了全套的開發(fā)資源供大家免費(fèi)獲取,幫助大家快速上手二次開發(fā)。
圖 9 MapGIS 桌面開發(fā)包
圖 10 MapGIS桌面二次開發(fā)示例
圖 11 云聽社區(qū)
隨著GIS產(chǎn)品的不斷創(chuàng)新發(fā)展,GIS平臺二次開發(fā)技能需求愈發(fā)凸顯。未來,中地數(shù)碼將始終踐行以“GIS平臺+生態(tài)發(fā)展”的融合創(chuàng)新戰(zhàn)略打造GIS生態(tài)圈,積極擁抱業(yè)內(nèi)合作伙伴,聚焦二次開發(fā)服務(wù),為用戶帶來更加高效的二次開發(fā)技能培訓(xùn)及實(shí)戰(zhàn)演練,滿足用戶“簡便、易用、高效”的二次開發(fā)訴求。
(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進(jìn)一步核實(shí),并對任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實(shí)內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )