

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# 地球観測ジョブ
<a name="geospatial-eoj"></a>

地球観測ジョブ (EOJ) を使用すると、地理空間データを取得、変換、視覚化して予測を行うことができます。さまざまな操作やモデルから、ユースケースに基づいて操作を選択できます。関心のある分野を選択したり、データプロバイダーを選択したり、時間範囲ベースやクラウドカバー率ベースのフィルターを柔軟に設定したりできます。SageMaker AI が EOJ を作成したら、可視化機能を使用してジョブの入力と出力を可視化できます。EOJ には、森林破壊の経時的な比較や植物の健康状態の診断など、さまざまな用途があります。SageMaker の地理空間画像を含む SageMaker ノートブックを使用して EOJ を作成できます。Amazon SageMaker Studio Classic UI の一部である SageMaker 地理空間 UI にアクセスして、すべてのジョブのリストを表示することもできます。UI を使用して、進行中のジョブを一時停止または停止することもできます。利用可能な EOJ のリストからジョブを選択して、**[ジョブ概要]**、**[ジョブの詳細]** を表示したり、**[ジョブの出力]** を視覚化したりできます。

**Topics**
+ [SageMaker 地理空間画像を含む Amazon SageMaker Studio Classic ノートブックを使用して地球観測ジョブを作成する](geospatial-eoj-ntb.md)
+ [操作タイプ](geospatial-eoj-models.md)

# SageMaker 地理空間画像を含む Amazon SageMaker Studio Classic ノートブックを使用して地球観測ジョブを作成する
<a name="geospatial-eoj-ntb"></a>

**SageMaker 地理空間画像を含む SageMaker Studio Classic ノートブックを作成するには、次の手順に従います。**

1. **[ランチャー]** の **[ノートブックとコンピューティングリソース]** で、**[環境の変更]** を選択します。

1. **[環境の変更]** ダイアログが開きます。

1. **[画像]** ドロップダウンを選択して、**[Geospatial 1.0]** を選択します。**[インスタンスタイプ]** は、**ml.geospatial.interactive** でなければなりません。他の設定はデフォルト値のままにします。

1. **[選択]** を選択します。

1. [**Create notebook (ノートブックの作成)**] を選択します。

以下に示すコードを使用して、SageMaker 地理空間画像を含む Amazon SageMaker Studio Classic ノートブックを使用して EOJ を開始します。

```
import boto3
import sagemaker
import sagemaker_geospatial_map

session = boto3.Session()
execution_role = sagemaker.get_execution_role()
sg_client = session.client(service_name="sagemaker-geospatial")
```

以下は、米国西部 (オレゴン) リージョンで EOJ を作成する方法の例です。

```
#Query and Access Data
search_rdc_args = {
    "Arn": "arn:aws:sagemaker-geospatial:us-west-2:378778860802:raster-data-collection/public/nmqj48dcu3g7ayw8",  # sentinel-2 L2A COG
    "RasterDataCollectionQuery": {
        "AreaOfInterest": {
            "AreaOfInterestGeometry": {
                "PolygonGeometry": {
                    "Coordinates": [
                        [
                            [-114.529, 36.142],
                            [-114.373, 36.142],
                            [-114.373, 36.411],
                            [-114.529, 36.411],
                            [-114.529, 36.142],
                        ]
                    ]
                }
            }
        },
        "TimeRangeFilter": {
            "StartTime": "2021-01-01T00:00:00Z",
            "EndTime": "2022-07-10T23:59:59Z",
        },
        "PropertyFilters": {
            "Properties": [{"Property": {"EoCloudCover": {"LowerBound": 0, "UpperBound": 1}}}],
            "LogicalOperator": "AND",
        },
        "BandFilter": ["visual"],
    },
}

tci_urls = []
data_manifests = []
while search_rdc_args.get("NextToken", True):
    search_result = sg_client.search_raster_data_collection(**search_rdc_args)
    if search_result.get("NextToken"):
        data_manifests.append(search_result)
    for item in search_result["Items"]:
        tci_url = item["Assets"]["visual"]["Href"]
        print(tci_url)
        tci_urls.append(tci_url)

    search_rdc_args["NextToken"] = search_result.get("NextToken")
        
# Perform land cover segmentation on images returned from the sentinel dataset.
eoj_input_config = {
    "RasterDataCollectionQuery": {
        "RasterDataCollectionArn": "arn:aws:sagemaker-geospatial:us-west-2:378778860802:raster-data-collection/public/nmqj48dcu3g7ayw8",
        "AreaOfInterest": {
            "AreaOfInterestGeometry": {
                "PolygonGeometry": {
                    "Coordinates": [
                        [
                            [-114.529, 36.142],
                            [-114.373, 36.142],
                            [-114.373, 36.411],
                            [-114.529, 36.411],
                            [-114.529, 36.142],
                        ]
                    ]
                }
            }
        },
        "TimeRangeFilter": {
            "StartTime": "2021-01-01T00:00:00Z",
            "EndTime": "2022-07-10T23:59:59Z",
        },
        "PropertyFilters": {
            "Properties": [{"Property": {"EoCloudCover": {"LowerBound": 0, "UpperBound": 1}}}],
            "LogicalOperator": "AND",
        },
    }
}
eoj_config = {"LandCoverSegmentationConfig": {}}

response = sg_client.start_earth_observation_job(
    Name="lake-mead-landcover",
    InputConfig=eoj_input_config,
    JobConfig=eoj_config,
    ExecutionRoleArn=execution_role,
)
```

