Creación de un trabajo de observación de la Tierra con un cuaderno de Amazon SageMaker Studio Classic con una imagen geoespacial de SageMaker - Amazon SageMaker AI

Creación de un trabajo de observación de la Tierra con un cuaderno de Amazon SageMaker Studio Classic con una imagen geoespacial de SageMaker

Para utilizar un cuaderno de SageMaker Studio Classic con una imagen geoespacial de SageMaker:

  1. En el Lanzador, seleccione Cambiar entorno en Cuadernos y recursos de computación.

  2. A continuación, se abrirá el cuadro de diálogo Cambiar entorno.

  3. Seleccione el menú desplegable Imagen y elija Geospatial 1.0. El Tipo de instancia debe ser ml.geospatial.interactive. No cambie los valores predeterminados de las demás opciones.

  4. Elija Seleccionar.

  5. Elija Crear cuaderno.

Puede iniciar un EOJ utilizando un cuaderno de Amazon SageMaker Studio Classic con una imagen geoespacial de SageMaker mediante el código que se proporciona a continuación.

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")

En el siguiente ejemplo se muestra cómo crear un EOJ en la región Oeste de EE. UU. (Oregón).

#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, )

Una vez creado el EOJ, se le devolverá el Arn. El Arn se utiliza para identificar un trabajo y realizar más operaciones. Para obtener el estado de un trabajo, puede ejecutar sg_client.get_earth_observation_job(Arn = response['Arn']).

En el siguiente ejemplo se muestra cómo consultar el estado de un EOJ hasta que se complete.

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"]

Una vez finalizado el EOJ, puede visualizar los resultados del EOJ directamente en el portátil. En el siguiente ejemplo se muestra cómo se puede renderizar un mapa interactivo.

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

El siguiente ejemplo muestra cómo se puede centrar el mapa en un área de interés y cómo la entrada y la salida del EOJ se pueden representar como capas independientes dentro del 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 )

Puede utilizar la función export_earth_observation_job para exportar los resultados de EOJ a su bucket de Amazon S3. La función de exportación hace que sea cómodo compartir los resultados entre los equipos. SageMaker AI también simplifica la administración de los conjuntos de datos. Simplemente podemos compartir los resultados del EOJ mediante el ARN del trabajo, en lugar de rastrear miles de archivos en el bucket de S3. Cada EOJ se convierte en un activo del catálogo de datos, ya que los resultados se pueden agrupar por el ARN del trabajo. El siguiente ejemplo muestra cómo se pueden exportar los resultados de un 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, )

Puede monitorear el estado de su trabajo de exportación mediante el siguiente fragmento 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"]}

No se le cobrarán las tarifas de almacenamiento después de eliminar el EOJ.

Para ver un ejemplo que muestra cómo ejecutar un EOJ, consulte esta entrada de blog.

Para ver más cuadernos de ejemplo sobre las capacidades de SageMaker geoespacial, consulte este repositorio de GitHub.