bugra9 / gdal3.js

Convert raster and vector geospatial data to various formats and coordinate systems entirely in the browser.
https://gdal3.js.org
GNU Lesser General Public License v2.1
300 stars 45 forks source link

Open options (`-oo`) support #41

Closed mthh closed 1 year ago

mthh commented 1 year ago

Hi,

Are the "open options" of ogr2ogr supported?

I tried to use them without success like this:

const input = await Gdal.open(citiesFile);
const options = [
  '-oo', 'AUTODETECT_TYPE=YES',
  '-oo', 'X_POSSIBLE_NAMES=lng',
  '-oo', 'Y_POSSIBLE_NAMES=lat',
  '-f', 'GeoJSON',
  '-s_srs', 'EPSG:4326',
  '-t_srs', 'EPSG:4326',
  '-lco', 'RFC7946=YES'
];
const output = await Gdal.ogr2ogr(input.datasets[0], options);
const bytes = await Gdal.getFileBytes(output);
await Gdal.close(input);
const result = JSON.parse(new TextDecoder().decode(bytes));

I don't get any error but the 3 "open options" that I use do not appear to have been used. The numeric fields are still parsed as strings (so the AUTODETECT_TYPE option does not seem to have been used) and no geometry is created in the resulting GeoJSON (so X_POSSIBLE_NAMES and Y_POSSIBLE_NAMES do not seem to have been used).

On the other hand, if I test with the desktop version of ogr2ogr with the command ogr2ogr -f GeoJSON cities-output.geojson cities.csv -t_srs EPSG:4326 -s_srs EPSG:4326 -lco RFC7946=YES -oo X_POSSIBLE_NAMES=lng -oo Y_POSSIBLE_NAMES=lat -oo AUTODETECT_TYPE=YES, I get the expected result (geometries are created and the type of the fields becomes numeric when detected this way).

See the attached archive (cities.zip) that contains the 3 following files if it helps:

mthh commented 1 year ago

In fact the open options should be passed as an argument to the OpenEx function (wrapped by the Gdal.open JS function) which doesn't seem to be supported yet. I will try to submit a PR soon.

bugra9 commented 1 year ago

Hi @mthh, thanks for the pull request, it's merged. A new version will be released in a few days.