タグ付けされた質問 「pyqgis」

QGISのPythonバインディング。

2
スタンドアロンPyQGISスクリプトを作成する際のqgis​​.coreのインポートに関する問題
私はqgis.coreと他のさまざまなqgisライブラリを使用するWindows 7でスタンドアロンのPythonスクリプトを作成しようとしています。 このテーマに関する古い質問をここで見つけました:PyQGISを使用してスタンドアロンPythonスクリプトを作成しますか?こちらのガイドを使用して、アドバイスに従っていました:http : //docs.qgis.org/testing/en/docs/pyqgis_developer_cookbook/intro.html#python-applications そこで提案されているコードは次のとおりです。 set PYTHONPATH=c:\qgispath\python に続く: set PATH=C:\qgispath;%PATH% IDLEは「最初の設定」を好まないことがわかったため、コードは次のようになります。 PYTHONPATH="C:\OSGeo4W64\apps\qgis\python" PATH="C:\OSGeo4W64\apps\qgis\python\qgis\core;%PATH%" import qgis.core そして私は得る: Traceback (most recent call last): File "<pyshell#15>", line 1, in <module> import qgis.core ImportError: No module named qgis.core 最後に;%PATH% "を削除することを考えると考えられるパスのすべてのバリエーション(少し余分に見える)を試しましたが、それ以上の情報を見つけることができませんでした。間違っている? 編集: ルイージ・ピレリのコメントを見た後、私は今試しました: >>> PYTHONPATH="C:/OSGEO4~1/apps/qgis/./python\qgis" >>> import qgis.core Traceback (most recent call last): File …
18 qgis  python  pyqgis  windows 


3
OSGeo4wシェルスクリプトの実行時のqgis​​.coreのインポートエラー
この投稿とともに、QGISの外部のOSGeo4w Shellでスクリプトを実行しようとしました。しかし、次のエラーが表示されます。 ImportError:qgis.coreという名前のモジュールはありません また、次の投稿を読んで、さまざまなモジュールをインポートしようとしましたが、役に立ちませんでした: QGIS pythonコンソールの外でsextanteアルゴリズムを実行する方法は? QGIS用のシンプルなPythonスクリプトを外部から実行するには(Sublime Textなど)? PyQGISを使用してスタンドアロンPythonスクリプトを作成しますか? 以下は、グリッドを作成し、その上にポリゴンシェープファイルをクリップする簡単なスクリプトです。 注:このスクリプトはテスト済みであり、QGISで実行すると正常に機能します。 ##Test=name import os import glob import sys sys.path.append("C:\Program Files\QGIS Brighton\lib;%OSGEO4W_ROOT:\=/%/apps/qgis;%OSGEO4W_ROOT%\apps\qgis\bin;%OSGEO4W_ROOT%\apps\grass\grass-6.4.3\lib;%PATH%") from PyQt4.QtCore import * from PyQt4.QtGui import * from qgis.core import * QgsApplication.setPrefixPath("C:\Program Files\QGIS Brighton\apps\qgis", True) QgsApplication.initQgis() from os.path import expanduser home = expanduser("~") # Folder path of the …

4
pyQGISのバッファリング?
QGISで簡単なpythonスクリプトを実行するための例を探しています。データセットのバッファー分析はどのように行いますか? Esriのドキュメントに完全に一致するマニュアルとQGIS pythonには、あまり見つけることができないようです。

1
PyQGISを使用してスタンドアロンPythonスクリプトを作成しますか?
私はqgisworkshop.orgからの参照を使用してQGISでPythonコンソールを使用する方法を学んでいます。私はArcGISでスタンドアロンスクリプトを記述することに精通しており、QGISで同じことを行う方法を学びたいと思っています。 たとえば、ArcGIS 10では、シンプルなスタンドアロンPythonスクリプトは次のようになります。 import arcpy setFolder = '' doProcess QGISのpythonコンソールを使用してこれを行う方法は理解していますが、スタンドアロンスクリプトを使用して同じ手順を実行する例を見つけることができませんでした。しかし、検索に不運だったのではないかと思います。これをオンラインで行う方法の明確な例はありますか?
17 pyqgis 

