Использование Python 2.7.9 с GDAL 1.11.1 с miniconda для управления пакетами —
При этом простое перепроецирование точки координат вызывает ошибку, описанную ниже.
Я новичок в GDAL, поэтому я проверил, соответствует ли код из Python GDAL/OGR 1.0 Cookbook вызывает ту же проблему, и она делает:
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 *'
CoordinateTransform — это прокси для класса C++ OSRCoordinateTransformationShadow, сгенерированного SWIG. Согласно исходному коду для osgeo.ogr.Geometry (какой Point is), в метод Transform были переданы правильные типы.
Лучшее предположение: может ли это быть вызвано использованием слишком старой версии _ogr, поэтому реализация _ogr.Geometry_Transform(self, *args) ожидает другую? _ogr — это еще один прокси-сервер, сгенерированный SWIG, я полагаю, для класса OGR?