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

Pythonは、多くのGISプログラムで使用されているオープンソースのインタプリタ型プログラミング言語です。

2
Geopandasポリゴンからmatplotlibパッチへのポリゴン変換
残念ながら、ジオパンダのプロットは非常に遅く、多くのリソースを必要とするため、プロットには代わりにmatplotlibを使用したいと思います。 純粋なフィオナを使用してシェープファイルを開いて読み取る場合、matplotlibパッチとしてポリゴンを抽出するのに問題はありませんが、今度はgeopandasデータフレームを使用してmatplotlibポリゴンを取得します。 私は現在次のようなものを使用しています: with FI.open(df_map_elements, 'r') as layer: for element in layer: key = int(element['id']) if key not in dict_mapindex_mpl_polygon.keys(): dict_mapindex_mpl_polygon[key]=[] for tp in element['geometry']['coordinates']: q = np.array(tp) polygon = Polygon(q) # matplotlib Polygon NOT Shapely matplotlibでポリゴンをプロットする場合: from matplotlib import pyplot as plt from matplotlib.patches import Polygon from matplotlib.collections import …

1
.ags接続ファイルから接続情報を取得するにはどうすればよいですか?
ArcGIS Serverサービス(新しいサービスの公開、既存のサービスの更新、古いサービスの削除など)を複数の環境(開発、テスト、本番など)とインスタンス(環境ごとに2つ以上)にわたってバッチで管理するPythonスクリプトに取り組んでいます。 サービスを公開するには、ArcPyおよびAGS接続ファイルを使用できますが、それ以外のこと(既存のサービスのリスト、サービスの開始/停止/削除など)には、トークンベースの認証を使用するAGS Admin REST APIを使用する必要があります。トークンを取得するには、ユーザーの名前とパスワードを送信する必要があります。 サーバーのURL、ユーザー名、パスワードを毎回指定する必要があるのは、特に私のスクリプトのように、一度に複数のAGSインスタンスを使用している場合、ユーザーにとって面倒です。代わりに、公開に必要な既存のAGS接続ファイルを代わりに使用できるようにしたいのですが。 .agsプログラムでAGS接続()ファイルから接続情報(サーバーのURL、ユーザー名、パスワードなど)を取得する方法はありますか?理想的にはPythonを使用していますか?arcpy.Describeそれらはダムファイルと見なされ、何もすることができません。 これを行う方法がない場合は、トークンを生成してローカルに長期間保存するために追加の構成手順が必要になると思います。これは、煩わしすぎてユーザーに毎回AGSインスタンスの資格情報を要求する必要がないためです。彼らはスクリプトを使用します。