EOJ が作成されると、`Arn` がユーザーに返されます。`Arn` を使用してジョブを識別し、さらに操作を実行します。ジョブのステータスを取得するには、`sg_client.get_earth_observation_job(Arn = response['Arn'])` を実行します。

次の例は、ジョブが完了するまで EOJ のステータスをクエリする方法を示しています。

```
eoj_arn = response["Arn"]
job_details = sg_client.get_earth_observation_job(Arn=eoj_arn)
{k: v for k, v in job_details.items() if k in ["Arn", "Status", "DurationInSeconds"]}
# List all jobs in the account
sg_client.list_earth_observation_jobs()["EarthObservationJobSummaries"]
```

EOJ が完了すると、EOJ 出力をノートブックで直接視覚化できます。次の例は、インタラクティブマップのレンダリングの例を示しています。

```
map = sagemaker_geospatial_map.create_map({
'is_raster': True
})
map.set_sagemaker_geospatial_client(sg_client)
# render the map
map.render()
```

次の例は、マップを対象地域の中央に配置し、EOJ の入力と出力をマップ内の別々のレイヤーとしてレンダリングする例を示しています。

```
# visualize the area of interest
config = {"label": "Lake Mead AOI"}
aoi_layer = map.visualize_eoj_aoi(Arn=eoj_arn, config=config)

# Visualize input.
time_range_filter = {
    "start_date": "2022-07-01T00:00:00Z",
    "end_date": "2022-07-10T23:59:59Z",
}
config = {"label": "Input"}

input_layer = map.visualize_eoj_input(
    Arn=eoj_arn, config=config, time_range_filter=time_range_filter
)
# Visualize output, EOJ needs to be in completed status.
time_range_filter = {
    "start_date": "2022-07-01T00:00:00Z",
    "end_date": "2022-07-10T23:59:59Z",
}
config = {"preset": "singleBand", "band_name": "mask"}
output_layer = map.visualize_eoj_output(
    Arn=eoj_arn, config=config, time_range_filter=time_range_filter
)
```

`export_earth_observation_job` 関数を使用して、EOJ の結果を Amazon S3 バケットにエクスポートできます。エクスポート機能は、チーム間で結果を共有する際に便利です。SageMaker AI は、データセットの管理も簡素化できます。S3 バケットの何千ものファイルをクローリングする代わりに、ジョブ ARN を使用して EOJ 結果を簡単に共有できます。結果はジョブ ARN ごとにグループ化できるため、各 EOJ はデータカタログのアセットになります。次の例は、EOJ の結果をエクスポートする方法を示しています。

```
sagemaker_session = sagemaker.Session()
s3_bucket_name = sagemaker_session.default_bucket()  # Replace with your own bucket if needed
s3_bucket = session.resource("s3").Bucket(s3_bucket_name)
prefix = "eoj_lakemead"  # Replace with the S3 prefix desired
export_bucket_and_key = f"s3://{s3_bucket_name}/{prefix}/"

eoj_output_config = {"S3Data": {"S3Uri": export_bucket_and_key}}
export_response = sg_client.export_earth_observation_job(
    Arn=eoj_arn,
    ExecutionRoleArn=execution_role,
    OutputConfig=eoj_output_config,
    ExportSourceImages=False,
)
```

次のスニペットを使用して、エクスポートジョブのステータスを監視できます。

```
# Monitor the export job status
export_job_details = sg_client.get_earth_observation_job(Arn=export_response["Arn"])
{k: v for k, v in export_job_details.items() if k in ["Arn", "Status", "DurationInSeconds"]}
```

EOJ を削除した後は、ストレージ料金は請求されません。

