Saya sudah mencoba melalui IRC untuk melihat apakah orang-orang dapat membantu saya dengan ini, tetapi media tampaknya agak canggung untuk membuat jawaban yang jelas, jadi saya akan coba ini.
Saya ingin memprogram aplikasi mandiri menggunakan PyQGIS seperti saya sudah bisa memprogram aplikasi mandiri menggunakan ArcPy.
PyQGIS sendiri sangat mudah. Saya tidak kesulitan menggunakan menjalankan skrip Python di dalam editor konsol QGIS. Namun, untuk menggunakan binding Python dalam skrip mandiri, saya disarankan untuk mengubah pengaturan lingkungan menggunakan skrip batch (saya menggunakan Windows Vista di rumah, jadi kami berbicara skrip batch untuk Windows). Ini telah mengakibatkan kekacauan pada saya, karena saya tidak benar-benar memahami skrip batch, dan saya tidak suka gagasan bahwa saya mengatur ulang lingkungan yang perlu menjadi cara tertentu untuk aplikasi lain yang saya jalankan.
Saya mengalami kesulitan memahami mengapa instruksi untuk membuat pengaturan ini sangat tidak perlu rumit, dan mengapa mereka tidak berjumlah satu baris kode yang mengatakan "pergi ke tempat binding, buat perpustakaan yang saya inginkan tersedia untuk digunakan oleh program ini untuk digunakan oleh program ini Tentu saja ArcPy tidak mengharuskan orang untuk main-main dengan pengaturan lingkungan komputer, jadi saya mengalami kesulitan memahami mengapa PyQGIS melakukannya. Tampaknya bagi saya orang-orang hanya akan menyerah daripada mengajari diri mereka sendiri Windows Batch Scripting Language.
Sekarang, saya perhatikan bahwa ketika saya menjalankan skrip di editor konsol QGIS, itu berfungsi. Memang, itu juga membuat sisa QGIS tidak dapat digunakan setelah skrip berjalan, jadi saya harus me-restart QGIS lagi setelahnya, tetapi skrip bekerja persis seperti saya memprogramnya agar berfungsi. Tetapi ketika saya melakukannya di luar aplikasi QGIS, itu tidak. Masalahnya tampaknya bukan karena saya gagal mengimpor beberapa paket Python yang secara otomatis diimpor oleh aplikasi QGIS (qgis.core dan qgis.utils) - Saya memiliki pernyataan impor dalam skrip mandiri, bersama dengan semua paket lainnya yang mengimpor script membutuhkan. Ini membuat saya percaya bahwa perbedaannya adalah bahwa aplikasi QGIS dengan benar menetapkan variabel lingkungan eksternal, tetapi variabel-variabel itu tidak diatur dengan benar ketika saya menjalankannya sebagai skrip mandiri.
Selain itu, ketika saya menjalankan skrip sebagai skrip mandiri, skrip tersebut dapat melewati semua kode tanpa membuat kesalahan; itu hanya tidak melakukan apa yang diperintahkan kode. Ketika saya menjalankan skrip di editor konsol, semuanya berjalan dengan benar. Ketika saya menjalankannya sebagai standalone, ia menciptakan sebuah jendela, lalu segera menghancurkannya, sambil tidak membuang kesalahan. Jadi intepreter mengerti semua yang saya minta skrip lakukan - itu tidak akan melakukannya.
Ini skripnya:
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()
Tolong ... adakah beberapa cara saya dapat menjalankan skrip ini di luar QGIS dan membuatnya berfungsi seperti halnya di dalam QGIS (idealnya tanpa menutup semuanya pada akhirnya)?
QGIS adalah program yang luar biasa, dan PyQGIS tampaknya seintuitif ArcPy dan akan menjadi keuntungan nyata bagi perangkat lunak open source untuk dimiliki - tetapi jika orang harus melalui semua simpang yang telah saya lalui, dan masih belum memiliki aplikasi mandiri. akses ke perpustakaan PyQGIS sebagaimana mereka memiliki akses ke ArcPy, menurut saya PyQGIS tidak akan banyak berguna bagi orang-orang. Saya harap saya salah dan ini lebih mudah daripada sejauh ini. Adakah yang punya solusi?
Berkonsultasi dengan dokumentasi PyQGis, Anda akan menemukan bahwa ada empat cara utama untuk memanfaatkan API PyQGis:
dan Anda tertarik pada poin terakhir ini:
Karena Anda menggunakan versi Python ArcGIS, dalam kasus lain, hal yang sama juga berlaku, lihat menggunakan arcpy di luar arcmap atau Konfigurasikan PyScripter untuk digunakan dengan QGIS (dan masih menggunakan arcpy) di Windows , misalnya.
Anda tidak perlu di sini PyQt4, Tkinter atau qgis.gui:
Jadi, untuk itu, Anda harus belajar PyQt4, karena Anda harus belajar Tkinter (atau wxPython), misalnya. Ini adalah masalah lain: solusi yang diberikan oleh gsherman adalah masalah PyQt4, bukan PyQGIS (lihat tutorial PyQt4 , misalnya)
sumber