Проблемы с импортом GDAL и OGR с помощью ноутбука Jyupter - PullRequest
0 голосов
/ 01 октября 2019

Я работаю над школьным проектом и занимаюсь пространственным анализом округов в Калифорнии;использование Jyupter Notebook для запуска скриптов Python (2.7) и создания визуализаций.

Мне удалось импортировать базовую карту в блокнот после того, как я загрузил ее с помощью conda. Я очень плохо знаком с Python и не могу вспомнить, как мне это удалось. Я полагаю, что использовал инструкции этого сайта .

Но теперь, пытаясь наложить мой шейп-файл поверх базовой карты, я столкнулся с этой ошибкой:

ValueError: shapefile must have lat/lon vertices  - it looks like this one has vertices in map projection coordinates. You can convert the shapefile to geographic
coordinates using the shpproj utility from the shapelib tools
(http://shapelib.maptools.org/shapelib-tools.html)

В течение последнего часа я искал способы преобразования координат и узнал оGDAL и некоторые команды ogr2ogr. Я попытался следовать инструкциям, размещенным на gdal.org , которые говорят мне выполнить эту команду: conda install -c conda-forge gdal. Есть ли разница между conda и conda-forge? Я пробовал много вариантов этой команды, как: conda install -c anaconda2 gdal и install conda gdal. Ничего не помогло, потому что, когда я возвращаюсь к своей записной книжке и пытаюсь import gdal или import ogr, я получаю сообщение об ошибке примерно так:

ImportError: dlopen(/anaconda2/lib/python2.7/site-packages/osgeo/_gdal.so, 2): Library not loaded: @rpath/libgif.7.dylib
  Referenced from: /anaconda2/lib/libgdal.20.dylib
  Reason: image not found

Я действительно не понимаю, как работает conda, разница междуКонда и Конда-Фордж, и куда идут все эти материалы, которые я скачивал. Может ли кто-нибудь помочь мне понять, что происходит и что я делаю неправильно?

1 Ответ

2 голосов
/ 01 октября 2019

Во-первых, когда вы задаете вопрос, укажите свою среду: ОС, версия conda (conda info), версия Python и т. Д.

Что такое канал

condaменеджер среды Python и менеджер пакетовЧтобы установить пакеты, conda должен скачать пакеты откуда-то. Место, где conda получает список пакетов, называется каналом.

По умолчанию включены два канала с именами main и r, оба из которых поддерживаются Anaconda, самой компанией. conda-force является каналом стороннего сообщества.

Цитата из документации conda-force

Что такое conda-forge?

conda-forge - это работа сообщества, которая предоставляет пакеты conda для широкого спектра программного обеспечения.

Укажите канал в командной строке с помощью -c channelname, ярлык для --channel.

Как исправить вашу проблему

Ваша проблема была вызвана смешанным использованием канала для одного пакета. gdal было указано для установки из conda-forge, но не из его зависимостей. Поскольку канал его зависимостей не указан, будут использоваться каналы по умолчанию main и r.

Чтобы исправить использование смешанной зависимости, включите "строгий" приоритет канала.

conda config --set channel_priority strict

, что делает канал, заданный --channel, приоритетным по отношению к другим каналам.

channel_priority (ChannelPriority)

При приоритете канала strict пакеты в каналах с низким приоритетом неучитывается, если пакет с тем же именем появляется в канале с более высоким приоритетом.

Затем заново создайте среду и установите gdal.

conda create --name test4gdal python=2.7
conda activate test4gdal
conda install -c conda-forge gdal

На этот раз все gdalсоответствующие пакеты устанавливаются из conda-forge.

Ссылки

...