[gdal-dev] Namespaces in GMLAS
Even Rouault
even.rouault at spatialys.com
Fri Oct 13 15:09:32 PDT 2017
On vendredi 13 octobre 2017 23:19:02 CEST Ari Jolma wrote:
> I've been looking into a GML file ('akaava:Suojelualue') with ogrinfo
> I've got from a Finnish WFS
>
> https://opaskartta.turku.fi/TeklaOGCWeb/WFS.ashx?request=GetCapabilities
>
> First, the XSD files needed a bit of fixing: link GML to 3.1.1 instead
> of 2.1.2 in opaskartta.turku.fi_Tekl..., and fix [-] to [\-] in
> www.paikkatietopalvelu.fi_gml_yhteiset_2.1.6_yhteiset.xsd
>
> After that, ogrinfo does not complain but does not find anything in the
> GML file. I dug in a bit and it turns out that
> GMLASSchemaAnalyzer::Analyze did not use the correct schema files (gml,
> asemakaava, etc) in the 2nd and 3rd passes it does through the
> namespaces -- it did in the first pass. For some reason only the
> namespace -> schema pairs in the GML get into aoNamespaces array. The
> correct ones are available in oMapURIToPrefixWithEmpty.
>
> Probably the way Tekla constructs the GML file is unusual (my guess, I'm
> no expert on this subject). The xsi:schemaLocation in the GML file
> contains only two pairs: wfs -> wfs-schema and kuntagml -> describe
> featuretype request URL. These are in aoNamespaces. The latter then
> imports the gml and asemakaava schemas.
>
> Modifying the code to read the namespaces in the 2nd and 3rd pass
> similarly as in 1st pass I get a long list of layers with ogrinfo and
> can read something real out of the GML file with ogr2ogr. However,
> there's two HTTP 404 errors -- probably some schemas are not where
> expected(?).
>
> Could you Even sched some light on what's going on?
Hi Ari,
Oh no, I only do GMLAS stuff as a punishment when I have done some really evil
action ;-)
I've downloaded the content of
"https://opaskartta.turku.fi/TeklaOGCWeb/WFS.ashx?
request=GetFeature&service=WFS&typename=kanta:Kiinteisto&version=1.1.0"
I didn't had to do schema fixing, but I probably already did try with that
schema in the past since I had it cached, so perhaps I already fixed stuff.
Regarding the namespace issue, the core issue was that the .xml file only
points to the wfs and kuntagml namespaces, but none of them has "interesting"
elements. The kuntagml namespace happens to be a "wrapper" around the gml and
kantakartta namespaces, and that's this latter one that has interesting
elements.
The rational for that behaviour is that generally only the namespaces directly
pointed by the document contain interesting elements. Indirectly imported
namespaces just contain technical stuff you don't really want to expose as
layers. But yes that heuristics wasn't bullet proof.
So a workaround is to add "http://www.paikkatietopalvelu.fi/gml/kantakartta
http://www.paikkatietopalvelu.fi/gml/kantakartta/2.1.1/kantakartta.xsd" in the
xsi:schemaLocation.
But I did a fix in https://trac.osgeo.org/gdal/changeset/40429 to avoid doing
that: when "first choice" namespaces contain nothing interesting, fallback to
the namespaces they indirectly import
I also pushed before a fix for gml:PolyhedralSurface parsing
With the fix (or manual workaround):
$ ogrinfo GMLAS:kanta.xml -oo remove_unused_layers=yes
INFO: Open of `GMLAS:kanta.xml'
using driver `GMLAS' successful.
1: kiinteisto (None)
2: labelit (None)
3: labelit_label (Point)
4: sijainnit (None)
5: sijainnit_sijainti (Curve, Curve, Surface)
6: referenssipiste (Point, Point)
Even
--
Spatialys - Geospatial professional services
http://www.spatialys.com
More information about the gdal-dev
mailing list