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

QGISのPythonバインディング。

2
PyQGISでQgsFeatureを使用して属性の値を変更する方法は?
機能の1つの属性を更新したいと思います。ただし、機能オブジェクトを使用して更新する必要はありません。データプロバイダーを使用して更新する必要があります。 layers = QgsMapLayerRegistry.instance().mapLayersByName('my_line') layer = layers[0] dp = layer.dataProvider() it = dp.getFeatures() for i in range(0, dp.featureCount()): feat = it.next() attrs = { 2 : 30 } layer.dataProvider().changeAttributeValues({ feat.id() : attrs }) QgsFeatureオブジェクトを使用して属性の値を変更できますか? さらに、反復子オブジェクトを使用してループすることは可能ですか?
12 qgis  python  pyqgis  features 

2
QGISと環境変数を使用したスタンドアロンアプリケーション
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 …
12 qgis  pyqgis 

4
QGISでシェープファイルの名前を変更しますか?
外国語で命名されたプロジェクトのレイヤーの膨大なリストがあります。名前に英語のタイトルを翻訳して追加したい。 レイヤーを右クリックしてレイヤー名を選択Properties -> Generalして変更すると、レイヤーツリーに表示されますが、元のファイルは変わりません。 QGISから元のファイルの名前を変更する方法はありますか? フォルダがたくさんあるので、すべてのフォルダを検索するには時間がかかりすぎます。

1
QGISのプラグインのプログラミング中にPythonスクリプトを介して印刷コマンドを表示するにはどうすればよいですか?
QGIS用に作成されたカスタムプラグインの実行から、デバッグ画面のように、プラグインの実行時にPython Shellが一緒に表示される方法はありますか?QGISのプラグインをプログラミングしているときに、Pythonスクリプトを介して印刷コマンドを表示する方法があるかどうかを確認してください。

2
QGISのPythonコンソールからズーム
Pythonコンソールですべてのタイプのズーム(フル、選択したレイヤーなど)を適用するコマンドは何ですか?私はpyqgisクックブックとAPIドキュメントの両方で検索していますが、面白いものは何も見つかりません。
11 qgis  pyqgis 

1
QGIS 3.0 Processingの新しいalglistとalghelpは何ですか?
Pythonコンソールを介して新しいQGIS 3.0処理スクリプトにアクセスすることは、特に古いprocessing.alglist()およびprocessing.alghelp()コマンドが機能していないように見えるため、私にとって難題であることが証明されています。 処理スクリプトのリストをどのように呼び出すのですか? 個々のスクリプトのヘルプ情報をどのように呼び出しますか?

2
「pyrcc5」は内部コマンドまたは外部コマンドとして認識されません
Qgis 3.0をWindows 10にインストールしました。pyrcc4またはpyrcc5コマンドを実行するたびにこのエラーが表示されます。 'pyrcc4' is not recognized as an internal or external command, pyrcc4.exeファイルがある場所またはapyrcc5.batファイルがある場所を見つけて、環境変数へのパスを追加しても、同じエラーが発生します。osgeo4wの以前のインストールでは、pyqtdevフォルダーまたは同様のものがC /にあったと思われました。そのようなフォルダがあるはずでしたが、pyqtを個別にダウンロードする必要がありますか?
11 qgis  pyqgis 

2
mm単位で一貫した寸法のポリゴンを生成しますか?
ポリゴンとして表される太陽光発電パネルを作成する機能があります。基本的に、ユーザーが次のパラメーターを指定できる長方形のグリッドを作成します。 長さ 幅 水平距離 垂直距離 コードはプラグインFeatureGridCreatorに基づいていますが、ポリゴンの側面のみに焦点を当てています。特に大きな寸法(長さおよび幅が10m、水平および垂直距離が10mなど)のポリゴンを作成する場合、ほとんどの場合に有効です。 しかし、私はいくつかの問題に気づきました。 長さと幅の両方で2m未満の寸法のポリゴンを指定すると、ポリゴンは作成されませんでした。 寸法の異なるポリゴン(長さ5mと幅7mなど)を指定する場合、寸法の測定ツールで測定したときの寸法は同じではありませんでした。これらの寸法では、長さと幅はそれぞれ4mと6mであることが示されました。 投影とレイヤーの両方に使用されるCRSはEPSG:27700ですが、これが問題になるとは思いませんでした。 これらの問題を引き起こしている可能性のあるものは誰にもわかりませんか?また、コードを改善する方法、またはより良い代替物に置き換える方法についても提案を受け付けています。 Pythonコンソールで再現できるコードは次のとおりです。関数を実行する前に、関連するCRSでポリゴンレイヤーを選択する必要があります。 from PyQt4.QtCore import QVariant from math import ceil def generate_pv_panels(length, width, distance_x, distance_y): # Define layer properties layer = iface.activeLayer() crs = layer.crs() memory_lyr = QgsVectorLayer("Polygon?crs=epsg:" + unicode(crs.postgisSrid()) + "&index=yes", "PV panels for " + str(layer.name()), "memory") QgsMapLayerRegistry.instance().addMapLayer(memory_lyr) …

