

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

# SageMaker 지리 공간 이미지와 함께 Amazon SageMaker Studio Classic 노트북을 사용하여 지구 관측 작업 만들기
<a name="geospatial-eoj-ntb"></a>

**SageMaker Studio Classic 노트북을 SageMaker 지리 공간 이미지와 함께 사용하는 방법:**

1. **런처**의 **노트북 및 컴퓨팅 리소스**에서 **환경 변경**을 선택합니다.

1. 다음으로 **환경 변경** 대화 상자가 열립니다.

1. **이미지** 드롭다운을 선택하고 **지리 공간** 1.0을 선택합니다. **인스턴스 유형**은 **ml.geospatial.interactive**이어야 합니다. 다른 설정의 기본값을 변경하지 마세요.

1. **선택**을 선택하세요.

1. **노트북 생성**을 선택합니다.

아래 제공된 코드를 사용하여 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의 상태를 쿼리하는 방법을 보여줍니다.

```
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)를 참조하세요.