не удалось загрузить файл gcs.csv в gdal

Этот вопрос может повторяться, но я не получил ответа. Я пишу текущий код в python ide.

out_srs = osr.SpatialReference()

   **self.out_srs.ImportFromEPSG(4326)** 

Он работает нормально, но когда я запускаю его из приложения, возникает следующая ошибка

Примечание. Ошибка в строке, заключенной в 2 звезды -----

"Unable to load EPSG support gcs.csv file check setting GDAL_DATA environment variable which point to gdal library contains EPSG.csv file"

Я сделал это, но я все еще получаю эту ошибку. но этот код запускается отдельно, но не в приложении. Этот код взят из модуля gdal2tile программы gdal. Я использую python 2.7.6 и gdal 1.10.0. Я не могу разобраться, в чем проблема и где она. Пожалуйста, предложите, как это решить.


person user2353848    schedule 25.09.2014    source источник
comment
Откуда он знает, что geodetic ссылается на out_srs в вашем коде?   -  person beroe    schedule 25.09.2014


Ответы (3)


GDAL требуется переменная среды с именем GDAL_DATA, указывающая на каталог с различными файлами данных, включая gcs.csv. Подробнее об этом здесь.

Чтобы проверить, установлен ли GDAL_DATA и содержит ли он gcs.csv, и если это можно прочитать, используйте следующие фрагменты кода для проверки приложения. Это должно быть рядом с кодом, который вызывает ошибку.

import os
import stat
gdal_data = os.environ['GDAL_DATA']
print('is dir: ' + str(os.path.isdir(gdal_data)))
gcs_csv = os.path.join(gdal_data, 'gcs.csv')
print('is file: ' + str(os.path.isfile(gcs_csv)))
st = os.stat(gcs_csv)
print('is readable: ' + str(bool(st.st_mode & stat.S_IRGRP)))

Пользователи Anaconda / Miniconda

Правильный способ использования Anaconda или Miniconda — активировать среду, в которой установлен GDAL. Например, активируйте базовую среду для Anaconda из Windows cmd.exe:

call %LOCALAPPDATA%\Continuum\anaconda3\Scripts\activate.bat base

Активация среды запускает установку переменных среды, таких как GDAL_DATA (и другие), и часто изменяет префикс командной строки, показывающий имя среды. Эти переменные среды сбрасываются/восстанавливаются при деактивации среды.

conda deactivate
person Mike T    schedule 29.09.2014
comment
После запуска этого из приложения он возвращает следующий вывод GDAL_DATA:C:\Program Files\GDAL\gdal-data; - person user2353848; 29.09.2014
comment
Как насчет обновленных чеков? Вам не нужно показывать вывод, просто если они все говорят True или нет. - person Mike T; 29.09.2014
comment
вывод приведенного выше кода выглядит следующим образом: dir false is file false C:\\Program Files\\GDAL\\gdal-data;\\gcs.csv точка с запятой в пути - это проблема, почему это происходит, я не понимаю - person user2353848; 29.09.2014
comment
В IDLE, где вы не видите исходную ошибку, вы видите все True для проверки, чтобы увидеть gcs.csv? - person Mike T; 29.09.2014
comment
один ложный и остальные r истинные - person user2353848; 29.09.2014
comment
Установка GDAL_DATA на правильный путь у меня не работает (Python 3.4 в Anaconda), хотя os.path.isfile(os.environ['GDAL_DATA']) и bool(os.stat(os.environ['GDAL_DATA']). st_mode и stat.S_IRGRP) возвращают True. Кто-нибудь может помочь? - person MoTSCHIGGE; 30.07.2015

Я смог решить эту проблему, выполнив следующие шаги, чтобы установить переменную GDAL_DATA в окнах.

  1. Найдите папку, в которой хранятся данные gdal.

    \Anaconda2\envs\gdaltest\Library\share\gdal
    
  2. откройте командную строку Windows и выполните следующую команду, указав расположение вашей папки данных gdal.

    set GDAL_DATA=....\....\Library\share\gdal
    
person Pranav Pandit    schedule 01.10.2018

Это случилось со мной в MacOS Catalina (10.15.5) во время игры с PyQGIS (QGIS 3.12). Только что искал в Mac Finder gcs.csv, который дал несколько результатов:

/usr/local/Cellar/gdal/2.4.2_4/share/gdal/gcs.csv

/Library/Frameworks/UnixImageIO.framework/Versions/F/Resources/epsg_csv/gcs.csv

/Library/Frameworks/GDAL.framework/Versions/2.2/Resources/gdal/gcs.csv

Я придерживаюсь GDAL.Framework и просто добавил эту переменную среды в свой скрипт:

import os

os.environ['GDAL_DATA'] = '/Library/Frameworks/GDAL.framework/Versions/2.2/Resources/gdal/'

Скрипт больше не ругается.

person Jakub    schedule 16.06.2020