麻辣GIS微信平台

更多 GIS 干货

微信关注不错过

「GIS笔记」Mapshaper文件导出命令-o(output)

文件输出(Output)是mapshaper另外一个最基本的命令,所有的数据操作均需要使用该命令。同样的,mapshaper对文件输出做了不少工作,针对不同的文件格式,会分别有不同的文件设置参数。本文做一个整理,版本基于0.6.x,后续如果有更新,大家可以留言哈。

-o(output)命令

将编辑的内容保存到一个或多个文件中。默认情况下,如果 Mapshaper 检测到命名冲突,它会在输出文件后自动附加一个后缀,以避免覆盖现有文件。

选项参数

默认 -o 后面接文件名或者目录,用于表示输出文件或目录的名称。

format=shapefile|geojson|topojson|json|dbf|csv|tsv|svg,使用format指定输出格式。如果format=选项没有设置,Mapshaper 会尝试从输出文件名推断格式。如果没有给出文件名,Mapshaper 使用输入(-i)的文件名。在导出json格式的时候,导出的是一个对象数组,其中包含每个特征的数据属性。

target=指定要导出的层(逗号分隔)。默认目标是上一个命令的输出层,使用target=*来指定所有图层。

force 输出文件覆盖输入文件(如果未设置这个选项,默认不覆盖输入文件)。

cut-table 从数据中分离属性数据并保存为 JSON 文件。

drop-table 输出的时候删除属性数据。

precision= 将所有坐标四舍五入到指定的精度,例如precision=0.001. 用于减小 GeoJSON 文件的大小。

bbox-index 导出一个 JSON 文件,其中包含每个输出层的边界框。

encoding=(Shapefile/CSV) 设置编码(默认情况下,Shapefile 编码自动检测, CSV 文件默认 UTF-8 编码)。

field-order=(Shapefile/CSV)字段排序,如field-order=ascending,将按字段名称的字母顺序(A-Z)对数据字段进行排序。

id-field= (Topo/GeoJSON/SVG) 指定 GeoJSON、TopoJSON 或 SVG 功能的“id”字段(可以是多个,用逗号分隔)。在导出多个图层时,可以传字段名称列表。图层属性表中出现的第一个列出的名称将用作该图层的 id 字段。

bbox (Topo/GeoJSON) 将 bbox 属性添加到对象顶层。

extension=(Topo/GeoJSON) 设置JSON文件扩展名(默认为“.json”)。

prettify (Topo/GeoJSON) 格式化输出,提高可读性。

singles (TopoJSON) 将每个图层保存为单独的文件。每个输出文件及其包含的 TopoJSON 对象都以相应的图层命名。

quantization= (TopoJSON) 拓扑量化,指定最大拓扑量化值。等效于TopoJSON的topoquantize命令使用的量化参数。默认情况下,mapshaper 取平均分段长度 * 0.02。

no-quantization (TopoJSON) 弧坐标以全精度编码,没有增量编码。

presimplify(TopoJSON)在z位置(即[x, y, z])为每个弧段顶点添加一个阈值,用于顶点过滤动态简化路径。假设 W 为地图可视的宽度(以像素为单位),S 为内容宽度与地图可视宽度的比,pz 为点的预简化值,使用以下表达式来确定是不是应该将该点从输出路径中排除pz > 0 && pz < 10000 / (W * S)

topojson-precision= (TopoJSON) 将拓扑量化的值设置为 1 / 平均长度

ndjson (GeoJSON/JSON) 输出Newline-delimited的记录。

gj2008 (GeoJSON) 生成与 pre-RFC 7946 GeoJSON 规范(可追溯到 2008 年)一致的输出。多边形环是 CW,孔是 CCW,这与默认的 RFC 7946 兼容输出相反。Mapshaper 的默认 GeoJSON 输出现在与当前规范 (RFC 7946) 兼容。

combine-layers (GeoJSON) 将多个输出层合并到一个 GeoJSON 文件中。

geojson-type= (GeoJSON) 覆盖默认输出类型。可能的值:“FeatureCollection”、“GeometryCollection”、“Feature”(对于单个特征)。

width= (SVG/TopoJSON) 以像素为单位设置输出数据集的宽度。当与 TopoJSON 输出一起使用时,此选项将输出坐标从地理单位切换为像素并翻转 Y 轴。SVG 输出始终以像素为单位(默认 SVG 宽度为 800)。

height= (SVG/TopoJSON) 类似于width选项。如果同时设置height和width,则内容在[0, 0, width, height]边界框内居中。

max-height=(SVG/TopoJSON) 限制输出最大高度(单位:像素)。

margin= (SVG/TopoJSON) 设置坐标数据和视口边缘之间的边距(默认为 1)。要为每一侧分配不同的边距,请按顺序传递一个值列表<left,bottom,right,top>(类似于bbox=其他命令中的选项)。

pixels= (SVG/TopoJSON) 以像素为单位的输出区域(效果width=一样)。

id-prefix=为命名空间层和特征 ID 添加前缀。

svg-data=(SVG) 将数据字段列表导出为 SVG data-* 属性。属性名称应与以下正则表达式模式匹配:/^[a-z_][a-z0-9_-]*$/. 不合格的字段被跳过。

svg-scale= (SVG) 使用每个像素的地理单位缩放 SVG 输出(SVG的width=选项可用这个选项替换)。

point-symbol=square (SVG) 使用正方形来符号化点数据(默认圆形)。

delimiter= (CSV) 设置 CSV/分隔文本输出的字段分隔符;例如delimiter=|

decimal-comma (CSV) 使用逗号来标记数字分位。

示例

# 把data目录下的所有shp文件转换为geojson文件
mapshaper data/*.shp -o geojson/ format=geojson

所有文章

点击查看系列全部文章--> 「更新中」Mapshaper入门学习笔记

相关阅读

麻辣GIS-Sailor

作者:

GIS爱好者,学GIS,更爱玩GIS。

声明

1.本文所分享的所有需要用户下载使用的内容(包括但不限于软件、数据、图片)来自于网络或者麻辣GIS粉丝自行分享,版权归该下载资源的合法拥有者所有,如有侵权请第一时间联系本站删除。

2.下载内容仅限个人学习使用,请切勿用作商用等其他用途,否则后果自负。

手机阅读
公众号关注
知识星球
手机阅读
麻辣GIS微信公众号关注
最新GIS干货
关注麻辣GIS知识星球
私享圈子

留言板(小编看到第一时间回复)