PythonのみのツールでNational Elevationデータセット(ArcGrid / GridFloat / IMG)を読み取りますか?


10

USGSが提供するNational Elevation Datasetから高精度の標高(1/3-1/9アーク秒の解像度)データを見つけました。これは、int IMG、Arcgrid、およびGridFloat形式で提供されます。ArcGridが有料のソフトウェアパッケージに対応していることは知っていますが、無料で入手できるツールを使用することに専念しています。

地上レベルと相関させようとしているGPSデータがあります。

IMG、ArcGrid、またはGridFloat形式のデータファイルを使用してgpsデータを高度に変換できるpythonライブラリはありますか?

回答:


7

Pythonで直接IMGファイルを操作することは、GDALバインディングを使用すると簡単です。たとえば、データを直接NumPy配列に読み込むことができます。

from osgeo import gdal
geo = gdal.Open('imgn36w100_11.img')
arr = geo.ReadAsArray()
print repr(arr)
array([[ 744.31896973,  743.68762207,  743.1116333 , ...,  550.42498779,
         553.77813721,  556.18640137],
       [ 744.22955322,  743.66082764,  743.05273438, ...,  552.05706787,
         554.81365967,  557.55877686],
       [ 744.0133667 ,  743.49041748,  743.00061035, ...,  553.0123291 ,
         555.78076172,  558.01312256],
       ...,
       [ 568.70880127,  567.33666992,  566.56170654, ...,  447.68035889,
         447.68804932,  447.65426636],
       [ 568.01116943,  566.95739746,  564.23382568, ...,  447.6696167 ,
         447.71224976,  447.62734985],
       [ 565.62896729,  562.65325928,  560.78759766, ...,  447.67129517,
         447.67529297,  447.65179443]], dtype=float32)

IMG形式のデータをプロットするより完全な例については、以下の画像を生成したこのスクリプトを参照してください。GPSデータを高度に変換するには、結果のNumPy配列をサンプリングする必要があります。

ここに画像の説明を入力してください


4

National Map Viewerは以前は別のソフトウェアプラットフォームを使用していたため、タイルを選択した後でデータをGeoTIFFに変換することができました。一部の地域データプロバイダーは、GeoTIFFも優先しています。しかし、それはあなたにとって役に立たないかもしれません。

ただし、朗報はgdal、これらの3つの形式すべてで機能することです。ArcGridは、ESRIバイナリ形式、GridFloat USGSのDEMデータ形式、およびImagineソフトウェアを作っているErdas独自のIMGです。おそらく、ArcGridまたはIMG形式をダウンロードしてGeoTIFFに変換します。USGS自体には、gdal ダウンロード用の変換スクリプトのバンドルがありますZIPファイルへの直接リンク)。そこで必要なリソースを見つける必要があります。


リンクと言及GDALのためのおかげで、それは非常に便利になります
abnowack

0

.imgファイルが-infを空白の値として使用したため、ケルシーの答えは最初はうまくいきませんでした。

私は次の行を追加してこれを解決しました:

topo[topo<-1000] = 0

1
これは元の質問に対する回答ではありません。おそらく、承認された回答に対する編集である必要があります
nmtoken
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.