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

NumPyはPythonモジュールであり、大規模な多次元配列および行列のサポートに加えて、これらの配列を操作するための高水準数学関数の大規模なライブラリーを追加しています。

5
numpy配列をラスターファイルに書き込む
GISは初めてです。 火星の赤外線画像を熱慣性マップに変換するコードがあり、それを2D numpy配列として保存します。これらのマップをhdf5ファイルとして保存してきましたが、QGISで処理できるように、ラスターイメージとして保存したいのです。これを行う方法を見つけるために複数の検索を行ってきましたが、運はありません。http://www.gis.usu.edu/~chrisg/python/のチュートリアルの指示に従ってみましたが、彼のサンプルコードを使用して作成したファイルは、QGISにインポートするときにプレーンな灰色のボックスとして開きます。誰かが私がやりたいことの簡単な例に可能な限り簡単な手順を提案できれば、ある程度進歩することができるかもしれません。私はQGISとGDALを持っています。だれでもお勧めできる他のフレームワークをインストールできてとてもうれしいです。Mac OS 10.7を使用しています。 たとえば、次のような熱慣性のnumpy配列がある場合: TI = ( (0.1, 0.2, 0.3, 0.4), (0.2, 0.3, 0.4, 0.5), (0.3, 0.4, 0.5, 0.6), (0.4, 0.5, 0.6, 0.7) ) そして、ピクセルごとに緯度と経度があります: lat = ( (10.0, 10.0, 10.0, 10.0), ( 9.5, 9.5, 9.5, 9.5), ( 9.0, 9.0, 9.0, 9.0), ( 8.5, 8.5, 8.5, 8.5) ) …
30 python  raster  gdal  numpy 

5
ラスタをnumpy配列に完全にロードしますか?
パターン認識のためにDEMラスターでフィルターをチェックしようとしており、常に最後の行と列が欠落しています(like..20)。PILライブラリ、イメージのロードで試しました。次に、numpyを使用します。出力は同じです。 配列の値をチェックするとき(ArcCatalogでIDを使用してピクセルを選択する)、ループに何か問題があると思ったので、ピクセル値が配列に読み込まれていないことに気付きました。 したがって、単に開いて配列に入れ、配列から画像を保存するだけです: a=numpy.array(Image.open(inraster)) #raster is .tif Float32, size 561x253 newIm=Image.new(Im.mode, Im.size) Image.fromarray(a).save(outraster) 最後の行と列を切り取ります。申し訳ありませんが、画像を投稿できません 誰もがその理由を理解するのを助けることができますか?そして、いくつかの解決策をアドバイスしますか? 編集: だから、私はみんなの助けを借りて小さなラスターをnumpy配列にロードすることに成功しましたが、大きなイメージがあるとエラーが発生し始めます。私はそれがnumpy配列の制限についてだと思うので、配列は自動的に再形成されるか、そのようにsmthされます...だから例: Traceback (most recent call last): File "<pyshell#36>", line 1, in <module> ima=numpy.array(inDs.GetRasterBand(1).ReadAsArray()) File "C:\Python25\lib\site-packages\osgeo\gdal.py", line 835, in ReadAsArray buf_xsize, buf_ysize, buf_obj ) File "C:\Python25\lib\site-packages\osgeo\gdal_array.py", line 140, in BandReadAsArray ar = numpy.reshape(ar, [buf_ysize,buf_xsize]) File …

1
gdal Pythonバインディングを使用したgdalwarpの結果の複製
GDAL pythonバインディングを使用して再プロジェクト/リサンプリングを試みていますが、コマンドラインユーティリティからの結果と比較してわずかに異なる結果が得られていますgdalwarp。 短い例については、以下の更新を参照してください このスクリプトは、Pythonのアプローチを示しています。 from osgeo import osr, gdal import numpy def reproject_point(point, srs, target_srs): ''' Reproject a pair of coordinates from one spatial reference system to another. ''' transform = osr.CoordinateTransformation(srs, target_srs) (x, y, z) = transform.TransformPoint(*point) return (x, y) def reproject_bbox(top_left, bottom_right, srs, dest_srs): x_min, y_max = top_left …
20 python  gdal  gdalwarp  numpy 

