Geoprocesamiento Integrado e IDE con ArcObjects - ESRI España 2012
Presentación de PowerPoint - Esri Ecuador€¦ · •La Subsecretaría de Análisis y Gestión de...
Transcript of Presentación de PowerPoint - Esri Ecuador€¦ · •La Subsecretaría de Análisis y Gestión de...
Creación de reportes automatizados de
eventos peligrosos con python
Monitoreo y evaluación de incendios Forestales
• El Servicio Nacional de Gestión de Riesgos y Emergencias es encargado del monitoreo de eventos adversos.
• La Subsecretaría de Análisis y Gestión de la Información bajo un protocolo definido realiza la interpretación y análisis de los incendios reportados
• El reporte de estos datos debe ser inmediato y realizado para que se utilice como instrumento de comunicación a autoridades y usuarios
Problemática
• Búsqueda de imágenes
• Definición de áreas quemadas
• Reporte de las áreas afectadas
• Respuesta rápida
Búsqueda
• Búsqueda de imágenes
• Definición de áreas quemadas
• Reporte de las áreas afectadas
• Respuesta rápida
Definición de áreas quemadas
• Búsqueda de imágenes
• Definición de áreas quemadas
• Reporte de las áreas afectadas
• Respuesta rápida
Definición de áreas quemadas
• Búsqueda de imágenes
• Definición de áreas quemadas
• Reporte de las áreas afectadas
• Respuesta rápida
𝑁𝐵𝑅 =𝑁𝐼𝑅 − 𝑆𝑊𝐼𝑅
𝑁𝐼𝑅 + 𝑆𝑊𝐼𝑅
𝛿𝑁𝐵𝑅 = (𝑁𝐵𝑅𝑝𝑟𝑒 − 𝑁𝐵𝑅𝑝𝑜𝑠𝑡)
Reporte y respuesta
• Búsqueda de imágenes
• Definición de áreas quemadas
• Reporte de las áreas afectadas
• Respuesta rápida
Requerimientos
• Debe tener un mapa de ubicación
• Debe tener una tabla con áreas afectadas por Parroquia
• Debe tener un grafico de barras que muestre las áreas con mayor afectación
• Debe incluir imágenes con áreas de afectación Antes y Después
Definición del estilo de reporte
Reporte y respuesta
• Búsqueda de imágenes
• Definición de áreas quemadas
• Reporte de las áreas afectadas
• Respuesta rápida
Flujo de trabajo
Establecer estructura de la GDB
Estrategia para layouts
Estrategia para creación de tablas y grafico
Creación de templates
Creación de la geodatabase
Estrategia para layouts
• Arcpy Mapping Document• PNG es mi amigo !!!
mxd=arcpy.mapping.MapDocument(MXD_UBICACION)
Estrategia para layouts
mxd=arcpy.mapping.MapDocument(MXD_UBICACION)
df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]
lyr = arcpy.mapping.ListLayers(mxd)[0]
definition_query = "id_evento = " + '\'' + evento + '\''
lyr.definitionQuery = definition_query
arcpy.mapping.ExportToPNG(mxd, DIRECTORIO_DE_TRABAJO + '\\' + 'ubicacion.png')
Estrategia para layouts
mxd=arcpy.mapping.MapDocument(MXD_UBICACION)
df = arcpy.mapping.ListDataFrames(mxd, "Layers")[0]
lyr = arcpy.mapping.ListLayers(mxd)[0]
definition_query = "id_evento = " + '\'' + evento + '\''
lyr.definitionQuery = definition_query
arcpy.mapping.ExportToPNG(mxd, DIRECTORIO_DE_TRABAJO + '\\' + 'ubicacion.png')
Estrategia crear tablas y gráficowith arcpy.da.SearchCursor(feature_class, campos,
campo_busqueda + '=' + '\'' + str(valor_busqueda) + '\'') as
cursor_busqueda:
for row in cursor_busqueda:
data.append(row[0])
return data
y_pos = np.arange(len(parroquiasAOI))
plt.title(u"Area afectada por parroquia")
# Crea las barras horizontales
plt.barh(y_pos, areAfectadaAOI, color='gold', align='center', label='Afectada')
# Crea los nombres en el eje y
plt.yticks(y_pos, parroquiasAOI)
plt.legend(loc=9, bbox_to_anchor=(0.5, -0.1))
# Salva el grafico como imagen png
plt.savefig( DIRECTORIO_DE_TRABAJO + '\\' + 'plot.png' , bbox_inches="tight")
plt.close()
Creación de templatescabeceras_tabla = [u'Provincia', u'Cantón', u'Parroquia', u'Superficie Total (Has)', u'Superficie Afectada
(Has)'
, u'% afectación respecto de la superficie total']
datos_tabla = make_attribute_dict(tabulacion_cruzada_areas_sorted, 'OBJECTID',
['DPA_DESPRO', 'DPA_DESCAN', 'DPA_DESPAR', 'Shape_Area', 'AREA',
'PERCENTAGE'])
context['total_porcentaje'] = "{0:,.2f}".format(total_porcentaje[0])
context['total_area'] = "{0:,.2f}".format(total_area[0])
context['datos_tabla'] = datos_tabla
context['col_labels'] = cabeceras_tabla
context['evento'] = evento
context['fecha_evento'] = fecha_evento
context['informe'] = informe[0]
doc = DocxTemplate(DIRECTORIO_DE_TRABAJO + '\\' + 'templateIncendios.docx')
ubicacion = InlineImage(doc, '{0}\\ubicacion.png'.format(DIRECTORIO_DE_TRABAJO), width=Mm(75))
plot = InlineImage(doc, '{0}\\plot.png'.format(DIRECTORIO_DE_TRABAJO), width=Mm(120))
context['ubicacion'] = ubicacion
context['plot'] = plot
context['fecha_elaboracion'] = date.today()
doc.render(context)
doc.save(r'C:\WORK\Reporte_Incendios\generated_doc.docx')
Tiempo para laAcción
Que viene después?
• Hacerlo en ambiente WEB• Incluir en el template las Imágenes y Mapas de detalle• Usar para crear reportes para otro tipo de eventos peligrosos
GRACIAS!!