GeoJSON、TopoJSON数据的转换和生成

目录

1.简介

1.1 GeoJSON

1.2 TopoJSON

2 用ArcMap来绘制要素并转换为GeoJSON或TopoJSON

2.1 矢量化

2.2 shp格式数据导出

2.3 shp数据转为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数据的制作过程,可以将结果数据拷入项目中使用了。希望对你有所帮助。

评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值