1
NumPy配列を使用してビッグデータジオプロセシングを最適化するにはどうすればよいですか?
NumPy配列を利用してジオプロセシングを最適化する方法を学ぶことに興味があります。私の仕事の多くは「ビッグデータ」に関係しており、ジオプロセシングでは特定のタスクを完了するのに数日かかることがよくあります。言うまでもなく、これらのルーチンを最適化することに非常に興味があります。ArcGIS 10.1には、arcpyを介してアクセスできる次のような多くのNumPy関数があります。 NumPyArrayToFeatureClass(arcpy.da) RasterToNumPyArray(arcpy) TableToNumPyArray(arcpy.da) 例として、NumPy配列を利用した次の処理集中型ワークフローを最適化するとします。 ここでの一般的な考え方は、ベクトルとラスタベースの操作の両方を移動する膨大な数のベクトルベースのポイントがあり、その結果バイナリ整数ラスタデータセットが得られるということです。 このタイプのワークフローを最適化するためにNumPyアレイをどのように組み込むことができますか?

3
LASファイルをnumpy配列に変換しますか?
PythonでLASデータを操作する方法を学び始め、他のユーザーがLASファイルをどのように処理するかを知りたいと思いました。ポイントを読み取り(numpy配列を使用しています)、クラス1および2(未分類およびグラウンド)を別の配列にフィルター処理します。私は次のコードを持っていますが、ポイントをフィルタリングすることはできません。 # Import modules from liblas import file import numpy as np if __name__=="__main__": '''Read LAS file and create an array to hold X, Y, Z values''' # Get file las_file = r"E:\Testing\ground_filtered.las" # Read file f = file.File(las_file, mode='r') # Get number of points from header num_points = int(f.__len__()) …
15 python  lidar  numpy  array  liblas 

1
rasterioを使用して単一ポイントでピクセル値を取得する
rasterioを使用してラスター内のポイントで単一のピクセル値を取得するには、https://github.com/mapbox/rasterio/pull/275に例があります。 しかし、ラスタ内の単一のポイントで値を抽出するために使用できる、ラスタリオ(CLIではなく)内に直接APIがありますか? -編集 with rasterio.drivers(): # Read raster bands directly to Numpy arrays. # with rasterio.open('C:\\Users\\rit\\38ERP.tif') as src: x = (src.bounds.left + src.bounds.right) / 2.0 y = (src.bounds.bottom + src.bounds.top) / 2.0 vals = src.sample((x, y)) for val in vals: print list(val)
14 python  numpy  rasterio 

2
arcpy.RasterToNumPyArrayを使用して空間参照を保持しますか?
ArcGIS 10.1を使用していて、2つの既存のラスターに基づいて新しいラスターを作成したい。RasterToNumPyArrayは私が適応したい良い例があります。 import arcpy import numpy myArray = arcpy.RasterToNumPyArray('C:/data/inRaster') myArraySum = myArray.sum(1) myArraySum.shape = (myArray.shape[0],1) myArrayPerc = (myArray * 1.0)/ myArraySum newRaster = arcpy.NumPyArrayToRaster(myArrayPerc) newRaster.save("C:/output/fgdb.gdb/PercentRaster") 問題は、空間参照とセルサイズを削除することです。arcpy.envを実行する必要があると考えましたが、入力ラスターに基づいてそれらを設定するにはどうすればよいですか?私はそれを把握することはできません。 ルークの答えを取り上げると、これは私の暫定的な解決策です。 Lukeのソリューションはどちらも、空間参照、範囲、セルサイズを正しく設定しました。ただし、最初の方法では配列内のデータが正しく伝達されず、出力ラスタにはどこでもnodataが入力されます。彼の2番目の方法はほとんど動作しますが、nodataの大きな領域がある場合は、ブロック状のゼロと255で埋められます。これは、nodataセルをどのように処理したかに関係している可能性があります。私が話していることの画像を含めました。 #Setting the raster properties directly import arcpy import numpy inRaster0='C:/workspace/test0.tif' inRaster1='C:/workspace/test1.tif' outRaster='C:/workspace/test2.tif' dsc=arcpy.Describe(inRaster0) sr=dsc.SpatialReference ext=dsc.Extent ll=arcpy.Point(ext.XMin,ext.YMin) # sorry that i modify calculation …

