吳健華 ,梁子震
(廣州市城市規劃勘測設計研究院,廣東 廣州 510060)
廣州市目前正在開展的“三規合一”工作,簡言之就是國民經濟和社會發展規劃、城鄉規劃和土地利用總體規劃(以下簡稱“三規”)基于城鄉空間布局的銜接與協調。首期的主要工作目標之一就是在協調城鄉規劃、土地利用總體規劃建設用地布局差異基礎上,將國民經濟與社會發展規劃的相關內容(以重點建設項目為代表)予以體現和落實,從而消除“三規”的差異,促進城市空間合理布局和土地資源的高效利用,保障廣州市經濟、社會、環境的良性發展以及“首善之區”、現代化國際大都市、國家中心城市等定位目標實現。
“三規合一”涉及廣州市發改委、城建部門和國土部門的規劃成果整理,即按照“三規合一”數據標準,對收集到的國民經濟和社會發展規劃、土地利用總體規劃、城鄉總體規劃以及相關的規劃信息和現狀信息的整理、轉換及標準化數據處理等。因為當前廣州市城建部門一般采用廣州坐標系統,國土部門采用西安80 坐標系。在“三規合一”規劃編制階段,主要是將城市規劃和土地利用規劃成果進行廣州坐標系統和西安80 坐標系的轉換。
筆者單位現有的坐標轉換程序是針對ArcGIS shape 格式文件的,而“三規合一”成果數據是ArcGIS MDB 格式,對普通的點、線、面圖層,可以從MDB 導出為shape 格式進行坐標轉換后再導入MDB 中,但對注記類圖層,這樣的轉換方法得到的最終圖層是面圖層,而不是注記圖層。雖然可以對面圖層進行標注(Label),從而在圖面上顯示描述性文本信息,但標注是根據圖層要素屬性自動標記的,并在漫游和縮放后按照當前地圖比例尺下的最佳位置重畫,而注記(Annotaion)是一種類型的要素,它的大小和位置相對地圖上的其他要素保持不變。在緩存切片時,使用標注會導致產生重復文本,必須使用注記。
若要得到與原始數據類型及結構一致的注記類型的圖層,還需要進行一系列的處理。筆者將注記圖層坐標轉換處理的方法和過程整理記錄如下,希望能給同行的類似工作提供參考。
假設原始MDB 為西安坐標數據,轉換后的MDB為廣州坐標系,注記圖層坐標轉換思路:①MDB 結構轉換:采用XML 源數據結構導出導入的方法,由原始西安坐標范圍的數據庫生成廣州坐標范圍的數據庫,以保留圖層的數據結構、子類型分類等信息;②圖層數據坐標轉換:原始注記圖層導出為shape 文件后進行坐標轉換,再通過Label 轉Annotation 的方式形成新的注記圖層,再導入到第1 步中建立的廣州坐標范圍數據庫的注記圖層中;③注記圖層屬性還原:通過數據表連接匹配的方式,按原始圖層內容修改相關的注記圖層的屬性內容,使其顯示效果、分類方式與原始圖層完全一致,從而完成注記類圖層的坐標轉換過程。
下面講述各步驟的詳細做法。
由于坐標范圍的不一致,坐標轉換后的shape 文件無法直接導入原來的MDB 中,所以需要新建廣州坐標范圍的MDB 及注記圖層,保持原有西安坐標注記圖層的字段定義、子類型定義等屬性定義內容。
(1)首先,在ArcCatalog 中通過[Export |" XML Workspace Document"]菜單功能,將原始MDB 數據庫的圖層、字段結構等定義輸出為XML 工作空間文檔。輸出時注意選擇“Schema Only”,只輸出結構定義,不輸出數據。
(2)使用文字編輯軟件編輯導出的XML 文件,搜索西安坐標系的Domain 坐標范圍,按字符串搜索<XOrigin >找到類似以下的西安坐標范圍字符串:
<XOrigin >383595.35439876141 </XOrigin ><YOrigin >2482331.514785964 </YOrigin > <XYScale >49494409388.189407 </XYScale >
將上述內容替換成廣州坐標系的定位范圍:
<XOrigin >3100 </XOrigin ><YOrigin >-40000 </YOrigin ><XYScale >54989000000 </XYScale >
應注意,由于西安坐標系的MDB 文件里面有多個圖層,因此可能存在不完全相同的西安坐標范圍值,需要將它們都替換為統一的廣州坐標系的定位范圍。
(3)在ArcCatalog 中新建MDB 文件,并通過[Import|"XML Workspace Document"]菜單功能導入上述修改后的XML 文件,得到一個圖層結構和字段定義等與原始MDB 均一致的數據庫,但是其中各個圖層的Domain 坐標范圍都是按廣州坐標范圍設置的了。
從原始MDB 中導出西安坐標的注記圖層(命名為“注記SHP”),此時的圖層類型為Polygon,對此圖層進行坐標轉換,轉換后通過Lable 轉Annotation 的方式形成Annotation 類型的注記圖層。
(1)在ArcMap 中加載坐標轉換后的廣州坐標系的“注記SHP”圖層數據。可以看到,在轉換過程中,原Annotation 類型的要素都已變成了Polygon,與原始數據的類型是不一樣的。
(2)通過數據框屬性設置好圖形顯示單位后,將“注記SHP”圖層按照注記內容字段(TextString)進行標注(Label),如圖1所示。

