ArcMap 點、線、面數組轉要素,面合並問題


一、前言

平時工作、學習等直接拿到的數據不一定就是 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)

這樣就成功了。


免責聲明!

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



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