无法将 shapefile 转换为 geojson

Posted

技术标签:

【中文标题】无法将 shapefile 转换为 geojson【英文标题】:Can't convert shapefiles to geojson 【发布时间】:2020-09-06 16:52:10 【问题描述】:

我需要 js 代码来将 shapefile 文件转换为 geojson,反之亦然,但我很难找到有效的工具。

我找到了Calvin Metcalf's repository,它应该允许我将 shapefile 文件转换为 geojson,但我无法运行它。其实我是个js新手,希望我犯些小错误。

为了测试它,我有:

    将属于 shapefile 的文件放在主文件夹中; 在同一文件夹中从终端运行npm install shpjs --save 命令(如存储库的自述文件中所示); 创建 test.js 文件如下:
    var shp = require('shpjs');

    shp("shapefile").then(function(geojson)
        console.log(geojson);
    ).catch( (reason) => 
        console.log('Handle rejected promise ('+reason+') here.');
    );
    从终端运行node test.js 命令。

这是输出:Handle rejected promise (Error: connect ECONNREFUSED 127.0.0.1:80) here.

所以,有问题。

我试图寻找这个错误信息的含义,但我不明白如何处理它。

我犯了一些错误吗? 如果没有,是否有任何其他 js 工具可以让我执行这些文件的转换,可能是双向的?

编辑

Calvin Metcalf 本人在issue #128 of the repo 中回答了这个问题,但我仍然遇到了一些麻烦,因为我要转换的文件实际上是巨大的。所以,最后一个问题仍然存在。

是否有任何其他 js 工具(或 js 友好)可以让我执行从 shapefile 到 geojson 的转换,反之亦然?

【问题讨论】:

【参考方案1】:

我建议使用 ogr2ogr 库,它可以将包含 .dbf .shp .shx 的文件夹转换为适当的 geojson 对象。该库还为您提供了其他功能,例如 geojson 到 shp 或 shp 到 KML,但我只尝试了 shp 到 geojson 并且它有效: https://github.com/wavded/ogr2ogr

希望对你有帮助,祝你好运!

【讨论】:

以上是关于无法将 shapefile 转换为 geojson的主要内容,如果未能解决你的问题,请参考以下文章

平滑 D3.js/GeoJSON/TopoJSON/Shapefile 中的弧线/绘图点(沿途某处)

Shapefile 投影文件

R矢量地图栅格化(将shapefile转换成raster)

将 ESRI Shapefile 转换为每个区域的(纬度、经度)点

ArcGIS Pro 2.8.0:将 XY 数据转换为 shapefile

将 JSON 转换为 QGIS GeoJSON:同时具有多种功能和不同类型