1
PyQGISファイルロックを解放しますか?
pyQGISでファイルロックのリリースをトリガーするものは何ですか? を呼び出して(一時的に使用される)いくつかのデータソースを削除しようとしていますQgsVectorFileWriter.deleteShapeFileが、それを行う前にQGISを終了する必要があります。ソースをQgsVectorLayerオブジェクトにロードしました。ソースを削除する前に、これらのオブジェクトとそれらへの参照をすべてガベージコレクションする必要がありますか?これを強制する方法はありますか? 失敗する最小限のコードサンプルを作成できました。実行する前に、一時ディレクトリが空であることを確認してください。 from qgis.core import * import processing, os, gc project_temp_dir = "C:/Path/To/My/Dir/" layer1_path = project_temp_dir + "layer1.shp" layer2_path = project_temp_dir + "layer2.shp" input_layer = QgsMapLayerRegistry.instance().mapLayersByName('in_layer')[0] if not input_layer.isValid(): raise Exception("Failed to grab input layer") # Create layer 1 err = QgsVectorFileWriter.writeAsVectorFormat(input_layer, layer1_path, "utf-8", input_layer.crs()) if err != QgsVectorFileWriter.NoError: …
16 pyqgis  lock 

4
Pythonを使用して属性に基づいて機能をフィルターしますか?
Pythonを使用してQgisで属性(arcobjectsのIqueryfilterに似ています)で機能を取得する方法は?すべての機能を取得して手動でフィルタリングする代わりに、where句を使用してフィルタリングするオプションはありますか? 例:「Counties」というフィールド名があります。5万を超える機能があります。つまり、時間がかかるため、すべての機能を取得してフィルタリングすることはできません。だから私はアークオブジェクトでiqueryfilter.whereclause = 'Counties = Norwich'を使用してそれをクエリすることができます。PyQgisでも同様のことが必要です。
16 qgis  pyqgis 

3
Pythonを使用してQGISで「属性で選択」?
pythonコマンドを使用してQGISで「属性で選択」機能を使用する方法はありますか?私のプラグインでは、ユーザーはGUIを介して値を入力する必要があり、この値は、この属性を持つすべての機能を選択する関数で使用する必要があります。列名はコード内で固定されており、関数は正しい値のみを検索する必要があります。 私の現在のソリューションでは、関数はQGISをPostgreSQLデータベースに接続し、SQLステートメントを実行します。これにより、結果からテーブルが作成され、テーブルはQGISでシェープファイルとして視覚化されます。 原則として、選択範囲の新しいシェープファイルを作成せずに、機能を強調表示すれば十分です。「属性で選択」機能を使用すると、不要なデータベース接続もスキップされます。 機能が強調表示されるように、Pythonで「属性で選択」機能を使用する方法はありますか?QGISで関数を使用すると、クエリに一致しないすべての機能は一時的に空白になりますが、これも問題ありません。
16 qgis  pyqgis 

6
PyQGISでレイヤーCRSを定義し、CRSダイアログを回避しますか?
追加したい既存のシェープファイルがあります。 現在、私のコードは次のようになっています。 self.iface.addVectorLayer(self.shpFilePath, "Track", "ogr") それはうまくいきますが、コード内でcrsを定義したいと思います。出来ますか?私はこのような似たような質問を見つけました:Pythonを使用してQGIS 2.4でプログラムでCRSを選択してください しかし、とにかく動作しません。

