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

QGISのPythonバインディング。

2
スタンドアロンPythonスクリプトでQGIS処理をインポートしますか?
Qgisの処理ツールボックスを使用するいくつかのスタンドアロンスクリプトを記述したいと思います。 私はいくつかのスレッド(ここやここなど)を読みましたが、まだ有効な解決策を見つけることができませんでした。 Ubuntu Xenial 16.04 LTSでのQgis 2.16.1の使用 スクリプトのインポートセクションは次のようになります。 # Python modules import sys import time import os # Qgis modules from qgis.core import * import qgis.utils from PyQt4.QtCore import QFileInfo, QSettings 処理モジュールをインポートするために欠けているものを誰かが知っていますか? 単純なインポート処理で、私はこれを取得します: Original exception was: Traceback (most recent call last): File "/home/steph/Documents/Projets/20141227-CIM_Bishkek/Scripts/python/00-projets/20160811-AnalysesUAVs/20160811-UAVAnalyse.py", line 36, in <module> import processing File …


1
Pythonを使用してプロジェクト変数を変更するにはどうすればよいですか?
Pythonコンソールを使用して、ユーザー定義のプロジェクト変数の値を変更したい(プロジェクトの設定|変数で手動で編集できます)。QgsExpressionContextScopeクラスのsetVariable()関数を追跡しましたが、プロジェクト設定の変数を実際に変更することに成功していません。これまでの私のコード: iface.mapCanvas().mapSettings().expressionContext().scope(0).setVariable('myvar',1) 私はさまざまな表現のコンテキストで迷子になっていると思います...
10 qgis  pyqgis 

2
Pythonスクリプトの実行後にQGISを終了するにはどうすればよいですか?
経由qgis --code myscript.pyでpythonスクリプトを実行し、すぐに終了したいと思います。私はを使用iface.actionExit().trigger()しています。これは、Pythonコンソールから実行したときにQGISを強制終了しますが、渡したスクリプトに入れたときは強制終了しません--code。 すぐに終了する正しい方法は何ですか?QGIS 2.0.1を実行しています アップデート:私も試しましたsys.exit()。QGISはそれをキャッチし、次のウィンドウをポップアップします。 An error occured during execution of following code: execfile('myscript.py') Traceback (most recent call last): File "", line 1, in File "myscript.py", line 14, in sys.exit() SystemExit 更新:os.kill(os.getpid(), 9)動作しますが、それは汚いハックであり、私はもっと良いものを探しています。
10 qgis  python  pyqgis 

1
QGIS処理でメモリ内ベクターレイヤーを使用する/ SEXTANTE
qgis:clipアルゴリズムをコンソールから実行しようとしていますが、メモリ内レイヤーをオーバーレイパラメーターとして使用するとエラーが発生します。これは予想されることですか、それとも私は何か間違っていますか? コード: mem_layer = QgsVectorLayer("Polygon?crs=epsg:4326", "temp_layer", "memory") if not mem_layer.isValid(): raise Exception("Failed to create memory layer") mem_layer_provider = mem_layer.dataProvider() clip_polygon = QgsFeature() clip_polygon.setGeometry(QgsGeometry.fromRect( QgsRectangle( self.output_layer.extent().xMinimum() + 10, self.output_layer.extent().yMinimum() + 10, self.output_layer.extent().xMaximum() - 10, self.output_layer.extent().yMaximum() - 10 ) )) mem_layer_provider.addFeatures([clip_polygon]) mem_layer.updateExtents() output = self.output_layer_path + "2" processing.runalg("qgis:clip", layer, mem_layer, output) # …

