乐于分享
好东西不私藏

Mapshaper使用说明之三:Input与Output命令详解,轻松搞定数据格式转换

Mapshaper使用说明之三:Input与Output命令详解,轻松搞定数据格式转换

本文是Mapshaper使用说明系列的第三篇,将详细介绍Mapshaper的输入命令(-i)和输出命令(-o)。这两个命令是Mapshaper最基础的命令,用于数据的导入和导出。通过本文的学习,你将掌握各种参数的使用方法,轻松实现不同格式之间的数据转换。

🎉 立即体验Mapshaper汉化版

无需安装,打开浏览器即可使用!支持中文界面,操作更便捷

汉化版使用地址:https://yougis.com.cn/mapshaper

想要详细了解Mapshaper,请戳我颠覆传统GIS!这款轻量级神器让你的数据处理效率提升10倍

一、输入命令 -i

输入命令 -i 允许输入一个或多个shape、json、dbf或限定文本格式的文件。如果 mapshaper 后紧跟输入的文件名,命令 -i 可省略。

1. 支持的文件格式

输入命令支持以下文件格式:

支持的格式

• Shapefile:.shp、.shx、.dbf等文件

• GeoJSON:基于JSON的地理数据格式

• TopoJSON:GeoJSON的扩展格式,支持拓扑关系

• JSON:数据记录的数组

• DBF:属性表文件

• 限定文本格式:CSV、TSV等

注意:Mapshaper不完全支持shapefile中的Z值和M值,输入文件中的Z值和M值会丢失。

2. 默认行为

默认情况下,输入的多个文件会分开单独处理,就像是同一个命令执行多次一样。但命令中出现参数 merge-files 和 combine-files 会改变这种情况。

3. 参数详解

files

输入的单个或多个文件(以空格分割的列表),利用 “-” 从 “/dev/stdin”引进topojson或geojson

merge-files(不推荐使用)

将输入多个文件中的要素合并到尽可能少的图层中

combine-files

以共享拓扑的方式导入多个文件到分离的图层中,这对生成一个包含多个几何对象的topojson文件很有价值

snap

将极小阈值范围内的顶点捕捉到一起,这个参数用于修复相邻多边形中极小的坐标偏差。每个平均分段长度的捕捉距离是0.0025

auto-snap(不推荐使用)

“snap”的别名

snap-interval

指定以源数据为单位的捕捉距离

precision(不推荐使用)

将所有坐标四舍五入到指定的精度,如 0.001。强烈推荐在输出时使用 “-o precision=”设置坐标的精度

no-topology

在处理大数据量文件时,忽略拓扑标记以加快处理的速度,用于类似 “-filter”等不要求拓扑的命令

encoding=

指定读取 .dbf和限定格式文本文件的编码格式,如果不指定encoding参数,mapshaper会尝试检测 .dbf文件的编码方式,dbf的编码可以利用 .cpg 文件设置

id-field=

对于geojson和topojson文件,引入属性id的值到数据项中

field-types

属性的数据类型,字段名称与字段类型用 “:”连接,多个之间通过 “,”分隔,如 FIPS:str,zipcode:str。可识别的类型包括 :str,:string, :num 和 :number。对于没有指定类型的,类似数字的字段内容会被自动转成数字,如邮政编码

name=

重命名引入的图层

4. 使用示例

#示例1:指定编码方式输入shapefile#以latin1编码方式输入一个shapefile,同时查看包含的数据内容:mapshaper countries_wgs84.shp encoding=latin1 -info

二、输出命令 -o

输出操作将编辑的内容保存到文件中,默认情况下,如果检测到命名冲突,mapshaper会在文件名后添加后缀,以避免覆盖已存在的文件。

1. 支持的输出格式

输出命令支持以下格式:

支持的格式

• shapefile:Shapefile格式

• geojson:GeoJSON格式

• topojson:TopoJSON格式

• json:包含每个要素属性的对象的数组

• dbf:DBF属性表格式

• csv:逗号分隔的文本文件

• tsv:制表符分隔的文本文件

• svg:可缩放矢量图形格式

2. 参数详解

file|directory|-

输出文件名称或路径,利用 “-“导出文本格式到”/dev/stdout”

format=

