[gdal-dev] Wrong number or type of arguments for overloaded function'CoordinateTransformation_TransformPoint'
Michael Aye
kmichael.aye at gmail.com
Fri Mar 20 18:16:53 PDT 2015
Even Rouault <even.rouault <at> spatialys.com> writes:
>
> Brendan,
>
> thanks for the follow-up. I've just committed a fix so that the error
> report is
> hopefully clearer now:
>
> $ python swig/python/samples/tolatlong.py 0 0 byte.png
> ERROR: Cannot import projection ''
>
> Even
>
I am struggling with this as well after coming back to this topic after a
longer break.
And while I first also found that some of my files do not have a
projection in them, I now
have identified a file that has all required data defined and still the
CoordinateTransform
is breaking with the above mentioned error.
Here is my work process, see if you can find something suspicious:
import gdal
ds = gdal.Open('img.cal.map.cub')
print("proj:", ds.GetProjection())
print("GeoTrans:", ds.GetGeoTransform())
x, y = gdal.ApplyGeoTransform(ds.GetGeoTransform(), 0, 0)
print("X:{}, Y:{}".format(x, y))
import osr
srs = osr.SpatialReference(ds.GetProjection())
print(srs.ExportToPrettyWkt())
ct = osr.CoordinateTransformation(srs, srs.CloneGeogCS())
print("CoordTrans:", ct)
print(ct.TransformPoint(x, y))
This results in:
proj: PROJCS["Sinusoidal
Mars",GEOGCS["GCS_Mars",DATUM["D_Mars",
SPHEROID["Mars",3396190,0]],
PRIMEM[
"Reference_Meridian",0],UNIT["degree",0.0174532925199433]],
PROJECTION["Sinusoidal
"],PARAMETER["longitude_of_center",296.28065864847],
PARAMETER["false_easting",0]
,PARAMETER["false_northing",0]]
GeoTrans:
(-4959.6267029156, 0.49556621731771, 0.0, -4803213.1200085, 0.0,
-0.49556621731771)
X:-4959.6267029156, Y:-4803213.1200085
PROJCS["Sinusoidal Mars",
GEOGCS["GCS_Mars",
DATUM["D_Mars",
SPHEROID["Mars",3396190,0]],
PRIMEM["Reference_Meridian",0],
UNIT["degree",0.0174532925199433]],
PROJECTION["Sinusoidal"],
PARAMETER["longitude_of_center",296.28065864847],
PARAMETER["false_easting",0],
PARAMETER["false_northing",0]]
CoordTrans: <osgeo.osr.CoordinateTransformation; proxy of None >
---------------------------------------------------------------------------
NotImplementedError Traceback (most recent call last)
<ipython-input-50-9e312a3e5cc7> in <module>()
10 ct = osr.CoordinateTransformation(srs, srs.CloneGeogCS())
11 print("CoordTrans:", ct)
---> 12 print(ct.TransformPoint(x, y))
/Users/klay6683/miniconda3/lib/python3.4/site-packages/osgeo/osr.py in
TransformPoint(self, *args)
793 TransformPoint(self, double x, double y, double z = 0.0)
794 """
--> 795 return _osr.CoordinateTransformation_TransformPoint(self, *args)
796
797 def TransformPoints(self, *args):
NotImplementedError: Wrong number of arguments for overloaded function
'CoordinateTransformation_TransformPoint'.
Possible C/C++ prototypes are:
TransformPoint(OSRCoordinateTransformationShadow *,double [3])
TransformPoint(OSRCoordinateTransformationShadow *,double
[3],double,double,double)
As the function is required an array with 3 elements formally
(but I thought I previously
handed it only 2 and it was just working fine, assuming 0 for the
last element) I also tried
two more versions, one with a Python list and one with that Python
list embedded into a
numpy array with dtype='double', all to no avail:
print(ct.TransformPoint((x,y,0)))
---------------------------------------------------------------------------
NotImplementedError Traceback (most recent call last)
<ipython-input-51-3179e52dbf67> in <module>()
----> 1 print(ct.TransformPoint((x,y,0)))
/Users/klay6683/miniconda3/lib/python3.4/site-packages/osgeo/osr.py in
TransformPoint(self, *args)
793 TransformPoint(self, double x, double y, double z = 0.0)
794 """
--> 795 return _osr.CoordinateTransformation_TransformPoint(self, *args)
796
797 def TransformPoints(self, *args):
NotImplementedError: Wrong number of arguments for overloaded function
'CoordinateTransformation_TransformPoint'.
Possible C/C++ prototypes are:
TransformPoint(OSRCoordinateTransformationShadow *,double [3])
TransformPoint(OSRCoordinateTransformationShadow *,double
[3],double,double,double)
print(ct.TransformPoint(np.array([x,y,0],dtype='double')))
---------------------------------------------------------------------------
NotImplementedError Traceback (most recent call last)
<ipython-input-52-9bad892efd2f> in <module>()
----> 1 print(ct.TransformPoint(np.array([x,y,0],dtype='double')))
/Users/klay6683/miniconda3/lib/python3.4/site-packages/osgeo/osr.py in
TransformPoint(self, *args)
793 TransformPoint(self, double x, double y, double z = 0.0)
794 """
--> 795 return _osr.CoordinateTransformation_TransformPoint(self, *args)
796
797 def TransformPoints(self, *args):
NotImplementedError: Wrong number of arguments for overloaded function
'CoordinateTransformation_TransformPoint'.
Possible C/C++ prototypes are:
TransformPoint(OSRCoordinateTransformationShadow *,double [3])
TransformPoint(OSRCoordinateTransformationShadow *,double
[3],double,double,double)
This is my gdal.VersionInfo() output:
'1110200'
Any ideas?
Thanks,
Michael
More information about the gdal-dev
mailing list