MarcoDuiker / QGIS_BGT_Import

The QGIS BGT Import plugin for importing Dutch BGT data.
Other
4 stars 1 forks source link

meerdere geometrie types #8

Closed Harm-Olthof closed 5 years ago

Harm-Olthof commented 5 years ago

Bij export naar Postgis via ogr2ogr kwam ik er achter dat er meerdere geometrie typen in de tabellen zitten. Bijvoorbeeld: SELECT ST_GeometryType(geom) , count(*) as aantal FROM bgt_kunstwerkdeel_v group by ST_GeometryType(geom) levert: LINESTRING 479 MULTIPOINT 147 POLYGON 382 (gebied ongeveer gemeente Midden-Drenthe)

MarcoDuiker commented 5 years ago

Interessante observatie, maar ik begrijp niet zo goed wat ik ermee moet.

Moet ik dit zien als een feature request om de BGT-import plugin zo te configureren dat de BGT daarmee correct in postgis ingelezen kan worden?

Harm-Olthof commented 5 years ago

wellicht ten onrechte, maar ik had uit de documentatie begrepen dat in *_V tabellen vlakken zitten. Ik tref echter in bijvoorbeeld bgt_kunstwerkdeel_v dus ook lijnen en vlakken aan. Dat zou duiden op een bug.

MarcoDuiker commented 5 years ago

Ik begrijp dat je met "_V tabellen" de _V.gml bestanden bedoeld.

In dat geval is het goed om te weten dat deze bestanden zowel punten, lijnen als vlakken bevatten zoals hier uitgelegd: https://marcoduiker.github.io/QGIS_BGT_Import/help/build/html/introduction.html#second-tab-individual-files

Je observatie toont aan dat ogr2ogr bij het exporteren naar postgis de .gfs bestanden met import definities anders gebruikt dan qgis.

Harm-Olthof commented 5 years ago

Ik ben bang dat ik mijn bevinding niet duidelijk verwoord heb en dat we op het verkeerde spoor terecht zijn gekomen. Vergeet de hele opmerking over Postgis en ook over GML's en .gfs bestanden en laten we opnieuw beginnen. We draaien de vraag gewoon om: (1) bij het starten van de plugin, tab "volledig paket" geef je een pad naar een geopackage bestand; (2) na afloop van de import open ik het geopackage bestand met de db manager (of in mijn geval met spatialite_gui); (3) voer de query uit die ik eerder gaf: je krijgt dan dus meerdere geometrieen in de geopackage tabel bgt_kunstwerkdeel_v (en vast andere tabellen).

Uit deze bevinding volgen 2 vragen: (1) is dit een bug? want ik verwacht alleen vlakken in _v tabellen in het gpkg bestand (2) Als het geen bug is, waarom dan de naamconventie _p ; *_v etc.

(Ik probeerde dus het gpkg bestand te converteren naar Postgres en niet de GML bestanden, wellicht had ik dat duidelijker moeten verwoorden. Excuses daarvoor).

MarcoDuiker commented 5 years ago

Ah, daarmee wordt het duidelijk. En interessant.

De manipulatie van gfs bestanden die door de plugin wordt uitgevoerd zorgt ervoor dat ogr (en daarmee QGIS) bij inlezen een voorkeur heeft voor het juiste type geometrie (bijvoorbeeld vlakken bij *_V). Dit borgt dat de import plugin dan ALLE vlakken inleest, ook als ogr normaal gesproken een deel zou weglaten door de specifieke opbouw van een deel van de objecten.

Inderdaad heb ik nooit gecontroleerd wat er met de andere geeometrie types gebeurt. Blijkbaar worden die ook (gedeeltelijk) ingelezen. Doordat QGIS automatisch alleen vlakken in een vlakken laag importeert heb je hier in de praktijk geen last van.

Het is wel zonde van de ruimte, en inderdaad onhandig indien het geopackage wordt geconverteerd naar andere zaken.

MarcoDuiker commented 5 years ago

Er is een nieuwe versie (3.10) waarin eea lijkt gefixed.

Deze kun je installeren vanuit deze zip: https://github.com/MarcoDuiker/QGIS_BGT_Import/archive/master.zip

Wellicht wil je even uitproberen of het inderdaad goed is zo (en of je andere rare dingen ziet).

Harm-Olthof commented 5 years ago

Dank voor de snelle actie! Ik heb 2 keer een gebied geprobeerd, maar de import laat QGIS halverwege crashen. Hier volgt het crash-report (maar dat bevat weinig info): Crash ID: 8ecd47609595a8cbc82a1c53f72f7d6829f7b919 Stack Trace sqlite3_blob_bytes : sqlite3_blob_bytes : sqlite3_blob_bytes : sqlite3_blob_bytes : sqlite3_blob_bytes : sqlite3_blob_bytes : sqlite3_blob_bytes : SASetupDefaultHooks : DBFSetWriteEndOfFileChar : CPLStringList::empty : QgsVectorLayer::extent : QgsMapSettings::fullExtent : QgsMapCanvas::fullExtent : QgsMapOverviewCanvas::setLayers : QgsLayerTreeMapCanvasBridge::setCanvasLayers : QObject::event : QApplicationPrivate::notify_helper : QApplication::notify : QgsApplication::notify : QCoreApplication::notifyInternal2 : QCoreApplicationPrivate::sendPostedEvents : qt_plugin_query_metadata : QEventDispatcherWin32::processEvents : CallWindowProcW : DispatchMessageW : QEventDispatcherWin32::processEvents : qt_plugin_query_metadata : QEventLoop::exec : QCoreApplication::exec : main : BaseThreadInitThunk : RtlUserThreadStart :

QGIS Info QGIS Version: 3.6.1-Noosa QGIS code revision: 2468226bc9 Compiled against Qt: 5.11.2 Running against Qt: 5.11.2 Compiled against GDAL: 2.4.1 Running against GDAL: 2.4.1

System Info CPU Type: x86_64 Kernel Type: winnt Kernel Version: 10.0.17134

MarcoDuiker commented 5 years ago

Is dat bij de download, of tijdens het inlezen?

Harm-Olthof commented 5 years ago

Ik heb het nog een keer geprobeerd met een schoon QGIS3 profiel en nu lijkt alles goed te gaan. Dank voor de snelle reparatie!

MarcoDuiker commented 5 years ago

Zojuist heb ik een nieuwe BGT Import plugin ingediend (versie 3.11), met bovenstaande wijzigingen.

Zodra deze is geaccepteerd kun je 'm gewoon uit de QGIS plugins repo installeren.