如何处理地下管线数据
一、 使用背景
??????如今三維GIS越來越受到大家的關注,也越來越多的使用在GIS的項目中。三維地下管線就是一個重要的使用方面。而大家拿到的數據往往是簡單的管點數據和管線數據,因為管線的接頭處與管點是有對應關系的,并不能簡單的直接進行顯示,在SuperMap Objects .NET的范例代碼中為大家提供了三維管線的范例代碼,如何可以讓已有的數據通過范例代碼進行顯示呢?下面就為大家介紹如何處理已有的數據,將其可以通過范例代碼來顯示。
*注:范例代碼針對普遍的管線數據,但由于項目的具體數據不同,具體情況需要具體對待。
二、 準備工作
? SuperMap Objects .NET,SuperMap iDesktop ,
? 管點,管線數據。
? SuperMap Objects .NET 范例代碼:Symbol3DDisplay
三、 數據處理
???1. 導入數據集
??????通常項目中拿到的數據是CAD的數據,需要以簡單的數據形式導入到數據源中,如果已經導入,則不需要這一步,操作見圖一
???2. 創建網絡數據集
??????使用SuperMap iDesktop ,將已有的管線和管點數據創建網絡數據集,需要保存點/線的數據集的全部字段,創建時需要用管點打斷線,而不可以線線自動打斷,因為是二維的線,看起來相交的線可能在空間中并不相交。如圖二:
圖二 創建網絡數據集
??????創建的網絡數據集由線/點兩部分組成,線數據會產生兩個字段,SmFnode,SmTNode這兩個字段,分別與線兩端點的SmNodeID相對應,體現了網絡數據集點和線的拓撲關系。
???3. 保存屬性字段值
??????最終進行顯示的是管點數據集和管線數據集,網絡數據集只是為了獲得點線之間的拓撲關系,因此,還需要經網絡數據集轉成點數據集和線數據集。轉換得到的線數據集需要保留網絡線數據的SmFnode,SmTNode,點數據集需要保留網絡點數據的SmNodeID。默認的網絡數據集轉點/線數據集無法保留網絡數據集的系統字段SmFnode,SmTNode,SmNodeID,因此在轉換之前,需要新建字段,將這幾個需要保留的系統字段保存在新建的字段中。為了和Symbol3DDisplay 代碼中的字段名同一,需要將SmFnode字段保存在新建的FNode字段中,SmTNode保存在ENode字段中,SmNodeID保存在PtID字段中。具體的字段可以根據項目修改,但需要改動代碼中相應的位置。如圖三,圖四。
???4. 網絡數據集轉點/線數據集
??????保存了屬性后的數據可以直接換成點/線數據集,數據集中默認保存網絡數據集的全部非系統字段。如圖五。
???5. 轉換為三維數據集
??????因為管線大多是有自身的高程值,按照每根管線不同的高度值進行顯示,因此需要將二維的點線轉換成三維的數據,轉換是需要指定轉換的高程字段值。見圖六。
??????如此處理,即可得到最終的管點/管線數據,但如要在Symbol3DDisplay范例代碼中進行顯示,仍需要修改具體的數據集名,調整顯示的風格,以達到要求。顯示效果如下圖。
*注意:
??????最終顯示的數據是經過網絡數據集轉換而得的具有拓撲關系的點/線數據集。轉換后的點數據集中每一個點都有一個唯一的PtID與之對應,線數據集則都有FNode,ENode兩個字段,且這兩個值都與線兩端點對象的PtID相對應。因此,處理完成的點線數據集不可做添加,刪除,編輯等操作,否則會導致顯示效果有誤。
總結
以上是生活随笔為你收集整理的如何处理地下管线数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 一步步分析-C语言如何面向对象编程
- 下一篇: 五岁的时候,你在干什么?