2
プログラムでテンプレートからcomposerを読み込み、PyQGISを使用してアトラスを生成する
ファイルから印刷コンポーザーをロードし、アトラスを生成して画像にエクスポートするプラグインを構築しようとしています。これまでのところ、テンプレートの読み込みと画像へのエクスポートに成功しています。 凡例のレイヤー(tocにもあります)をエクスポートしたマップに追加できなかったため、マップが空白になり、フィールド式が機能しなくなりました。 # Get layers in the legend and append, must be a cleaner way to do this? layers = self.iface.legendInterface().layers() layerStringList = [] for layer in layers: layerID = layer.id() layerStringList.append(layerID) # Add layer to map render myMapRenderer = QgsMapRenderer() myMapRenderer.setLayerSet(layerStringList) myMapRenderer.setProjectionsEnabled(False) # Load template myComposition = QgsComposition(myMapRenderer) myFile …

2
pyQGISでベクターレイヤーの色を変更するにはどうすればよいですか?
ベクターレイヤーを追加しながら色を変更することはできますか?水の領域を持つベクターレイヤーがあり、青い色のスタイルで読み込みたいのですが。レイヤーは次のように追加されます。 QgsMapLayerRegistry.instance().addMapLayer(self.vlayer) ロード後またはロード中に色を変更できますか?
10 qgis  python  pyqgis  color 


1
pyqgisでベクターレイヤーを反復処理するとき、機能が選択されているかどうかを確認するにはどうすればよいですか?
次のコード(pyqgis クックブックの例から要約)を使用してベクターレイヤーを反復処理しているときに、機能が選択されているかどうかを確認する方法はありますか? provider = vlayer.dataProvider() feat = QgsFeature() allAttrs = provider.attributeIndexes() provider.select(allAttrs) while provider.nextFeature(feat): geom = feat.geometry() attrs = feat.attributeMap() for (k,attr) in attrs.iteritems(): print "%d: %s" % (k, attr.toString()) または、選択した機能のリストをを使用して作成することもできますが、vlayer.selectedFeatures()各機能を直接確認する方法があることを期待しています。
10 qgis  python  pyqgis  select 

5
QGIS Pythonコンソールの外で六分儀アルゴリズムを実行する方法は?
OSGeo4Wディストリビューションのスタンドアロンpythonからsextanteを実行する方法を見つけようとするのはちょっと行き詰まっています。これを実行したいのは、モデルビルダーからモデルをテストするたびにダイアログにパラメーターを入力するのが面倒だったからです。 だからここにそれを呼ぶPythonスクリプトがあります test.py # as per http://qgis.org/pyqgis-cookbook/intro.html#using-pyqgis-in-custom-application from qgis.core import * # supply path to where is your qgis installed QgsApplication.setPrefixPath("C:/OSGeo4W/apps/qgis", True) # load providers QgsApplication.initQgis() from sextante.core.Sextante import Sextante Sextante.alglist() Sextante.alghelp("saga:slopeaspectcurvature") バッチファイルから呼び出していること @echo off set OSGEO4W_ROOT=C:\OSGeo4W set PYTHONPATH=%OSGEO4W_ROOT%\apps\qgis\python;%OSGEO4W_ROOT%\apps\qgis\python\plugins;%HOME%/.qgis/python/plugins set PATH=%OSGEO4W_ROOT%\bin;%OSGEO4W_ROOT%\apps\qgis\bin;%OSGEO4W_ROOT%\apps\qgis\plugins python test.py 問題は、Algorithm not foundQGIS pythonコンソールから意味のある出力が得られるのにそれが言うことです。 何かを初期化するのに欠けているような気がします。しかし、何ですか? GUIを使用して大量のパラメーターを入力する以外に、モデルをテストするより良い方法はありますか? アップデート7/2/2012 …

