一、前言
平时工作、学习等直接拿到的数据不一定就是 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)
这样就成功了。