lancis-apc / espejos-lancis

GNU General Public License v3.0
0 stars 1 forks source link

Generar un extent para la zona de estudio con un tamaño de pixel de 30 mts #PAPIIT #29

Open vichdzgeo opened 5 years ago

vichdzgeo commented 5 years ago

Determinar las coordenadas de una zona rectangular que contenga la zona de estudio.

Extent acordado el dia 15 de marzo de 2019 - extent_1

xmin = 130380 xmax = 444600 ymin = 2298780 ymax = 2403780

(obsoleto) se obtuvieron las coordenadas del extent de la región con grass (extent anterior)

xmin = 145380 xmax =444600 ymin =2163420 ymax =2391780

vichdzgeo commented 5 years ago

carpeta de trabajo

SIG\desarrollo\sig_papiit\procesamiento\extent_proyecto

Se realizan pruebas con código para rasterizar una capa vectorial que respete el extent de la zona de estudio.

vichdzgeo commented 5 years ago

(obsoleto) código para rasterizar un vector

# -*- coding: utf-8 -*-
from osgeo import gdal, osr
import numpy as np
import processing
path_sig ="C:/Dropbox (LANCIS)/CARPETAS_TRABAJO/vhernandez/papit_yucatan/"

path_vector = path_sig+"ancho_playa_buffer_media/ancho_playa_buffer_media.shp"
path_salida = path_sig+ "salida/ancho_playa_cero.tif"

nombre_campo = 'MEDIA'
valor_nodata = 0#-3.402823466e+38
## Diccionario de tipos de datos perteneciente a qgis
QGIS_TYPE = {QGis.Byte:'Byte', QGis.UInt16:'UInt16',\
                    QGis.Int16:'Int16', QGis.UInt32:'UInt32',\
                    QGis.Int32:'Int32', QGis.Float32:'Float32',\
                    QGis.Float64:'Float64'}

## El tipo de dato de salida del raster
tipo_raster = 'Float32'
## tipo  de dato que ocupa gdal en su funcion rasterize
RTYPE = { 'Byte': 0, 'Int16': 1, 'UInt16': 2, 'UInt32':3,\
                'Int32':4, 'Float32':5, 'Float64':6 }

## Extent o region de la zona de estudio NO MODIFICAR ESTOS VALORES
xmin = 145380
xmax =444600
ymin =2163420
ymax =2391780

vector = QgsVectorLayer(path_vector,"","ogr")

## llamada a la funcion de gadal rasterize para convertir
## el vector a una capa raster.
processing.runalg('gdalogr:rasterize',
                                   vector ,#INPUT <ParameterVector> vector de entrada
                                    nombre_campo,#FIELD <parameters from INPUT> nombre del campo que contiene los datos en el vector
                                    0,#DIMENSIONS <ParameterSelection>
                                    9974,#WIDTH <ParameterNumber> ancho del tamaño del raster NO MODIFICAR ESTE VALOR
                                    7612,#HEIGHT <ParameterNumber> alto del ancho del raster NO MODIFICAR ESTE VALOR
                                    "%f,%f,%f,%f" % (xmin, xmax, ymin, ymax),#RAST_EXT <ParameterExtent> Coordenadas de la extension  de la zona de estudio  NO MODIFICAR ESTE VALOR
                                    0,#TFW <ParameterBoolean>
                                    RTYPE[tipo_raster],#RTYPE <ParameterSelection> tipo del raster de salida
                                    valor_nodata ,#NO_DATA <ParameterString> valor que se ocupara para representar los valores nulos
                                    4,#COMPRESS <ParameterSelection>
                                    75,#JPEGCOMPRESSION <ParameterNumber>
                                    6.0,#ZLEVEL <ParameterNumber>
                                    1.0,#PREDICTOR <ParameterNumber>
                                    False,#TILED <ParameterBoolean>
                                    0,#BIGTIFF <ParameterSelection>
                                    "",#EXTRA <ParameterString>
                                    path_salida)#OUTPUT <OutputRaster> ruta de salida de la capa raster
vichdzgeo commented 5 years ago

Código de calculadora raster

# -*- coding: utf-8 -*-
import os, sys, subprocess, processing
from qgis.core import QgsRasterLayer
from PyQt4.QtCore import QFileInfo

from qgis.analysis import QgsRasterCalculator, QgsRasterCalculatorEntry
from qgis.analysis import *

## ruta del raster1
path_raster1 = ""
## ruta del raster2
path_raster2 = ""
## ruta de salida del raster de operacion
path_salida = ""
## expresión raster
expresion_calculator = 'raster1@1 + raster2@1'

entries = []

