• 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)

    这样就成功了。

  • 相关阅读:
    CStringArray序列化处理
    【转】C++ Incorrect Memory Usage and Corrupted Memory(模拟C++程序内存使用崩溃问题)
    【转】Native Thread for Win32 C- Creating Processes(通俗易懂,非常好)
    【转】Native Thread for Win32 B-Threads Synchronization(通俗易懂,非常好)
    【转】Native Thread for Win32 A- Create Thread(通俗易懂,非常好)
    【转】关于OnPaint的工作机制
    Window发声函数Beep、MessageBeep
    Sqlite
    VC++ Splash Window封装类CSplash
    通过代码注册COM、DLL组件
  • 原文地址:https://www.cnblogs.com/zhurong/p/13793793.html
Copyright © 2020-2023  润新知