Crie um trabalho de observação da terra usando um caderno do Amazon SageMaker Studio Classic com uma imagem geoespacial do SageMaker
Criar um caderno do SageMaker Studio Classic com uma imagem geoespacial do SageMaker:
No Inicializador, escolha Alterar ambiente em Cadernos e recursos de computação.
Em seguida, o diálogo Alterar ambiente é aberto.
Selecione a lista suspensa Imagem e escolha ou Geoespacial 1.0. O tipo de instância deve ser ml.geospatial.interactive. Não altere os valores padrão das outras configurações.
Escolha Selecionar.
Escolha Criar caderno.
Você pode iniciar um EOJ usando um caderno do Amazon SageMaker Studio Classic com uma imagem geoespacial do SageMaker usando o código fornecido abaixo.
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")
O exemplo a seguir mostra como criar um EOJ na região Oeste dos EUA (Oregon).
#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, )
Depois que seu EOJ for criado, o Arn
será devolvido a você. Você usa o Arn
para identificar um trabalho e realizar outras operações. Para obter o status de uma tarefa, você pode executar sg_client.get_earth_observation_job(Arn = response['Arn'])
.
O exemplo a seguir mostra como consultar o status de um EOJ até que seja concluído.
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"]
Depois que o EOJ for concluído, você poderá visualizar as saídas do EOJ diretamente no caderno. O exemplo a seguir mostra como um mapa interativo pode ser renderizado.
map = sagemaker_geospatial_map.create_map({ 'is_raster': True }) map.set_sagemaker_geospatial_client(sg_client) # render the map map.render()
O exemplo a seguir mostra como o mapa pode ser centralizado em uma área de interesse e a entrada e saída do EOJ podem ser renderizadas como camadas separadas dentro do mapa.
# 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 )
Você pode usar a função export_earth_observation_job
para exportar os resultados do EOJ para o bucket do Amazon S3. A função de exportação facilita compartilhar resultados entre as equipes. O SageMaker também simplifica o gerenciamento de conjuntos de dados. Podemos simplesmente compartilhar os resultados do EOJ usando o ARN do trabalho, em vez de realizar crawling em milhares de arquivos no bucket do S3. Cada EOJ se torna um ativo no catálogo de dados, pois os resultados podem ser agrupados por ARN do trabalho. O exemplo a seguir mostra como exportar os resultados de um 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, )
Monitore o status da tarefa de exportação usando o seguinte trecho de código:
# 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"]}
As taxas de armazenamento não são cobradas após a exclusão do EOJ.
Para ver um exemplo que mostra como executar um EOJ, consulte esta postagem no blog
Para ver mais exemplos de cadernos sobre os recursos geoespaciais do SageMaker, consulte este repositório do GitHub