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)

这样就成功了。

原文地址:https://www.cnblogs.com/zhurong/p/13793793.html