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
#减小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使用说明系列文章
|
关注公众号,获取更多精彩内容
夜雨聆风
