SageMaker 地理空間イメージで Amazon SageMaker Studio Classic ノートブックを使用して地球観測ジョブを作成する - Amazon SageMaker

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

SageMaker 地理空間イメージで Amazon SageMaker Studio Classic ノートブックを使用して地球観測ジョブを作成する

SageMaker 地理空間イメージで SageMaker Studio Classic ノートブックを使用するには:

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

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

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

  4. [選択] を選びます。

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

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_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 また、 はデータセット管理も簡素化します。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 の実行方法を紹介する例については、こちらのブログ記事を参照してください。

SageMaker 地理空間機能に関するノートブックの例については、このGitHub リポジトリ「」を参照してください。