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

ラスターデータを使用する

Foundry では、メディアセットを使用して、ラスターデータの大規模な処理を標準機能として実行できます。カスタムの画像前処理や、メディアセットが現在対応していないファイル形式の処理には、ファイルレベルのトランスフォームも使用できます。

地理空間データの種類について詳しくはこちらをご覧ください。

データ形式とソース

メディアセットが対応しているラスターファイル形式:

  • TIFF / GeoTIFF
  • NITF
  • JPEG2000

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

  • PNG
  • JPEG

メディアセットでラスターデータを使用する

  1. 対応しているラスターファイル形式をメディアセットとしてインポートします。Data Connection またはローカルマシンからのアップロードで、新しいメディアセットを作成できます。メディアをインポートするさまざまな方法を確認してください。

  2. インポート後は、Media Reference を通じてメディアセットを利用できます。Pipeline Builder またはトランスフォームで Media Reference を選択します。

  3. Pipeline Builder 内のパイプライン出力として、または Ontology Manager で直接作成して、オントロジーにオブジェクトタイプを作成します。Media Reference プロパティのデータ型が Media Reference になっていること、および機能で元メディアセットを宣言していることを確認してください。これにより、プラットフォームがメディアアイテムの参照先と参照方法を認識できます。詳細については、オントロジーでのメディアの使用に関するドキュメントを参照してください。

Media Reference プロパティタイプ

Media Reference の機能のデータソース

オブジェクトタイプを作成したら、Map アプリケーションにインポートして表示できます。67メガバイト(MB)を超えるラスターファイルのマップ上での表示には対応していません。

Map 内のメディアセットを元にしたオブジェクトタイプ

トランスフォームでラスターデータを使用する

メディアセットが現在対応していないラスターファイル形式も、トランスフォームで処理できます。推奨ライブラリとコード例は、以下のセクションで確認できます。

トランスフォームは、メディアセットが対応しているファイル形式の前処理にも適しています。たとえば、以下の例のように、トランスフォームで MediaSetInput を使用して画像のサイズを更新し、MediaSetOutput でメディアセットを出力できます。メディアセットのバッチパイプラインの記述方法について詳しくはこちら。

Copied!
1 2 3 4 5 6 7 8 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 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()) map(process_file, files) return