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

GDAL(地理空間データ抽象化ライブラリ)は、ラスター空間データ形式を処理するためのオープンソースのトランスレータライブラリとコマンドラインユーティリティのセットです。ライブラリとして、サポートされているすべての形式の単一の抽象データモデルを呼び出し側アプリケーションに提供します。また、データの変換と処理に役立つさまざまなコマンドラインユーティリティが付属しています。

9
ogr2ogrでシェープファイルをマージするときにファイル名でフィールドを追加しますか?
私はいくつかのシェープファイルをマージしていますが、QGIS内でそれを行うのにいくつかの問題があったので、ogr2ogrを直接使用しています。私はこれを(バッチで)やっています: ogr2ogr -overwrite %destination% %n1% ogr2ogr -update -append %destination% %n2% -nln all_new ogr2ogr -update -append %destination% %n3% -nln all_new ogr2ogr -update -append %destination% %n4% -nln all_new 正常に動作しますが、結果のシェープファイルには、マージした元のシェープファイルの名前を持つフィールドが必要です。難しいことではないように聞こえますが、どうにかすることはできません。 誰でも助けることができますか?ありがとうございました!
14 gdal  ogr2ogr 

3
アフィン座標を緯度/経度に変換するにはどうすればよいですか?
私はGISを初めて使用します。 私はgdal土地利用/土地被覆地図を読み込むために使用しており、特定の土地被覆タイプの緯度/経度を選択して、緯度/経度でのみ表現される別のデータセットにインデックスを付ける必要があります。Unfortuantelyは、私は具体的には、geotransformから私に与えられたx、y座標の形式を理解していないoriginXとoriginY、以下の: geotransform = dataset.GetGeoTransform() originX = geotransform[0] originY = geotransform[3] これらの値を印刷すると、のような座標が得られます(447466.693808, 4952570.40529)。これらは元の緯度と経度にどのように関係していますか? 編集: ここに私が探していたものを手に入れた簡単なpythonの例があります: srs = osr.SpatialReference() srs.ImportFromWkt(dataset.GetProjection()) srsLatLong = srs.CloneGeogCS() ct = osr.CoordinateTransformation(srs,srsLatLong) print ct.TransformPoint(originX,originY) 盗難:tolatlong.py

3
Gdal:別のラスターでラスターをクリップ
私は、マルチバンドジオティフラスターファイルのバッチを同じ(より小さい)領域にトリミングする簡単なユーティリティを書いています。gdalwarpを使用すると、単一ポリゴンのクリッピングシェープファイルを使用してファイルを簡単にトリミングできます。 gdalwarp -cutline clipper.shp -crop_to_cutline input.tif output.tif ただし、クリップする実際の領域は、最初は常にシェイプファイルではなく、別のジオティフラスターファイルによって定義されます。そのラスターの範囲をクリッピングファイルとして使用できればいいのですが、どうすればよいかわかりません。当然のことながら、以下は機能しません(エラーは発生せず、何も生成されません)。 gdalwarp -cutline clipper.tif-crop_to_cutline input.tif output.tif だから、私の質問は、ラスターを提供する方法はありgdalwarp -cutlineますか?あるいは、別のラスターを使用してラスターをクリップできる別のgdal関数がありますか?これらのどちらも不可能な場合、ラスタの範囲によって定義された単一のポリゴンでシェープファイルを作成する非常に簡単な方法はありますか? このコードは、より広範なpythonスクリプトにラップされるため、コマンドラインのgdalユーティリティまたはgdalのPythonバインディングを使用できます。 補足として、QGISのラスターの範囲をカバーするクリッピングシェープファイルを簡単に作成できることを知っています。簡単な解決策が見つからない場合はそれを行うかもしれませんが、最終的には大規模な自動分析の一部として数百ではないにしても数十の領域でこのユーティリティを使用することになりますので、面倒なことはしたくないと思います非常に簡単な場合でも手動ステップ。
14 python  raster  gdal  clip  gdalwarp 

