Novedades SIG

cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 

Other Boards in This Place


Latest Activity

(11 Posts)
CamiloMolano
Esri Contributor

Trabajar con imágenes satelitales puede resultar una tarea sumamente compleja considerando la gran cantidad de peso y almacenamiento que ocupan en nuestros equipos. Por ejemplo, una sola escena Landsat puede ocupar hasta 2 GB, lo que se vuelve una carga importante cuando necesitamos procesar múltiples escenas para realizar análisis multitemporales o mosaicos regionales. Esto no solo compromete el almacenamiento local, sino también el rendimiento de nuestros equipos.

Para abordar este reto, ArcGIS pro incluye desde la versión 3.2 la interfaz STAC (SpatioTemporal Asset Catalog) para conectarse directamente a colecciones satelitales disponibles. Esta interfaz permite, explorar sus recursos y consumirlos sin necesidad de descarga local, en otras palabras puedes consultar desde ArcGIS Pro directamente en la nube, lo que permite realizar análisis avanzados sin comprometer el almacenamiento de nuestros equipos.

Ahora bien, muchas de estas colecciones se encuentran almacenadas en servicios de nube como Microsoft Azure, Amazon S3, o Google Cloud, y algunos de estos conjuntos de datos están protegidos por credenciales o tokens. Para que ArcGIS Pro pueda acceder a ellos, es necesario configurar un archivo llamado ACS (ArcGIS Cloud Storage connection file), el cual contiene los parámetros de conexión y autenticación.

Algunas colecciones públicas, como Sentinel-2 L2A del catálogo Earth Search de AWS, no requieren ACS porque sus datos están en almacenamiento abierto. Sin embargo, otras como Landsat o NAIP sí requieren autenticación, ya sea mediante tokens SAS (Azure) o credenciales AWS.


Creación de archivos ACS para acceder a datos STAC de Microsoft Planetary Computer.

ArcGIS proporciona una herramienta específica de geoprocesamiento llamada Create Cloud Storage Connection File, que permite generar estos archivos ACS con los parámetros adecuados según el proveedor.

Para acceder a las colecciones STAC de MPC (Microsoft Planetary Computer), primero debes obtener dos valores esenciales: el nombre de la cuenta de almacenamiento y el contenedor donde se encuentran los datos. Estos valores pueden encontrarse consultando el catálogo de datos de MPC. Por ejemplo, al revisar la colección Landsat Collection 2 Level-2, dentro de su archivo STAC en formato JSON encontrarás los campos msft:storage_account (ej. landsateuwest) y msft:container (ej. landsat-c2).

Con esta información, se genera la URL que permite obtener el token de acceso a la nube. Esta URL tiene la siguiente estructura:
https://planetarycomputer.microsoft.com/api/sas/v1/token/{storage_account}/{container}

Sustituyendo los valores del ejemplo, obtendrás:
https://planetarycomputer.microsoft.com/api/sas/v1/token/landsateuwest/landsat-c2

Ahora puedes abrir la herramienta de ArcGIS Pro para crear archivos de conexión y configurar por ejemplo los siguientes campos:
       • Ubicación del archivo: C:\temp
       • Nombre del archivo: landsat2mpc.acs
       • Proveedor de servicio: Azure
       • Access Key ID: landsateuwest
       • Nombre del contenedor: landsat-c2
       • Opciones del proveedor:
                      o Tipo de token (ARC_TOKEN_OPTION_NAME): AZURE_STORAGE_SAS_TOKEN
                      o URL del token (ARC_TOKEN_SERVICE_API): la URL generada
                      o Exploración profunda (ARC_DEEP_CRAWL): NO
Al ejecutar esta herramienta, se creará el archivo ACS que te permitirá acceder de forma segura a los datos desde ArcGIS Pro.

CamiloMolano_0-1747433230111.png

Remover nubes y sombras con la banda QA (Quality Assessment)

Uno de los obstáculos más frecuentes al analizar imágenes satelitales es la presencia de nubes y sombras proyectadas, las cuales pueden ocultar información crítica de la superficie terrestre. Esta condición no solo limita la visibilidad de detalles importantes, sino que también afecta la consistencia de análisis multitemporales. Este problema es especialmente común en regiones tropicales o durante épocas de alta humedad, donde obtener una imagen libre de nubes puede ser difícil. Para abordar esta limitación, podemos valernos de algunas bandas que nos permitan realizar un enmascaramiento y eliminación de nubes como es el caso de las imágenes Landsat 8 y 9, cuya banda de control de calidad permite identificar estas obstrucciones de manera automática y sistemática.

Cada imagen Landsat incluye una banda QA que contiene información codificada en bits sobre la calidad de cada píxel. Al descomponer estos bits, es posible identificar y enmascarar aquellos píxeles que están cubiertos por nubes o sombras. A continuación, se muestra cómo aplicar esta lógica en ArcPy dentro de una colección raster:

