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

QGISのPythonバインディング。

1
PyQGISマルチスレッドを実装してプログレスバーを更新する方法
Pythonを使用してPyQGISプラグインを開発しています。プラグインでのスレッドの実装中に問題が発生しました。使用中のすべてのジオプロセシングメソッドをラップするクラスを含むPythonスクリプトを記述しました。私が直面している問題は、メソッドをスレッドで処理することです。私の問題をより詳しく説明するために、次のようにメソッドを呼び出すUIがありますcalcNDVI()。 self.lst.calcNDVI(self.RedBand, self.NIRBand, None, self.outputRaster, self.sensorType, self.dataType, self.addToQGIS) この関数呼び出しは、すべての魔法を実行し、結果をQGISプロジェクトに追加するcalcNDVI()メソッドを呼び出します。メソッド呼び出しは、いくつかの引数を渡すことにも関連付けられています。 多くのソースを調べてきましたが、アルゴリズムをスレッド化して実装する方法を理解できません。私が通ったコードはrunメソッドにすべてを実装しているため、クラスで処理するメソッドが複数あるため、実行が困難であり、実行するメソッドをユーザーが選択できるようにしたいUI。 処理に時間がかかりすぎるLandsatデータセットを処理しています。

1
Qgis 2.1でpythonを使用して新しいフィールドをdoubleとして属性テーブルに追加するときの小数点以下の桁数を定義する方法は?
小数を定義するために式を変更するにはどうすればよいですか? layer.dataProvider().addAttributes([QgsField("fieldname", QVariant.Double)]) QGIS APIドキュメントを読んだとき: Parameters name Field name type Field variant type, currently supported: String / Int / Double typeName Field type (eg. char, varchar, text, int, serial, double). len Field length prec Field precision だから私は試してみます: layer.dataProvider().addAttributes([QgsField("fieldname", QVariant.Double, 10, 3)]) しかし、私はこのエラーを受け取ります: TypeError: arguments did not match any overloaded call: …
9 qgis  python  pyqgis 

1
QGISプラグインでサードパーティのパッケージを使用するにはどうすればよいですか?
QGISプラグインを開発していますが、日付やREST APIの操作に慣れているので、矢印またはリクエストパッケージを使用したいと思います。 QGISにはこれらのパッケージは付属していません(矢印は下)。QGISでプラグインにアクセスしようとすると、次のようになります。 「ImportError:arrowという名前のモジュールはありません」 どうすれば要件を指定できますか?

2
QGISでPythonを使用して線の長さを計算する
行の長さを計算するための「QGIS GUIの方法」について説明しているこの記事を見つけました。http://www.qgistutorials.com/en/docs/calculating_line_lengths.html Pythonコードを使用してベクターレイヤーの1行(フィーチャ)の長さを計算するにはどうすればよいですか? 例として、黄色の線の長さを知りたい。
9 qgis  python  pyqgis 


1
PyQGISを使用してプログラムでレイヤーをカスタムUIに関連付けますか?
QGISインターフェイスを使用してフィーチャ属性を編集するために、レイヤーをカスタムUIに関連付けることができることを知っています。しかし、これはPythonで可能ですか? このリンクは、結果を手動で取得する方法を示しています。しかし、レイヤーを自動的に作成し、UIファイルとメソッドを毎回再定義する必要なくカスタムUIを使用できるようにしたいと考えています。

