Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/sorting/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python GDAL重投射错误:在方法';几何变换';,参数2的类型为';OSRCoordinateTransformationShadow*';_Python_Transform_Gdal_Map Projections - Fatal编程技术网

Python GDAL重投射错误:在方法';几何变换';,参数2的类型为';OSRCoordinateTransformationShadow*';

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

使用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()
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在默认情况下不这样做?