Opened 15 years ago

Closed 4 years ago

Last modified 4 years ago

#249 closed defect (fixed)

[OGR-GML] GML driver doesn't recognize GML files with 0 features

Reported by: Daniel Morissette Owned by: warmerdam
Priority: high Milestone: 1.11.0
Component: default Version: unspecified
Severity: normal Keywords: gml gfs
Cc: Mateusz Łoskot

Description (last modified by Mateusz Łoskot)

The OGR/GML driver doesn't recognize files that contain 0 features. Everything goes well until GMLReader::PrescanForSchema?() gets called, it returns false since it doesn't find any feature class.

I guess this makes sense for datasets in general, but when we use the GML driver in the context of a WFS, receiving 0 features is a valid case.

It would be nice if OGR accepted to open GML file, and present it as a file with a single layer with 0 features in it.

What is an OGR driver expected to do if a file is empty? If nothing can be done at the OGR level for this then I guess I'll have to preparse the GML file before .

I try to open it with OGR, which is a bit of a waste of resources.

Any ideas, suggestions?

Change History (9)

comment:1 Changed 15 years ago by warmerdam

Daniel, 

I see your point.

I think it would be OK to treat a file as GML and return a datasource with
zero layers (since there would be no defined feature types) if the file is
clearly GML (it contains the opengis.net/gml and a featureCollection element).  

Do you really need the driver to return a dataset with one layer?  

Do you want to make these changes or do you want me to?  


comment:2 Changed 15 years ago by Daniel Morissette

I just realized that I may have to open the XML anyway when the open() call 
fails in order to look for exceptions.  I'll get back to you on this one.

comment:3 Changed 15 years ago by Daniel Morissette

I modified MapServer to preparse the header of the WFS response and detect 
WFS exceptions, etc (a bit like a testopen) before calling OGR, so this is not 
an issue for me any more.

I'll let you decide if you want to mark this as invalid, or keep this as a 
potential enhancement for later.  I think it would be nice to return a 
datasource with zero layers as you suggested to indicate that the file format 
was recognized.  But this could just confuse applications too, I dunno?  I'll 
leave that up to you to decide.

Thanks for the quick reply earlier today BTW :)

comment:4 Changed 14 years ago by warmerdam

Review for correction before GDAL 1.2.0 release.

comment:5 Changed 14 years ago by warmerdam

I'm too nervous to fiddle with this aspect of the GML reader before the release.
Deferring.  This is more of an issue to be revisited on the next substantial 
effort to improve the GML reader. 

comment:6 Changed 11 years ago by Mateusz Łoskot

Description: modified (diff)

comment:7 Changed 11 years ago by Mateusz Łoskot

Cc: Mateusz Łoskot added
Keywords: gml gfs added

comment:8 Changed 4 years ago by Even Rouault

Milestone: 2.0
Resolution: fixed
Status: assignedclosed

trunk r26339 "GML: open successfully GML datasources with 0 layers (#249, #5205)"

comment:9 Changed 4 years ago by Even Rouault

Milestone: 2.01.11.0
Note: See TracTickets for help on using tickets.