1
PyQGISで段階的なレンダラーを適用しますか?[閉まっている]
休業。この質問には、より焦点を当てる必要があります。現在、回答を受け付けていません。 この質問を改善してみませんか?質問を更新して、この投稿を編集するだけで1つの問題に焦点を当てます。 2年前休業。 単にpyqgisクックブックに記載されている次のコードを実行して、段階的な色のシンボルを作成しようとしています(2つのクラスの例のように) シェープファイルのソース情報を定義しますが、テストプラグイン内でコードを実行すると、分類せずにレイヤーが追加されるだけです。通常どおり追加するだけで、すべてのポリラインが同じように表示されます。 解決策または作業コード/メソッドはありますか? クックブックのコードへのリンク http://www.qgis.org/pyqgis-cookbook/vector.html#gradd-symbol-renderer from qgis.core import (QgsVectorLayer, QgsMapLayerRegistry, QgsGraduatedSymbolRendererV2, QgsSymbolV2,QgsRendererRangeV2) myVectorLayer = QgsVectorLayer('C:/my_test_shape_file.shp', 'test_shp_file', 'ogr') myTargetField = 'target_field' myRangeList = [] myOpacity = 1 # Make our first symbol and range... myMin = 0.0 myMax = 50.0 myLabel = 'Group 1' myColour = QtGui.QColor('#ffee00') mySymbol1 …

1
pyQGISでGRASSモジュールを呼び出しますか?
QGisでGrassツールボックスなしでGrassモジュール(v.to.db)を使用したいと思います。 私はPythonコンソールで試しましたが、役に立ちませんでした: Sextanteプラグインを使用しているが、明らかにすべての草モジュールを知っているわけではなかった。 from sextante.core.Sextante import Sextante Sextante.alghelp( "grass:v.to.db") ->アルゴリズムが見つかりません 他のテスト: grass.run_command( "v.to.db"、map = 'bl @ PERMANENT'、layer = '2'、option = 'start'、units = 'meters'、columns = 'X、Y、Z') -> Traceback(最後の最新の呼び出し): モジュールのファイル ""、行1 NameError:名前「草」が定義されていません grassモジュールを使用する他の方法があるかどうか知っていますか?「属性フィールド」で選択できる列は1つだけで、複数の列を選択したいので、それを芝生ツールボックスで使用したくありません。


1
pyqgisを使用してnumpy配列からラスターレイヤーを作成していますか?
空間カーネル密度マップを計算するQgisのプラグインに取り組んでいます。私はすべての計算を機能させていますが、密度の値を持つNumpy配列をマルチバンドラスターレイヤーに変換する方法はありません。 Gdalを使用して一時ファイルにgeotiffを作成してからロードする必要がありますか? または、メモリ内のデータからレイヤーを直接作成する方法はありますか? もしそうなら、それを行う方法は?

1
レイヤーが読み込まれるときにQGISを「フィーチャ数を表示」するように設定しますか?[閉まっている]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 地理情報システムスタック交換のトピックになるように質問を更新します。 9か月前に閉鎖。 QGIS 3を使用しています。 レイヤーを右クリックして[機能を表示]オプションをオンにできることはわかっていますが、レイヤーが読み込まれたときに、デフォルトでこの機能を有効にして表示することはできますか? 私たちはプロジェクトを設定できることを知っています。常に表示するオプションを探しています。それのためのプラグインが行います。

3
PyQGISまたはPythonを使用して多くのラスターを整列させますか?
PythonまたはPyQGISを使用して、多くのラスターをいくつかのピクセルサイズ、範囲、および投影システムで整列させたい。 最初に考えるのは、GDALを使用することです。 gdalinfo(参照ラスターから情報を検索するため) gdalwarp(投影システムとピクセルサイズを変換するため) gdal_translate(範囲を変換するため) それらは機能しますが、Pythonでこれらのツールを一緒に使用するのは簡単ではなく、この作業を完了するにはかなりの時間が必要です。また、QGISおよびAlign Rasters Tool を使用して簡単に行うことができます。 PyQGISまたはPythonを使用してこれを行うツールはありますか?(より多くのプログラミングを自動的に行いたい) 更新 私はこの質問からこのコードを見つけます: from osgeo import gdal, gdalconst inputfile = #Path to input file input = gdal.Open(inputfile, gdalconst.GA_ReadOnly) inputProj = input.GetProjection() inputTrans = input.GetGeoTransform() referencefile = #Path to reference file reference = gdal.Open(referencefile, gdalconst.GAReadOnly) referenceProj = reference.GetProjection() referenceTrans = reference.GetGeoTransform() bandreference …
8 qgis  python  raster  pyqgis  gdal 

