mapshaper系列之三 - I/O命令

来源:互联网 发布:我的淘宝店铺找不到了 编辑:程序博客网 时间:2024/05/17 23:18

      本文介绍Mapshaper的输入命令 -i(input)和输出命令-o(output)。


一、输入命令 -i

      输入命令 -i 允许输入一个或多个shape、json、dbf或限定文本格式的文件。如果 mapshaper 后紧跟输入的文件名,命令 -i 可省略。JSON文件可以是geojson、topojson或数据记录的数组。mapshaper不完全支持shapefile中的Z值和M值,输入文件中的Z值和M值会丢失。默认情况下,输入的多个文件会分开单独处理,就像是同一个命令执行多次一样,但命令中出现参数 merge-files 和 combine-files 会改变这种情况。

可选择的参数如下:

<files> :输入的单个或多个文件(以空格分割的列表),利用 "-" 从 "/dev/stdin"引进topojson或geojson;

merge-files: (不推荐使用)将输入多个文件中的要素合并到尽可能少的图层中;

推荐使用的方法:用"-i combine-files" 导入多个文件到分离的图层中,然后使用命令"-merge-layers"合并图层。

  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=: 重命名引入的图层。


示例:

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

二、输出命令 -o
输出操作将编辑的内容保存到文件中,默认情况下,如果检测到命名冲突,mapshaper会在文件名后添加后缀,以避免覆盖已存在的文件。
可选参数如下:
<file>|<directory>|-: 输出文件名称或路径,利用 "-"导出文本格式到"/dev/stdout"。
format=shapefile|geojson|topojson|json|dbf|csv|tsv|svg : 指定输出格式,如果不指定输出格式,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。

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

以上是mapshaper -i/-o命令的所有内容,在使用过程中如有问题,欢迎随时交流。

1 0
原创粉丝点击