4
QGISプラグインの自動テストを作成していますか?
Pythonで作成されたQGISプラグインの自動テストを作成するためのアドバイスを探しています。 過去にPyUnit(unittestモジュール)を使用してPythonスクリプトのテストを作成しましたが、GUIを使用するアプリケーションではテストを実行したことがありません。PyQt4.QTestを使用してQtウィジェットでユニットテストを行う方法を説明するページを見つけました(http://www.voom.net/pyqt-qtest-example) QGIS内から実行するように設計されたウィジェットを使用します。 PyQGISドキュメントの「テスト」のセクションは特にありません。 私がこれまでに持っているものは: 分離されたモジュールまたは関数でデータの実際の処理を維持し、それらのユニットテストを記述します。 QTestを使用してUIの基本的なテストを実行します。 QGIS内からプラグインを使用するときにすべてが一緒に保持されるように。 もっと良い方法はありますか?

1
QGISスプラッシュ画面で起動メッセージを表示する
QGISの起動中、スプラッシュスクリーンの下部に「ロードされたプラグインを復元しています」のようなステータスメッセージが表示されます。 私は、startup.py機能を使用しており、この機能を使用して、起動スクリプトのどの部分が現在実行されているかをユーザーに通知します。 スプラッシュスクリーンにこの情報を表示することは可能ですか? 編集1: 回避策として、起動時に自分のスプラッシュスクリーンを使用することができました: from qgis.gui import * from qgis.utils import * from qgis.core import * from PyQt4.QtGui import * from qgis.PyQt.QtCore import QSettings, Qt import time template=QgsApplication.qgisSettingsDirPath() + "python/" app=QgsApplication.instance() splash_pix = QPixmap(template+'splashscreen.png') splash = QSplashScreen(splash_pix, Qt.WindowStaysOnTopHint) splash.setWindowFlags(Qt.WindowStaysOnTopHint | Qt.FramelessWindowHint) splash.setEnabled(False) splash.setMask(splash_pix.mask()) progressBar = QProgressBar(splash) progressBar.setMaximum(10) progressBar.setGeometry(0, splash_pix.height() …
15 qgis  pyqgis  pyqt4 

1
QSettingsの変更をすぐに適用する方法は?
PyQGISでは、レイヤーパネル(または目次)のグループを太字にするなど、さまざまな設定を変更できます。 from PyQt4.QtCore import QSettings QSettings().setValue("/Qgis/legendGroupsBold", True) 設定は、オプションまたは入力から確認できるように書き込まれます。 QSettings().value("/Qgis/legendGroupsBold") >>> u'true' しかし、それは適用されません。私は使用すると思った QSettings().sync() 助けになるかもしれませんが、残念ながらそうではありません。適用する唯一の方法は、GUI(Settings > Options)に移動し、OKQGISをクリックするか再起動することです。 PyQGISを介してこれを行う方法はありますか? コンテキスト: これをプロジェクトファイルにマクロとして追加して、グループ名のみが太字になり、レイヤー名が太字にならないように(美的目的で)します。したがって、プロジェクトがロードされたときにQSettingsが適用されると理想的です(プロジェクトが閉じられたときに初期設定が再適用されます)。

3
PyQGISを使用してルールベースのラベル付けを制御しますか?
この質問に続いて:QGISのすべてのレイヤーのすべてのラベルをオン/オフにする方法 OPは、彼がコメントにルールベースのラベルを使用していると述べました。私はこれらのタイプのラベルをどのように読んで修正できるかについてオンラインで検索しようとしましたが、lutraconsultingからこの投稿を見つけることができました: ルールベースのラベリングの追加を容易にするために、QGISラベリングエンジンインターフェイスにいくつかの内部変更が行われました。現在、ラベル付けは、QgsLabelingEngineV2複数のラベルプロバイダーが関連付けられている可能性がある新しいクラスによって駆動されます。 いいね。ただし、QgsLabelingEngineV2クラスを読むと、次のことに言及します。 このクラスはまだパブリックAPIの一部ではありません。 現在、Pythonを使用してルールベースのラベル付けを制御することは可能ですか?

2
Pythonで「処理」にアクセスしますか?
スタンドアロンスクリプトからQGIS外のPythonの行展開機能にアクセスしたい。 使用するには、どのモジュールをロードする必要がありますか? どうすればアクセスできますprocessingか? from qgis.core import * layerInput = QgsVectorLayer('test.shp', 'test', 'ogr') processing.runalg('qgis:explodelines', layerInput, 'temp.shp')

3
PyQGISでのGIS操作の並列化?
GISの一般的な要件は、処理ツールを多数のファイルに適用するか、1つのファイルの多数のフィーチャのプロセスを別のファイルに適用することです。 これらの演算の多くは、計算結果がループ内の他の演算に影響を与えないという点で、恥ずかしいほど並行しています。それだけでなく、多くの場合、入力ファイルはそれぞれ異なります。 典型的な例は、シェイプファイルを、ポリゴンを含むファイルに対してクリップします。 これは、QGISのPythonスクリプトでこれを達成するための(テスト済みの)古典的な手続き型の方法です。(テストファイルを処理する時間を半分にしたよりも、実際のファイルへの一時メモリファイルの出力をfyi) import processing import os input_file="/path/to/input_file.shp" clip_polygons_file="/path/to/polygon_file.shp" output_folder="/tmp/test/" input_layer = QgsVectorLayer(input_file, "input file", "ogr") QgsMapLayerRegistry.instance().addMapLayer(input_layer) tile_layer = QgsVectorLayer(clip_polygons_file, "clip_polys", "ogr") QgsMapLayerRegistry.instance().addMapLayer(tile_layer) tile_layer_dp=input_layer.dataProvider() EPSG_code=int(tile_layer_dp.crs().authid().split(":")[1]) tile_no=0 clipping_polygons = tile_layer.getFeatures() for clipping_polygon in clipping_polygons: print "Tile no: "+str(tile_no) tile_no+=1 geom = clipping_polygon.geometry() clip_layer=QgsVectorLayer("Polygon?crs=epsg:"+str(EPSG_code)+\ "&field=id:integer&index=yes","clip_polygon", "memory") clip_layer_dp = clip_layer.dataProvider() clip_layer.startEditing() clip_layer_feature …

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.