EOJ の実行方法を紹介する例については、こちらの[ブログ記事](https://aws.amazon.com/blogs/machine-learning/monitoring-lake-mead-drought-using-the-new-amazon-sagemaker-geospatial-capabilities/)を参照してください。

SageMaker の地理空間機能に関する他のノートブックについては、この [GitHub リポジトリ](https://github.com/aws/amazon-sagemaker-examples/tree/main/sagemaker-geospatial)を参照してください。

# 操作タイプ
<a name="geospatial-eoj-models"></a>

EOJ を作成する際は、ユースケースに基づいて操作を選択します。Amazon SageMaker の地理空間機能では、専用の操作と事前にトレーニングされたモデルを組み合わせることができます。これらの操作を使用して、時間の経過に伴う環境変化や人間活動の影響を把握したり、雲や雲のないピクセルを特定したりできます。

**クラウドマスキング**

衛星画像内の雲を識別することは、高品質の地理空間データを生成するための重要な前処理手順です。雲のピクセルを無視すると分析でエラーが発生する可能性があり、雲のピクセルを過剰に検出すると有効な観測の数が減少する可能性があります。クラウドマスキングでは、衛星画像内の曇のピクセルや雲のないピクセルを識別できます。正確なクラウドマスクは、衛星画像の処理に役立ち、データ生成の効率も向上します。クラウドマスキングのクラスマップを以下に示します。

```
{
0: "No_cloud",
1: "cloud"
}
```

**クラウド除去**

Sentinel-2 データのクラウド除去では、機械学習ベースのセマンティックセグメンテーションモデルを使用して画像内の雲を識別します。曇ったピクセルは、他のタイムスタンプのピクセルに置き換えることができます。USGS Landsat データには、クラウドの削除に使用される Landsat メタデータが含まれています。

**時系列統計**

時系列統計は、時間の経過に伴う地理空間データの統計を計算します。現在サポートされている時系列統計には、平均、中央値、標準偏差が含まれます。これらの統計情報は `GROUPBY` を使用して計算でき、`all` または `yearly` に設定できます。`TargetBands` に言及することもできます。

**ゾーン統計**

ゾーン統計は、画像上の指定された領域に対して統計処理を実行します。

**再サンプリング**

再サンプリングは、地理空間画像の解像度をアップスケールまたはダウンスケールするために使用されます。再サンプリングにおける `value` 属性は、ピクセルの一辺の長さを表します。

**ジオモザイク**

ジオモザイクを使用して、小さい画像を大きな画像につなぎ合わせることができます。

**バンドスタッキング**

バンドスタックは、複数の画像バンドを入力として受け取り、それらを 1 つの GeoTIFF にスタックします。`OutputResolution` 属性は出力画像の解像度を決定します。入力画像の解像度に基づいて、`lowest`、`highest`、または `average` に設定できます。

**バンド演算**

バンド演算はスペクトルインデックスとも呼ばれ、観測値を複数のスペクトルバンドから単一のバンドに変換するプロセスです。これにより、対象となる地物の相対的な量がわかります。例えば、正規化植生差指数 (NDVI) と拡張植生指数 (EVI) は、緑の植生地物の存在を観察するのに役立ちます。

**土地被覆セグメンテーション**

土地被覆セグメンテーションは、地表の植生、水、裸地などの物理的物質を識別できるセマンティックセグメンテーションモデルです。土地被覆パターンを正確にマッピングすることで、時間の経過に伴う環境変化や人間活動の影響の理解に役立ちます。一般的に土地被覆セグメンテーションは、地域計画、災害対応、生態系管理、環境影響評価に使用されます。土地被覆セグメンテーションのクラスマップを以下に示します。

```
{
0: "No_data",
1: "Saturated_or_defective",
2: "Dark_area_pixels",
3: "Cloud_shadows",
4: "Vegetation",
5: "Not_vegetated",
6: "Water",
7: "Unclassified",
8: "Cloud_medium_probability",
9: "Cloud_high_probability",
10: "Thin_cirrus",
11: "Snow_ice"
}
```

## EOJ 操作の可用性
<a name="geospatial-eoj-models-avail"></a>

使用できる操作は、SageMaker 地理空間 UI を使用しているか、SageMaker 地理空間画像を含む Amazon SageMaker Studio Classic ノートブックを使用しているかによって異なります。現在、ノートブックはすべての機能をサポートしています。SageMaker AI でサポートされている地理空間操作のまとめは以下のとおりです。


| オペレーション |  説明  |  利用可能な状況  | 
| --- | --- | --- | 
| クラウドマスキング | 雲のピクセルと雲のないピクセルを識別して、改善された正確な衛星画像を取得します。 | UI、ノートブック | 
| クラウド除去 | 雲の一部を含むピクセルを衛星画像から削除します。 | ノートブック | 
| 時系列統計 | 特定の GeoTIFF の時系列統計を計算します。 | ノートブック | 
| ゾーン統計 | ユーザー定義リージョンの統計情報を計算します。 | ノートブック | 
| 再サンプリング | 画像をさまざまな解像度にスケーリングします。 | ノートブック | 
| ジオモザイク | 複数の画像を組み合わせて画像の精度を上げます。 | ノートブック | 
| バンドスタッキング | 複数のスペクトルバンドを組み合わせて 1 つの画像を作成します。 | ノートブック | 
| バンド演算/スペクトルインデックス | 対象となる特徴の量を示すスペクトルバンドの組み合わせを求めます。 | UI、ノートブック | 
| 土地被覆セグメンテーション | 衛星画像から植生や水などの土地被覆タイプを特定します。 | UI、ノートブック | 