Ticket #2498 (closed defect: fixed)

Opened 5 years ago

Last modified 5 years ago

OGRSpatialReference::Validate does not return correct error code in Python

Reported by: mloskot Owned by: mloskot
Priority: normal Milestone: 1.6.0
Component: OGR_SRS Version: svn-trunk
Severity: normal Keywords: python validate
Cc: hobu

Description (last modified by mloskot) (diff)

I'm trying to use the Validate method of osgeo.osr.SpatialReference? class but I'm experiencing strange problem. Regardless of what WKT is validated - valid or invalid - the Validate() function always returns Zero.

Simple test:

wkt = ... # invalid WKT
srs = osr.SpatialReference()
srs.ImportFromWkt(wkt)
print srs.Validate()   # always returns Zero

To be 100% of that, I patched the C++ implementation of OGRSpatialReference::Validate to always return OGRERR_CORRUPT_DATA (integer value 5), regardless of WKT being validated.

Testing the patched GDAL has confirmed that Zero is returned, always:

mloskot@vm-ubuntu704ora:~/dev/gdal/bugs/1183$ python
Python 2.5.1 (r251:54863, Mar  7 2008, 03:41:45) 
[GCC 4.1.2 (Ubuntu 4.1.2-0ubuntu4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> import osgeo.osr as osr
>>> srs = osr.SpatialReference()
>>> srs.ImportFromWkt("xxx")
0
>>> srs.Validate()
OSR: XXX
0
>>> 

Here, xxx can be ie. Oracle WKT of correct format but unrecognized nodes/values, etc.

Attachments

testing-osr-validate-with-python.patch Download (0.5 KB) - added by mloskot 5 years ago.
Patch used to test and confirm that Python bindings of OGRSpatialReference::Validate function always return Zero, even if original implementation returns different error code

Change History

Changed 5 years ago by mloskot

Patch used to test and confirm that Python bindings of OGRSpatialReference::Validate function always return Zero, even if original implementation returns different error code

Changed 5 years ago by mloskot

  • description modified (diff)

Changed 5 years ago by mloskot

  • description modified (diff)

Changed 5 years ago by warmerdam

  • cc hobu added

The definition from osr.i seems straight forward. I wonder if this relates to special OGRErr handling rules? Adding hobu.

OGRErr Validate() {
    return OSRValidate(self);
  }

Changed 5 years ago by mloskot

  • owner changed from warmerdam to hobu

Changed 5 years ago by mloskot

  • owner changed from hobu to mloskot
  • status changed from new to assigned

Changed 5 years ago by mloskot

  • status changed from assigned to closed
  • resolution set to fixed

Howard has fixed this problem in trunk (r15011, r15020). I confirm the fix works so closing this ticket.

Changed 5 years ago by mloskot

  • milestone set to 1.6.0
Note: See TracTickets for help on using tickets.