Создание приложения на базе набора библиотек QGIS на Python

Обсуждение материалов сайта: вопросы, замечания, предложения
Ответить
Alastriel
Новоприбывший
Сообщения: 6
Зарегистрирован: 20 июн 2013, 10:28
Репутация: 0

Re: Создание приложения на базе набора библиотек QGIS на Pyt

Сообщение Alastriel » 20 июн 2013, 15:06

Максим Дубинин писал(а):для начала посмотрите внимательно что у вас в PATH

версия GDAL 1.7.3 намекает, что вы какое-то старье установили.

Всё удалите, поставьте начисто qgis-dev с OSGeo4W и сделайте

Код: Выделить всё

from osgeo import gdal
Подскажите тогда, пожалуйста, пошагово, как это устанавливается... сейчас у меня 100% все также как и в инструкции. Один раз вообще пробовала фул версию установить - уж на всякий случай...
Опять же где тогда скачать более новую версию? :shock:

Alastriel
Новоприбывший
Сообщения: 6
Зарегистрирован: 20 июн 2013, 10:28
Репутация: 0

Re: Создание приложения на базе набора библиотек QGIS на Pyt

Сообщение Alastriel » 20 июн 2013, 15:19

Может быть можно отдельно переустановить GDAL? :(

ser117
Новоприбывший
Сообщения: 2
Зарегистрирован: 31 окт 2013, 14:33
Репутация: 0

Re: Создание приложения на базе набора библиотек QGIS на Pyt

Сообщение ser117 » 31 окт 2013, 15:43

Приветствую, товарищи.
У меня задача идентична названию темы, только на С++.
Статья дала общее представление о том, как должен выглядеть процесс. В обсуждении нашел эту ссылку с примерами, но, к сожалению, собрать их не получается.
Для сборки использую QT 4.7.3 с QT Creator'ом 2.4.1.
Подключаю в .pro файле qgis_core.lib и qgis_gui.lib от QGIS 1.0.2 Kore, также даю ссылку на папку со всеми .h (пример писАлся для версии 1.0.0). Также прописал DEFINES += CORE_EXPORT= и GUI_EXPORT=, иначе ругается, что не понимет этих слов. Не уверен, что это правильный путь, но иначе продвинуться не смог.
Итак, при билде линкер выдает 18 undefined referenc'ов:
1.JPG
1.JPG (69.46 КБ) 12996 просмотров
И чем я только его не пробовал...
Прикладываю "HelloWorld473.rar" - сам проект, и "plus.rar" - подключаемые .h и .lib
Подскажите, пожалуйста, что я упустил из виду? Может, я подключаю не [то/туда/так]?
Вложения
plus.rar
(800.72 КБ) 495 скачиваний
HelloWorld473.rar
(9.09 КБ) 482 скачивания

ser117
Новоприбывший
Сообщения: 2
Зарегистрирован: 31 окт 2013, 14:33
Репутация: 0

Re: Создание приложения на базе набора библиотек QGIS на Pyt

Сообщение ser117 » 06 ноя 2013, 12:56

Проблему решил.
ОказаЛОСЬ, QGIS'овы либы заточены под MSVS, а мой Qt был предварительно собран в MinGW. Когда я все эти пакости ставил на комп, я еще не знал, что это важно. Что ж, теперь понятно, поэтму Qt и не мог слинковать екзеху.
Выход: Поставил Qt MSVS2010 AddIn, скачал Qt, собраный студией, ткнул студии пальцем на Qt'шные либы, и теперь пишу проект в студии. Собирается и работает вся система на "ура".

axinax
Интересующийся
Сообщения: 36
Зарегистрирован: 22 авг 2015, 01:01
Репутация: 2

Re: Создание приложения на базе набора библиотек QGIS на Pyt

Сообщение axinax » 22 авг 2015, 03:23

python не может импортировать qgis.core Вот что пишет
>>> import qgis.core

Traceback (most recent call last):
File "<pyshell#0>", line 1, in <module>
import qgis.core
File "C:\NextGIS_QGIS\apps\qgis\python\qgis\__init__.py", line 36, in <module>
from qgis.core import QgsFeature, QgsGeometry
File "C:\NextGIS_QGIS\apps\qgis\python\qgis\core\__init__.py", line 3, in <module>
from qgis._core import *
ImportError: DLL load failed: Не найдена указанная процедура.
>>>
В системе установлены:
NextGis- устанавливал с сайта в папку C:\NextGIS_QGIS
python27
python3
В PYTHONPATH прописаны C:\NextGIS_QGIS\apps\qgis\python;C:\NextGIS_QGIS\apps\qgis\python\qgis
в path прописан только то что в NextGis лежит (до этого удалил из path все что связано с обычным python- мучаюсь не первый день)
Если работаю в консоли python из NextGis то библиотеку видит
Вдогонку. А можно библиотеку отдельно из репозитория установить или ручками из исходников собрать, если да то как?
Удалил весь обычный python, теперь с консоли Винды он не запускается, только из консоли osgeo или из nextgis но хотелось бы иметь нормальный редактор кода а не блокнот

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Создание приложения на базе набора библиотек QGIS на Pyt

Сообщение Denis Rykov » 22 авг 2015, 07:03

Удалил весь обычный python, теперь с консоли Винды он не запускается, только из консоли osgeo или из nextgis но хотелось бы иметь нормальный редактор кода а не блокнот
А как свяазны наличие в системе Python и редактор кода?
python не может импортировать qgis.core Вот что пишет
>>> import qgis.core
Вы это запускаете в консоли OSGeo4W? Там должно все работать.
Spatial is now, more than ever, just another column- The Geometry Column.

axinax
Интересующийся
Сообщения: 36
Зарегистрирован: 22 авг 2015, 01:01
Репутация: 2

Re: Создание приложения на базе набора библиотек QGIS на Pyt

Сообщение axinax » 22 авг 2015, 15:13

Да, в консоли osgeo все работает. Но не работает python из консоли винды, редактор Эклипс тоже не видит этот python, даже python win из папки NextGis как то не так работает.
Кроме того не понятно, будут ли подгружаться другие сторонние библиотеки

Аватара пользователя
Denis Rykov
Гуру
Сообщения: 3376
Зарегистрирован: 11 апр 2008, 21:09
Репутация: 529
Ваше звание: Author
Контактная информация:

Re: Создание приложения на базе набора библиотек QGIS на Pyt

Сообщение Denis Rykov » 22 авг 2015, 17:01

Всё что вам нужно - это в тех местах, откуда вы запускаете Python указать правильные переменные окружения, в частности, PYTHONPATH (именно поэтому в OSGeo4W Shell все работает без проблем). С редактором я не совсем понял, что мешает редактировать код в нём, а запускать в OSGeo4W Shell? Или если у него есть встроенная консоль, то это также решается правильной настройкой путей.
Spatial is now, more than ever, just another column- The Geometry Column.

axinax
Интересующийся
Сообщения: 36
Зарегистрирован: 22 авг 2015, 01:01
Репутация: 2

Re: Создание приложения на базе набора библиотек QGIS на Pyt

Сообщение axinax » 22 авг 2015, 22:43

моя path C:\NextGIS_QGIS\apps\Python27\Lib\site-packages;C:\NextGIS_QGIS\apps;C:\NextGIS_QGIS\apps\qgis\bin;C:\NextGIS_QGIS\bin (все что касается Python)
Pythonpath: C:\NextGIS_QGIS\apps\qgis\python;C:\NextGIS_QGIS\apps\qgis\python\qgis
А вот что сейчас пишет консоль винды Microsoft Windows [Version 6.1.7601]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.

C:\Users\slon>python.exe
ImportError: No module named site
Добавил папку с модулем site в pythonpath, python в консоли заработал
Попробую установить стороннюю библиотеку
Не получилось(((
Microsoft Windows [Version 6.1.7601]
(c) Корпорация Майкрософт (Microsoft Corp.), 2009. Все права защищены.

C:\Users\slon>cd c:\distrib\pip-7.1.1

c:\Distrib\pip-7.1.1>python setup.py
Traceback (most recent call last):
File "setup.py", line 6, in <module>
from setuptools import setup, find_packages
ImportError: No module named setuptools

c:\Distrib\pip-7.1.1>

Ariki
Гуру
Сообщения: 731
Зарегистрирован: 12 янв 2011, 22:40
Репутация: 304
Ваше звание:

Re: Создание приложения на базе набора библиотек QGIS на Pyt

Сообщение Ariki » 23 авг 2015, 14:28

Правильно, потому что сначала надо поставить setuptools. Кстати, для установки пакета скрипт setup.py нужно запускать с параметром install.

Официальный же способ установки pip такой: качаете скрипт get-pip.py и запускаете его. Он сам скачает и установит setuptools и pip. Дальше уже можете пользоваться pip для установки и обновления пакетов.

axinax
Интересующийся
Сообщения: 36
Зарегистрирован: 22 авг 2015, 01:01
Репутация: 2

Re: Создание приложения на базе набора библиотек QGIS на Pyt

Сообщение axinax » 24 авг 2015, 13:17

to Ariki Спасибо! Но главный вопрос так и не решился, и не понимаю причины.
Буду потихоньку мигрировать на Ubuntu, тем более давно собирался (там таких проблем не возникало)

axinax
Интересующийся
Сообщения: 36
Зарегистрирован: 22 авг 2015, 01:01
Репутация: 2

Re: Создание приложения на базе набора библиотек QGIS на Pyt

Сообщение axinax » 19 авг 2016, 16:45

Я все таки смигрировал на Ubuntu и Mint (на разных компах). Вообще никаких проблем с путями!
А теперь вопрос: эта команда layer = QgsVectorLayer( layerPath, layerName, layerProvider )
не работает ни в терминале, ни в этом приложении. layer.isValid() выдает False. Причем, что характерно, добавил эти строки в testplugin от NextGis (из статьи Разработка простого расширения для QGIS на Python) просто для проверки - слой открылся в QGIS. Почему не работает в консоли, не могу понять. Сейчас пишу большое плагин для QGIS, интерфейс пока не делал, только "рабочие" классы. Тестирую в терминале, классы, основанные на QgsFeature, QgsGeometry нормально работают, а этот нет.
Ось - Убунту 16, QGIS 2.12

andemik
Новоприбывший
Сообщения: 5
Зарегистрирован: 16 сен 2016, 01:55
Репутация: 3
Откуда: Минск

Re: Создание приложения на базе набора библиотек QGIS на Pyt

Сообщение andemik » 17 окт 2016, 23:10

KolesovDmitry писал(а):Приложенный к статье архив с программой перестал работать... Конкретно, не срабатывает загрузка слоя:

Код: Выделить всё

  def addLayer( self ):
    """add a (hardcoded) layer and zoom to its extent"""

    # Слой должен быть в той же папке, что и файл приложения
    # Имя слоя задано в коде
    layerPath = "test.shp"
    layerName = "test"
    layerProvider = "ogr"

    # Создать слой
    layer = QgsVectorLayer( layerPath, layerName, layerProvider )
...
Т.е. сама программа запускается, появляется окно и панель инструментов, но кгода дело доходит до выполнения строки

Код: Выделить всё

layer = QgsVectorLayer( layerPath, layerName, layerProvider )
слой не добавляется, в консоль пишет "Failed to load"

PS версия: 1.7.4-Wroclaw
Вы решили проблему?

andemik
Новоприбывший
Сообщения: 5
Зарегистрирован: 16 сен 2016, 01:55
Репутация: 3
Откуда: Минск

Re: Создание приложения на базе набора библиотек QGIS на Pyt

Сообщение andemik » 17 окт 2016, 23:31

andemik писал(а):
KolesovDmitry писал(а):Приложенный к статье архив с программой перестал работать... Конкретно, не срабатывает загрузка слоя:

Код: Выделить всё

  def addLayer( self ):
    """add a (hardcoded) layer and zoom to its extent"""

    # Слой должен быть в той же папке, что и файл приложения
    # Имя слоя задано в коде
    layerPath = "test.shp"
    layerName = "test"
    layerProvider = "ogr"

    # Создать слой
    layer = QgsVectorLayer( layerPath, layerName, layerProvider )
...
Т.е. сама программа запускается, появляется окно и панель инструментов, но кгода дело доходит до выполнения строки

Код: Выделить всё

layer = QgsVectorLayer( layerPath, layerName, layerProvider )
слой не добавляется, в консоль пишет "Failed to load"

PS версия: 1.7.4-Wroclaw
Вы решили проблему?
В моем случае ошибка была в том, что не была установлена переменная OSGEOROOT=C:\OSGeo4W

andemik
Новоприбывший
Сообщения: 5
Зарегистрирован: 16 сен 2016, 01:55
Репутация: 3
Откуда: Минск

Re: Создание приложения на базе набора библиотек QGIS на Pyt

Сообщение andemik » 17 окт 2016, 23:46

Вообще у меня были практически все проблемы, которые тут описывались.
Для запуска можно создать .bat-ник с таким кодом:

Код: Выделить всё

@ECHO OFF
set OSGEOROOT=C:\OSGeo4W
set PATH=%OSGEOROOT%\bin;%OSGEOROOT%\apps\qgis-dev\bin;%PATH%
SET PYTHONHOME=%OSGEOROOT%\apps\Python27
set PYTHONPATH=%OSGEOROOT%\apps\qgis-dev\python;%OSGEOROOT%\apps\qgis-dev\bin
set QGIS_PREFIX_PATH=%OSGEOROOT%\apps\qgis-dev\
set QGISHOME=%OSGEOROOT%\apps\qgis-dev

start python C:\qgis_s\mainwindow.py
Также пришлось поменять порядок импорта в mainwindow.py:

Код: Выделить всё

from qgis.core import *
from qgis.gui import *
from PyQt4.QtCore import QVariant  
from PyQt4 import QtCore, QtGui
P.S. Win10, стоят питоны 2.7.12 + QGIS и 3.5.2

Ответить

Вернуться в «Материалы сайта»

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и 11 гостей