wavded / ogr2ogr

An ogr2ogr wrapper library
MIT License
214 stars 46 forks source link

stream() from geojson #74

Closed lmdc45 closed 2 years ago

lmdc45 commented 2 years ago

in v3 stream method is removed

I have a geojson data that I want formatted as per gdal format. in v2 I could take the stream output and save it in a file with that format.

Is it still possible with v3? It seems I can only get the data as a geojson object. But it is not what I need, I need it as a stream straight from ogr2ogr to save that particular formatting

wavded commented 2 years ago

To better help, what format were you converting the GeoJSON data into?

lmdc45 commented 2 years ago

I keep the geojson format

Reason is I use geojson files with git version management. I can edit the geojson file from both web app and qgis. I need a way to get the geojson from javascript (web app) in exact same text format as with gdal.

Now without the stream, I only get the output as a geojson object, which I have to write to a file with javascript, with output in a different format.

I need the stream output from ogr direct to file, no going through javascript object

wavded commented 2 years ago

You can convert the object to a stream like:

const { Readable } = require('stream');
let stream = Readable.from(JSON.stringify(out.data));
// use stream
lmdc45 commented 2 years ago

The issue is The json.stringify method. I could not make it same output text format then when written in file as ogr. Hence why I would need the stream direct from ogr without passing though js object

wavded commented 2 years ago

I'm confused how the output is a different format? As you start and end with GeoJSON. Whether its an object or a stream, how is the data differently formatted?

Do you have a sample program that reproduced this issue... or perhaps what your code looked like in the previous version?

lmdc45 commented 2 years ago

Yes it is only to get a specific text format in the saved geojson file. ogr have a specific way to format geojson as text file which I could not reproduce with javascript (space, new line, escaped characters...). To reproduce or get a better idea: Creating a geojson object in qgis for instance and save it to files. import this geojson in nodejs, as json object, then apply JSON.stringify to it and save to a different file. The git diff of the two files will be different, even the json object is the same

Hence why when getting the text stream straight from ogr I do not have this issue

lmdc45 commented 2 years ago

Reading the code I just realized there is still res.text available, with pure stdout no parsed. I will use this. Thanks