2
Windows上のQGIS 3でQtDesignerユーザーインターフェイス(.ui)およびリソース(.qrc)ファイルをコンパイルする方法
QGIS 2プロセスを転置しようとしましたが、成功しませんでした。 最初に、Python36ではなくPython27への参照を含むC:\ Program Files \ QGIS 2.99 \ etc \ ini \ python-core.batを編集する必要がありました。 C:\ Program Files \ QGIS 2.99 \ bin \ o4w_env.batを実行してQGIS python環境を適切に構成しますが、起動すると次のようになります。 "C:\Program Files\QGIS 2.99\apps\Python36\Scripts\pyuic5.bat" -o dockwidget_base.py dockwidget_base.ui 私はこのエラーを受け取ります: Traceback (most recent call last): File "C:\PROGRA~1\QGIS2~1.99\apps\Python36\lib\runpy.py", line 193, in _run_module_as_main "__main__", mod_spec) File "C:\PROGRA~1\QGIS2~1.99\apps\Python36\lib\runpy.py", line 85, in …

2
最小距離を考慮して、複数のフィーチャにポイントを生成します
ポイントで表される風力タービンを作成する機能があります。基本的には、多少の変更はありますが、ポリゴン(固定)ツール内のランダムポイントからのコードを使用します。 目標は、指定された最小距離を考慮して、ポリゴン内にランダムなポイントを作成することです。これは特に、別のポリゴンに近接していないポリゴン(単一のポリゴンなど)で非常にうまく機能します。 ただし、ポリゴンが別のポリゴンに近接または隣接している場合(たとえば、以下に示すように)、各ポリゴンのポイントは、赤で示すように最小距離内にある可能性があります。 赤のポイントが近くのポリゴンの別のポイントに近づかないようにコードを変更するにはどうすればよいですか? 理想的には、複数のポイントを1つのポイントに置き換えたいです。 Pythonコンソールで再現できるコードを次に示します。関数を実行する前に、関連するCRSでポリゴンレイヤーを選択する必要があります。 import random from PyQt4.QtCore import QVariant def checkMinDistance(point, index, distance, points): if distance == 0: return True neighbors = index.nearestNeighbor(point, 1) if len(neighbors) == 0: return True if neighbors[0] in points: np = points[neighbors[0]] if np.sqrDist(point) < (distance * distance): return False return True …

1
PyQGISでレイヤーの表示名を変更しますか?
複数のベクターレイヤーのバッチ処理を行ったところlayer.name()、QGIS の関数にアクセスすると、すべてのファイルの表示名が「解決」されました。私はこの回答をアンダーダークからQGISの処理スクリプトからの出力ベクトルのレイヤー名の変更に読みましたか?、名前をファイル名に設定できますが、残念ながら手遅れです。 私のプロジェクトのすべてのファイルをリストに含めることができます layers = iface.mapCanvas().layers() これを含むすべての名前: names = [layer.name() for layer in QgsMapLayerRegistry.instance().mapLayers().values()] プロジェクトのパスまたはPyQGISのレイヤーファイルを取得するためのこの答えの助けを借りて?、使用しているファイルの名前を取得できます。 import os real_names = [] for li in layers: (myDirectory,nameFile) = os.path.split(li.dataProvider().dataSourceUri()) real_names.append(nameFile.split("|")[0] 読み込みQgsVectorLayerのためのAPIのドキュメンタリーのdidntは私を助けました。私が欲しいのは、ファイル名を表示名として表示するようにファイルの名前を変更することです。Pythonコンソールでそれをアーカイブする方法は?
8 pyqgis  layers 

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