norBIT / alkisimport

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

skipfailures bei doppelten Katalogeinträgen #11

Closed ruhri closed 7 years ago

ruhri commented 7 years ago

Auszug von der Webseite http://www.norbit.de/68 :

... wird ogr2ogr mit der Option -skipfailures ausgeführt. Dies sollte nur nötig sein, wenn man Datenbestände mit doppelten Datensätzen importiert (etwa Datensätzen für verschiedenen Gemeinden bei denen sich die Katalogeinträge überschneiden)


Eigene Erfahrung:

"-skipfailures" verlangsamt seit GDAL2 die Importe erheblich (der ogr2ogr-Prozess dauert etwa dreimal länger, als ohne "-skipfailures"). Aufgrund des auf der Webseite beschriebenen Umstandes ist jedoch beim Import mehrer Gemeinden (bspw. OpenData-Daten NRW; mehrere Gemindedatensätze) der Parameter "-skipfailures" zumindest bei den Katalogobjekten notwendig, bei den anderen Objektarten aber mögicherweise nicht. Das wäre zu klären... Wenn bei anderen Objektarten keine doppelten Datensätze vorkommen, wäre eine differenzierte Behandlung der Import-Dateien dementsprechend sinnvoll - zumindest dann wenn möglich. Bei den ALKIS-OpenData-Datensätzen aus NRW liegen die Katalogobjekte in "katalogobjekte_bda.xml".

-->Beispiel zur Erweiterung des Shell-Scripts. Fallunterscheidung ob die Objektdatei im Dateinamen "katalogobjekte" enthält, oder nicht (ist sicherlich nicht optimal...):

opt_sf=
if [[ "$src" =~ "katalogobjekte" ]]; then
    opt_sf="-skipfailures"
else
    opt_sf=
fi

...

echo RUNNING: ogr2ogr -f $DRIVER $opt $opt_sf -update -append "$DST" $CRS "$dst"
t0=$(bdate +%s)
if [ -z "$T0" ]; then T0=$t0; fi
if [ -n "$GDB" ]; then
    gdb --args ogr2ogr -f $DRIVER $opt $opt_sf -update -append "$DST" $CRS "$dst" </dev/tty >/dev/tty 2>&1
else
    ogr2ogr -f $DRIVER $opt $opt_sf -update -append "$DST" $CRS "$dst"
fi
t1=$(bdate +%s)