## abre raster1
fileInfo = QFileInfo(path_raster1)
path = fileInfo.filePath()
baseName = fileInfo.baseName()
raster1 = QgsRasterLayer(path, baseName)
var1 = QgsRasterCalculatorEntry()
var1.ref = 'raster1@1'
var1.raster = raster1
var1.bandNumber = 1
entries.append( var1 )

#abre raster2
fileInfo = QFileInfo(path_raster2)
path = fileInfo.filePath()
baseName = fileInfo.baseName()
raster2 = QgsRasterLayer(path, baseName)
var2 = QgsRasterCalculatorEntry()
var2.ref = 'raster2@1'
var2.raster = raster2
var2.bandNumber = 1
entries.append( var2 )

calc = QgsRasterCalculator(expresion_calculator,
                           path_salida,
                           'GTiff',
                           raster1.extent(),
                           raster1.width(),
                           raster1.height(),
                           entries)

calc.processCalculation()
vichdzgeo commented 5 years ago

@ccalderong @CarlosCruzVz @Javierroto

ccalderong commented 5 years ago

@vichdzgeo nos marca un error en el código de calculadora raster al importar la librería apc, qué tenemos que hacer?

vichdzgeo commented 5 years ago

Borren la linea

import apc

Javierroto commented 5 years ago

@vichdzgeo @serranoycandela Para la vegetación acuática como seria el extent? La vegetación acuática de la costa se encuentra presente tanto en la parte terrestre como en la parte marina. Hice un buffer de la parte marina/terrestre de 6k (3k terrestres y 3k marino) pero con el extent que nos mandaron una parte del buffer queda fuera y según el shape de vegetación acuática en esa parte si hay presencia de vegetación.

En esta dirección pongo una captura para ilustrarlo mejor negro-raster verde-shapefile de vegetación acuática morado-buffer de 6k de la zona terrestre/marino

C:\Javier Dropbox\Javier Robles\sig_papiit\procesamiento\biologicas\vegetacion_acuatica

vichdzgeo commented 5 years ago

@Javierroto justo estos detalles en la generación de la capa se colocan en el issue de la capa que estas trabajando, para que sea atendida. @yosunemiquela

yosunemiquela commented 5 years ago

Vamos a generar otro extent adicional para incorporar la parte marina, para abordar específicamente la vegetación acuática. Por favor hagan un issue de este problema para darle seguimiento. Revisamos la capa que está en: C:\Javier Dropbox\Javier Robles\sig_papiit\procesamiento\biologicas\vegetacion_acuatica y no entendemos que contiene dicha capa (área, cobertura)..es necesario hacer los metadatos y subirlos de favor. @ccalderong @Javierroto @CarlosCruzVz

vichdzgeo commented 5 years ago

Codigo Extent para generar capas de la zona de influencia

# -*- coding: utf-8 -*-
from osgeo import gdal, osr
import numpy as np
import processing
from qgis.core import QgsRasterLayer
from PyQt4.QtCore import QFileInfo
from qgis.analysis import QgsRasterCalculator, QgsRasterCalculatorEntry
from qgis.analysis import *

path_sig ="C:/Dropbox (LANCIS)/SIG/desarrollo/sig_papiit/"

path_vector = path_sig + ""
path_salida = path_sig + ""

nombre_campo = 'MEDIA'
valor_nodata = 0#-3.402823466e+38
## Diccionario de tipos de datos perteneciente a qgis
QGIS_TYPE = {QGis.Byte:'Byte', QGis.UInt16:'UInt16',\
                    QGis.Int16:'Int16', QGis.UInt32:'UInt32',\
                    QGis.Int32:'Int32', QGis.Float32:'Float32',\
                    QGis.Float64:'Float64'}

## El tipo de dato de salida del raster
tipo_raster = 'Float32'
## tipo  de dato que ocupa gdal en su funcion rasterize
RTYPE = { 'Byte': 0, 'Int16': 1, 'UInt16': 2, 'UInt32':3,\
                'Int32':4, 'Float32':5, 'Float64':6 }

## Extent o region de la zona de estudio NO MODIFICAR ESTOS VALORES
xmin = 91380
xmax =624600
ymin =2163420
ymax =2541780

vector = QgsVectorLayer(path_vector,"","ogr")