2
Python、GDAL、およびラスター属性テーブルの構築
PythonとGDALを使用してラスター属性テーブルを構築したい整数ラスターがあります。次のように、PythonでGDALラスター属性テーブルを作成できます。 >>> rat = gdal.RasterAttributeTable() ご覧のとおり、これは正常に機能します。 >>> rat <osgeo.gdal.RasterAttributeTable; proxy of <Swig Object of type 'GDALRasterAttributeTableShadow *' at 0x0000000002A53D50> > このようにして作成されたテーブルには行も列もありません。 >>> rat.GetRowCount() 0 >>> rat.GetColumnCount() 0 「値」という列を作成して、ラスターに一意の値を保存します。 >>> rat.CreateColumn("Value", gdalconst.GFT_Integer, gdalconst.GFU_MinMax) 0 これで問題ありません。列数が更新されます。 >>> rat.GetColumnCount() 1 ここで、列を使用するために値(レコード)を列に追加する必要があります。次のように、ラスターのバンドから一意の値のリストを取得できます。 >>> data = band.ReadAsArray(0, 0, dataset.RasterXSize, dataset.RasterYSize) >>> vals = list(numpy.unique(data)) >>> …


6
連続ラスタのすべてのセルを反復処理するにはどうすればよいですか?
詳細については、このリンクを参照してください。 問題: 連続ラスタ(属性テーブルを持たないラスタ)をセルごとにループして、セルの値を取得したい。これらの値を取得して条件を実行し、実際にラスター計算機を使用せずに、以下で説明するマップ代数ステップをエミュレートします。 以下のコメントのリクエストごとに、問題の背景を提供し、「分析が必要:」と呼ばれる以下のセクションにメソッドを実装する必要性を正当化する詳細を追加しました。 以下に提案する分析は、背景を提供することで私の問題に関連している一方で、回答に実装する必要はありません。質問の範囲は、セル値を取得/設定するために連続ラスタを繰り返し処理することのみに関係します。 必要な分析: 以下の条件のいずれかが満たされている場合、出力セルに値1を与えます。出力セルに値0を与えるのは、どの条件も満たされない場合のみです。 条件1:セルの値が上部および下部のセルより大きい場合、値1を指定します。 Con("raster" > FocalStatistics("raster", NbrIrregular("C:\filepath\kernel_file.txt"), "MAXIMUM"), 1, 0) カーネルファイルは次のようになります。 3 3 0 1 0 0 0 0 0 1 0 条件2:セルの値が左右のセルより大きい場合、値1を指定します。 Con("raster" > FocalStatistics("raster", NbrIrregular("C:\filepath\kernel_file.txt"), "MAXIMUM"), 1, 0) カーネルファイルは次のようになります。 3 3 0 0 0 1 0 1 0 0 0 条件3:セルの値が左上および右下のセルより大きい場合、値1を指定します。 Con("raster" > …
13 python  raster  arcobjects  gdal  c# 

3
スキャンした複数の紙のマップで色、明るさ、コントラストを均等にする方法
私は主にベクターの男ですが、現在のプロジェクトでは、スキャンした古い紙の地図(ロンドンの場合はww2爆弾被害マップ、興味があるなら!) マップをスキャンしてジオリファレンスし、Webサイトで提供するためのタイル合成レイヤーを作成したいと考えています。明らかに境界線を切り取りますが、ここでは問題ではありません。 問題は、マップシート間で見苦しい視覚的な色と明るさの違いがあることです。一貫性のある視覚的な外観を与えるためにそれらを均等化する方法について私は少し迷っています。ヒストグラムイコライズについて調べましたが、現在のツールボックス(Manifold GIS、GDAL、GeoServer)に必要な機能がないようです。 すでにジオリファレンスされた4つのスキャンの例:

2
GDALを取得してPythonでGTiffの統計を作成する方法
私は定期的にPythonでGDALを使用して自分のGeoTIFFラスターを作成します。例: from osgeo import gdal from numpy import random data = random.uniform(0, 10, (300, 200)) driver = gdal.GetDriverByName('GTiff') ds = driver.Create('MyRaster.tif', 200, 300) band = ds.GetRasterBand(1) band.WriteArray(data) ds = band = None # save, close ただし、結果をArcCatalog / ArcGISで表示すると、統計がないため、黒または灰色に見えます。これは、ArcCatalogでラスターを右クリックして[統計の計算...]を選択するか、コマンドプロンプトでgdalinfoを使用することで解決できます。 gdalinfo -stats MyRaster.tif MyRaster.tif.aux.xmlArcGISがラスターを適切にスケーリングするために使用するを生成します。PAM(Persistent Auxiliary Metadata)ファイルには、統計、特に最小値と最大値が含まれています。 <PAMDataset> <PAMRasterBand band="1"> <Metadata> <MDI key="STATISTICS_MINIMUM">0</MDI> …

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を使用)。

