IRCを介して人々がこれを手伝ってくれるかどうかを確認しようとしましたが、メディアは答えを明確にするために少し不器用に思えますので、代わりにこれを試します。
すでにArcPyを使用してスタンドアロンアプリケーションをプログラミングできる方法で、PyQGISを使用してスタンドアロンアプリケーションをプログラミングしたいと思います。
PyQGIS自体は簡単です。QGISコンソールエディター内でPythonスクリプトを実行するのに問題はありませんでした。ただし、スタンドアロンスクリプトでPythonバインディングを使用するには、バッチスクリプトを使用して環境設定を変更する必要があることをお勧めします(私は自宅でWindows Vistaを使用しているため、Windowsのバッチスクリプトについて話します)。バッチスクリプトを実際に理解していないため、これは混乱の原因になりました。また、実行している他のアプリケーションに特定の方法を必要とする環境をリセットしているという考えが嫌いです。
これらの設定を作成するための指示が不必要に複雑である理由と、「バインディングのある場所に移動し、このプログラムで使用できるライブラリを作成する」という1行のコードにならない理由を理解するのが困難です)。確かに、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は人々にはあまり役に立たないようです。私が間違っていることを望み、これはこれまでよりも簡単です。誰にも解決策がありますか?