norBIT / alkisimport

ALKIS-Import
http://www.norbit.de/68/
GNU General Public License v2.0
28 stars 17 forks source link

Thüringen NAS Import unvollständig #44

Closed pschmmidt1979 closed 2 years ago

pschmmidt1979 commented 2 years ago

Hallo, habe bereits einige Bundesländer erfolgreich per Shellscript importiert (Sachsen, Brandenburg, Hamburg) jedoch verhält sich beim Bundesland Thüringen die Sache merkwürdig.

Wenn ich die NAS ALKIS Daten von https://www.geoportal-th.de/de-de/Downloadbereiche/Download-Offene-Geodaten-Th%C3%BCringen/Download-ALKIS-flurweise herunterlade (Katasterbereiche) und importiere landen nur wenige Tausend Flurstücke in der Datenbank anstatt mehrere Millionen.

Dementsprechend ist Thüringen in QGIS nur zum Bruchteil abgebildet (ich glaube zwischen 5000 - 10000 Flurstücke ingesamt).

Ist das Problem bekannt? Gibt es besondere Einstellungen um das Problem zu beheben?

Vielen Dank vorab.

jef-n commented 2 years ago

Ist das Problem bekannt?

Nein, mein letzter Import der Thüringen Daten ist zwar schon etwas her, ergab aber 3194135 Flurstücke (SN 2777576, BB 3145221, HH 256084).

pschmmidt1979 commented 2 years ago

Hier die Antwort meiner Anfrage an die Geo-Servicestelle Thüringen:

"Thüringen gibt seine Daten gemäß der deutschlandweit einheitlichen Vorschrift GeoInfoDok ab. Diese können Sie über www.adv-online.de gerne einsehen. Unsere Daten sollten demnach genauso aussehen, bis auf regionale Unterschiede, wie in den anderen Bundesländern.

Ich habe für mein Verständnis exemplarisch eine Flur über das norGIS-ALKIS-Import Plugin von QGIS in eine Test-DB eingelesen. Die hierbei erhaltenen Fehlermeldungen beziehen sich auf die Objektart AX_Person und AX_Anschrift. Diese werden auf Grund datenschutzrechtlicher Belange nicht vollständig in den Daten abgebildet.

Ich werde Ihre Anfrage als Hinweis aufnehmen und an die Kollegen weitergeben, so dass dieses Problem in naher Zukunft behoben wird.

Sollten bei Ihnen weitere Fehler andere Objektarten betreffend beim Import auftreten, teilen Sie mir diese bitte mit, um eine entsprechende Lösung finden zu können."


Insofern muss das Problem offentsichlich an meinen Einstellungen liegen, ich werde es nochmals kommende Woche versuchen und die Logfiles hier posten.

Vielen Dank für die Antwort.

jef-n commented 2 years ago

Der ALKIS-Objektartenkatalog der AdV, aber auch der Thüringer ALKIS-Objektartenkatalog, S. 113 (121) gibt vor, dass in AX_Person nachnameOderFirma belegt sein muss (Kardinalität 1), ebenso in AX_Anschrift ort_Post (S. 118 (126)) . In den OpenData-Daten ist weder das eine noch das andere der Fall. Löscht man die entsprechenden Constraints in der Datenbank sollte der Import klappen - anscheinend habe ich das wohl das letzte Mal auch gemacht…

ALTER TABLE ax_person ALTER nameoderfirma DROP NOT NULL;
ALTER TABLE ax_anschrift ALTER ort_post DROP NOT NULL;

Andere Bundesländer liefern in den OpenData-Daten AX_Person und AX_Anschrift gar nicht mit.

pschmmidt1979 commented 2 years ago

Vielen Dank für den Hinweis, ich habe nun folgende Befehle per psql für die entsprechende, leere, Datenbank ausführt:

ALTER TABLE ax_person ALTER nachnameOderFirma DROP NOT NULL; * ALTER TABLE ax_anschrift ALTER ort_post DROP NOT NULL;

*(Ihr Beispiel zeigt nameoderfirma lowercase)