1
画像を保存する前に、キャンバスのレンダリングが完了するのを待ちます
マップコンポーザーを使用して、複数のレイヤーのレンダリングを保存するスクリプトを作成しようとしています。私が直面している問題は、qgisがすべてのレイヤーのレンダリングを完了する前にスクリプトが保存されることです。 いくつかの他の回答(に基づいて1、2、3)、私が使用しようとしてきたiface.mapCanvas.mapCanvasRefreshed.connect()し、関数内で保存した画像を入れて、私はまだ同じ問題に直面しています-画像はすべてのレイヤーが含まれていません。 私が使用しているコードと、メインウィンドウとレンダリングがどのように見えるかの画像を以下に示します。 コンソールウィンドウを開いて3 print layerList行のコメントを解除すると、プログラムはレンダリングが完了するのを待ってから画像を保存することに気付きました。これが処理時間の増加によるものなのか、プログラムの実行方法が変わっているのかはわかりません。 すべてのレイヤーが画像に含まれるように、これを適切に実装するにはどうすればよいですか? from qgis.core import * from qgis.utils import * from qgis.gui import * from PyQt4.QtCore import * from PyQt4.QtGui import * import os.path ##StackExchange Version=name ##Map_Save_Folder=folder ##Map_Save_Name=string roadmap # Create save file location mapName = "%s.png" %Map_Save_Name outfile = os.path.join(Map_Save_Folder,mapName) pdfName = "%s.pdf" %Map_Save_Name …

1
QGISエクスポートコンポーザーをPythonでPDFとしてエクスポート
作曲家を含むQGISプロジェクトがあります。もちろん、GUIに移動すると、pdfなどとしてエクスポートできます。makeスクリプトの場合は、Pythonスクリプトを使用してこれを実行します。ここでオンラインで読むことから私の試みです: #!/usr/bin/env python import sys from qgis.gui import QgsMapCanvas, QgsLayerTreeMapCanvasBridge from PyQt4.QtCore import QFileInfo from PyQt4.QtXml import QDomDocument from qgis.core import * qgs = QgsApplication(sys.argv, True) QgsApplication.setPrefixPath("/usr", True) qgs.initQgis() def make_pdf(): canvas = QgsMapCanvas() bridge = QgsLayerTreeMapCanvasBridge( QgsProject.instance().layerTreeRoot(), canvas) bridge.setCanvasLayers() QgsProject.instance().read(QFileInfo('../board.qgs')) composition = QgsComposition(canvas.mapSettings()) map_item = composition.getComposerItemById('board36x48') map_item.setMapCanvas(canvas) map_item.zoomToExtent(canvas.extent()) composition.refreshItems() …
11 qgis  python  pyqgis  pdf 

2
QGISでレイヤーパネルの幅を設定しますか?
QGISを開くと、レイヤーパネルのデフォルトの幅が[レイヤー/グループの削除]ボタンを表示しません。したがって、QGISを開くたびにボタンを表示するようにパネルのサイズを変更する必要があります。 このパネルのデフォルトの幅を設定して、サイズを変更する必要はありませんか? Windows 10でQGIS 2.18.5を使用しています。

4
QGISで異なるラインフィーチャの複数の頂点をドラッグします
QGISで平行線の複数の頂点を同時にドラッグすることは可能ですか? 平行線のラインレイヤーがあります。一部の地域では、すべての平行線の頂点を移動して、互いの距離を維持する必要があります。 ノードツールを使用すると、ドラッグしたいラインの1つの頂点のみを選択できますが、同時に複数のラインの頂点は選択できません。 Multiline-Layersでは、すべての行を同時にドラッグできますが、単一行のすべての属性を保持する必要があるため、これはオプションではありません。 行をすべて同時にドラッグする他のオプションはありますか? EDIT1:だけが見つかりました。CadNodeTool(https://github.com/wonder-sk/CadNodeTool)を。このプラグインを使用すると、複数の行の頂点を同時に選択することが少なくともすでに可能です。おそらく、このプラグインを拡張して、平行線の頂点を移動することができます。

3
QGISで隣接するタイルIDを決定する方法は?
最近のトレーニングコースで、QGISがアトラスジェネレーターを使用して作成されたマップブックの次/前および上/下のページ番号を自動的に計算できるかどうかを尋ねられました。グリッドの幅と高さがわかっていれば、通常のグリッドに対してかなり合理的なラベル表現を作成できました。 しかし、その後、私たちの興味のある地区を含まないページを描画したくない現実的な例について考え始めました。たとえば、私の本拠地郡の1つです。 それで、今日の午後、私はpythonスクリプトを使って、各グリッドセルに興味のある4人の隣人を見つけ出し、それらの値をグリッドに追加しました(これは、Ujaval Gandhiのチュートリアルに基づいています)。 for f in feature_dict.values(): print 'Working on %s' % f[_NAME_FIELD] geom = f.geometry() # Find all features that intersect the bounding box of the current feature. # We use spatial index to find the features intersecting the bounding box # of the current feature. This will …

2
Pythonで複数のラスター値に透明度を設定する方法
次のコードを使用すると、ラスター値0に100%の透明度を設定できます。 map=None for lyr in QgsMapLayerRegistry.instance().mapLayers().values(): if lyr.name() == "some_layer": map= lyr tr=None tr=QgsRasterTransparency() tr.initializeTransparentPixelList(0) map.renderer().setRasterTransparency(tr) map.triggerRepaint() 2つの値(0と8)を100%透明に定義するにはどうすればよいですか? ラスター値8で最後のブロックのコマンドを繰り返すと、レイヤーの透明度から最初の値(0)が削除されます。

4
QGISを使用して500個のCSVファイルを効率的かつ簡単に再投影する方法は?
私の質問は、このサイトの古い質問と似ています。 私はqgisにインポートする(そして変換する)多くのCSVファイル(geo座標)を持っていますが、それを行うには通常の方法は最適ではありません(長すぎます)。 私はほぼ500のCSVファイル(wgs84座標)を持っていますが、これは私がやりたいことです: すべてのCSVファイルを一度にQGISにインポートする それらを投影する それらをCSVファイルに(再び)エクスポートしますが、座標が異なります(UTM33Nへの変換) 私はPythonコンソールの使用方法を理解しようとしていますが、先に進みません:( 誰も私にステップバイステップでそれを達成する方法を説明できますか?
11 qgis  python  pyqgis  export  csv 

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