bstroebl / xplanplugin

QGIS Plugin for German standard XPlanung
GNU General Public License v2.0
3 stars 2 forks source link

Import schlägt fehl mit offiziellen Testdaten #5

Open swen100 opened 4 years ago

swen100 commented 4 years ago

Beim Import des FNP Wilhelmshaven mit Daten von der Seite http://www.xplanungwiki.de/index.php?title=Testdaten_XPlanGML_5.1

schlägt der Import fehl, sobald die Option "aus dem Importschema in die XPlan-Datenbank übernehmen" aktiviert wird.

In der PostGres (Version 10.1) habe ich die (aktuelle) xplanPostGIS Version 5.2 benutzt.

Fehlermeldung:

 CRITICAL    FEHLER: ungültige Eingabesyntax für ganze Zahl: »RICHTFUNKSTRAHL«
             (22P02) QPSQL: Es konnte keine Abfrage erzeugt werden
2020-02-17T08:48:18     CRITICAL    UPDATE "SO_NachrichtlicheUebernahmen"."SO_SonstigesRecht" ziel SET ("artDerFestlegung","detailArtDerFestlegung","nummer") = (SELECT "artderfestlegung"::int4,"detailartderfestlegung"::int4,"nummer"::varchar FROM "fnp_wilhelmshaven"."so_sonstigesrecht" quelle WHERE quelle.xp_gid = ziel.gid) WHERE gid IN (SELECT xp_gid FROM "fnp_wilhelmshaven"."so_sonstigesrecht");
2020-02-17T08:48:18     CRITICAL    Import fehlgeschlagen

Das Problem ist, dass in der Tabelle "so_sonstigesrecht" im Feld "detailartderfestlegung" keine Zahl, sondern Text steht. Der Text wurde aus dem XML-Dokument entsprechend übernommen.

...
<xplan:artDerFestlegung>1200</xplan:artDerFestlegung>
<xplan:detailArtDerFestlegung>RICHTFUNKSTRAHL</xplan:detailArtDerFestlegung>
...
<xplan:artDerFestlegung>9999</xplan:artDerFestlegung>
<xplan:detailArtDerFestlegung>Schutzbereich um Richtfunkstrahl (beiderseits 50 m)</xplan:detailArtDerFestlegung>
...

Im Import wird aber beim SQL mit "detailartderfestlegung::int4" eine Zahl erwartet:

UPDATE "SO_NachrichtlicheUebernahmen"."SO_SonstigesRecht" ziel SET ("artDerFestlegung","detailArtDerFestlegung","nummer") = 
(
    SELECT "artderfestlegung"::int4,"detailartderfestlegung"::int4,"nummer"::varchar
    FROM "fnp_wilhelmshaven"."so_sonstigesrecht" quelle
    WHERE quelle.xp_gid = ziel.gid
) WHERE gid IN (SELECT xp_gid FROM "fnp_wilhelmshaven"."so_sonstigesrecht");