在 Node JS 中使用 GDAL ogr2ogr 将 geoJson 批量转换为 shapfile

Converting geoJson to shapfile as batch using GDAL ogr2ogr in Node JS

我想使用 NodeJS 中的 ogr2ogr 库将文件中的所有 geojson 一次性转换为 shapefile。我知道可以使用 gdal cli 直接从终端完成,但我想知道如何在 Node.js 中完成。非常感谢!

我有这个代码来转换单个文件:

// Using CommonJS modules
const ogr2ogr = require('ogr2ogr').default;
const fs = require('fs') ;

// Promise API
(async() => {   

  // Convert path to GeoJSON.
  let {data} = await ogr2ogr('/Users/MihaiB/Desktop/test_josm/test22.geojson' );
  console.log(data);  
 
  let {stream} = await ogr2ogr( data, {format: 'ESRI Shapefile'}, {destination:'/Users/MihaiB/Desktop/shapefile2.shx'});
    console.log(stream)       
  
})()

毕竟,解决方案似乎很简单(即使花了很长时间才弄明白)我不得不使用 dirTree 包来获取给定文件夹中所有文件的路径

const ogr2ogr = require('ogr2ogr').default;
const PATH = require('path');
const dirTree = require('directory-tree');

  // Promise API
( async() => {
  
  // List Files in a Directory using dirTree package
  const tree = dirTree('/Users/MihaiB/Desktop/test_josm/', {extensions:/\.geojson$/}, 
  
  async (item, PATH, stats) => {
  console.log(PATH);
        
  // Convert path to GeoJSON
  let {data} = await ogr2ogr(PATH);
  console.log(data);

  // Convert GeoJSON to Shapefile
  let {stream} = await ogr2ogr( data, {format: 'ESRI Shapefile', destination:'/Users/MihaiB/Desktop/batch2/'});
  console.log(stream)

 }); 
})
()