1
OGR / GDALスレッドにより、コア使用率が低くなります
ogr / gdalを使用していくつかのラスターデータを処理しようとしていますが、マシンのすべてのコアを最大限に活用できないようです。単一のコアでのみプロセスを実行すると、そのコアの使用率が100%になります。マルチコアに分割しようとすると(以下の例では、xオフセットをチャンクしてキューに入れることにより)、8つのコアのそれぞれで哀れな使用率が得られます。各コア全体で最大100%の使用率(たとえば、各12.5%)にしかならないようです。 同じデータソースを使用することがボトルネックになるのではないかと心配していましたが、コアごとに基になるラスターファイルを複製しました... これは、ogrまたはgdalが何らかの形でボトルネックの共有リソースのように動作していると信じるようになりますが、それについてはオンラインで見つけることができません。どんな助けでも大歓迎です! これは、各ワーカースレッド内で実行される「ヘルパー」関数です。 def find_pixels_intersect_helper(datasource, bounds_wkt, x_min, x_max): bounds = ogr.CreateGeometryFromWkt(bounds_wkt) rows_to_write = [] for x_offset in range(x_min, x_max): for y_offset in range(datasource.RasterYSize): pxl_bounds_wkt = pix_to_wkt(datasource, x_offset, y_offset) pxl_bounds = ogr.CreateGeometryFromWkt(pxl_bounds_wkt) if pxl_bounds.Intersect(bounds): rows_to_write.append(['%s_%s' % (x_offset, y_offset), pxl_bounds.Centroid().ExportToWkt()])

2
.tfwで.tifをGeoTiffに変換しますか?
tifイメージファイルと、.tfwワールドファイル(OSMデータからMapertiveで作成)があります。(Linuxコマンドラインを使用して)どうすればそれをGeoTIFFファイルに変換できますか?(つまり、2つではなく1つのファイルが必要です)。私はそれがgdalまたは何かで可能だと確信しています。


4
「osgeo」という名前のモジュールはありません
GDALをインストールしてコマンドラインで確認したところ、正常に機能していて、コマンドラインでgdal2tiles.pyを実行すると機能しますが、Python IDLEで同じファイルgdal2tiles.pyを実行すると、「osgeoという名前のモジュールはありません。 「」エラー。お手伝いできますか?
13 python  gdal  osgeo  osgeo4w  pyqt4 

1
デフォルトとして常にBIGTIFF = YESを使用する必要がありますか?
私は、GDAL /プログラミング全般にあまり精通していない同僚のために、短いスクリプト/作業指示書を書くことがあります。 スクリプトでの問題を防ぐために、GDALでジオティフをマージ/変換するとき、使用するファイルサイズに関係なくBIGTIFF = YESオプションを使用するようにして、予期しないエラーがスクリプトのユーザーを混乱させないようにします。これを行うことに欠点はありますか? 特に4 GBを超えるGeoTIFFファイルが非常に一般的である今日では特に、デフォルトでBIGTIFFがオンにならないのはなぜですか?

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