나는 사람들이 이것으로 나를 도울 수 있는지 알아보기 위해 IRC를 통과하려고 시도했지만 매체는 대답을 명확하게하기에는 약간 어색한 것처럼 보이므로 대신 시도해 보겠습니다.
ArcPy를 사용하여 이미 독립 실행 형 응용 프로그램을 프로그래밍 할 수있는 방식으로 PyQGIS를 사용하여 독립 실행 형 응용 프로그램을 프로그래밍하고 싶습니다.
PyQGIS 자체는 간단합니다. QGIS 콘솔 편집기에서 Python 스크립트를 실행하는 데 어려움이 없었습니다. 그러나 독립 실행 형 스크립트에서 Python 바인딩을 사용하려면 배치 스크립트를 사용하여 환경 설정을 변경해야합니다 (집에서 Windows Vista를 사용하고 있으므로 Windows 용 배치 스크립트를 사용하고 있습니다). 배치 스크립팅을 실제로 이해하지 못하기 때문에 결과적으로 혼란스러워졌으며 실행중인 다른 응용 프로그램에 특정 방법이 필요한 환경을 재설정한다는 생각이 마음에 들지 않습니다.
이러한 설정을 만드는 지침이 불필요하게 복잡한 이유와 "바인딩 위치로 이동하여이 프로그램에서 사용할 라이브러리를 사용하도록 설정하는 한 줄의 코드에 해당하지 않는 이유를 이해하는 데 어려움이 있습니다. 물론 ArcPy는 사람들이 컴퓨터의 환경 설정을 어지럽 힐 것을 요구하지 않기 때문에 PyQGIS가 왜 그런지 이해하는 데 어려움을 겪고 있습니다.
QGIS의 콘솔 편집기에서 스크립트를 실행할 때 작동한다는 것을 알았습니다. 물론 스크립트가 실행 된 후 나머지 QGIS를 사용할 수 없게되므로 나중에 QGIS를 다시 시작해야하지만 스크립트가 작동하도록 프로그램 한대로 정확하게 작동합니다. 그러나 QGIS 응용 프로그램 외부에서 그렇게 할 때 그렇지 않습니다. 문제는 QGIS 응용 프로그램 (qgis.core 및 qgis.utils)에서 자동으로 가져온 일부 Python 패키지를 가져 오지 못한 것으로 보이지 않습니다-다른 모든 패키지 가져 오기와 함께 독립 실행 형 스크립트에 해당 가져 오기 문이 있습니다. 스크립트가 필요합니다. 이것은 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가 사람들에게별로 유용하지 않은 것 같습니다. 나는 내가 틀렸기를 바란다. 이것이 지금까지보다 쉽다. 누구든지 해결책이 있습니까?