注: 以下の翻訳の正確性は検証されていません。AIPを利用して英語版の原文から機械的に翻訳されたものです。

ラスターデータの使用

Foundry は、メディアセット を使用してラスターデータの大規模な処理を一流の方法で可能にします。カスタム画像の前処理や、現在メディアセットでサポートされていないファイル形式の処理には、ファイルレベルのトランスフォーム もサポートされています。

さまざまな種類の地理空間データについてさらに詳しく学びましょう。

データ形式とソース

サポートされているメディアセットのラスターファイル形式:

  • TIFF / GeoTIFF
  • NITF
  • JPEG2000

ファイルレベルでのみ処理できるその他のラスターファイル形式:

  • PNG
  • JPEG

メディアセットを使用したラスターデータの使用

  1. サポートされているラスターファイル形式をメディアセットとしてインポートします。データ接続経由またはローカルマシンのアップロードを通じて新しいメディアセットを作成できます。メディアをインポートするさまざまな方法を学びましょう。

  2. インポートが完了したら、メディアセットをメディアリファレンスを通じて活用できます。Pipeline Builder または Transforms を通じてメディアリファレンスを選択します。

  3. オントロジーでオブジェクトタイプを作成します。Pipeline Builder 内でパイプライン出力として、または Ontology Manager で直接作成します。オブジェクトタイプにメディアリファレンスタイプのメディアリファレンスプロパティを持たせ、Capabilities でバックメディアセットを宣言してプラットフォームがメディアアイテムをどこでどのようにリファレンスするかを認識できるようにします。

メディアリファレンスプロパティタイプ

メディアリファレンスの能力データソース

オブジェクトタイプが作成されたら、Map アプリケーションにインポートして表示できます。67メガバイト(MB)を超えるラスターファイルを地図に表示することはサポートされていません。

Maps でのメディアセットを利用したオブジェクトタイプ

トランスフォームでのラスターデータの使用

メディアセットで現在サポートされていないラスターファイルタイプについては、トランスフォームで処理することができます。推奨されるライブラリとコード例は、以下のセクションで確認できます。

トランスフォームは、サポートされているメディアセットファイルタイプの前処理にも理想的です。たとえば、MediaSetInput を使用して画像のサイズを更新し、以下の例のように MediaSetOutput を使用してメディアセットを出力することができます。メディアセットバッチパイプラインの書き方についてさらに学びましょう

Copied!
1 2 3 4 5 6 7 8 9 10 from transforms.api import transform from transforms.mediasets import MediaSetInput, MediaSetOutput # 画像変換関数のデコレータ @transform( images=MediaSetInput('/examples/images'), # 入力画像のパス output_images=MediaSetOutput('/examples/output_images') # 出力画像のパス ) def translate_images(images, output_images): ...

推奨される Python ライブラリ

Foundry でラスター データを処理するために使用できる一般的なオープンソース ライブラリがいくつかあります。これには、次のものが含まれます。

コード例

Rasterio を使用してデータセットから GeoTIFF ファイルを開く

Copied!
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 from transforms.api import transform, Input, Output, FileSystem import rasterio import tempfile import shutil import math @transform( output=Output("OUTPUT_DATASET"), my_input=Input("INPUT_DATASET"), ) def my_compute_function(output, my_input): def process_file(file_status): # 一時ファイルを使ってファイルをダウンロードし、Imageが正しく開けるようにします with tempfile.NamedTemporaryFile() as tmp: # 入力ファイルシステムからファイルを開き、一時ファイルにコピー with my_input.filesystem().open(file_status.path, 'rb') as f: shutil.copyfileobj(f, tmp) tmp.flush() # rasterioを使ってファイルを開く with rasterio.open(tmp.name, driver='GTiff') as dataset: """ rasterioのロジックをここに記述 """ # 入力ファイルシステムのファイルリストを取得 files = list(my_input.filesystem().ls()) # 各ファイルに対してprocess_file関数を適用 map(process_file, files) return