Python GDAL重投射错误:在方法';几何变换';,参数2的类型为';OSRCoordinateTransformationShadow*';
使用Python2.7.9和GDAL 1.11.1,并使用miniconda进行包管理-- 执行此操作时,坐标点的简单重投影会导致如下所述的错误 我对GDAL比较陌生,所以我检查了来自的代码是否产生了相同的问题,它确实:Python GDAL重投射错误:在方法';几何变换';,参数2的类型为';OSRCoordinateTransformationShadow*';,python,transform,gdal,map-projections,Python,Transform,Gdal,Map Projections,使用Python2.7.9和GDAL 1.11.1,并使用miniconda进行包管理-- 执行此操作时,坐标点的简单重投影会导致如下所述的错误 我对GDAL比较陌生,所以我检查了来自的代码是否产生了相同的问题,它确实: from osgeo import ogr from osgeo import osr source = osr.SpatialReference() source.ImportFromEPSG(2927) target = osr.SpatialReference() t
from osgeo import ogr
from osgeo import osr
source = osr.SpatialReference()
source.ImportFromEPSG(2927)
target = osr.SpatialReference()
target.ImportFromEPSG(4326)
transform = osr.CoordinateTransformation(source, target)
point = ogr.CreateGeometryFromWkt("POINT (1120351.57 741921.42)")
point.Transform(transform)
print point.ExportToWkt()
这就是错误:
/opt/miniconda/envs/pygeo/lib/python2.7/site-packages/osgeo/ogr.pyc in Transform(self, *args)
4880 OGRERR_NONE on success or an error code.
4881 """
-> 4882 return _ogr.Geometry_Transform(self, *args)
4883
4884 def GetSpatialReference(self, *args):
TypeError: in method 'Geometry_Transform', argument 2 of type 'OSRCoordinateTransformationShadow *'
坐标转换是用SWIG生成的C++ OSRealTraseTrimeS影类的代理。 根据(哪一点是),将正确的类型传递给Transform方法
最佳猜测:这可能是因为使用了太旧的_ogr版本,因此_ogr.Geometry_Transform(self,*args)的实现需要一个不同的版本吗?_ogr是另一个SWIG生成的代理,我猜是ogr类?每个新加入GDAL的人都必须学习的东西:分配一个错误处理程序。(例如:) 分配了错误处理程序后,输出包括错误的解释。在本例中,它是:“无法加载项目4库(libproj.so),OGRCoordinateTransformation的创建失败。” 希望,传授启用GDAL错误处理的知识将有助于其他可能偶然发现这个问题的人 类似信息可在中找到 我在Anaconda3 QGIS环境中运行GDAL转换时遇到了这个问题。问题是坐标系信息没有通过
GDAL\u数据
环境变量加载
要解决此问题,请找到系统中包含gcs.csv的目录所在的位置(可能是“../Library/share/gdal”)。在导入GDAL和其他从属项之前,请将其添加到您的环境中
import os
os.environ['GDAL_DATA'] = r'/path/to/dir/'
此线程:似乎表明缺少ToWgs84参数可能导致此问题。但是我看不到缺少参数和类型错误之间的联系。除非空值可能触发该错误?没有帮助。我也犯了同样的错误,安装了处理程序,但运气不好。同样的事情也会发生。此外,我可以从pyproj进行转换。为什么GDAL在默认情况下不这样做?