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

QGISのPythonバインディング。

1
PyQGISで「オンザフライ」機能をオンにする方法は?
以前QgsMapRendererは、OTFをアクティブ化する場合は非推奨でしたが、次のようなコードを使用しました。 canvas = QgsMapCanvas() canvas.mapRenderer().setProjectionsEnabled(True) 現在、QgsMapRenderer2つのクラスに分類されるQgsMapSettingsとQgsMapRendererJob。私はいくつかの調査を行いましたが、成功しませんでした。では、どうすれば今同じことができるのでしょうか?
8 pyqgis  qgis-3 

3
ポリゴンをPyQGISを使用してネイバーにヒットするまでバッファリングしますか?
複数のポリゴンで構成されたシェープファイルがあります。多くの場合、隣接するポリゴンは属性を共有します。 私がする必要があるのは、共通の属性に基づいてこれらのポリゴンをバッファリングすることです。ただし、これらのバッファーが満たされるまで停止して停止できるまで、バッファーを拡張したいと思います。 私は急いで組み立てられたモックアップを持っています: 私がコードに関して持っているのは次のとおりです: from qgis.core import * from qgis.analysis import * layer=qgis.utils.iface.activeLayer() QgsGeometryAnalyzer().dissolve(layer, "D:/test_dissolved.shp", onlySelectedFeatures=False, uniqueIdField=3, p=None) 正直なところ、私はQGIS APIドキュメントに精通しておらず、最善を尽くしても、これに適したメソッドを見つけることができません。 QgsGeometryAnalyzer().dissolve私はバッファを溶解することができますが、それは私が求めているものではありません。 ここで別の方向に目を向けるべきでしょうか?
8 pyqgis  buffer 

1
QGIS 2.18.5のベクトルグリッドで正方形の色を計算する
地図上のポイントとして多くの建物を含むレイヤーがあります。各建物の属性の1つは"download_speed"です。 地図の上に正方形のグリッド(100 x 100メートル)を配置したいと思います。正方形は次のように動作します。 広場は、広場に少なくとも1つの建物がある場合にのみ表示されます。 正方形内のどの建物も"download_speed"10(Mbit / s)を超えていない場合、正方形は赤になります。 正方形の一部の建物が"download_speed"10(Mbit / s)を超える場合、正方形は灰色になります。 正方形内のすべての建物が"download_speed"10(Mbit / s)を超える場合、正方形は黒である必要があります 私はQGIS(および一般にGISソフトウェア)の完全な初心者ですが、データサイエンスにおけるPythonの経験豊富なユーザーです。 最終結果は、次の図のようになります。

1
キャンバス座標を画面位置に変換します[終了]
閉まっている。この質問はトピックから外れています。現在、回答を受け付けていません。 この質問を改善してみませんか? 地理情報システムスタック交換のトピックになるように質問を更新します。 3年前休業。 地図(キャンバス)の座標を持つポイントがあります。彼の画面の位置を知っておくと便利です。ポイントが配置されている同じ場所にカーソル位置を設定するには、これが必要です。 この座標を変換する方法を知っていますか?
8 qgis  pyqgis 

3
ユーザーがQGIS処理スクリプト入力パラメーターの2つのオプションから選択できるようにしますか?
2つまたは3つのオプションを表示するドロップダウンボックスを作成し、ユーザーがそれらから1つを選択できるようにしたいですか? ユーザーに「ミリ」、「センチ」、「メートル」から選択してもらいたい。これらのオプションは、入力フィールドからのものではありません。 ここではそれらのどれも有効ではないようです:

3
QGIS 2.16:カスタムアプリケーションでQGISの外部で実行すると、processing.runalgが失敗する
RQGISパッケージを開発しています。R内からQGISを実行するには、コマンドラインからQGISを呼び出します。これはQGIS 2.14で完全に機能しました。ただし、QGIS 2.16で同じコードを実行すると、エラーが発生します。これが私がすることです: まず、コマンドプロンプトで必要なすべてのパスを設定します。 @echo off SET OSGEO4W_ROOT=D:\osgeo4w_qgis16 call "%OSGEO4W_ROOT%"\bin\o4w_env.bat @echo off path %PATH%;%OSGEO4W_ROOT%\apps\qgis\bin set PYTHONPATH=%PYTHONPATH%;%OSGEO4W_ROOT%\apps\qgis\python; set QGIS_PREFIX_PATH=%OSGEO4W_ROOT%\apps\qgis rem open python python.exe 続いて、Pythonで次の行を実行します。 import os import sys from qgis.core import * import qgis.utils from osgeo import ogr from PyQt4.QtCore import * from PyQt4.QtGui import * from qgis.gui import * QgsApplication.setPrefixPath('D:\osgeo4w_qgis16\apps\qgis', …

2
プログラムでQGISプロキシ設定を切り替える
プロキシサーバーが異なる2つのオフィスでQGISを使用しています。 現時点では、オフィスを切り替えるたびに手動でプロキシ設定を変更する必要があります。 PyQGISを使用してプログラムでプロキシ設定を変更できるかどうか疑問に思っていましたか?次に、プロキシ設定を切り替えるプラグインを作成できます。 編集1: それまでの間、QGISのプロキシ設定を変更する方法を見つけましたが、それでも機能しません。 このコードを使用して、設定を変更できます。 from PyQt4.QtCore import QUrl, QSettings from PyQt4.QtNetwork import QNetworkRequest, QNetworkProxy from qgis.core import QgsNetworkAccessManager my_settings={"Proxy enabled": u'proxy/proxyEnabled', "Proxy Host ": u'proxy/proxyHost', "Proxy Port": u'proxy/proxyPort'} fiddler={"Proxy enabled": True, "Proxy Host ": "localhost", "Proxy Port": 8888} freiburg={"Proxy enabled": True, "Proxy Host ": "192.168.95.165", "Proxy Port": 8080} …
8 qgis  pyqgis  network  proxy 

2
プラグインビルダーで作成したQGISプラグインに2番​​目のツールバーボタンとダイアログを追加するにはどうすればよいですか?
2つのボタンを持つツールバーを作成します。各ボタンは異なるフォームを開きます。 私が従った手順は次のとおりです。 プラグインビルダーを使用してプラグインを作成しました 実装ファイルで必要な変更を行うことにより、2つのボタンを持つツールバーを作成しました。 ここまでは、すべてが正常に機能するため、最初のボタンをクリックすると、対応するフォームが正しく開きます。このフォームは、Plugin Builderによって作成されたものです。 次に、2番目のボタンをクリックすると開く2番目のフォームが必要です。そう: Qtデザイナー(form2.ui)で新しいフォームを作成し、 uiファイルをpyファイルに変換し(make)、変換したpyファイルから実装ファイルにクラスをインポートし、クラスのインスタンスを取得しました(self.dlg2 = Ui_form2()) そして私が書いた実装ファイルのrun()メソッドで: def run2(self): self.dlg2.show() result = self.dlg2.exec_() しかし、この新しいフォームには.show()メソッドがないというエラーメッセージが表示されます。.show()メソッドを実装するために何かを継承する必要がありますか?しかし、UIファイルから変換されたpyファイルのすべての変更を保存できないので、何かを継承するために2番目のフォームのコードをどのように変更できますか?

2
pyQGISでユーザーが追加したフィーチャの値を変更した後にロールバックを実行すると、QGISがクラッシュします
レイヤーに追加されたらすぐにUUIDをフィーチャに割り当てる必要があるQGISのアドオンを開発しています。featureAdded信号を使用して、機能の対応するフィールドにUUIDを書き込みます。 これは私が使用しているコードです(可能な限り簡略化しています): def run(self): self.iface.mapCanvas().currentLayer().featureAdded.connect(self.onFeatureAdded) def onFeatureAdded(self, fid): layer = self.iface.mapCanvas().currentLayer() layer.beginEditCommand("Set UUID") print layer.changeAttributeValue(fid, layer.fieldNameIndex('guid_pol'), 'some_random_uuid') # prints True layer.endEditCommand() (私は 'Plugin Builder'アドオンで新しいプラグインを作成しました、そしてそれは私がそれに追加した唯一のコードです。) 私は何かが欠けていない限り、これは中のドキュメントからのガイドライン次のQGISの開発者の料理を:http://docs.qgis.org/testing/en/docs/pyqgis_developer_cookbook/vector.html#modifying-vector-layers-with-編集バッファー レイヤーを編集するときに、フィーチャを追加すると、フィールド「guid_pol」が期待どおり「some_random_uuid」に設定されます。問題なく変更をコミットできますが、変更をコミットする代わりにキャンセルしようとすると、エラー0xC0000005(アクセス違反)でQGISがクラッシュします。 興味深いことに、「Set UUID」コマンドは元に戻す/やり直しスタックに追加されません(少なくとも、元に戻す/やり直しパネルには追加されません)。また、元に戻そうとするとクラッシュします。 QGIS 2.14を使用していますが、QGIS 2.12でも同様の動作が見られました。 これを機能させるのに苦労しています。私が間違っていることはありますか?

3
ベクターレイヤーPyQGIS上のオブジェクトの頂点の数を数える
まず第一に、以前に同様の問題が提起されたことを知っていますが、それは満足のいく解決策を提供しませんでした。 ベクターラインレイヤー上のすべてのオブジェクトの頂点の数を取得する必要があります。この記事を基に:https : //joseguerreroa.wordpress.com/2014/07/28/contar-y-extraer-nodos-vertices-para-vectoriales-de-linea-o-poligono-mediante-pyqgis/ 私はこのコードをしました: layer = qgis.utils.iface.activeLayer() feat = layer.getFeatures() for feature in feat: geom = feature.geometry() n = 1 ver = geom.vertexAt(0) points=[] while(ver != QgsPoint(0,0)): n +=1 points.append(ver) ver = geom.vertexAt(n) print n その結果、頂点の数を取得しますが、最後のオブジェクトのみを取得します。(すべてのオブジェクトの番号を取得するために)レイヤーでwhileループが1つ欠けていると思いますが、そうですか?しかし、私はそれがどのように見えるべきかわかりません。 'Vertices counter'プラグインがあることは知っていますが、私の場合(QGIS 2.12、Win 8.1)で機能しません(起動しません)。そして、Pythonで実行する必要があります。 ところで、すべての頂点の座標を取得するのは簡単ですが、頂点の数を取得するのは途方もなく難しいと思いませんか。 編集:@nwduncan(@ArMoraerも)はインデントを修正することを提案し、それは良い手がかりでした。Pythonコンソールはインデントを処理できないことがあるため、更新が必要であることに気付きました。それが他の初心者を助けることを願っています。最終的なコードは次のとおりです。 layer = qgis.utils.iface.activeLayer() feat = layer.getFeatures() for …
8 qgis  python  pyqgis 

1
外部エディターからのPyQGIS関数の呼び出し(Linux)
関数を実行することが可能であろうように、QGISで(例えばKDevelopのような)外部のPythonエディタを統合することが可能であるqgis.core、qgis.utilsなどQGIS Pythonコンソールの外側を? QGIS Webサイト(http://docs.qgis.org/testing/en/docs/pyqgis_developer_cookbook/intro.html)のガイドラインに従って、これを試しましたが、1だけが返され、それ以外は何も返されません。 import sys sys.path.append('/usr/share/qgis/python') import qgis.core import qgis.utils app = qgis.core.QgsApplication([], True) qgis.core.QgsApplication.initQgis() qgis.utils.iface.addVectorLayer("testing.shp", "anewlayer", "ogr") aLayer = qgis.utils.iface.activeLayer() print aLayer.name() といった: $ LD_LIBRARY_PATH=/usr/lib64/qgis/ python qgis-test.py && echo "OK" || echo "Died" Died 私は64ビットのopenSUSE Tumbleweedを実行しています。
8 pyqgis  linux 

2
QGIS / Pythonでベクトルをスケルトン化する
QGISとそのバンドルを使用して、大きなベクターデータセットのスケルトンを作成するツールを見つけようとしています。Pythonまたはコマンドラインを介してプログラムから直接呼び出すことができます(QGIS、GRASS、OGRなどはすべて問題ありません)。 ターゲットは、ストリートエリアを表す穴のある大きな細いポリゴンであり、スケルトン化によって道路ネットワークの概算を取得する必要があります。 これまでに見つけたもの: GRASS 7.0はv.skeleton十分に優れているはずですが、近い将来、QGISとの統合には対応していないようです。 もちろん、CGALにはスケルトンアルゴリズムがありますが、Pythonのサポートは非​​常に貧弱です。 pySkeletonは私にとっては機能せず、おそらくコードをサルベージする時間がありません。 他の代替手段(openJumpスケルトン、この古いArcGISプラグイン ...)は、QGIS / Pythonに簡単に接続できません。 他の提案はありますか?

2
WindowsコマンドプロンプトでのPyQGIS、ArcPy、NumPy、SciPyの併用
ArcGIS、QGIS、Anaconda(SciPyとNumPyが付属しているため引用)、およびバージョン2.7と3からpythonインストールにアクセスしようとしていたときに、このわずかな問題に遭遇Command Promptしました。インタラクティブプロンプトにアクセスするために、GISプログラムやPython IDEを開く代わりに、少し手間をかけずに作業します。 各フォルダーに移動したり、ショートカットを設定したり、PATH環境変数を切り替えたりする代わりに、を介して各pythonインストールにアクセスする別の方法が必要Command Promptでした。 編集する 作業にpythonを使用するGIS専門家は、内部に保持されている機能にアクセスするために、各インストールに手動でアクセスする必要があります。ArcMapなどの読み込みを待つ代わりに、通常、winkey -r + cmdを押しpythonてコマンドプロンプトに入力し、Pythonコンソールを起動する方がはるかに高速です。を使用ArcPyしてシェープファイルを再投影する場合は、にリンクされているPythonコンソールを開く必要がありますArcPy。PyQGIS適切なESRIライセンスがないためにからツールを使用する場合python.exeは、それらのモジュールにリンクされているツールを見つける必要があります。 これは、痛みをすることができ、あなたがで仕事をしようとしているArcPy、PyQGIS、NumPy、またはSciPy すべてのライブラリを1つのPythonインストールとしてまとめてインストールする必要はありません。 通常、PathPythonのインストールがでのデフォルトである変数にバインドされますCommand Prompt。この質問とそれに続く回答は、GIS専門家が単一の環境で複数のpythonインストールを一緒に利用する方法を取り上げています。Python IDEは単一のpythonインストールを対象としており、異なる設定を利用するには設定の変更が必要です。たとえば、私のPyScripterインストールはPythonのArcGISインストールを対象としています。したがって、自分のPyQGISモジュールを利用したい場合は、QGISを開くか、で設定を変更する必要がありますPyScripter。 モジュール/フルスクリプトを作成する場合、1つを個別に対象とすることは理にかなっています。そうすることで、ある種のコード補完が発生する可能性があります。 しかし、あなただけのデータセットを操作するために、インストールごとにいくつかのツールを利用しているときに、単一の画面内で素早くフリップのpythonコンソール/インストールすることができた場合、それは非常に良くなり別名Command Prompt。 トピックを閉じる/オフトピックに投票する人へ... これは明らかにpython言語が付属しているすべてのものに当てはまりますが、データ分析ツール用のESRI拡張機能を購入する余裕のない貧しいGISユーザーにとって、それは彼らの生活を簡素化する方法として役立ちます。いくつかの回答が示しているように、たとえば.cmdファイルに引数を追加するなど、このプロセスをさらにカスタマイズできることは、誰かがカスタムプロセスを実行している場合に非常に役立ちます。より知識のあるGIS /コンピューターユーザー.cmdは、さまざまなIDE / GISソフトウェアのインストールなどに煩わされることなく、プロセスをすばやく実行するためのカスタムファイルをセットアップできる可能性があります。 内でPythonコンソールを実行することの唯一の欠点Command Promptは、コード補完が失われることです。ただし、などの十分なものを実行するarcpy.AddField_management()と、コード補完が邪魔になります。

3
QGISで複数のファイルを同時にエクスポートしますか?
QGISで多くの.TABファイルを開いています。それらを.SHPに保存して、ArcMapで操作できるようにしたいと考えています。 これらすべてのファイルを同時に保存/エクスポートする方法はありますか、それとも本当にすべてのファイルに対して個別に「名前を付けて保存」する必要がありますか?
8 qgis  pyqgis  export  batch 

1
QGIS Pythonプラグインの一部の関数とファイルの目的は何ですか?
QGISプラグインビルダーで作成されたQGISプラグインのアーキテクチャ、ワークフロー、および生成されたファイル間のリンクを理解しようとしています。できれば、図表がいいです。 また、Pythonコードで次の関数が何を行うかを知っておくと役立ちます。QGISプラグインの作成は初めてです。 __init__( self, iface ) tr( self, message ) add_action( self ) initGui( self ) unload( self ) run( self )

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