Ошибка репроецирования GDAL: в методе Geometry_Transform аргумент 2 типа OSRCoordinateTransformationShadow *

Использование 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?


person Val H    schedule 19.12.2014    source источник
comment
Эта ветка: osgeo-org.1560.x6 .nabble.com/PROJ-4-EPSG-28992-td3749558.html предполагает, что эта проблема может быть вызвана отсутствием параметров ToWgs84. Но я не вижу связи между отсутствующими параметрами и ошибкой типа. Разве нулевое значение не может вызвать эту ошибку?   -  person Val H    schedule 19.12.2014


Ответы (2)


Что должен знать каждый, кто плохо знаком с GDAL: назначьте обработчик ошибок. (пример: http://pcjericks.github.io/py-gdalogr-cookbook/gdal_general.html#install-gdal-ogr-error-handler)

Если назначен обработчик ошибок, выходные данные включают объяснение ошибки. В данном случае это было: «Не удалось загрузить библиотеку PROJ.4 (libproj.so), не удалось создать OGRCoordinateTransformation».

Надеемся, что передача знаний о включении обработки ошибок GDAL поможет другим, кто может столкнуться с этой самой проблемой.

person Val H    schedule 19.12.2014
comment
Не полезно. Я попал в ту же ошибку, установил обработчик и не повезло. То же самое происходит. Более того, я могу сделать конвертацию из pyproj. - person visoft; 03.05.2017
comment
Почему GDAL не делает этого по умолчанию? - person naught101; 13.03.2019

Аналогичную информацию можно найти в FAQ по rasterio и в не удалось загрузить файл gcs.csv в gdal.

Я столкнулся с этой проблемой при выполнении преобразований GDAL в моей среде Anaconda3 QGIS. Проблема в том, что информация о системе координат не загружалась через переменную окружения GDAL_DATA.

Чтобы исправить это, найдите каталог, содержащий gcs.csv, в вашей системе (возможно, ".../Library/share/gdal"). Добавьте это в свою среду перед импортом GDAL и других иждивенцев.

import os

os.environ['GDAL_DATA'] = r'/path/to/dir/'
person jeremy    schedule 08.11.2019