Geopackage download via Geoserver: missende kolommen in QGIS

Geoserver kan worden voorzien van een Geopackage extensie. GeoPackage Output — GeoServer 2.25.x User Manual. Daardoor kan een WFS ook als Geopackage worden gedownload.

Zie bijvoorbeeld hier onder download: https://dataportaal.zeeland.nl/dataportaal/srv/dut/catalog.search#/metadata/d2e56db5-3123-4e70-ba39-f97e12434f05

Nu blijkt alleen dat (in alle gevallen) bij de Geopackage optie veel kolommen niet worden getoond.
Wanneer je bijvoorbeeld voor de Geojson of Shapefile optie gaat komt wel alles mee.

Na testen blijkt dat het probleem zich voordoet bij het openen van de Geopackage in QGIS (meerdere versies getest), maar ook in GRASS GIS missen de kolommen. Vreemd genoeg worden wél alle kolommen getoond wanneer de Geopackage in ESRI producten worden geopend.

Ook bij anderen die deze extensie gebruiken en dus via een geoserver Geopackage uitleveren doet dit probleem zich voor (hier Flevoland).
https://www.nationaalgeoregister.nl/geonetwork/srv/dut/catalog.search#/metadata/63978a1d-a015-402d-8ccd-5c34593421a6

Wanneer je de weblink handmatig in de browser plakt krijg je: https://opengeodata.zeeland.nl/geoserver/natuur/wfs?request=GetFeature&service=WFS&version=1.1.0&outputFormat=geopackage&typeName=natuur:ext_nat_nbp

Ook versienummers aanpassen mocht niet baten.

Zijn er anderen die dit probleem wel eens hebben ervaren. Zou het een bug in QGIS zijn of toch in de plugin van Geoserver?

Hoi Marco,

Als je de gpkg inspecteert met ogrinfo zie je warnings. De dataypen INT4 en VARCHAR(255) worden niet ondersteund door GDAL, en zowel QGIS als GRASS gebruiken GDAL om data in te lezen.

raymond@framework13:~/Downloads$ ogrinfo ext_nat_nbp.gpkg
Warning 1: GPKG: unrecognized user_version=0x00000000 (0) on 'ext_nat_nbp.gpkg'
INFO: Open of `ext_nat_nbp.gpkg'
      using driver `GPKG' successful.
Warning 1: Field format 'INT4' not supported. Interpreted as INT
Warning 1: Field format 'INT4' not supported. Interpreted as INT
Warning 1: Field format 'VARCHAR(255)' not supported
Warning 1: geometry column 'deelgebied' of type 'VARCHAR(255)' ignored
Warning 1: Field format 'VARCHAR(255)' not supported
Warning 1: geometry column 'beheertype_code' of type 'VARCHAR(255)' ignored
Warning 1: Field format 'VARCHAR(255)' not supported
Warning 1: geometry column 'beheertype_ambitie_code' of type 'VARCHAR(255)' ignored
Warning 1: Field format 'INT4' not supported. Interpreted as INT
Warning 1: Field format 'VARCHAR(255)' not supported
Warning 1: geometry column 'gebied_naam' of type 'VARCHAR(255)' ignored
Warning 1: Field format 'VARCHAR(255)' not supported
Warning 1: geometry column 'subsidiabel_svnl_code' of type 'VARCHAR(255)' ignored
Warning 1: Field format 'VARCHAR(255)' not supported
Warning 1: geometry column 'openstellingsbijdrage_svnl_code' of type 'VARCHAR(255)' ignored
Warning 1: Field format 'INT4' not supported. Interpreted as INT
Warning 1: Field format 'INT4' not supported. Interpreted as INT
Warning 1: Field format 'VARCHAR(255)' not supported
Warning 1: geometry column 'status' of type 'VARCHAR(255)' ignored
Warning 1: Field format 'VARCHAR(255)' not supported
Warning 1: geometry column 'beheerder' of type 'VARCHAR(255)' ignored
Warning 1: Field format 'VARCHAR(255)' not supported
Warning 1: geometry column 'beheertype' of type 'VARCHAR(255)' ignored
Warning 1: Field format 'VARCHAR(255)' not supported
Warning 1: geometry column 'beheertype_ambitie' of type 'VARCHAR(255)' ignored
Warning 1: Field format 'VARCHAR(255)' not supported
Warning 1: geometry column 'subsidiabel_svnl' of type 'VARCHAR(255)' ignored
Warning 1: Field format 'VARCHAR(255)' not supported
Warning 1: geometry column 'subsidiabel_sknl' of type 'VARCHAR(255)' ignored
Warning 1: Field format 'VARCHAR(255)' not supported
Warning 1: geometry column 'openstellingsbijdrage_svnl' of type 'VARCHAR(255)' ignored
Warning 1: Field format 'VARCHAR(255)' not supported
Warning 1: geometry column 'vrijstelling_openstelling' of type 'VARCHAR(255)' ignored
Warning 1: Field format 'FLOAT8' not supported
Warning 1: geometry column 'oppervlakte_hectare' of type 'FLOAT8' ignored
Warning 1: Field format 'VARCHAR(255)' not supported
Warning 1: geometry column 'plan_naam' of type 'VARCHAR(255)' ignored
Warning 1: Field format 'VARCHAR(255)' not supported
Warning 1: geometry column 'verdrogingsgevoelig' of type 'VARCHAR(255)' ignored
1: ext_nat_nbp (Multi Polygon)

Hier een vergelijkbaar issue op stackexchange (blijkbaar heeft FME er ook last van):

2 likes

Omdat FME onderhuids ook GDAL gebruikt:

2024-02-05 14:04:11| 0.1| 0.1|INFORM|Creating reader for format: OGC GeoPackage
2024-02-05 14:04:11| 0.1| 0.0|INFORM|Trying to find a DYNAMIC plugin for reader named `OGCGEOPACKAGE’
2024-02-05 14:04:11| 0.2| 0.1|INFORM|Loaded module ‘OGCGEOPACKAGE’ from file ‘C:\Program Files\FME\plugins/gdal/GDAL.dll’
2024-02-05 14:04:11| 0.2| 0.0|INFORM|FME API version of module ‘gdal/GDAL’ matches current internal version (4.0 20220615)

1 like

Bedankt! Dus om data te kunnen delen volgens deze open standaard (Geopackage) moeten de datatypen gebruikt voor de velden ook wel volgens bijbehorende standaard zijn. En dat zijn ze in mijn voorbeeld nu niet.

Ik zie in de Geopackage documentatie niets over veldtypen, maar dat zal zijn op basis van standaard SQL specificaties (bestaat daar een vastgestelde lijst voor?). Die zijn in dit geval opgenomen in GDAL en smaken die leveranciers of software specifiek (zoals INT4 en VARCHAR(255)) niet.

Zaak is dus om onze data op te slaan volgens de data typen die als standaard SQL worden gezien. Het uitleveren van de Geopackage zal dan ook goed gaan.

Ik denk eigenlijk dat GeoServer er bij het exporteren voor moet zorgen dat de datatypen voldoen aan de Gpkg (=Sqlite) voorwaarden, en niet de gebruiker.

Heb ook een issue aangemaakt bij GeoServer:
https://osgeo-org.atlassian.net/browse/GEOS-11292

1 like