Open vichdzgeo opened 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.
# -*- 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
# -*- 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()
@ccalderong @CarlosCruzVz @Javierroto
@vichdzgeo nos marca un error en el código de calculadora raster al importar la librería apc, qué tenemos que hacer?
Borren la linea
import apc
@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
@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
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
# -*- 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
# -*- 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
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