3
論理演算子およびその他の関数のgdal_calcラスター計算機構文
でgdal_calcのドキュメントには記載されているnumpyの構文でコマンドラインラスタ電卓を。後で、そのうちの1つにいくつかの例があります。 gdal_calc.py -A input.tif --outfile = result.tif --calc = "A *(A> 0)" --NoDataValue = 0- ゼロ以下の値をnullに設定することを意味します 残念ながら、次のような論理演算子の例はありません。 --calc = "A *(A> 0 and A> B)"- は、Aがゼロより大きくBが大きい場合にAを保持し、残りをnullに設定することを意味します Numpy / Scipyの論理関数に基づいて、論理演算子を次のように記述することを期待します。 --calc = "A * logical_and(A> 0、A> B)" 私はこれを試しましたが、うまくいくようですが、それが正しいことを確認したいと思います。 同様に、AとBの最小値が必要な場合: --calc = "A *(A <= B)+ B *(A> B)" あなたはただ書くことができます: --calc = …
13 python  gdal  numpy  gdal-calc 

2
psycopg2を使用してラスターデータをpostgisからPythonにダウンロードする
pythonにnumpy配列として取得したいpostgresテーブルにラスターデータがあります。データベースに接続するためにpsycopg2を使用しています。データをダウンロードすることはできますが、文字列(おそらくシリアル化されたバイナリ)として返されます。 この文字列を取得してnumpy配列に変換する方法を知っている人はいますか? st_astiffを使用してhexファイルをダウンロードしてxxdを使用するなど、ラスターをダウンロードする他のオプションを検討しましたが、うまくいきませんでした。「rt_raster_to_gdal:出力GDALドライバーを読み込めませんでした」というエラーが表示され続け、ドライバーを有効にできる環境変数を設定する権限がありません。 TL、DR:ラスターデータをnumpy配列にインポートする(Pythonを使用)。

3
Gdal Dataset.ReadAsArray()がPythonをクラッシュさせる
Windows 7 64ビットにインストールされたNumpy 1.3およびGdal 1.9.1でPython 2.6.5(32ビット)を使用しています。800 MBのImagine(.img)ラスターデータセットをNumpy配列に読み取ってラスター代数を実行しようとしていますが、次のコードを実行するとすぐにPython.exeがクラッシュします。 from osgeo import gdal g = gdal.Open(r'path\to\dataset', gdal.GA_Readonly) b = g.GetRasterBand(1) data = b.ReadAsArray() Python.exeはb.ReadAsArray()呼び出し時にクラッシュします。Google検索をいくつか行って、Gdal 1.6からWindows 7 64bitでこの問題に言及している記事を見つけましたが、当時の最新の開発バージョンで修正されたと述べました。 他の誰かがこの問題を抱えていましたか?回避策はありますか? 更新: PyDevでコードをデバッグして、どこでエラーが発生しているかを特定することにしました。私が伝えることができる(まだエラーメッセージが表示されない)ことから、g​​dal_array.pyの22行目で失敗しています。 _mod = imp.load_module('_gdal_array', fp, pathname, description) 上記のコード行に足を踏み入れると、numpyのinit .pyモジュールに移動します。numpyの最後に到達したとき。__ init __ .pyモジュール、上記のコード行に戻ります。次に、ステップインボタンを押すと、gdal_array.py内の次の行に移動しますが、スクリプトはエラーメッセージも何も表示されずに終了します。 更新#2: GDAL 1.9.1をアンインストールし、Python CheeseshopおよびOSGeoのWindows BinariesからGDAL 1.6.1をインストールしました。まだ同じ問題がありました。
12 gdal  numpy  python-2.6  array 

