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

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

3
GDALとPython:特定の値を持つすべてのセルの座標を取得する方法は?
私が持っているARC / INFOバイナリグリッドを具体的には、ArcGISのは累積ラスタを流し--- ---と私は特定の値(または値の範囲で)を有する全ての細胞を同定したいと思います。最終的に、これらのセルを表すポイントのシェープファイルが欲しいです。 QGISを使用してhdr.adfを開き、この結果を取得できます。ワークフローは次のとおりです。 QGIS>ラスターメニュー>ラスター計算機(すべてのポイントを目標値でマーク) QGIS>ラスターメニュー>ポリゴン化 QGIS>ベクトルメニュー>ジオメトリサブメニュー>ポリゴン重心 重心を編集して、不要なポリ重心を削除します(これらの重心= 0) このアプローチは「仕事をします」が、削除しなければならない2つのファイルを作成し、重心のシェイプファイルから不要なレコードを削除する必要があるため、私には魅力的ではありません(つまり、それらは0です)。 既存の質問は、この主題に近づくが、それは、ArcGISの/ ArcPyに合わせだ、と私はFOSSのスペースに滞在したいと思います。 ラスターのセル値を調べる既存のGDAL / Pythonレシピ/スクリプトがあり、ターゲット値(またはターゲット範囲内の値)が見つかった場合、レコードがシェープファイルに追加されますか?これにより、UIの相互作用が回避されるだけでなく、単一のパスでクリーンな結果が作成されます。 Chris Garrardのプレゼンテーションの1つに対して作業することでショットを撮りましたが、ラスター作業は私の操舵室にありません。また、弱いコードで質問を混乱させたくありません。 正確なデータセットを使用したい場合は、ここに.zipとして配置します。 [メモの編集]後世のためにこれを残してください。om_hennersとのコメント交換を参照してください。基本的に、x / y(行/列)の値は反転しました。元の答えには次の行がありました: (y_index, x_index) = np.nonzero(a == 1000) このように反転します: (x_index, y_index) = np.nonzero(a == 1000) スクリーンショットに示されている問題に初めて遭遇したとき、ジオメトリを誤って実装したかどうか疑問に思い、次の行でx / y座標値を反転させて実験しました。 point.SetPoint(0, x, y) ..なので.. point.SetPoint(0, y, x) しかし、それはうまくいきませんでした。そして、om_hennersのNumpy式で値を反転させようとは考えていませんでした。どちらの行で値を反転しても同等であると間違って信じていました。私は、本当の問題がに関する考えるx_sizeとy_size、それぞれの値、30および-30行と列のインデックスは、細胞のための計算点の座標に使用されている場合に適用されます。 [オリジナル編集] @ om_henners、ogr(invisibleroads.com、Chris Garrard)を使用してポイントシェープファイルを作成するためのいくつかのレシピと協力して、あなたのソリューションを試していますが、ポイントがライン通過を越えて反映されるかのように表示される問題があります315/135度まで。 …
12 python  raster  gdal 

5
WindowsでのGEOSおよびShapelyのインストール
Windows 64ビットコンピューターにShapelyをインストールしようとすると、GEOSライブラリが機能しません。 これまでのところ、GDALをインストールしたOSGeo4Wインストーラーを実行しました(geosライブラリーはそのパッケージに含まれていると思います)。その後、チェックして、C:\OSGeo4W\binディレクトリにgeos_c.dll がありますが、いくつかの構成手順を逃したか、ライブラリが機能しません。 Shapelyが動作する必要があるため、pip install shapelyGDALをインストールした後も実行しましたが、明らかに動作しました(GEOSのCライブラリが見つかりませんでしたが)。 私のコードではShapelyをインポートできますが、使用しようとすると、"geos.dll"見つからないというエラーが表示されます。
12 qgis  python  gdal  shapely 