1
QGIS Modeler if / else条件、Modelerのカスタムスクリプト
モデル内に単純なif / else関数を作成し、それが可能かどうかを知りたいのですが。 これを行うには、「セグメントレイヤー」の入力が選択されている場合、「セグメント化(平均シフト)」を実行する必要がなく、次のプロセスの入力として「セグメントレイヤー」を使用します。 'Segmentation(meanshift)'の入力は次のとおりです。 ジョセフの答えを実装しようとした後の更新:次のコードを使用してこのエラーが発生しました 更新2、パラメーターを置き換えた後、28行目でエラーが発生しましたこれは「else:」でした ##Example=name ##BGREN=optional raster ##Segment_Layer=optional vector ##output=output vector if BGREN is not None: processing.runalg('otb:segmentationmeanshift', \ -BGREN\ -0\ -70\ -70\ -0.1\ -100\ -100\ -0\ -0\ -0\ -'True'\ -'False'\ -1\ -0.1\ -'Layer'\ -'DN'\ -1024\ -1\ -0\ -output) else: output=Segment_Layer 更新して動作します:)数回試行して、Josephの助けを借りてこのコードが魅力的に機能するようになりました。最後のトリックは、2つのオプション値を「None」に置き換えることでした。 ##Example=name ##BGREN=optional raster ##Segment_Layer=optional vector ##output=output …

3
PostGISの一意の識別子列にシーケンスを追加するQGIS処理スクリプトを作成するにはどうすればよいですか?
PostGISの既存の一意の識別子列(タイプ:整数)にシーケンスを追加するQGIS処理スクリプトの作成を手伝ってくれる人はいますか? これは、たとえばバグ#6798の回避策として非常に役立ちます。残念ながら、私はPythonの経験がありません。 CREATE SEQUENCE /*input_schema*/./*input_table*/_/*uic*/_seq OWNED BY /*input_schema*/./*input_table*/./*uic*/; SELECT SETVAL('/*input_schema*/./*input_table*/_/*uic*/_seq', (SELECT MAX(/*uic*/) FROM /*input_schema*/./*input_table*/)); ALTER TABLE /*input_schema*/./*input_table*/ ALTER COLUMN /*uic*/ SET DEFAULT nextval('/*input_schema*/./*input_table*/_/*uic*/_seq'::regclass);

3
pyQGISで選択したフィーチャにズームする方法
フィーチャを選択してズームする関数を作成したい(QGISと同様)。したがって、次の関数があります。 QgsMapLayerRegistry.instance().addMapLayer(self.vlayer) def zoomTo(self): layer = self.vlayer atable = self.ui.table selectList=[] for i in atable.selectionModel().selectedRows(): ID = atable.item(i.row(),0).text() selectList.append(int(ID)) layer.setSelectedFeatures(selectList) 選択したフィーチャがマップ上で強調表示されます。しかし、選択したフィーチャに「ズーム」する方法や、マップの真ん中に何らかのフォーカスを合わせる方法はわかりません。
10 qgis  python  pyqgis 

3
PyQGISの学習リソース?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 2年前休業。 PyQGISを学習するためのリソースを探しています。 構文を学習したり特定のタスクを実行したりするためのいくつかの実用的な例を提供する本やウェブサイトのコレクションがあると面白いでしょう。 理想的には、これらのリソースは、初心者と経験豊富なユーザーの両方に一般的なガイダンスを提供する必要があります。 QGISチュートリアルとWebリソースはどこにありますか?は非常によく似た質問ですが、QGISの学習に役立ちます。具体的にはPyQGISではありません(実際、PyQGISタグはありません)。 何か助けは?

1
PyQGISでフィールドを追加して式を計算しますか?
PyQGISを使用して新しいフィールドを追加し、各フィーチャの値を計算したいと思います。Field Calculatorオプションに似ています。 'Field Calculator'式は次のとおりです。 y(start_point($geometry)) from PyQt4.QtCore import QVariant from qgis.core import QgsField, QgsExpression, QgsFeature vl = iface.activeLayer() vl.startEditing() #step 1 myField = QgsField( 'myNewColumn', QVariant.Float ) vl.addAttribute( myField ) idx = vl.fieldNameIndex( 'myNewColumn' ) #step 2 e = QgsExpression( 'y(start_point($geometry))' ) e.prepare( vl.pendingFields() ) for f in vl.getFeatures(): f[idx] …

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