
Mapshaper 完整教程10 分钟搞定 Shapefile 转换、地图简化与裁剪【免费下载链接】mapshaperTools for editing Shapefile, GeoJSON, TopoJSON and CSV files项目地址: https://gitcode.com/gh_mirrors/ma/mapshaper你手上有一份 240MB 的县级 Shapefile要剪出华东六省、压缩到 2MB 以内、转成 GeoJSON 交给前端。Mapshaper 就是干这个的一个免费开源的 JavaScript 地理数据编辑工具格式转换、地图简化、空间裁剪一条命令链跑完还能在浏览器里边拖边看。一、确认它能处理你的文件格式Mapshaper 的定位只有一句话地理数据的转换与编辑器。它不画三维地球不做统计分析专攻制图前那几件高频事——转格式、删顶点、修几何、裁范围、合图斑。输入输出格式按文件扩展名自动识别你一般不用声明格式。格式常见扩展名读取写出Shapefile.shp .dbf .prj支持支持GeoJSON.geojson / .json支持支持TopoJSON.topojson共享边界只存一份体积更小支持支持GeoPackage.gpkg支持支持FlatGeobuf.fgb支持支持GeoParquet.parquet支持支持KML / KMZ.kml / .kmz支持支持属性受限CSV / TSV.csv按经纬度生成点支持支持GeoTIFF / SVG.tif / .svg支持支持Shapefile 的 .shp、.shx、.dbf、.prj 可以打包成 .zip 直接导入它会自动解压拼装。二、选对入口网页版还是命令行两个入口能力完全一致选哪个取决于你要不要重复做同一件事。你的情况推荐入口原因一次性任务想边看边调网页版mapshaper-gui 或官网拖文件、拉滑块、实时预览全程不写代码多文件批量处理、要写进脚本命令行 mapshaper命令链可复制可复用支持命令文件与变量文件超过 1GBmapshaper-xl默认分配 8GB 堆内存可手动加码数据敏感不想出本机mapshaper-gui本地起服务数据不出浏览器 网页版所有计算都在浏览器本地完成拖进公共网站的数据同样不会上传服务器。三、安装并跑通第一条转换命令安装并验证前提是有 Node.js 20 以上。没有就先装 Nodenpm install -g mapshaper # 全局安装-g 让命令随处可用 mapshaper -v # 输出版本号即为成功装完你会拿到三个命令mapshaper主程序、mapshaper-xl大内存版、mapshaper-gui本地网页版起在 localhost:5555。看懂命令链并导出第一个文件命令从左到右依次执行每个子命令以-开头第一个文件路径自动当作-i输入。转格式只需一条mapshaper 各省.shp -o 各省.geojson # 输入输出格式按扩展名自动识别想查某个命令的全部参数敲mapshaper -h simplify。四、简化地图三种算法与关键参数简化就是给地图做无损压缩像照片调分辨率按重要程度删掉冗余顶点肉眼看不出差别文件小一个数量级。它内置三种算法Visvalingam / 加权面积默认对尖锐拐角手下留情高简化度下线条更平滑、毛刺更少Visvalingam / 有效面积逐次删除与邻点构成最小面积三角形的点行为最直白Douglas-Peucker保证简化线与原线距离不超过阈值纯减重最狠但高强度下会出尖刺。上图是同一份海岸线保留 5% 顶点时的对比默认算法保留了平缓的岸线走势Douglas-Peucker 则折角明显。强度怎么定percentage默认— 保留可删顶点的百分比数字越小越狠 — 首次简化先用它试interval— 距离阈值如interval500m— 你知道地图要展示多细的细节时resolution— 按目标显示像素定强度如resolution800— 给固定尺寸的网页地图出图时。典型效果参考一份 24MB 的县级 GeoJSON约 240 万顶点跑-simplify 5%输出约 1.8MB、12 万顶点轮廓肉眼无差异。两个保命开关mapshaper 岛屿.shp -simplify 5% keep-shapes -o 岛屿-简化.geojson # 高强度下也不丢小岛keep-shapes保证每个要素至少留一个环防止小岛被整个删没-clean接在简化后面自动修复过度简化产生的边界自相交。五、进阶操作裁剪、溶解、缓冲、筛选裁剪、擦除与筛选-clip是剪刀只保留目标边界内的部分-erase反过来把重叠部分挖掉。mapshaper 全国.shp -clip 华东.shp -o 华东.geojson # 按另一图层边界裁剪适用场景把全国底图剪出业务覆盖范围。-filter则按属性挑要素如-filter 人口 1000000适合先筛后剪。溶解与缓冲区-dissolve像把碎拼图按颜色合回整块相邻且字段值相同的图斑合并成一个。mapshaper 县级.shp -dissolve 省代码 -o 省级.shp # 按省代码字段合并边界一份 2800 个县级多边形的文件溶解后只剩 31 个省共享边界不再重复存储。-buffer给点线面描等宽边mapshaper 河流.shp -buffer 2km -o 河流缓冲.shp # 沿河流生成 2 公里缓冲区适用场景算道路周边 500 米覆盖范围。想要更自然的线条用-smooth重算线形而不是删点它会滤掉细小抖动并保留直角边界六、避坑速查报错对照表⚠️ 遇到报错先查这张表九成问题都在这里现象 / 报错原因解决JavaScript heap out of memory文件超过默认堆内存换mapshaper-xl或mapshaper-xl 16gb加码中文属性显示乱码文件是 GBK 编码默认按 UTF-8 读导入加encodinggbk简化后小岛消失高强度下小多边形被整体删除-simplify后加keep-shapes相邻边界交叉重叠过度简化产生自相交命令链追加-clean输出写一半失败单文件输出上限 2GB分层导出target指定多个图层command not found未全局安装或 Node 不在 PATH重新npm install -g mapshaper七、最小工作流模板把开头那个任务写完整就是一条链mapshaper 全国县级.shp \ -clip 华东.shp \ -simplify 30% keep-shapes \ -clean -o 华东.geojson # 裁剪简化防丢岛修复一条链交付前端三步记忆先-clip圈范围再-simplify压体积最后-o定格式。命令细节查命令参考 docs/reference.md专题讲解看 docs/guides/简化、缓冲、拓扑都有专页完整配方在 docs/examples/格式对照表在 docs/formats/overview.md。数据在手直接开跑。【免费下载链接】mapshaperTools for editing Shapefile, GeoJSON, TopoJSON and CSV files项目地址: https://gitcode.com/gh_mirrors/ma/mapshaper创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考