Я намагався пройти через IRC, щоб побачити, чи можуть люди допомогти мені в цьому, але середовище здається трохи незграбною, щоб зрозуміти будь-які відповіді, тому я замість цього спробую.
Я хотів би запрограмувати окремий додаток за допомогою PyQGIS так, як я вже можу програмувати окремі програми за допомогою ArcPy.
PyQGIS сам по собі простий. У мене не було труднощів із використанням сценаріїв Python в редакторі консолі QGIS. Однак для того, щоб використовувати прив'язки Python в окремому сценарії, мені рекомендується змінити налаштування середовища за допомогою пакетного сценарію (я використовую домашню Windows Vista, тому ми говоримо про пакетний сценарій для Windows). Це призвело до безладу в моєму кінці, тому що я не дуже розумію пакетні сценарії, і мені не подобається думка, що я скидаю середовище, яке повинно бути певним чином для інших застосунків, які я запускаю.
У мене виникають труднощі з розумінням того, чому інструкції щодо створення цих налаштувань настільки непотрібні, і чому вони не складаються з одного рядка коду, що говорить "перейдіть туди, де є прив'язки, зробіть бібліотеки, які я хочу використовувати для цієї програми, використовувати Безумовно, ArcPy не вимагає від людей возитися з налаштуваннями навколишнього середовища комп’ютера, тому мені виникають труднощі з розумінням того, що робить PyQGIS. Мені здається, люди просто відмовляться, а не навчатимуться мові пакетного сценарію Windows.
Тепер я помічаю, що коли я запускаю скрипт у консольному редакторі QGIS, він працює. Зрозуміло, він також робить решту QGIS непридатними після запуску сценарію, тому мені доведеться після цього знову перезапустити QGIS, але сценарій працює саме так, як я його запрограмував для роботи. Але коли я це роблю поза програмою QGIS, це не відбувається. Схоже, проблема не в тому, що мені не вдалося імпортувати який-небудь пакет Python, який автоматично імпортується програмою QGIS (qgis.core і qgis.utils) - у мене є ці заяви про імпорт у моєму автономному сценарії разом з усім іншим пакетом, який імпортує імпорт сценарій вимагає. Це призводить мене до думки, що різниця полягає в тому, що програма QGIS правильно встановлює змінні зовнішніх середовищ, але ці змінні не встановлені належним чином, коли я запускаю її як окремий сценарій.
Крім того, коли я запускаю скрипт як окремий сценарій, він проходить через весь код, не видаючи помилку; він просто не робить те, що командує код. Коли я запускаю скрипт у консольному редакторі, він робить все правильно. Коли я запускаю його як окремий, він створює вікно, а потім негайно знищує його, при цьому не видаючи помилок. Таким чином, інтепретер розуміє все, що я прошу зробити сценарій - він просто не зробить це.
Ось сценарій:
from PyQt4 import *
from PyQt4 import *
from PyQt4.QtCore import *
from PyQt4.QtGui import *
from qgis.core import *
from qgis.gui import *
from qgis.utils import *
import Tkinter
from Tkinter import *
import sys
import os
qgishome = "c:/OSGeo4W/apps/qgis/"
app = QgsApplication([], True)
QgsApplication.setPrefixPath(qgishome, True)
QgsApplication.initQgis()
canvas = QgsMapCanvas()
canvas.setCanvasColor(Qt.yellow)
canvas.enableAntiAliasing(True)
canvas.show()
layer = QgsVectorLayer(r"c:/GIS Data/fed308/cpc.shp", "Ridings", "ogr")
reg = QgsMapLayerRegistry.instance()
reg.addMapLayer(layer)
canvas.setExtent(layer.extent())
canvas.setLayerSet([QgsMapCanvasLayer(layer)])
QgsApplication.exitQgis()
Будь ласка ... чи є спосіб, як я можу запустити цей скрипт поза QGIS і чи буде він працювати так, як це робиться в QGIS (в ідеалі, не закриваючи речі в самому кінці)?
QGIS - чудова програма, і PyQGIS здається настільки інтуїтивно зрозумілим, як це робить ArcPy, і це буде справжньою перевагою для програмного забезпечення з відкритим кодом - але якщо люди повинні пройти всі обручі, які я вже пройшов, і досі не мають самостійного застосування доступ до бібліотек PyQGIS так, як вони мають доступ до ArcPy, мені здається, PyQGIS не принесе користі людям. Я сподіваюся, що я помиляюся, і це простіше, ніж це було досі. Хтось має рішення?