def limpiar_nubes(item):
imagen = item["Raster"]
bandas_visibles = ExtractBand(imagen, [1, 2, 3, 4, 5, 6, 7]) # bandas espectrales
banda_qa = ExtractBand(imagen, [9]) # banda de calidad
mascara = TransposeBits(banda_qa, [0, 1, 2, 3, 4], [0, 1, 2, 3, 4], 0, None)
imagen_limpia = Clip(bandas_visibles, mascara)
return {
"raster": imagen_limpia,
"name": item["Name"],
"variable": item["Tag"],
"stdtime": item["AcquisitionDate"]
}
# Aplicar la función de limpieza a cada imagen de la colección
coleccion_limpia = rc.map(limpiar_nubes)

Una vez que se han eliminado las nubes, es posible sintetizar una imagen representativa a partir de varias fechas. Para ello, se usa la función de Geometric Median , que identifica el valor espectral más característico en cada píxel, reduciendo el efecto de valores atípicos.

from arcpy.ia import GeometricMedian
composite = GeometricMedian(
coleccion_limpia,
epsilon=0.001,
max_iteration=20,
extent_type="UnionOf",
cellsize_type="FirstOf"
)
composite.save(r"C:\output\imagen_sin_nubes.crf")

Para mayor información acerca de la creación de archivos de conexión a la nube y generación de una composición de imágenes libre de nubes, puedes visitar los siguientes enlaces:

https://pro.arcgis.com/en/pro-app/latest/help/data/imagery/create-a-cloudstorage-connection.htm

https://www.esri.com/arcgis-blog/products/arcgis-pro/analytics/altimetry-dataand-image-analysis

 

 

more
1 0 177
Edison_AndresLopez
Esri Contributor

Cuando se es administrador en una organización de ArcGIS Online hay un tema que siempre es de sumo cuidado y es el consumo de créditos. Recordemos que "los créditos son la moneda que se utiliza en ArcGIS y que se consumen para determinadas transacciones y tipos de almacenamiento como, por ejemplo, almacenar entidades, realizar análisis y utilizar contenido Premium."

Cuando se ingresa a ArcGIS Online y uno se dirige a la pestaña de Organización>Status es normal encontrarnos con una sección donde se muestra un dashboard con el consumo general de créditos y también la opción de generar reportes.

 

Edison_AndresLopez_0-1743401156368.png

 

Para una administración general de una organización estas opciones predispuestas son más que suficientes para tener un conocimiento del consumo de créditos. Pero existen casos como en la cuenta de ArcGIS Online del Semillero en que tenemos usuarios asignados a proyectos específicos y requerimos determinar el consumo de créditos semanal para determinar los costos en esta moneda de dicho proyecto.

Ante esta necesidad y ver que los reportes que genera ArcGIS Online no dan esta precisión, profesionales del semillero crearon un Script en Jupyter Notebook usando la API de ArcGIS para Python para calcular el consumo de créditos de almacenamiento semanal relacionado a un usuario específico y su contenido alojado. 

A continuación les comparto los pasos del scritp para su ejecución:

Edison_AndresLopez_1-1743401999390.pngSe requieren el modulo de ArcGIS para acceder a la cuenta de ArccGIS Online y Pandas para manipular los datos que se van a consultar.

 

Edison_AndresLopez_2-1743402301073.pngSe ingresa el usuario administrador y la url de la organización de ArcGIS Online, se te solicitará ingresar la contraseña de acceso.

 

Edison_AndresLopez_3-1743402659082.pngSe asigna el usuario del cual se desea obtener el consumo de créditos.

Edison_AndresLopez_4-1743402782076.pngSe itera en el contenido del usuario a consultar y por cada item se obtiene el consumo aplicando unas fórmulas.

Edison_AndresLopez_5-1743403042855.pngPor último se crea el DataFrame y se almacena en un archivo Excel como reporte.

Con estos 5 pasos y aplicando la API de ArcGIS para Python es que se logra generar el reporte particular de consumo de créditos semanal de un usuario en particular dentro de una organización de ArcGIS Online.

Para mí es grato compartir con ustedes las herramientas y proyectos que desde el Semillero de Innovación Geográfica de Esri Colombia van siendo construidas gracias al equipo multidisciplinar que lo compone. 

Y por último el código completo:

from arcgis.gis import GIS
import pandas as pd

user = 'your_username'
print("ArcGIS Online")    
gis = GIS("https://your_organization_name.maps.arcgis.com/home",user)
print("Logged in as " + user + " to " + gis.properties.portalName)

#Remplazar el parametro de busqueda por el nombre del usuario deseado.
#Dejar en blanco el parametro si se desea consultar la organización
esri_accounts = gis.users.search('user_to_check')
print(esri_accounts)

