qgisinspiretools / qgis-wfs20-client-plugin

QGIS Plugin for OGC Web Feature Service 2.0.0
11 stars 8 forks source link

WFS 2.0 ändert Datentyp von PLZ beim Laden #15

Closed annaklesh closed 4 years ago

annaklesh commented 4 years ago

Hallo zusammen,

es ist mir eingefallen, dass beim Laden von einem konformen Dienst in QGIS mittels Plugin WFS 2.0, ändert sich Typ des Attributes PLZ von String auf Integer. Dadurch werden alle Postleitzahlen, die mit „0“ anfangen, auf 0 reduziert: 03226->3226.

Das passiert aber nur, wenn die Dienste über Plug-In WFS 2.0 verbunden werden.

Ich habe sowohl in QGIS 2.18, als auch in 3.10 getestet. Habe erst mir die 2 Dienste angeschaut:

https://inspire.brandenburg.de/services/gesschulen_wfs? https://inspire.brandenburg.de/services/oebvi_wfs?

Ist der Fehler schon bekannt? Wie geht man damit um?

Viele Grüße, Anna

JuergenWeichand commented 4 years ago

Hallo @annaklesh,

vielen Dank für den Bugreport. Dieses Problem tritt auf, wenn der OGR-Treiber das GML-Schema (über DescribeFeatutreType) nicht nachladen kann. Ich vermute du bist hinter einem HTTP-Proxy?

@ejn Der WFS 2.0 Client müsste den HTTP-Proxy noch zusätzlich an den OGR-Treiber weiterreichen. Hierzu muss noch folgende ConfigOption gesetzt werden: https://trac.osgeo.org/gdal/wiki/ConfigOptions#GDAL_HTTP_PROXY

Weitere Analyse lokal ohne HTTP-Proxy:

ogrinfo -al test.gml 
GNM: GNMRegisterAllInternal
GNM: RegisterGNMFile
GNM: RegisterGNMdatabase
GML: Using Expat reader
HTTP: Fetch(https://inspire.brandenburg.de/services/gesschulen_wfs?SERVICE=WFS&VERSION=2.0.0&REQUEST=DescribeFeatureType&OUTPUTFORMAT=application%2Fgml%2Bxml%3B+version%3D3.2&TYPENAME=app:gesschulen&NAMESPACES=xmlns(app,http%3A%2F%2Fwww.deegree.org%2Fapp))
GML: Using /vsimem/tmp_gml_xsd_0x1d09ac0.xsd
GDAL: GDALOpen(test.gml, this=0x1d09ac0) succeeds as GML.
Had to open data source read-only.
INFO: Open of `test.gml'
      using driver `GML' successful.
OGR: GetLayerCount() = 1

Layer name: gesschulen
Geometry: Multi Point
GML: ResetReading()
GML: ResetReading()
GML: ResetReading()
Feature Count: 1
GML: ResetReading()
GML: ResetReading()
Extent: (432185.166000, 5874214.196000) - (432185.166000, 5874214.196000)
Layer SRS WKT:
(unknown)
Geometry Column = the_geom
gml_id: String (0.0) NOT NULL
name: String (0.0)
name_zusatz: String (0.0)
strasse: String (0.0)
hausnummer: String (0.0)
plz: String (0.0)
gemeinde: String (0.0)
ortsteil: String (0.0)
url: String (0.0)
heb: Integer(Boolean) (0.0)
nfs: Integer(Boolean) (0.0)
erg: Integer(Boolean) (0.0)
gki: Integer(Boolean) (0.0)
gkp: Integer(Boolean) (0.0)
gkph: Integer(Boolean) (0.0)
log: Integer(Boolean) (0.0)
mmb: Integer(Boolean) (0.0)
mtl: Integer(Boolean) (0.0)
mtr: Integer(Boolean) (0.0)
pta: Integer(Boolean) (0.0)
phy: Integer(Boolean) (0.0)
ejn commented 4 years ago

@JuergenWeichand danke für den Hinweis mit dem Proxy - darauf bin ich nicht gekommen

annaklesh commented 4 years ago

@JuergenWeichand tatsächlich, habe hinter einem HTTP-Proxy getestet. Danke schön! @ejn, @JuergenWeichand könnte es an der Stelle angepasst werden, damit es auch in meinem Fall String erscheint?

ejn commented 4 years ago

@annaklesh ich schaue es an, welche Möglichkeiten es da gibt. Ansonsten funktioniert es vielleicht auch als Zwischenlösung, wenn die Umgebungsvariablen http_proxy bzw. https_proxy gesetzt sind.

annaklesh commented 4 years ago

@ejn alles klar! Danke schön.

ejn commented 4 years ago

@annaklesh bitte mit der neuen Testversion (aus Branch set-gdal-proxy) unter wfsclient.zip ausprobieren.

Mit QGIS 3.4 (GDAL 2.4.1) funktioniert es bei mir immer noch nicht, aber mit QGIS 3.10 (GDAL 3.0.4) klappt es: Was sich in QGIS oder GDAL dazwischen geändert hat, habe ich nicht so schnell herausfinden können.