一、前言
平時工作、學習等直接拿到的數據不一定就是 shp 等空間格式的數據,有時是直接拿到的點集、面集等。
例如最近我們有些網格面是同事自己從高德地圖上面畫的面(這個后台管理還是我寫的),最后得到的是面的數組集:
[[111.714248,40.795969],[111.707632,40.79136],[111.706736,40.790664],[111.704842,40.789509],[111.693665,40.786364]]
例如上面的數據。
對於這些數據的處理,下面進行分享下。
二、點數據轉換
點數據比較簡單,可以直接從 txt、excel 等數據中導入,直接報存為 shp 等格式數據文件。
具體操作(以 ArcMap 10.2 為例):
文件=》添加數據=》添加XY數據
點擊后,會彈出一個添加數據的對話框:
選擇好后,點擊確定,會直接在圖層中添加一個點圖層,該圖層可以保存為需要的格式文件。
三、線、面轉換
不同於點,線面轉換要借助工具箱里面的工具—— JSON 轉要素。
在使用這個要素前需要對數據進行處理。
由於 ArcMap 中識別的 JSON 是其獨特的格式,和 GeoJson 有所不同。
ArcGIS JSON 格式:
{ "displayFieldName" : "", "fieldAliases" : { "FID" : "FID", "Id" : "Id" }, "geometryType" : "esriGeometryPolygon", "spatialReference" : { "wkid" : 4326, "latestWkid" : 4326 }, "fields" : [ { "name" : "FID", "type" : "esriFieldTypeOID", "alias" : "FID" }, { "name" : "Id", "type" : "esriFieldTypeInteger", "alias" : "Id" } ], "features" : [ { "attributes" : { "FID" : 0, "Id" : 0 }, "geometry" : { "rings" : [ } } ] }
1、新建空 shp 文件
新建一個空的 shp 文件。
注意:這里根據自己的需求:建立對應字段、坐標系等。
因為后面用到的時候就不需要再去修改 JSON 文件,可以直接使用
2、導出需要的 JSON 文件
對上面新建的 shp 文件在 ArcMap 中打開。
我的建議是添加一條數據,這樣 JSON 中的格式會更完善。
使用工具:要素轉 JSON,導出json文件
3、數據填充到 JSON 中
對導出的json 文件進行編輯,前面說過:字段、坐標系。這些添加了,那么對應字段不用修改。
主要修改 features 下面的內容,添加數組項,修改數組里面的字段屬性、geometry 屬性等。
4、JSON 轉要素
對編輯后的 json 文件再通過工具:JSON 轉要素
就可以得到需要的數據了。
具體工具:ArcToolbox =》轉換工具=》JSON
四、面合並
面的操作基本和上面的線的導出是一樣的步驟。
但是在合並這樣導出的數據時出現了問題:
問題:
但是在合並這些面(街道數據合並成區),始終不成功。
放到最大,看中間都沒有空隙。
原因:
再拿兩個面進行合並測試發現,中間多出了線條,經分析發現:面相鄰的邊,點位不一樣(有的點是重合的,有些是其中一個面獨有的)。這就造成不能合並,或合並后有問題。
解決:
1、開啟編輯
2、對相鄰的面,邊界點刪除,只保留最邊上兩個
3、合並(union)
這樣就成功了。