MS RFC 125: Support for CONNECTIONOPTIONS in mapfiles¶
- Last update
Since GDAL 2.0, GDAL/OGR raster and vector drivers can accept open options, that control certain aspects of te behaviour of the drivers. Those options are driver specific, and can be specified with the GDALOpenEx() C API. Currently, MapServer has no straightforward way of specifying such options, and people have to fallback to workarounds such as using a GDAL or OGR .vrt file, in which they embed the open option(s).
A CONNECTIONOPTIONS keyword is added as a child of the LAYER object in MapFile syntax and defines a new block that must be ended with END. It can accept a sequence of “KEY” “VALUE” open options. This syntax is similar to the METADATA block.
LAYER NAME "test" CONNECTIONTYPE OGR CONNECTION "./data/nested_attrs.geojson" CONNECTIONOPTIONS "FLATTEN_NESTED_ATTRIBUTES" "YES" END [...] END
The following files are modified:
mapfile.c: load and serialize CONNECTIONOPTIONS
mapfile.h: define a value for CONNECTIONOPTIONS
mapgdal.c: add msGetStringListFromHashTable() to transform a hash table in a char** list expected by GDAL
maplexer.l: modified to recognize CONNECTIONOPTIONS
mapogr.cpp: use CONNECTIONOPTIONS when opening a vector dataset
mapraster.c: use CONNECTIONOPTIONS when opening a raster dataset
maprasterquery.c: use CONNECTIONOPTIONS when opening a raster dataset
mapserver.h: layerObj structure extended to hold a hashTableObj connectionoptions
mapuvraster.c: use CONNECTIONOPTIONS when opening a raster dataset
mapwcs.c: use CONNECTIONOPTIONS when opening a raster dataset
mapwcs20.c: use CONNECTIONOPTIONS when opening a raster dataset
The following files are added:
msautotest/gdal/connectionoptions.map: test CONNECTIONOPTIONS for raster
msautotest/wxs/ogr_connectionoptions.map: test CONNECTIONOPTIONS for vetor
msautotest/wxs/expected/ogr_connectionoptions.xml: test data
msautotest/wxs/data/nested_attrs.geojson: expected result
Current implementation is limited to the GDAL and OGR drivers. But CONNECTIONOPTIONS could be used by other datasource backends.
Backwards Compatibility Issues¶
The documentation page of the LAYER object will be extended to document CONNECTIONOPTIONS.
Ticket ID and references¶
Pull request available at: https://github.com/mapserver/mapserver/pull/5883
+1 from PSC members Even Rouault, Tom Kralidis, Mickael Smith, Seth Girvin, Daniel Morissette, Steve Lime and Jukka Rahkonen.
Thanks to funding from the French Ministry of Defense.