1
PythonでのGDALを使用したジオティフの読み取り、変更、および書き込み
Python GDALバインディングとnumpyを使用して、リモートセンシング画像処理のロープを学ぼうとしています。最初の試みとして、Landsat8ジオティフファイルを読み取り、簡単な操作を行い、結果を新しいファイルに書き込みます。以下のコードは正常に動作するように見えますが、操作されたラスターではなく、元のラスターが出力ファイルにダンプされます。 コメントや提案は歓迎しますが、特に、操作されたラスターが結果に表示されない理由についてのメモです。 import os import gdal gdal.AllRegister() file = "c:\~\LC81980242015071LGN00.tiff" (fileRoot, fileExt) = os.path.splitext(file) outFileName = fileRoot + "_mod" + fileExt ds = gdal.Open(file) band = ds.GetRasterBand(1) arr = band.ReadAsArray() [cols, rows] = arr.shape arr_min = arr.Min() arr_max = arr.Max() arr_mean = int(arr.mean()) arr_out = numpy.where((arr < arr_mean), 10000, …

1
Numpy配列からのPySALの自然な中断
Pythonを使用して、ラスターから自然なブレーク値を抽出しようとしています。 目的のプロセスは次のとおりです。ArcpyラスターオブジェクトからNumPy配列(RasterToNumPyArrayを使用)から自然ブレーク値(PySAL Natural Breaks関数を使用)。 import arcpy, pysal from pysal.esda.mapclassify import Natural_Breaks as nb # code to create greenIndex arcpy Raster object here greenArray = arcpy.RasterToNumPyArray(greenIndex) breaks = nb(greenArray,k=2,initial=20) このコードは、エラー「ValueError:マトリックスは2次元でなければなりません」を返します。 私の知る限り、greenArrayは2次元配列です。

2
python gdalを使用してGeoTiffから座標と対応するピクセル値を取得し、numpy配列として保存します
投影座標とそれらの座標の実際のピクセル値をGeoTiffファイルから取得し、それらをnumpy配列に保存するにはどうすればよいですか?arsenci020l.tifファイルがあり、その座標はメートル単位です。以下は、私が実行したgdalinfoの要約出力です。 ~$ gdalinfo arsenci020l.tif Driver: GTiff/GeoTIFF Files: arsenci020l.tif arsenci020l.tfw Size is 10366, 7273 Coordinate System is: PROJCS["Lambert Azimuthal Equal Area projection with arbitrary plane grid; projection center 100.0 degrees W, 45.0 degrees N", GEOGCS["WGS 84", DATUM["WGS_1984", SPHEROID["WGS 84",6378137,298.257223563, AUTHORITY["EPSG","7030"]], AUTHORITY["EPSG","6326"]], PRIMEM["Greenwich",0], UNIT["degree",0.0174532925199433], AUTHORITY["EPSG","4326"]], PROJECTION["Lambert_Azimuthal_Equal_Area"], PARAMETER["latitude_of_center",45], PARAMETER["longitude_of_center",-100], PARAMETER["false_easting",0], PARAMETER["false_northing",0], UNIT["metre",1, AUTHORITY["EPSG","9001"]]] …

3
QGISをパンダ(Windows)で再生する方法は?
Windows上でパンダをQGISのPythonインストールで動作させることに成功した人はいますか?OSGeo4Wインストーラーを使用して、Python 2.7とNumpy 1.5.1に付属するQGIS2.2をインストールしました。かなり新しいバージョンのパンダには、Numpy 1.6.1以降が必要です。それが私の主な問題のようです。私が試しました:-easy_installを使用して古いバージョンのパンダ(例:0.7.3および0.4.1)をビルドしましたが、これにより、非常に長いエラーリストが表示されます。少なくとも最後のエラーは、distutils \ msvc9compiler.pyに関連しています。 -古いパンダバージョンのバイナリを使用していますが、すべてNumpy 1.6.1用にビルドされています。Numpyをアップグレードすると、エラーメッセージも表示されます。誰かが興味を持っている場合、メッセージは「File "C:\ OSGeo4W \ apps \ Python27 \ lib \ distutils \ msvc9compiler.py"、line 299、in query_vcvarsall」という改行で「raise ValueERror(str(list(result。 他の誰かがパンダをWindows上のQGISインストールで動作させるのに成功したことがあるかどうか疑問に思っていますか? QGISに、たとえば、3年未満のバージョンのNumpyが同梱されていれば、とても簡単です。このようなアップグレードがQGISの今後のバージョンで機能するかどうか誰かが知っていますか?
9 qgis  python  numpy 

2
Python GDAL ReadAsArrayの最適化
私はGDALのReadAsArrayメソッドを使用して、numpy(具体的には再分類)を使用してラスターデータを処理しています。ラスターが大きいため、配列をブロックで処理し、各ブロックを反復処理して、GeoExamplesの例と同様の方法で処理します。 これらのブロックのサイズを設定して、ラスター全体の処理にかかる時間を最適化する方法を検討しています。numpy配列サイズの制限と、ラスタの「自然な」ブロックサイズを使用するためのGDAL GetBlockSizeの使用に注意して、「自然な」サイズの倍数で構成されるいくつかの異なるブロックサイズを使用してテストしました。以下のサンプルコードで: import timeit try: import gdal except: from osgeo import gdal # Function to read the raster as arrays for the chosen block size. def read_raster(x_block_size, y_block_size): raster = "path to large raster" ds = gdal.Open(raster) band = ds.GetRasterBand(1) xsize = band.XSize ysize = band.YSize blocks = 0 …
9 python  raster  gdal  numpy  array 

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