ArcGIS建築物簡化和建築物群聚合算法實驗


一、下載OSM數據

首先從OpenStreetMap官網下載我們需要的實驗數據,這里我選擇清華和北大校園作為本次實驗數據

1

二、數據處理

將我們下載的實驗數據導入ArcGIS。由於OSM數據是.osm格式,因此導入ArcGIS之前需要將其轉換為.shp格式,具體方法見:關於openstreet map的osm文件轉shp文件方法(附arcgis10.2插件)

可以看到,面狀數據中除了建築物之外還有植被、水體等。因此為了實現對建築物的簡化,我們需要將建築物單獨從面狀數據中篩選出來。

打開面狀數據的屬性表,不難發現building字段可以反應每個面是否為建築物。因此,我們打開Select by Attribute面板,buiding <>'' 找出buiding字段不為空的記錄,再將這些記錄導出就能得到只包含建築物的面狀數據了。

2

3

三、算法實驗

建築物簡化:

ArcGIS 10.2的建築物簡化工具位於Toolboxes->Cartography Tools->Generalization->Simplify Building,但我們暫時還不能進行簡化。

巨坑警告!在進行建築物簡化之前,請務必確認數據的參考坐標系和投影坐標系!ArcGIS 10.2似乎不能對 **沒有投影坐標系的經緯度坐標(Decimal Degrees) **下的建築進行簡化,而下載的OSM數據一般是基於WGS-84坐標系,本身沒有進行地圖投影,因此沒有投影坐標。如果直接使用經緯度進行建築物簡化可能得到錯誤結果(例如下圖所有建築物變成三角形,且與容差設置無關)
5

因此,建議先進行下面兩個步驟:

1. 改變數據的坐標系。

打開Toolboxes->Data Management Tools->Projections and Transformation->Feature->Project 工具。
其中Input Coordinate System 選項可以看到當前數據的坐標系,如果僅僅只有參考坐標系則需要進行投影。Output Coordinate System選項代表我們將要變更到的坐標系,選擇Projected Coordinate System中的一種投影坐標系就好,這里我選擇了Mercator投影坐標系。
5

現在我們得到了一個Mercator投影的建築物面狀數據。

2. 改變Data Frame的坐標系

其實完成上一步,就已經可以正常進行建築物簡化了,只需要在Simplify Building工具中導入剛才得到數據,再Simplification Tolerance選項將單位改成Meters即可。(注意:必須使用有投影坐標系的數據,再改變這里的單位,否則也可能得到錯誤的簡化結果)。

PS:雖然經過我的測試,只要數據是Project之后的,並且容差值合適(對於經緯度而言,例如0.001),即使容差單位選擇Decimal degrees,也能得到正確的簡化結果。不過鑒於建築簡化工具還有關於面積的Minimum Area等參數,不太推薦使用經緯度進行簡化。

2345截圖20200316163629

因此,為了便於對簡化算法結果的量算和分析,最好是在菜單欄View-Data Frame Properties中更改數據框架顯示的Coordinate System,這里我把他設置成Mercator投影。這樣就能夠在Measure工具中以米為單位量算距離和面積了。

mercator

現在就可以正常使用Simplify Building工具對我們的建築物數據進行簡化了,讓我們看看使用10m作為容差的結果。接下來只要再對結果進行分析就能完成實驗啦,這里就不作討論了。

2345截圖20200316210337

建築物群聚合:

ArcGIS 10.2似乎並沒有直接的建築物群聚合工具,因此,要實現建築物群簡化我們需要借助聚合面工具。

首先,需要在菜單欄的Customize-Extensions中打開Spatial Analyst功能。

image-20200316211812352

然后再工具箱中找到Toolboxes->Cartography Tools->Generalization->Aggregate Polygons工具,這就是我們需要的聚合面工具。

2345截圖20200316212459

從ArcGIS官網上我們能夠了解到每個參數和選項的含義,根據我們實驗的情況選擇使用合適的參數即可完成建築物群的聚合。

參數 說明 數據類型
in_features 要聚合的面要素。如果這是一個引用某個制圖表達的圖層,並且在輸入要素中存在形狀覆蓋,則在聚合處理中將采用這些覆蓋的形狀、而不是要素形狀。 Feature Layer
out_feature_class 要創建的輸出要素類。 Feature Class
aggregation_distance 聚合時面要素邊界間要滿足的距離。必須指定一個距離,且此距離必須大於零。可以選擇首選單位;默認為要素單位。 Linear Unit
minimum_area(可選) 聚合面得以保留的最小面積。默認值為零,即保留所有面。可以指定首選單位;默認為要素單位。 Areal Unit
minimum_hole_size(可選) 面要素中的孔洞得以保留的最小大小。默認值為零,即保留所有面要素中的孔洞。可以指定首選單位;默認為要素單位。 Areal Unit
orthogonality_option(可選) 指定構造聚合邊界時輸出要素的特征。NON_ORTHOGONAL —將創建有機形狀的輸出要素。這適用於自然要素,例如,植被或土壤多邊形。這是默認設置。ORTHOGONAL —將創建正交形狀的輸出要素。此選項適用於保留人為輸入要素的幾何特性,例如,建築物輪廓線。 Boolean
barrier_features[barrier_features,...](可選) 包含在輸入要素中作為聚合障礙的線要素或面要素的圖層。要素不會跨障礙要素聚合。與輸入要素存在幾何沖突的障礙要素將被忽略。 Feature Layer
out_table(可選) 將聚合的面連接到其源面要素的一對多關系表。該表包含兩個字段(OUTPUT_FID 和 INPUT_FID),分別用於存儲聚合要素 ID 和其源要素 ID。使用此表根據源要素派生輸出要素的必要屬性。該表的默認名稱為輸出要素類名稱加上 _tbl。默認路徑與輸出要素類相同。當該參數留空時,不創建任何表。 Table

最后,我們來看一下容差為30m的建築物群聚合結果,然后對結果進行分析就好啦!

2345截圖20200316212441


免責聲明!

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



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