如何在大型geojson中读取每个功能

时间:2019-07-12 08:48:32

标签: node.js json geojson

我需要从Geojson文件中获取数据,并将其中一些插入数据库中。 问题是:文件为2.4Gb,因此Node.js无法像这样读取它。

我尝试使用一些json流模块,但没有成功(big-json)(stream-json)。 这些模块需要一个对象数组,但是,geojson只是一个内部包含对象数组的对象。

模块期望值:

[
{
  'name': '',
  'hello': ''
},
{
  'name': '',
  'hello': ''
},
...thousands of objects
]

但是我有:

{
  'type':'FeatureCollection',
  'features':[ ...thousand of objects... ]
}

我尝试使用stream-json:

const fs = require('fs')
const {parser} = require('stream-json')
const {chain}  = require('stream-chain')
const {pick}   = require('stream-json/filters/Pick')
const {streamValues} = require('stream-json/streamers/StreamValues')

const pipeline = chain([
  fs.createReadStream('myHugeFile.json'), //2.4Gb
  parser(),
  pick({filter: /^\d+\.features\.\d+/}),
  streamValues()
])
pipeline.on('data', (data) => {
  console.log(data)
})
pipeline.on('end', () => {
  console.log(`Done`)
})

它永远不会进入on('data')。 我想在“功能”数组中获取所有功能对象。

0 个答案:

没有答案