data = []
total = 0
for account in esri_accounts:
    my_content = gis.content.search(query="owner:" + account.username, max_items=6000)
    itemsHosted = [item for item in my_content if 'Hosted Service' in item.typeKeywords]
    itemsHosted.sort(key=lambda x: x.size, reverse=True)
    size = 0
    for item in itemsHosted:
        size += (item.size/1000000)
        row = [account.username, item.title, (item.size/1000000), (item.size/1000000)*0.061883]  
        data.append(row)
        print(row)
    row = [account.username, "Total", size, size*0.061883]
    data.append(row)
    print(row)

# Create the pandas DataFrame
df = pd.DataFrame(data, columns=['User', 'Item', 'Size', 'Weekly estimated credits'])
print(df)
#Remplazar la ruta de salida
df.to_excel("D:\Descargas\output_credits.xlsx") 

 

Para mayor información acerca de los créditos visita este enlace: https://doc.arcgis.com/es/arcgis-online/administer/credits.htm 

 

 

 

 

 

 

 

 

more
9 1 320
Joffre_Quinteros
Esri Contributor

¿Qué son los webhooks?

Los webhooks son una forma de comunicación entre aplicaciones que permite enviar notificaciones o datos automáticamente cuando ocurre un evento específico.En el contexto de ArcGIS Online, los webhooks pueden activarse cuando se crean, actualizan o eliminan elementos, lo que permite integraciones automatizadas con otras plataformas, como Microsoft Teams.

Escenario

Supongamos que tenemos un tablero de control en donde tenemos embebido un formulario de Survey123 que nos permite realizar la asignación de una actividad a un usuario en especifico y queremos que el usuario reciba la notificacion de la asignación a través de  Microsoft Teams.

¿Qué necesito para lograrlo?

La creación de los webhooks se puede hacer a través del uso de aplicaciones de terceros. Entre los mas usados tenemos Microsoft Power Automate, Zapier o Make. Y ArcGIS ya tiene conectores de webhooks preestablecidos para aplicativos como Survey123 y Quick Capture. Para resolver el escenario se va a utilizar Power Automate y ArcGIS Online.

Flujo de trabajo y explicación

Joffre_Quinteros_0-1740170292649.png

1. Tenemos un formulario de Survey123 llamado Actividades GIS y desde Power Automate se crea el conector y se crea el webhook para que cada vez que se envíe el formulario se active el flujo.

2. Vamo a trabajar con 3 personas por lo que creamos un condicional para que cada vez que se envie al usuario1 caso contrario entra al siguiente condicional si es para el usuario 2 se ejecuta sino continua, y asi sucesivamente

3. Se utiliza el componente Publicar tarjeta en un canal o chat para establecer la notificacion

4. Se revisa las notificaciones en microsoft Teams y se puede abrir el hipervinculo a un producto de ArcGIS ya sea en la web o dentro de Teams.

¿Cual es el paso a paso?

1. Para este escenario tenemos ya creado un formulario de Survey123 que esta embebido en un tablero de control que nos sirve para asignar tareas. Nota: Si quiere mas información de este flujo se implemento usando el solucion de GIS Request Management)

Joffre_Quinteros_0-1740171061024.png

2. Ahora nos dirigimos a Power Automate y seleccionamos plantillas. En el buscador escribimos Survey123 y seleccionamos la primera opción de enviar un correo electrónico (esta es una plantilla, posteriormente se modificará)

Joffre_Quinteros_1-1740171223965.png

Nota: Dar los permisos necesarios para trabajar

3. Se procede a eliminar el conector llamado "Send a Email" ya que no vamos a usarlo.

4. Dar clic en el elemento llamado When a survey response is submitted para proceder a configurarlo. La clave es dejarle en Sí en incluir informacion de la encuesta y en la lista desplegable seleccionar el nombre de la encuesta. 

Joffre_Quinteros_2-1740171448888.png

Ojo, si no aparece el nombre de la encuesta colocar el ID de la encuesta que se encuentra en la url.

Joffre_Quinteros_3-1740171589316.png

5. Se procede a dar clic en el más y se selecciona condición 

Joffre_Quinteros_4-1740171733107.png

y en la configuración se procede a colocar los campos provenientes del formulario en este caso debe cumplir con los dos criterios la primera es que este asignado y la segunda es el nombre de la persona a la que se quiere asignar en este caso mi nombre 

Joffre_Quinteros_5-1740171821277.png

6. Ahora si vamos a crear la condicion para verdadero. En este caso damos clic en más y se sugiere buscar en los elementos la opcion de Microsoft Teams (no hacerlo por busqueda de nombre que no aparecen todas las opciones) y buscamos la opción de publicar tarjeta en un chat o canal

Joffre_Quinteros_6-1740172080328.png