指定输出格式,如果不指定输出格式,mapshaper尝试通过文件名推断输出格式;如果没有指定输出文件名,mapshaper利用输入文件的格式作为文件名。”json”格式是包含每个要素属性的对象的数组

target=

指定导出的图层(多个图层用逗号分隔),默认导出所有图层

force

如果指定force参数,遇到命名冲突时,直接覆盖已有的文件内容,而不是重命名

cut-table

将shapefile文件的属性数据分离出来并保存成json文件

drop-table

从输出文件中移除属性数据

precision=

以指定的精度对所有的坐标进行四舍五入,如precision=0.001。在减小geojson文件的数据量大小时非常有用

bbox-index

为每个输出的图层创建一个包含要素范围的json文件

delimiter=

针对CSV格式文件,设定csv或限定文本字段间的分隔符,如 “delimiter=|”

bbox

针对输出格式为topojson或geojson,在顶层对象上增加范围属性

extension =

针对输出格式为topojson或geojson,设置文件的扩展名,默认为 .json

prettify

针对输出格式为topojson或geojson,格式化输出内容保证文件的可读性

id-field=

针对输出格式为topojson、geojson和svg,指定一个或多个字段作为geojson、topojson或svg格式要素的id(多个字段用逗号分开)。当导出多个图层时,可传入一个字段名的列表,列表中第一个出现在图层属性表中的字段会被当作该图层的id

quantization=

(TopoJSON) Specify quantization as the maximum number of differentiable points along either dimension. Equivalent to the –q1/–post-quantization option of Mike Bostock’stopojson program. By default, mapshaper applies quantization equivalent to 0.02 of the average segment length

no-quantization

(TopoJSON) Arc coordinates are encoded at full precision and without delta-encoding

presimplify

(TopoJSON) Add a threshold value to each arc vertex in the z position (i.e. [x, y, z]). Useful for dynamically simplifying paths using vertex filtering. Given W as the width of the map viewport in pixels, S as the ratio of content width to viewport width, and pz as the presimplify value of a point, the following expression tests if the point should be excluded from the output path: pz > 0 && pz < 10000 / (W * S)

topojson-precision=

(TopoJSON) Set quantization as a fraction of the average segment length

width=

针对svg格式,设置svg视图的宽度,默认值是800

margin=

针对svg格式,设置坐标数据与视图边缘的范围,默认值是1

3. 使用示例

#示例1:批量转换Shapefile为GeoJSON#将一个文件夹下所有的shapefile文件转换成geojson文件,并输出到另一个不同文件夹下:mapshaper shapefiles/*.shp -o output/ format=geojson

三、常用数据格式转换示例

1. Shapefile转GeoJSON

#单个文件转换mapshaper input.shp -o output.geojson
#批量转换mapshaper shapefiles/*.shp -o output/ format=geojson

2. GeoJSON转Shapefile

mapshaper input.geojson -o output.shp
3. 指定精度输出
#减小GeoJSON文件大小mapshaper input.shp -o output.geojson precision=0.001

4. 导出为SVG

#设置SVG视图宽度mapshaper input.shp -o output.svg width=1000

四、使用技巧

在使用Input和Output命令时,以下技巧可以帮助你更高效地完成工作:

使用技巧1. 批量处理时使用通配符(*.shp)可以一次性处理多个文件2. 使用precision参数可以显著减小GeoJSON文件大小3. 使用combine-files参数可以导入多个文件到分离的图层4. 使用encoding参数可以正确读取中文编码的DBF文件5. 使用prettify参数可以使输出的JSON文件更易读

🎉 立即体验Mapshaper汉化版

无需安装,打开浏览器即可使用!支持中文界面,操作更便捷

汉化版试用地址:https://yougis.com.cn/mapshaper

五、小结

通过本文的学习,你应该已经掌握了:

学习要点回顾

✓ 输入命令 -i 的所有参数和使用方法

✓ 输出命令 -o 的所有参数和使用方法

✓ 常用的数据格式转换方法

✓ 使用Input和Output命令的技巧

在接下来的系列文章中,我们将详细介绍Mapshaper的编辑命令和信息类命令。敬请期待!

📚 Mapshaper使用说明系列文章

关注公众号,获取更多精彩内容

本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » Mapshaper使用说明之三:Input与Output命令详解,轻松搞定数据格式转换

评论 抢沙发

5 + 6 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