(te) lange veldnamen voor postgis bij percelen gml

Hallo,

Ik ben op zoek naar een (betere) methode voor het inlezen van BRK gml-files naar postgis.
mijn huidige werkwijze is als volgt:

Ik maak nu gebruik van de download-viewer van PDOK voor het downloaden van een geselcteerd gebied. Hierbij kies ik alleen voor het feature ‘perceel’. In de zip zit 1 gml-file.
Deze file zou ik het liefst in een keer in postgis willen laden (met ogr2ogr) maar dit lukt niet vanwege de (te) lange veldnamen met hierin pipe-characters.
Nu sla ik de gml eerst op als gpkg en pas ik in qgis de veldnamen handmatig aan (en ik voeg een aantal velden samen). Dit laad ik weer in postgis.

hier een voorbeeld van de veldnamen:

Iemand suggesties?

Alvast dank!

Aan ogr2ogr kun je een sql statement meegeven mbv de -sql optie.

In zo’n sql statement kun je veldnamen hernoemen.

Dag Marco,

Hier was ik idd mee bezig geweest, maar krijg het nog niet lekker voor elkaar:

Dit werkt bv. prima:
C:\Program Files\QGIS 3.28.7>ogr2ogr -f GPKG C:/Divers/GIS/percelen/extract/kadastralekaart_perceel_output3.gpkg C:/Divers/GIS/percelen/extract/kadastralekaart_perceel.gml -sql “SELECT code as test from perceel”

Maar hier gaat het bv. mis:
C:\Program Files\QGIS 3.28.7>ogr2ogr -f GPKG C:/Divers/GIS/percelen/extract/kadastralekaart_perceel_output3.gpkg C:/Divers/GIS/percelen/extract/kadastralekaart_perceel.gml -sql “SELECT kadastraleAanduiding|TypeKadastraleAanduiding|aKRKadastraleGemeenteCode|aKRKadastraleGemeenteCode|Waarde, code as test from perceel”
ERROR 1: SQL Expression Parsing Error: syntax error, unexpected $undefined, expecting FROM. Occurred around :
SELECT kadastraleAanduiding|TypeKadastraleAanduiding|aKRKadastraleG

Ik heb meerdere varianten van SELECT geprobeerd met quotes, dubbele quotes, backticks, backslash, blockhaken, maar krijg het nog niet werkend…
kan dit nog met toestenbordinstellingen te maken hebben misschien?

Het correct quoten en escapen van een query met moeilijke namen en tekens is een beetje een black art. Vaak zijn er veel pogingen nodig.

Het is denk ik makkelijker om de query in een text file te zetten en die dan mee te geven met iets als (uit het hoofd): -sql @C:\pad\query.sql. Dat probeert makkelijker uit en scheelt dan alweer 1 set quotes (denk ik).

Top Marco! :ok_hand: Dit werkt direct. (met de double quotes)

Dank!

Beste Koos,

Fijn!

Zou je misschien de query hier willen delen? Dan hoeft de volgende met dezelfde vraag niet te puzzelen.

1 like

Zeker,

GDAL OGR:
ogr2ogr -f GPKG C:/locatie/export.gpkg C:/locatie/import.gml -sql @C:/locatie/query.sql

SQL:
SELECT
veld_1,
veld_2,
“kadastraleAanduiding|TypeKadastraleAanduiding|KadastraleGemeente|KadastraleGemeente|Waarde” as veld_3
FROM perceel

Simpel dus, maarja “je ziet het pas als je het doorhebt…”

Hi Koos,
Welke versie van OGR gebruik je?
Ik dacht namelijk dat nieuwere versies van OGR de veldnamen default “ge-launder-ed” worden (= worden aangepast aan wat postgis aan namen accepteert). (in te stellen met -loc launder=yes|no)

Ik gebruik momenteel:
GDAL 3.7.0, released 2023/05/02

niet de nieuwste dus…

En met een OGR ‘GFS’ bestand kun je de mapping nog verfijnder (veldnaam, type,…) aansturen. Zo wordt dit in NLExtract voor BRK verwerking gedaan.

Beste Just,

Dit is voor mij nog wel ‘next level’ hoor…
Wel een keer leuk om me te verdiepen hoe dit (NLExtract) in elkaar zit.
Komt voor mij nu te weinig voor om er op dit moment tijd in te steken, maar wellicht op termijn wel.

Gr. Koos

Beste Koos, GFS bestanden zijn optioneel onderdeel van ogr2ogr parameters, ok ietwat complex, maar sterke faciliteit om de conversie te ‘sturen’, dus je hoeft geen NLExtract te gebruiken.