目录
2 用ArcMap来绘制要素并转换为GeoJSON或TopoJSON
1.简介
1.1 GeoJSON
GeoJSON 是用于描述地理空间信息的数据格式。GeoJSON 不是一种新的格式,其语法规范是符合 JSON 格式的,只不过对其名称进行了规范,专门用于表示地理信息。
GeoJSON 的最外层是一个单独的对象(object)。这个对象可表示:
① 几何体(Geometry);
② 特征(Feature);
③ 特征集合(FeatureCollection);
最外层的 GeoJSON 里可能包含有很多子对象,每一个 GeoJSON 对象都有一个 type 属性,表示对象的类型,其type 的值可以是:Point、MultiPoint、LineString、MultiLineString、Polygon、MultiPolygon、GeometryCollection、Feature、FeatureCollection
例如:
【点】:
{
"type": "Point",
"coordinates": [12798320.392099999,4272355.694600001]
}
【线】:
{
"type": "LineString",
"coordinates":[[12798320.392099999,4272355.694600001],12802046.9976,4272321.658799998]]
}
【面】:
{
"type": "Polygon",
"coordinates":[[[11636922.715300001,4370738.244599998]..略去n个点..[11636974.441399999,4370750.680100001]]]
}
1.2 TopoJSON
TopoJSON 是 GeoJSON 按拓扑学编码后的扩展形式,是由 D3 的作者 Mike Bostock 制定的。相比 GeoJSON 直接使用 Polygon、Point 之类的几何体来表示图形的方法,TopoJSON 中的每一个几何体都是通过将共享边(被称为arcs)整合后组成的。
TopoJSON 消除了冗余,文件大小缩小了 80%。
2 用ArcMap来绘制要素并转换为GeoJSON或TopoJSON
2.1 矢量化
矢量化的过程比较简单,主要就是新建地理数据库→新建要素数据集→新建要素类→开始矢量化操作。不会矢量化的可以自行百度。
2.2 shp格式数据导出
目标要素类图层上右键→数据→导出数据,如下图所示:
选择导出类型和目标路径,导出即可
2.3 shp数据转为GeoJSON 或 TopoJSON
主要借助在线转 mapshaper
Mapshaper是一个地图数据编辑神器(综合制图),主要包括简化、编辑属性、裁剪、檫除、合并、过滤等功能。它支持以下几种数据格式:
- Shapefile (一种用于存储地理要素的几何位置和属性信息的非拓扑简单格式)
- GeoJSON (GeoJSON 是用 JSON 的语法表达和存储地理数据,可以说是 JSON 的子集)
- TopoJSON (TopoJSON 是 GeoJSON 按拓扑学编码后的扩展形式)
- DBF (一种特殊的文件格式!表示数据库文件)
- CSV(以纯文本的形式存储表格数据,以纯文本的形式存储表格数据,EXCEL可以打开)
mapshaper官网:https://mapshaper.org/
mapshaper GitHub官网地址:https://github.com/mbloch/mapsh
系统在网页端打开后页面如下图:
由于该服务部署在国外,所以网络访问一般会比较慢,这是一个开源代码的工具,所以也能迅速的在个人自己的电脑上搭建起该服务,这样就可以无延迟访问了。
本地安装
通过git下载代码 或 通过GitHub官网直接下载源码压缩包、解压,然后安装,编译。
git clone git@github.com:mbloch/mapshaper.git // 下载代码
cd mapshaper // 进入文件目录
npm install // 安装依赖包
npm run build // 编译代码,打包资源
编译运行结束后,目录中的www文件夹就是打包完的资源,就可以像一般网站,直接发布至像IIS、Nginx 等服务器,就可以本地访问了。
访问系统后,点击上图select按钮或者将文件拖入下方quick import快速导入区
选中导出的数据文件夹下的所有文件进行打开(如果只选.shp格式文件,转换完毕后是GeometryCollection类型的数据)
点击Import按钮进行导入数据。导入完成后如下所示:
点击右上角Export导出按钮,选择对应导出类型后,点击Export按钮导出。截图如下:
用编辑器打开导出后的json数据,格式化以后可以看到:
{
"type": "GeometryCollection",
"geometries": [{
"type": "Polygon",
"coordinates": [
[
[11636922.715300001, 4370738.244599998],
[11636961.2122, 4370767.745700002],
[11636974.441399999, 4370750.680100001],
[11636961.0799, 4370740.6259],
[11636965.4456, 4370734.805],
[11636953.407000002, 4370725.280000001],
[11636947.7185, 4370730.571699999],
[11636934.489300001, 4370721.046700001],
[11636922.715300001, 4370738.244599998]
]
]
}]
}
至此就完成了GeoJSON数据的制作过程,可以将结果数据拷入项目中使用了。希望对你有所帮助。