## llamada a la funcion de gadal rasterize para convertir
## el vector a una capa raster.
processing.runalg('gdalogr:rasterize',
                                   vector ,#INPUT <ParameterVector> vector de entrada
                                    nombre_campo,#FIELD <parameters from INPUT> nombre del campo que contiene los datos en el vector
                                    0,#DIMENSIONS <ParameterSelection>
                                    17774,#WIDTH <ParameterNumber> ancho del tamaño del raster NO MODIFICAR ESTE VALOR
                                    12612,#HEIGHT <ParameterNumber> alto del ancho del raster NO MODIFICAR ESTE VALOR
                                    "%f,%f,%f,%f" % (xmin, xmax, ymin, ymax),#RAST_EXT <ParameterExtent> Coordenadas de la extension  de la zona de estudio  NO MODIFICAR ESTE VALOR
                                    0,#TFW <ParameterBoolean>
                                    RTYPE[tipo_raster],#RTYPE <ParameterSelection> tipo del raster de salida
                                    valor_nodata ,#NO_DATA <ParameterString> valor que se ocupara para representar los valores nulos
                                    4,#COMPRESS <ParameterSelection>
                                    75,#JPEGCOMPRESSION <ParameterNumber>
                                    6.0,#ZLEVEL <ParameterNumber>
                                    1.0,#PREDICTOR <ParameterNumber>
                                    False,#TILED <ParameterBoolean>
                                    0,#BIGTIFF <ParameterSelection>
                                    "",#EXTRA <ParameterString>
                                    path_salida)#OUTPUT <OutputRaster> ruta de salida de la capa raster
vichdzgeo commented 5 years ago

Extent acordado en la reunión del 15 de marzo 2019

vichdzgeo commented 5 years ago

(última versión) rasterizar_vector_extent_1.py

# -*- coding: utf-8 -*-
'''
Este script funciona para convertir un vector en raster, el vector debe
estar en la proyeccion UTM Z16N "EPSG:32616". El raster resultante
hereda los parametros del extent 3
'''

from osgeo import gdal, osr
import numpy as np
import processing
from qgis.core import QgsRasterLayer
from PyQt4.QtCore import QFileInfo
from qgis.analysis import QgsRasterCalculator, QgsRasterCalculatorEntry
from qgis.analysis import *

path_sig ="C:/Dropbox (LANCIS)/CARPETAS_TRABAJO/vhernandez/papit_yucatan/"
path_vector = path_sig+"yuc_linea_utm_buffer2/yuc_linea_UTM_Buffer2.shp"
path_salida = path_sig+ "salida/tp_zona_estudio_extent3.tif"

nombre_campo = 'CLASE'#nombre del campo del vector que contiene la clase o categorias
valor_nodata = 255## El valor no data
tipo_raster = 'Byte'## El tipo de dato de salida del raster
# Diccionario de tipos de datos perteneciente a qgis

QGIS_TYPE = {QGis.Byte:'Byte', QGis.UInt16:'UInt16',\
                    QGis.Int16:'Int16', QGis.UInt32:'UInt32',\
                    QGis.Int32:'Int32', QGis.Float32:'Float32',\
                    QGis.Float64:'Float64'}
## tipo  de dato que ocupa gdal en su funcion rasterize
RTYPE = { 'Byte': 0, 'Int16': 1, 'UInt16': 2, 'UInt32':3,\
                'Int32':4, 'Float32':5, 'Float64':6 }
## Extent_1 o region de la zona de estudio NO MODIFICAR ESTOS VALORES
xmin = 130380
xmax = 444600
ymin = 2298780
ymax = 2403780
vector = QgsVectorLayer(path_vector,"","ogr")
## llamada a la funcion de gadal rasterize para convertir el vector a una capa raster.
processing.runalg('gdalogr:rasterize',
                               vector ,#INPUT <ParameterVector> vector de entrada
                                nombre_campo,#FIELD <parameters from INPUT> nombre del campo que contiene los datos en el vector
                                0,#DIMENSIONS <ParameterSelection>
                                10474,#WIDTH <ParameterNumber> ancho del tamaño del raster NO MODIFICAR ESTE VALOR
                                3500,#HEIGHT <ParameterNumber> alto del ancho del raster NO MODIFICAR ESTE VALOR
                                "%f,%f,%f,%f" % (xmin, xmax, ymin, ymax),#RAST_EXT <ParameterExtent> Coordenadas de la extension  de la zona de estudio  NO MODIFICAR ESTE VALOR
                                0,#TFW <ParameterBoolean>
                                RTYPE[tipo_raster],#RTYPE <ParameterSelection> tipo del raster de salida
                                valor_nodata ,#NO_DATA <ParameterString> valor que se ocupara para representar los valores nulos
                                4,#COMPRESS <ParameterSelection>
                                75,#JPEGCOMPRESSION <ParameterNumber>
                                6.0,#ZLEVEL <ParameterNumber>
                                1.0,#PREDICTOR <ParameterNumber>
                                False,#TILED <ParameterBoolean>
                                0,#BIGTIFF <ParameterSelection>
                                "",#EXTRA <ParameterString>
                                path_salida)#OUTPUT <OutputRaster> ruta de salida de la capa raster