1
静的ヒートマップをサーバー側で生成しますか?
私は、Python(または他の言語でも構いません)を使用してサーバー側の静的マップを生成する方法を探していました。 QGISを使用して必要なマップを作成できます(そして、それらは非常に美しく見えます)が、プロセスを自動化する方法がわかりません。 私が欲しいのは QGISでマップスタイルを作成し、それをある種のXMLにエクスポートします(quantumnikというプラグインがありますが、これはもう使用できないと思います) PythonスクリプトでPostGISに対してクエリを実行する 上記で定義したクエリとスタイルXMLから返されたデータセットを使用して、シェープファイルまたはPNGのみを作成します。 異なるデータセットを使用して、プロセス全体を毎晩繰り返します。 私はMapnikをいじってみましたが、ヒートマップの生成にまだ成功していません(https://github.com/stellaeof/mapnik-rasterizers) QGISサーバー、GeoServer、MapServerについて読みました。しかし、私は周りにたくさんのツールがあるので混乱しています。 Mapnikは正しい方向に進んでいますか、それともそのようなプロセスに適したツールはありますか? または、サーバー上でQGISをプログラムで使用する方法はありますか? 編集: 多くのことを試した後、GeoServerを使用することにしました。私は、ドッキングウィンドウコンテナの画像を使用して使用して、それをインストールしている:https://github.com/kartoza/docker-geoserver それはPNG、GIF、JPEGを生成することができ、また、かなり簡単にLeafletjsと統合することができWMSレイヤを提供することができます。 唯一の問題は、最初にQGISでマップを設計してから、「Geoserver Explorer」プラグインを使用してそれらをGeoServerにエクスポートしようとしていますが、ラベルやその他のいくつかの機能ではうまく機能しません。QGISでSLDを生成する簡単な方法はないと思います。SLD構成をGeoServerにエクスポートした後、手動で修正し続けます。しかし、これは私が推測する最良の解決策です。 QGISとGeoServerまたはその他のSLDエディターを統合するためのより良いプラグインまたは方法を提案できれば、それでもすばらしいでしょう。

4
残りの道路ネットワークに接続されていないフィーチャを選択するためのPostGISクエリ?
PostGIS対応のデータベースに保存されている都市の道路のデータセットがあります。他の道路ネットワークに接続されていないフィーチャを特定して削除したいと思います。この動作は、データが切り取られたネットワークの端でよく見られます。 これを行う他の回答をGIS SEで見つけましたが、すべてArcGISを使用しているようで、PostGIS、QGIS、またはPythonスクリプトを使用して問題を解決したいと考えています。 データセットには10​​0万を超える機能を含めることができるため、パフォーマンスが問題になります。

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
MapnikがWebStackで失敗する
Mapnik 2.2.0を使用して、いくつかのマッピング機能を備えた(Python 2.6.6で実行される)かなり大きく複雑な(内部)Webポータルを継承しました。最近、Webサービスは、表示されるマップのいくつかを作成しようとすると500エラーをスローし始めましたが、唯一のエラーがあります。 $ Premature end of script headers: app.wsgi マップは、(Pythonディクショナリから作成された)文字列として渡されるgeojsonから生成されます。私はそれをの1行のコードまで追跡しましたmap.py。これにより、マップにレイヤーが追加されます。 data = mapnik.Ogr(file=json, layer='OGRGeoJSON') そのコード行(および関連するm.layers[-1].data = data)をコメント化すると、ポータルに画像が表示されますが、明らかにこのレイヤーはありません。jsonは有効です(http://geojsonlint.comで確認しました)。 デバッグ作業 別のjsonファイルを使用する 外部ソースからJSONを呼び出すと問題が再現されるかどうかを確認したいと思いました。したがって、json文字列を別のファイル(test.json)としてmap.py、と同じディレクトリに保存し、次のOgr呼び出しを変更しました data = mapnik.Ogr(file='test.json', layer='OGRGeoJSON') それでも500エラーが発生しますが、少し冗長なエラーメッセージが表示されます。 datasource = mapnik.Ogr(file='testgeo.json', layer='OGRGeoJSON') File /usr/lib64/python2.6/site-packages/mapnik/__init__.py, line 536, in Ogr return CreateDatasource(keywords) RuntimeError: OGR Plugin: Failed to read GeoJSON data geojsonの確認 $ ogrinfo testgeo.json …
8 python  mapnik 

2
コマンドラインからではなく、Pythonスクリプトから呼び出されたときにgdalwarpが空のラスターを生成する
Pythonでgdalwarpを使用して、いくつかのラスターデータ(すべての.tif)をより粗い解像度(.05度から.25度まで)に集約しようとしていますが、コマンドは機能しません。広範囲の値を持つ出力を取得する代わりに、出力のすべての値は0です。解像度とピクセル深度/タイプは正しいですが、値は正しくありません。 gdalwarpコマンドのドキュメントは次のとおりです:http ://www.gdal.org/gdalwarp.html 2つの入力ファイルがあり、最大.25度の解像度で集約し、いくつかの出力を生成します。 'NDVI_raster':最初の入力は、NDVIを表す16ビットの符号付きラスターで、値の範囲は-10,000〜10,000、nodata値は-15,000です。 'nodata_mask':2番目は、NoDataマスク、32ビット浮動小数点数で、1 =「正常」データの値、0 = NoDataです。 「NDVI_raster」を入力として使用して、それぞれが異なる統計を表す7つの異なる出力を生成します。これを行うには、gdalwarpを7回呼び出します。そのたびに、リサンプリング方法(-r)を次のいずれかに設定します:平均、モード、最大、最小、中央値、q1、q2。出力をNDVI_ave.tif、NDVI_mode.tifなどと呼びます。現在、GDAL 1.10.1を使用しています。これは、平均とモードのみを許可するため、これら2つの統計のみを使用してテストしています。 「nodata_mask」を入力として使用して、最終的にQAL(品質保証レイヤー)を生成したいと思います。これを行うには、gdalwarpを使用し、リサンプリングモードを「平均」に設定して、最大.25度まで集計します。これにより、各ピクセルは、入力からの良好なピクセル/合計ピクセルの比率を表します。出力QALを呼び出します。 これが私のコードの内容です(最初の入力の例としてモードを使用)。 os.system('gdalwarp -tr .25 .25 -r mode -srcnodata -15000 %s %s' % (NDVI_raster, NDVI_mode)) QAレイヤーの場合: os.system('gdalwarp -tr .25 .25 -r average -srcnodata -15000 %s %s' % (nodata_mask, QAL)) 結果は正しい解像度、投影、ピクセル深度のラスターですが、ピクセル値はすべて0です。 python / gdalに詳しい人は何が起こっているのか知っていますか? コマンドライン(linux)からgdalwarpコマンドを呼び出すと、目的の結果が得られます。os.systemを使用してpythonからgdalwarpを呼び出すと、空のラスターが表示されます。それで、おそらく私のgdal / pythonバインディングに何か問題がありますか? os.system経由でコマンドを呼び出す代わりに、サブプロセスを使用しました。この方法によるツールもスムーズに実行されているように見えますが、結果は同じで、0でいっぱいのラスターです。 gdalwarp呼び出しをbashシェルスクリプトに入れて、Pythonからそのシェルスクリプトを呼び出してみましたが、結果は0ではなく-1の束になります。奇妙なことに、私は以前にそれをテストしたことがあり、それが機能することはかなり確かですが、テストがサーバーから削除されてしまい、何らかの理由で再作成できなくなりました。 gdalwarpコマンドをbashシェルスクリプトに入れ、コマンドラインからそのシェルスクリプトを呼び出すと、目的の結果が得られます。ただし、Pythonから同じシェルスクリプトを呼び出すことはできません。Pythonに問題があるようですが、何をどのように修正すればよいですか?
8 python  gdal  gdalwarp 

2
Windowsで「qgsprojectionselectionwidgetという名前のモジュールがない」とプラグインがクラッシュしますか?
俺の Python QGISプラグインはUbuntuで動作しますが(少なくとも私にとっては、これまでに報告されたすべての致命的なバグは解決されています)、Windows用の公式の2.10.1 64ビットインストーラーからインストールされたQGISで実行すると(Windows 7 64の場合)ビット)、次のエラーが原因でインストールできません: This plugin is broken No module named qgsprojectionselectionwidget 別のユーザーもこの問題を報告しています。しかし、別のエラーメッセージが表示されます(彼が使用しているオペレーティングシステムとアーキテクチャはわかりませんが、Windowsと64ビット版だと思います。 This plugin is broken No module named qgsmaplayercombobox どちらも、私がUbuntuのQt Designerで作成したGUIフォームのウィジェットを指します。Qt DesignerにはWindows用のQGISインストーラーも同梱されており、同じQGISカスタムウィジェットが含まれていると主張しているため、これらのウィジェットが欠落していることで問題が発生することはなく、QGISがそれらを認識するはずですが、認識されません。 それを修正するにはどうすればよいですか?私のプラグインはまだ実験段階なので、「申し訳ありませんが、Windowsでは機能しません」をメタデータに追加することはできますが、実際のソリューションではありません。 編集:32ビット版でも確認された同じ動作。 今、私はこの回答へのコメントに良いヒントを見つけました:os.path.joinパスをクロスプラットフォームにするために使用します。これは私が持っているいくつかのハードコードされたパスにとっては簡単ですが、エラーはおそらくQtでさえ問題がより深いことを示唆しているようです。他に何も調整せずにプラグインでこの問題を処理するにはどうすればよいですか?

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()と、コード補完が邪魔になります。

2
pyprojとgeopyの宛先の場所の違い
方位と範囲を指定したポイントから目的地の位置を(Pythonで)計算する方法を探しています。 subject(geopyとpyproj)の2つのライブラリからの結果の比較に基づいて、最終的な出力の違いが大きくなっていることに気付きました。たとえば、100 kmでは、およそデシメートルのオーダーです。これは私が意味することの最小限の例です: from __future__ import absolute_import, division, print_function long_1 = -1.729722 lat_1 = 53.320556 bearing = 96.021667 distance = 124.8 #in km # using geopy import geopy from geopy.distance import VincentyDistance origin = geopy.Point(lat_1, long_1) destination = VincentyDistance(kilometers=distance).destination(origin, bearing) gp_lat_2 = destination.latitude gp_long_2 = destination.longitude # using pyproj from …

2
KによるRGB画像の画像セグメンテーションはPythonでのクラスタリングを意味します
kを使用して土地被覆のRGB画像をセグメント化したいのですが、画像の異なる領域が異なる色でマークされ、可能であれば異なる領域を区切る境界が作成されるような方法でクラスタリングを行います。私は次のようなものが欲しい: これから : K平均クラスタリングによってこれを達成することは可能ですか?私はインターネット全体を検索しており、多くのチュートリアルではkでクラスタリングを行っていますが、画像をグレースケールに変換した後でのみです。RGB画像のみでやりたい。私がそれを始めるのに役立つソースはありますか?何か提案してください。

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


2
GDALプロセスを実行する別のPythonスクリプトにgdal_merge.pyを呼び出す
を使用gdal_merge.pyして一連の.tifファイルをマージしてから、マージしたファイルをシェープファイルの境界にクリップしたいのですが、他の多くのプロセスを実行する別の大きなスクリプトの一部としてそうしたいと思います。私はpython / GDALの初心者で、gdal_merge.py別のスクリプトを呼び出す方法がわかりません。 単純にgdal_merge.pyそのまま実行することはできませんが、多くのプロセスを実行できるスクリプトの1つのステップです。これを行うための最良の方法について何か考えはありますか?


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