1
GDAL RasterizeLayerはすべてのポリゴンをラスターに焼き付けませんか?
GDALのRasterizeLayerを使用して、シェープファイルをラスターに焼き付けようとしています。特定のピクセルサイズを指定して、異なるシェープファイルから対象エリアラスタを事前に作成します。このAOIは、その後のすべてのラスター化(同じ数の列と行、同じ投影と地理変換)のベースとして機能します。 ただし、同じピクセルサイズと投影に基づいて、シェイプを独自のラスターに書き込むときに問題が発生します。下のリンク(画像を投稿するのに十分な担当者がいない)は、元のシェープファイルを黄褐色で示し、RasterizeLayerがデータを書き込んだ場所に濃いピンク色を示しています。淡いピンクは、濃いピンクのラスターデータのnodata値です。灰色は、シェープファイルの書き込みが完了したAOIに基づいています。 シェープファイルポリゴンの範囲を考えると、表示されるデータの下にある2つのピクセルだけでなく、下の2つの角にも書き込み値が表示されると予想されます。ただし、明らかにそうではありません。 以下は、これらを生成するために使用したコードです。すべての形状はQGISを使用して作成され、すべて同じ投影で作成されました。(表示されている写真のグリッディングは、使用しているピクセルサイズを示すためのものであることに注意してください。) from osgeo import ogr from osgeo import gdal aoi_uri = 'AOI_Raster.tif' aoi_raster = gdal.Open(aoi_uri) def new_raster_from_base(base, outputURI, format, nodata, datatype): cols = base.RasterXSize rows = base.RasterYSize projection = base.GetProjection() geotransform = base.GetGeoTransform() bands = base.RasterCount driver = gdal.GetDriverByName(format) new_raster = driver.Create(str(outputURI), cols, rows, bands, datatype) new_raster.SetProjection(projection) …

1
PythonでGDALに例外を適切に発生させる方法はありますか?
私はPythonでGDALを使用していますが、GDALで例外を発生させて、有用なことを行えるようにしたいと考えています。たとえば、gdal.Open()でファイルを開くことができない場合、gdalがNoneを返す代わりに例外をスローしたいと思います。エラーをsys.stdoutにダンプするのではなく、キャプチャする方法が欲しいのです。 現在、このgdal.UseExceptions()関数を使用しようとしましたが、問題に遭遇しました。ときにgdal.UseExceptions()設定されていることは、特定のエラーを隠し、それらに例外を発生させないように思われます。たとえば、ERROR 5: Access window out of range in RasterIO() Requested (1,15) of size 25x3 on raster of 26x17消えて例外は発生しません。これはかなり危険なようです。 どんなアイデアでも感謝します、ありがとう。
12 python  gdal  ogr  osgeo 

