[GIS] How to convert GML Surface to SHP Using OGR

gmlogrogr2ogr

I have a very large .gml file with multiple layers in it. I would like to export one of these layers to .shp. It is a polygon layer (of lakes). However, I am getting the error:

ERROR 1: Unrecognised geometry type <Surface>.

The ogr command I was using:
ogr2ogr -f "ESRI Shapefile" output.shp input.gml layername

Any thoughts? Is it possible the polygon layer is somehow incorrectly defined as a surface in the GML? Any way I can force it to be a polygon? Or is it something else entirely? I don't often work with .gml, so may be missing something obvious…

EDIT 20101202:
Here is a snip of (what appears to be) the relevant info from an example feature in the example file linked below:

<gml:featureMember>
    <gml:surfaceProperty>
        <gml:Surface srsName="EPSG:4140" srsDimension="2">
            <gml:patches>
                <gml:PolygonPatch>
                    <gml:exterior>
                        <gml:LinearRing>
                           <gml:posList>
                               52.2023177 -77.596532 52.2024007 -77.5963559 52.2028141 -77.5962899 52.2028362 -77.5964181 52.2026119 -77.5967049 52.2024106 -77.5967968 52.2023273 -77.5966966 52.2023177 -77.596532
                           </gml:posList>
                        </gml:LinearRing>
                    </gml:exterior>
             </gml:PolygonPatch>
        </gml:patches>
    </gml:Surface>
</gml:surfaceProperty>

So, the file is identifying it as a 'surface' as well as a 'PolygonPatch'? Perhaps the question should be: what is a 'surface' in a .gml file?

Best Answer

You need to use GDAL 1.8.0 or above to be able to read this kind of GML3 geometry.