[gdal-dev] ogr2ogr 1.9 gml3.2 output and multisurface

Even Rouault even.rouault at mines-paris.org
Fri Dec 9 14:00:04 EST 2011


Gordon,

> Hi,
> 
> I have a question regarding GML3.2 output from ogr2ogr in GDAL 1.9 (from
> a daily build from a few days ago).  I have a sample shapefile (found at
> http://www.vdstech.com/mapdata/canada.zip) that I've tried to convert to
> GML 3.2 using the command "ogr2ogr -f GML canada.xml canada.shp -dsco
> FORMAT=GML3.2".

Thanks for your testing and reporting.

> 
> When I try to validate the resulting file (using xerces via the oXygen
> editor, as well as the .NET xml schema libraries) there are a couple of
> problems:
> 
>  - The XML file sometimes includes the element gml:MultiSurface in the
> element ogr:geometryProperty, which the XML 3.2.1 schema does not allow,
> as ogr:geometryProperty is defined in the generated XSD file to be of
> type gml:SurfacePropertyType, which only allows elements in the
> substitution group gml:AbstractSurface.  gml:MultiSurface is not in that
> group.

Ok, that's in fact a problem with the behaviour of the shapefile driver that is 
used as a source. In shapefiles, there's no way to know in advance (without 
iterating over all the geometries!) if the geometries are POLYGON or 
MULTIPOLYGON. Currently (and this has been the case over the last 10 years 
;-)), the shapefile driver advertizes the layer to be of type POLYGON, but 
features with MULTIPOLYGON geometries can be reported... (That's an issue for 
conversion to other drivers, like Postgis too. Perhaps we should just force 
translation of geometries of shapefile polygon layers as MULTIPOLYGON and then 
advertize the layer as being MULTIPOLYGON.)

The XSD declaration is based on the declared layer type, hence 
gml:SurfacePropertyType .

This can be solved by 2 similar solutions. Add -nlt MULTIPOLYGON to your 
ogr2ogr command line to force conversion of simple polygons to multipolygons. 
Or add -nlt GEOMETRY so that the target layer is just advertized as being of 
type wkbUnknown, which will be translated as a gml:GeometryPropertyType in the 
XSD.

> 
>  - Inside the gml:MultiSurface elements, the individual gml:Polygon
> elements do not have id attributes, which xerces complains about.

That was a real bug. Just fixed by r23502.

Best regards,

Even



More information about the gdal-dev mailing list