Und danach den Import von https://geoportal.geoportal-th.de/ALKIS/NAS/ALKIS_KB52_nas.zip gestartet. Das Problem scheint ungelöst, ich würde gerne das Logfile posten nur ist es knapp 1GB groß wegen den Fehlern.

Hier die Eckdaten:

ERROR 1: COPY statement failed. ERROR: null value in column "nachnameoderfirma" violates not-null constraint DETAIL: Failing row contains (1, DETHL52P00000uot, {020303}, 2016-10-06T12:45:00Z, null, {DLKM}, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, null, n$ CONTEXT: COPY ax_person, line 1: "DETHL52P00000uot {"020303"} 2016-10-06T12:45:00Z \N {"DLKM"} \N \N \N \N \N \N \N \N \N \N \N \N \N ..."

ERROR 1: COPY statement failed. ERROR: null value in column "ort_post" violates not-null constraint DETAIL: Failing row contains (13, DETHL52P0000AT4E, null, 2016-10-13T18:30:42Z, null, {DLKM}, null, null, null, null, null, null, 45, null, null, null, null, null, null, null, {Erhebung}, null, {2016-10-13T18:30:16Z}, null, {gb}, null, $ CONTEXT: COPY ax_anschrift, line 1: "DETHL52P0000AT4E \N 2016-10-13T18:30:42Z \N {"DLKM"} \N \N \N \N \N \N 45 \N \N \N \N \N \N \N {"Erh..."

ALKIS-Modellart | #Objekte -----------------+---------- DLKM | 5018 DKKM1000 | 3819 DKKM2000 | 3819 DKKM500 | 3819 norGIS | 26 (5 rows)

   ALKIS-Modellart       | #Objekte

-----------------------------+---------- {DLKM} | 5018 {DKKM1000,DKKM2000,DKKM500} | 3819 {norGIS} | 26

jef-n commented 2 years ago

Wurde der Datenbestand nach der Änderung neu angelegt?

pschmmidt1979 commented 2 years ago

Ich habe jetzt sowohl create, clear sowie update versucht, ohne Erfolg obwohl die Fehlermeldung nicht mehr im log file vorzufinden sind. Ich hab auch im dritten Versuch die zwei SQL Befehle ans Ende von postcreate.d/nas2alb.sql geschrieben und trotzdem ist der Import unvollständig.

jef-n commented 2 years ago

Gut, ich habe das jetzt auch durchlaufen lassen:

PG:host=localhost user=alkis password=*removed* dbname=alkis
log
schema th
avoiddupes on
create
execute alter table th.ax_person alter nachnameoderfirma drop not null;
execute alter table th.ax_anschrift alter ort_post drop not null;
jobs 1
KB51/ALKIS_0101-034_nas.zip
…
KB51/ALKIS_5406-006_nas.zip

jobs 1 ist hier wichtig, da avoiddupes nicht wirkt, wenn sich sich die doppelten Objekte in Dateien befinden, die parallel eingespielt werden, was ohne -skipfailures zum Abbruch führt. Das läßt sich aber an der Fülle von doppelten Objekte und der großen Anzahl von Dateien wohl nicht vermeiden.

Log:

LOG 2021-11-16 17:40:43
Import-Version: $Format:%h$
GDAL-Version: GDAL 3.4.0, released 2021/11/04
CREATE 2021-11-16 17:40:43
SQL RUN: alkis-init.sql 2021-11-16 17:40:43
   alkis_set_schema   
----------------------
 Aktuelles Schema th.
(1 row)

 create_accum 
--------------

(1 row)

…
SQL DONE[0]: alkis-init.sql 2021-11-16 17:40:58 in 15s
SQL RUN: postcreate.d/nas2alb.sql 2021-11-16 17:40:58
…
SQL DONE[0]: postcreate.d/nas2alb.sql 2021-11-16 17:40:59 in 1s
EXECUTE alter table th.ax_person alter nachnameoderfirma drop not null; 2021-11-16 17:40:59
ALTER TABLE
EXECUTE alter table th.ax_anschrift alter ort_post drop not null; 2021-11-16 17:40:59
ALTER TABLE
alkis-import.sh: Bestimme unkomprimierte Gesamtgröße
alkis-import.sh: Unkomprimierte Gesamtgröße: 30GiB
SQL RUN: preprocessing.d/0_alkis-signaturen.sql 2021-11-16 17:46:12
      ?column?      
--------------------
 Lade Signaturen...
(1 row)

SQL DONE[0]: preprocessing.d/0_alkis-signaturen.sql 2021-11-16 17:46:13 in 1s
SQL RUN: preprocessing.d/1_ignore-duplicates.sql 2021-11-16 17:46:13
…
SQL DONE[0]: preprocessing.d/1_ignore-duplicates.sql 2021-11-16 17:46:14 in 1s
KB51/ALKIS_0101-034_nas.zip DECOMPRESS 2021-11-16 17:46:15: KB51/ALKIS_0101-034_nas.zip
KB51/ALKIS_0101-034_nas.zip IMPORT 2021-11-16 17:46:15: /tmp/tmp.eGrcx8DNJD/KB51_ALKIS_0101-034_nas.xml 13MiB
KB51/ALKIS_0101-034_nas.zip RUNNING: ogr2ogr -f PostgreSQL  -ds_transaction --config PG_USE_COPY YES -nlt CONVERT_TO_LINEAR -update -append "PG:host=localhost port=5439 user=alkis password=*removed* dbname=alkis active_schema=th schemas=th,public" -a_srs EPSG:25832 "C:/cygwin64/tmp/tmp.eGrcx8DNJD/KB51_ALKIS_0101-034_nas.xml"
KB51/ALKIS_0101-034_nas.zip TIME: /tmp/tmp.eGrcx8DNJD/KB51_ALKIS_0101-034_nas.xml mit 13MiB in 9s importiert (1550kiB/s; Gesamt:1550kiB/s).
KB51/ALKIS_0101-034_nas.zip REMAINING: 30GiB 99% 5h44m48s ETA:Di, 16. Nov 2021 23:31:12
KB51/ALKIS_0101-034_nas.zip removed '/tmp/tmp.eGrcx8DNJD/KB51_ALKIS_0101-034_nas.xml'
…
KB51/ALKIS_5406-006_nas.zip DECOMPRESS 2021-11-17 01:11:23: KB51/ALKIS_5406-006_nas.zip
KB51/ALKIS_5406-006_nas.zip IMPORT 2021-11-17 01:11:23: /tmp/tmp.eGrcx8DNJD/KB51_ALKIS_5406-006_nas.xml 10MiB
KB51/ALKIS_5406-006_nas.zip RUNNING: ogr2ogr -f PostgreSQL  -ds_transaction --config PG_USE_COPY YES -nlt CONVERT_TO_LINEAR -update -append "PG:host=localhost port=5439 user=alkis password=*removed* dbname=alkis active_schema=th schemas=th,public" -a_srs EPSG:25832 "C:/cygwin64/tmp/tmp.eGrcx8DNJD/KB51_ALKIS_5406-006_nas.xml"
KB51/ALKIS_5406-006_nas.zip TIME: /tmp/tmp.eGrcx8DNJD/KB51_ALKIS_5406-006_nas.xml mit 10MiB in 7s importiert (1525kiB/s; Gesamt:1200kiB/s).
KB51/ALKIS_5406-006_nas.zip REMAINING: 0 Bytes 0% 0,nichts ETA:Mi, 17. Nov 2021 01:11:30
KB51/ALKIS_5406-006_nas.zip removed '/tmp/tmp.eGrcx8DNJD/KB51_ALKIS_5406-006_nas.xml'
FINAL: 30GiB in 7h25m15s (1200kiB/s)
SQL RUN: postprocessing.d/0_ableitungsregeln.sql 2021-11-17 01:11:32
…

Die Ableitungsregeln laufen allerdings noch. Die 409139 Datensätze in ax_flurstueck sind jedoch vorhanden (was sich mit den Eingabedaten deckt).

pschmmidt1979 commented 2 years ago

Ich kann bestätigen, dass mit oben erwähnten Einstellungen der Import reibungslos funktioniert hat. Ich bedanke mich für die Hilfe.