

本文為英文版的機器翻譯版本，如內容有任何歧義或不一致之處，概以英文版為準。

# 搭配 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. 選擇**建立筆記本**。

您可以使用下面提供的程式碼啟動 EOJ，方法是搭配 SageMaker 地理空間影像使用 Amazon SageMaker Studio Classic 筆記本。

```
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 完成為止。

```
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 也簡化了資料集管理。我們可以使用任務 ARN 簡單地共用 EOJ 結果，而無需在 S3 儲存貯體中檢索數千個文件。每個 EOJ 都會成為資料型錄中的資產，因為結果可以依工作 ARN 分組。以下範例示範如何匯出 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)。