7. Para la configuración del elemento tenemos lo siguiente: Seleccionamos Bot de flow para que este vinculado a un bot. Para poder personalizar el mensaje a través de una tarjeta se usó un jason que esta detallado a continuación:

Joffre_Quinteros_7-1740172137872.png

Lo que hace el Script es la creación de una tarjeta en .json y hay 4 puntos claves:

En la línea 15 se trae el atributo del survey123 nombre de la persona asignada

En la línea 23 se trae el atributo del survey123 con la urgencia

En la línea 27 se trae el atributo del survey123 del tiempo estimado 

En la línea 43 se incluye la url de un tablero de control para que puedan ver las asignaciones y progresos. Se puede colocar solamente la url para que se abra en un navegador. En este caso esta configurado para que se despliegue en tablero de control dentro del mismo Teams a través del plugin de ArcGIS para Teams. ¡No te parece fantástico!

 

{
  "$schema": "http://adaptivecards.io/schemas/adaptive-card.json",
  "type": "AdaptiveCard",
  "version": "1.4",
  "body": [
    {
      "type": "TextBlock",
      "text": "Nueva Asignación",
      "weight": "Bolder",
      "size": "Large",
      "color": "Accent"
    },
    {
      "type": "TextBlock",
      "text": "Se ha creado una nueva asignación asignada a: **@{triggerOutputs()?['body/feature/attributes/businessunit']}**.",
      "wrap": true
    },
    {
      "type": "FactSet",
      "facts": [
        {
          "title": "Importancia Alta:",
          "value": "@{triggerOutputs()?['body/feature/attributes/urgent']}"
        },
        {
          "title": "Tiempo estimado (horas):",
          "value": "@{triggerOutputs()?['body/feature/attributes/plannedeffort']}"
        }
      ]
    },
    {
      "type": "TextBlock",
      "text": "Por favor, revisa el siguiente tablero para más detalles.",
      "wrap": true
    },
    {
      "type": "ActionSet",
      "actions": [
        {
          "type": "Action.OpenUrl",
          "title": "Abrir Tablero en ArcGIS for Teams",
          "url": "https://teams.microsoft.com/l/entity/ba4eda44-cd55-4e15-855c-0debafb0490b/viewer?context=%7B%22subEntityId%22:%22itemId---866de69cbad64b4b9046b81102f86390___itemSubTypes---Dashboard___isAGOLPublicItem---false%22%7D"
        }
      ]
    }
  ]
}

 

8. Y en falso se coloca nuevamente el paso 5 al 7 pero se cambia la persona a la que se asigna en el condicional.

9. Se procede a guardar y ejecutar y ahora es tiempo de ¡ponerlo en acción!

Resultados

Desde el tablero de control usando el Survey123 se envía la asignacion con el nombre y el estado 

Joffre_Quinteros_8-1740172682922.png

Joffre_Quinteros_9-1740172710640.png

En power Automate podemos validar que se ha ejecutado correctamente

Joffre_Quinteros_10-1740172787918.png

Podemos ver como en Microsoft Teams nos llega la notificación

Joffre_Quinteros_11-1740172890601.png

Y si damos clic en Abrir tablero en ArcGIS for Teams podemos visualizar el tablero de control dentro de Teams

Joffre_Quinteros_12-1740172984691.png

¡Ahora es momento de ponerlo a prueba!

 

 

more
1 0 323
Joffre_Quinteros
Esri Contributor

Service Object Interceptors (SOI): El superpoder oculto de ArcGIS Server

Read more...

more
1 0 402
XanderBakker
Esri Esteemed Contributor

En este blog se comparte un ejemplo de cómo se pueden procesar datos obtenidos con una pregunta de selección múltiple en Survey123 usando una expresión de datos en Arcade.

Read more...

more
5 3 922
XanderBakker
Esri Esteemed Contributor

En este blog compartiremos ejemplos de realizar análisis con Arcade y luego usar los datos para crear un gráfico en la ventana emergente de un mapa web.

Read more...

more
4 0 512
XanderBakker
Esri Esteemed Contributor

En este blog compartiremos un ejemplo de realizar un análisis con Arcade para crear visualizaciones atractivas en la ventana emergente de un mapa web.

Read more...

more
2 0 406
XanderBakker
Esri Esteemed Contributor

En este blog compartiremos un ejemplo de Arcade para crear visualizaciones atractivas en la ventana emergente de un mapa web.

Read more...

more
3 0 481
XanderBakker
Esri Esteemed Contributor

Hace poco fueron introducidos nuevos tipos de campos nuevos como la de DateOnly (fecha solamente). Con la actualización de ArcGIS Online esta semana ArcGIS Dashboards todavía no reconoce estos campos y no permite crear visualización con este nuevo campo.

En este blog compartiremos una manera para usar estos datos en el tablero aprovechando las expresiones de datos con Arcade. 

Read more...

more
2 1 656
42 Subscribers