圖1 “注記SHP”標注顯示效果
(3)將Label 后的“注記SHP”圖層通過[Convert Labels to Annotation]功能輸出新的Annotation 類型圖層,如圖2中的“注記SHP_Anno”圖層。可以看到新創建的“注記SHP_Anno”圖層的所有注記都是統一默認分類以及統一字體大小的。

圖2 新輸出“注記SHP_Anno”圖層顯示效果
將上面新創建的“注記SHP_Anno”圖層中的記錄全部復制到第1 步中新建好的廣州坐標MDB 的注記圖層中,并通過數據表連接匹配的方式恢復注記圖層的分類及標注字體等屬性設置,使其顯示效果、分類方式與原始西安坐標的注記圖層一致。
(1)在ArcMap 中打開“注記SHP_Anno”圖層的屬性表,全選所有記錄,然后復制;
(2)在ArcMap 中加載 廣州坐標MDB 的注記圖層(名稱為“注記(廣州坐標)”),設置為可編輯狀態,并設為目標圖層,然后粘貼剛才復制的記錄。
由于“注記(廣州坐標)”和“注記SHP_Anno”圖層的結構字段定義是一樣的,因此大部分屬性內容均可正確復制,但是由于默認注記子類型分類、默認注記符號定義的不一致,個別字段的屬性內容會不一樣。我們將在下一步中將其與原始注記圖層進行匹配,使其顯示效果保持一致。
(3)通過數據表連接匹配的方式,按“注記SHP”圖層內容修改“注記(廣州坐標)”圖層的相關屬性內容,使其顯示效果、分類方式與原始西安坐標的注記圖層一致,在ArcMap 中,分別打開“注記(廣州坐標)”圖層和“注記SHP”圖層的屬性表,通過觀察可知“注記(廣州坐標)”中的Feature ID 的值與“注記SHP”中的FID 字段的值是對應的(如圖3所示),可作為關鍵字對兩個屬性表進行連接操作,以進行其他字段的匹配。
進行表的關聯:選中“注記(廣州坐標)”圖層,點擊右鍵菜單[Join],使用FeatureID 字段,連接的圖層選擇“注記SHP”,連接字段為FID,如圖4所示:

圖3 兩個圖層的屬性表對比

圖4 兩個圖層連接設置
如此連接后,“注記SHP”的字段都添加到“注記(廣州坐標)”中了,然后使用Field Calculator 方式修改關聯后的“注記(廣州坐標)”圖層表中的AnnotationClassID、FontSize、FontName 、VerticalAlignment、Angle 等注記分類、字體顯示相關字段,使其與原有效果一致,需要匹配修改的字段如表1所列。

表1 需要進行匹配修改的字段
至此,我們已經完成了注記圖層的坐標轉換,對比轉換前(圖5)和轉換后(圖6)的注記顯示,發現效果基本一致,但注記位置與原來相比還存在些許偏差,如下面圖中“龍潭河”注記的位置。

圖5 轉換前的注記(西安坐標)圖層顯示效果

圖6 轉換后的注記(廣州坐標)圖層顯示效果
分析原因:是轉換后文件和源文件對定位點的定義值不一致造成的。比如某個注記,源文件的定位點在左上,對應的屬性值是1,即1 代表左上定位;而在轉換后文件中,該注記的定位點屬性值仍是1,但是此時1 代表的卻是中心點定位,這就使得文本位置有偏差。如果能修改定位點的定義值,這樣的偏差是可以糾正的。
通過本方法進行注記類型圖層的坐標轉換,既省略了重建注記子類型分類的步驟,減少手工錄入量,又保留了原有圖層各屬性字段內容,同時也保留了注記字體、大小、角度等相關顯示信息,能最大限度保持原有顯示效果。但此方法仍存在注記位置偏差的問題有待進一步研究解決。
[1]王俊,何正國.“三規合一”基礎地理信息平臺研究與實踐——以云浮市“三規合一”地理信息平臺建設為例[J].城市規劃,2011(S).
[2]謝忠,韓祺娟,吳亮.GIS 空間數據庫的“一庫兩用”策略研究[J].地理與地理信息科學,2008,24(2).
[3]彭良勇,黃全義,高德荃.基于ArcGIS 的大比例尺地形數據庫的日常更新[J].測繪信息與工程,2007,32(1).
[4]操震洲,李清泉.空間數據庫的更新技術研究[J].測繪通報,2007(11).
[5]王新生,王紅,朱超平.ArcGIS 軟件操作與應用.北京:科學出版社,2010.