2
ArcGISでマルチコア処理を最適化する方法
デスクトップコンピューターで利用可能なマルチコア処理能力を最大限に活用するための学習方法に興味があります。Arcは、ユーザーがバックグラウンドジオプロセシングで複数のコアを利用できると述べていますが、タスクは基本的に前のタスクが完了するまで待機する必要があります。 Arc / Pythonで並列またはマルチスレッドのジオプロセシング手法を開発した人はいますか?個々のタスクでマルチコア処理を妨げるハードウェアのボトルネックはありますか? Stackoverflowで興味深い例が見つかりましたが、これはジオプロセシングの例ではありませんが、興味を惹きました。 from multiprocessing import Pool import numpy numToFactor = 976 def isFactor(x): result = None div = (numToFactor / x) if div*x == numToFactor: result = (x,div) return result if __name__ == '__main__': pool = Pool(processes=4) possibleFactors = range(1,int(numpy.floor(numpy.sqrt(numToFactor)))+1) print 'Checking ', possibleFactors result = pool.map(isFactor, …

4
ミシガン州立大学のPythonジオプロセシングコース教材の鏡
MSUのGEOG 825(python geoprocessing)コースを使用して、Pythonでジオプロセシングを学習しています。残念ながら、リンクは現在無効です。これはロングショットですが、そのコースの資料のコピーを持っている人はいますか?本当に仕上げたいです。 既に他のオンラインPythonジオプロセシングコースをチェックアウトしています。ペンシルベニア州とユタ州で発見されました。ただし、それらは、ogr / gdalであろうとArcGISのarcpy / arcgisscriptingであろうと、ツールの使用に焦点を当てています。私の知る限り、ミシガン州立大学のコースのみがアルゴリズムとデータ構造について説明しています。

1
衛星画像から屋根の向きの検出を自動化しますか?
少し前に、各屋根を目視で確認し、南向きかほぼ南向きかを個別にマークすることで、ソーラーパネルの展開に関する近隣の屋根の向きの調査を行いました。 これは非常に時間がかかるため、これを自動化する方法を見つけたいと思いますが、屋根の影を分析するだけでこれがどのように可能になるかわかりません。 少しスクリプトを書くことはできますが、プラグインを書いたことはありません。 他にどの要素を含める必要がありますか? 予算は非常に低いため、オープンソースツールを使用してこれを行う方法について提案を求めます。

5
Pythonを使用してASCIIラスターデータセットの最小値と最大値を決定しますか?
ASCII形式のラスターデータセットがあります。Pythonを使用して、データセット内の値minとmax値を決定する必要があります。ヘッダー情報はキーであり、行/列の数、セルサイズなどが含まれていると言われています。 ヘッダー情報をスキップして、データセット全体を読み取って値minとmax値を決定することはできませんか? これが私がやろうとしていることです。ヘッダー情報を含む最初の数行をスキップして、そこから値を決定しようとしています。以下は私が持っているものの一種ですが、Pythonが初めてなのでいくつかのガイダンスが必要です。 raster_file = open('data.asc', 'r') # Open the file data = raster_file.readlines()[4:] # Read the lines in the file, and skip the first six lines for lines in data: print max(data) # Find the max value in data print min(data) # Find hte min value in data 助言がありますか?

5
組み込みデバイス用の最小のGISライブラリ?
単純なLinuxベースのOSを実行している組み込みデバイス内で、非常に単純なジオメトリ操作(SHPまたはその他の標準形式と単純な検索を読む)を使用する必要があります。 使用できる最小で最もシンプルなAPIは何ですか? システムとの統合を可能にするために、C / C ++またはPythonで作成できます。 おかげで、 サミュエル
12 python  linux 

5
ArcGIS Geoprocessing Toolsを使用するPythonスクリプトを(.exeに)コンパイルしますか?
私は数か月間Pythonでコーディングしており、主にジオプロセシングタスク用のかなり複雑なスクリプトを開発しました。そうは言っても、SQL / VBA / VBScriptのバックグラウンドから来ているので、私はまだ多くを学んでいます。 コンパイルされたコードは通常、言語インタープリターで処理する必要があるコードよりも高速で実行されることを知っているため、ビッグデータを操作するためにジオプロセシングPythonスクリプトを.EXEファイルにコンパイルする可能性に興味があります。 これも可能ですか?もしそうなら、arcgisscriptingまたはarcpyモジュールをインポートするPython(.py)スクリプトをコンパイルする最良の方法は何ですか? やりたいことを見つけるために数分を費やし、検索の結果、とりわけこの記事が返されました:http : //www.ehow.com/how_2091641_compile-python-code.html コンパイラは動作しているように見えましたが、結果の.EXEファイルを実行すると、一部のファイルが利用できないという不可解なエラーが発生しました。 Pythonスクリプトは、コマンドラインからはかなり適切と思われるものを実行しますが、.pyファイルをコンパイルできた場合、若干の改善が見られるかどうか疑問に思っています。繰り返しますが、処理に+20時間かかる大きなデータセットを使用しています(入力水質サンプルサイトからの分水界の輪郭を描く)。改善のために手に入れることができるものは何でも取ります。 このスクリプトは、サイトのテストセットを使用してコマンドラインから迅速外のArcGISの10%を走っ対 ArcCatalogで新しいツールボックスのスクリプトツールとしてスクリプトを設定します。専用のコンピューターでArcGISのインスタンスを開かずに、コマンドラインからスクリプトを実行しました。 では、arcgisscriptingモジュールをインポートし、ArcToolBoxツールを呼び出すPythonスクリプトをコンパイルできますか? 編集 入力をありがとう、これは私にとって有用です。このスクリプトは、主に多くのArcGISツールを調整し、適切な属性で目的の形式/場所で出力する方法です。一部の暫定ラスターファイルのスクラッチパーソナルジオデータベースではなくスクラッチフォルダーに書き込むことで、ESRI GRID形式とIMG形式の両方で保存できるように、すでにいくつかの脂肪を削除しました。ただし、プロファイラーの提案を確認します。 私のオフィスには、主にコンパイルされたVisual BasicプログラムやVB.NETプログラムと比較して、「コンパイルされたコードはインタープリターを介して実行されるコードよりもはるかに速い」と Pythonに質問する人がいますが、それは良い点ですツールはどちらの方法でも時間がかかります。そして、現代のコンピューティングマシンでは、コードの解釈はコンパイルされたコードよりもそれほど遅くないので、その余分な距離を進むことが保証されているようです。 編集 -ラスター形式でのプログラムの最適化に関する更新。 このPythonプログラムの「最適化」をフォローアップしたかったため、パーソナルジオデータベースではなくGRID形式で中間ラスターを書き込むことで、2時間の処理時間を節約できました。それだけでなく、データサイズのディスクスペース消費量が大幅に削減されました。私がすべてのラスターを書き込んだ元の実行(およびそれらはラスターに変換されたポイントフィーチャであり、その後、流域ラスターであった)は、これらのファイルだけで37.1 GBのデータになりました。後者の2つのデータ出力をGRID形式のフォルダーに書き込むことは、667 MBのデータに削減されました。 主にデータのサイズの方法で、ファイルGDBがこれらのデータをどのように処理するかを知りたいと思います。ただし、処理時間を9.5時間から7.5時間に短縮することで、GRID形式のジオデータベース外のラスターを処理することを支持できます。

4
Pythonのラスター上のポイントデータの双線形補間?
いくつかのポイント補間を行いたいラスターがあります。ここに私がいる場所があります: from osgeo import gdal from numpy import array # Read raster source = gdal.Open('my_raster.tif') nx, ny = source.RasterXSize, source.RasterYSize gt = source.GetGeoTransform() band_array = source.GetRasterBand(1).ReadAsArray() # Close raster source = None # Compute mid-point grid spacings ax = array([gt[0] + ix*gt[1] + gt[1]/2.0 for ix in range(nx)]) ay = …


3
FionaでFileGDB(Esriファイルgdb API)ドライバーのサポートを追加する方法は?
それについてはたくさんの質問がありましたが、誰も私の問題を解決しませんでした。 私はマシンを持っています: Windows 7 x64 Python 3.4.3 x64 gdalがインストールされました:gdalinfo --version --> GDAL 1.11.4, released 2016/01/25; ここからホイールGDAL-1.11.4-cp34-none-win_amd64.whlからグダルを取り付けました GDALはにインストールされC:\Python34\Lib\site-packages\osgeoます。そこには、gdalおよびogrおよび.pydファイル用の.exeファイルがたくさんあります。 fiona installed:Fiona-1.6.3-cp34-none-win_amd64.whl同じWebサイトのwheelからインストールされました。 このコードを実行でき、正常に実行されます。 import gdal import ogr from gdalconst import * shp = r"C:\Data\GIS\PTS.shp" driver = ogr.GetDriverByName('ESRI Shapefile') dataset = driver.Open(shp) layer = dataset.GetLayer() layer.GetFeatureCount() schema = layer.schema fields = [field.GetName() for field …

2
Pythonを使用してストレートスケルトンを計算する方法は?
ストレートスケルトンアルゴリズムの実装を提供するPythonパッケージはありますか? オープンソース(C ++)プロジェクトCGALには実装が含まれていることは承知していますが、cgal-bindingsにはこのCGALパッケージが含まれていないようです。 いずれにせよ、私は自分のニーズに合わせて修正/拡張できる純粋な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 

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