Criando uma mascara com shapefile sobre raster

Boa tarde pessoal, Estou com um problema e não consigo criar uma mascara com um arquivo no formato shapefile sobre raster usando a função crop() do pacote raster, por algum motivo meu objeto contorno que é um SpatialLinesDataFrame não esta servido para oferecer o polígono limítrofe da área, alguém poderia me dar um help, segue CRM: require("raster") A <- stack(c("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif"))## Imagem plotRGB(A) ## Plota a imagem contorno<- readShapeLines("Catas_Altas.shp") ## Contorno da área lines(contorno, col="red")Plota o contorno C <- crop(A,contorno) ## Recorta o que esta contido no contorno na imagem Erro em .local(x, y, ...) : nenhum slot de nome "legend" para esse objeto de classe "RasterStack" -- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br ======================================================================

Alexandre, a) Tente ler o seu shapefile com a funcao readShapePoly. b) Se nao der certo, sugiro uma combinacao das funcoes crop e raster. Nesse caso, experimente rodar o seu codigo com as seguintes mudancas: require("raster") A <- stack("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif") contorno<- readShapePoly("Catas_Altas.shp") A.crop <- crop(A, extent(contorno), snap='out') contorno.na<-setValues(A.crop, NA) contorno.r<-rasterize(contorno, contorno.na) ### isso pode demorar, dependendo do seu shapefile C <- mask(x=A.crop, mask=contorno.r) Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898 ----- Original Message ----- From: ASANTOS <alexandresantosbr@yahoo.com.br> To: r-br@listas.c3sl.ufpr.br Cc: Sent: Thursday, April 4, 2013 10:31 AM Subject: [R-br] Criando uma mascara com shapefile sobre raster Boa tarde pessoal, Estou com um problema e não consigo criar uma mascara com um arquivo no formato shapefile sobre raster usando a função crop() do pacote raster, por algum motivo meu objeto contorno que é um SpatialLinesDataFrame não esta servido para oferecer o polígono limítrofe da área, alguém poderia me dar um help, segue CRM: require("raster") A <- stack(c("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif"))## Imagem plotRGB(A) ## Plota a imagem contorno<- readShapeLines("Catas_Altas.shp") ## Contorno da área lines(contorno, col="red")Plota o contorno C <- crop(A,contorno) ## Recorta o que esta contido no contorno na imagem Erro em .local(x, y, ...) : nenhum slot de nome "legend" para esse objeto de classe "RasterStack" -- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br ====================================================================== _______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.

Thiago, Não deu certo não, transformei em SpatialPolygons(list(Polygons(list(Polygon(contorno2)),"contorno2"))), prefiro continuar tentando com readShapeLines("Catas_Altas.shp", proj4string=CRS("+proj=utm +zone=23 +south +datum=WGS84 +units=m +no_defs")), porque consigo visualizar a área sobre o raster, achei alguns posts mais usando o GRASS, mas gostaria de fazer tudo só no R. Obrigado, Alexandre Em 04/04/2013 12:18, Thiago V. dos Santos escreveu:
Alexandre,
a) Tente ler o seu shapefile com a funcao readShapePoly.
b) Se nao der certo, sugiro uma combinacao das funcoes crop e raster. Nesse caso, experimente rodar o seu codigo com as seguintes mudancas:
require("raster") A <- stack("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif") contorno<- readShapePoly("Catas_Altas.shp")
A.crop <- crop(A, extent(contorno), snap='out')
contorno.na<-setValues(A.crop, NA) contorno.r<-rasterize(contorno, contorno.na) ### isso pode demorar, dependendo do seu shapefile C <- mask(x=A.crop, mask=contorno.r)
Saudações,
-- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898
----- Original Message ----- From: ASANTOS<alexandresantosbr@yahoo.com.br> To:r-br@listas.c3sl.ufpr.br Cc: Sent: Thursday, April 4, 2013 10:31 AM Subject: [R-br] Criando uma mascara com shapefile sobre raster
Boa tarde pessoal,
Estou com um problema e não consigo criar uma mascara com um arquivo no formato shapefile sobre raster usando a função crop() do pacote raster, por algum motivo meu objeto contorno que é um SpatialLinesDataFrame não esta servido para oferecer o polígono limítrofe da área, alguém poderia me dar um help, segue CRM:
require("raster") A <- stack(c("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif"))## Imagem plotRGB(A) ## Plota a imagem contorno<- readShapeLines("Catas_Altas.shp") ## Contorno da área lines(contorno, col="red")Plota o contorno C <- crop(A,contorno) ## Recorta o que esta contido no contorno na imagem Erro em .local(x, y, ...) : nenhum slot de nome "legend" para esse objeto de classe "RasterStack"
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br ======================================================================
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br ======================================================================

Alexandre, O que a área do raster tem a ver com o tipo de função usada para carregar o shapefile? Você não consegui recortar o raster com o shapefile usando os comandos que eu eu sugeri? O que exatamente você quis dizer com criar uma máscara na pergunta inicial? Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898 ----- Original Message ----- From: ASANTOS <alexandresantosbr@yahoo.com.br> To: r-br@listas.c3sl.ufpr.br Cc: Sent: Thursday, April 4, 2013 5:14 PM Subject: Re: [R-br] Criando uma mascara com shapefile sobre raster Thiago, Não deu certo não, transformei em SpatialPolygons(list(Polygons(list(Polygon(contorno2)),"contorno2"))), prefiro continuar tentando com readShapeLines("Catas_Altas.shp", proj4string=CRS("+proj=utm +zone=23 +south +datum=WGS84 +units=m +no_defs")), porque consigo visualizar a área sobre o raster, achei alguns posts mais usando o GRASS, mas gostaria de fazer tudo só no R. Obrigado, Alexandre Em 04/04/2013 12:18, Thiago V. dos Santos escreveu:
Alexandre,
a) Tente ler o seu shapefile com a funcao readShapePoly.
b) Se nao der certo, sugiro uma combinacao das funcoes crop e raster. Nesse caso, experimente rodar o seu codigo com as seguintes mudancas:
require("raster") A <- stack("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif") contorno<- readShapePoly("Catas_Altas.shp")
A.crop <- crop(A, extent(contorno), snap='out')
contorno.na<-setValues(A.crop, NA) contorno.r<-rasterize(contorno, contorno.na) ### isso pode demorar, dependendo do seu shapefile C <- mask(x=A.crop, mask=contorno.r)
Saudações,
-- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898
----- Original Message ----- From: ASANTOS<alexandresantosbr@yahoo.com.br> To:r-br@listas.c3sl.ufpr.br Cc: Sent: Thursday, April 4, 2013 10:31 AM Subject: [R-br] Criando uma mascara com shapefile sobre raster
Boa tarde pessoal,
Estou com um problema e não consigo criar uma mascara com um arquivo no formato shapefile sobre raster usando a função crop() do pacote raster, por algum motivo meu objeto contorno que é um SpatialLinesDataFrame não esta servido para oferecer o polígono limítrofe da área, alguém poderia me dar um help, segue CRM:
require("raster") A <- stack(c("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif"))## Imagem plotRGB(A) ## Plota a imagem contorno<- readShapeLines("Catas_Altas.shp") ## Contorno da área lines(contorno, col="red")Plota o contorno C <- crop(A,contorno) ## Recorta o que esta contido no contorno na imagem Erro em .local(x, y, ...) : nenhum slot de nome "legend" para esse objeto de classe "RasterStack"
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br ======================================================================
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br ====================================================================== _______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.

Thiago, Explicando melhor teoricamente, pois um CRM implicaria em uma imagem de 50MB, tenho: 1) Uma imagem do landsat 5 com um quadrante de interesse; 2)Um contorno em shapefile de uma área de 200 hectares. Quero utilizar apenas os pixels da imagem contidos no interior da área de 200 hectares, para tanto extend() não resolve pois utiliza apenas utiliza coordenadas max e min e não considera a forma (contorno) do meu polígono para seleção dos pixels contidos nele. Não consegui realizar o que desejo com a rotina sugerida. Mascara, usei como um termo que implica em área útil da imagem, não quero o quadrante todo oferecido pela imagem, mas aquilo que esta contido no meu shapefile. Obrigado pela atenção, Alexandre Em 04/04/2013 21:03, Thiago V. dos Santos escreveu:
Alexandre,
O que a área do raster tem a ver com o tipo de função usada para carregar o shapefile?
Você não consegui recortar o raster com o shapefile usando os comandos que eu eu sugeri? O que exatamente você quis dizer com criar uma máscara na pergunta inicial?
Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898
----- Original Message ----- From: ASANTOS <alexandresantosbr@yahoo.com.br> To: r-br@listas.c3sl.ufpr.br Cc: Sent: Thursday, April 4, 2013 5:14 PM Subject: Re: [R-br] Criando uma mascara com shapefile sobre raster
Thiago,
Não deu certo não, transformei em SpatialPolygons(list(Polygons(list(Polygon(contorno2)),"contorno2"))), prefiro continuar tentando com readShapeLines("Catas_Altas.shp", proj4string=CRS("+proj=utm +zone=23 +south +datum=WGS84 +units=m +no_defs")), porque consigo visualizar a área sobre o raster, achei alguns posts mais usando o GRASS, mas gostaria de fazer tudo só no R.
Obrigado,
Alexandre
Em 04/04/2013 12:18, Thiago V. dos Santos escreveu:
Alexandre,
a) Tente ler o seu shapefile com a funcao readShapePoly.
b) Se nao der certo, sugiro uma combinacao das funcoes crop e raster. Nesse caso, experimente rodar o seu codigo com as seguintes mudancas:
require("raster") A <- stack("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif") contorno<- readShapePoly("Catas_Altas.shp")
A.crop <- crop(A, extent(contorno), snap='out')
contorno.na<-setValues(A.crop, NA) contorno.r<-rasterize(contorno, contorno.na) ### isso pode demorar, dependendo do seu shapefile C <- mask(x=A.crop, mask=contorno.r)
Saudações,
-- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898
----- Original Message ----- From: ASANTOS<alexandresantosbr@yahoo.com.br> To:r-br@listas.c3sl.ufpr.br Cc: Sent: Thursday, April 4, 2013 10:31 AM Subject: [R-br] Criando uma mascara com shapefile sobre raster
Boa tarde pessoal,
Estou com um problema e não consigo criar uma mascara com um arquivo no formato shapefile sobre raster usando a função crop() do pacote raster, por algum motivo meu objeto contorno que é um SpatialLinesDataFrame não esta servido para oferecer o polígono limítrofe da área, alguém poderia me dar um help, segue CRM:
require("raster") A <- stack(c("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif"))## Imagem plotRGB(A) ## Plota a imagem contorno<- readShapeLines("Catas_Altas.shp") ## Contorno da área lines(contorno, col="red")Plota o contorno C <- crop(A,contorno) ## Recorta o que esta contido no contorno na imagem Erro em .local(x, y, ...) : nenhum slot de nome "legend" para esse objeto de classe "RasterStack"
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br ======================================================================
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br ======================================================================

Mas você recebe algum erro ou o resultado é diferente do esperado? O melhor mesmo seria fornecer seus dados para tentarmos reproduzir o problema. Não dá pra colocar no dropbox? 50Mb não é nada tão grande assim... Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898 ________________________________ From: ASANTOS <alexandresantosbr@yahoo.com.br> To: r-br@listas.c3sl.ufpr.br; Thiago V. dos Santos <thi_veloso@yahoo.com.br> Sent: Thursday, April 4, 2013 9:23 PM Subject: Re: [R-br] Criando uma mascara com shapefile sobre raster Thiago, Explicando melhor teoricamente, pois um CRM implicaria em uma imagem de 50MB, tenho: 1) Uma imagem do landsat 5 com um quadrante de interesse; 2)Um contorno em shapefile de uma área de 200 hectares. Quero utilizar apenas os pixels da imagem contidos no interior da área de 200 hectares, para tanto extend() não resolve pois utiliza apenas utiliza coordenadas max e min e não considera a forma (contorno) do meu polígono para seleção dos pixels contidos nele. Não consegui realizar o que desejo com a rotina sugerida. Mascara, usei como um termo que implica em área útil da imagem, não quero o quadrante todo oferecido pela imagem, mas aquilo que esta contido no meu shapefile. Obrigado pela atenção, Alexandre Em 04/04/2013 21:03, Thiago V. dos Santos escreveu:
Alexandre,
O que a área do raster tem a ver com o tipo de função usada para carregar o shapefile?
Você não consegui recortar o raster com o shapefile usando os comandos que eu eu sugeri? O que exatamente você quis dizer com criar uma máscara na pergunta inicial?
Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898
----- Original Message ----- From: ASANTOS <alexandresantosbr@yahoo.com.br> To: r-br@listas.c3sl.ufpr.br Cc: Sent: Thursday, April 4, 2013 5:14 PM Subject: Re: [R-br] Criando uma mascara com shapefile sobre raster
Thiago,
Não deu certo não, transformei em SpatialPolygons(list(Polygons(list(Polygon(contorno2)),"contorno2"))), prefiro continuar tentando com readShapeLines("Catas_Altas.shp", proj4string=CRS("+proj=utm +zone=23 +south +datum=WGS84 +units=m +no_defs")), porque consigo visualizar a área sobre o raster, achei alguns posts mais usando o GRASS, mas gostaria de fazer tudo só no R.
Obrigado,
Alexandre
Em 04/04/2013 12:18, Thiago V. dos Santos escreveu:
Alexandre,
a) Tente ler o seu shapefile com a funcao readShapePoly.
b) Se nao der certo, sugiro uma combinacao das funcoes crop e raster. Nesse caso, experimente rodar o seu codigo com as seguintes mudancas:
require("raster") A <- stack("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif") contorno<- readShapePoly("Catas_Altas.shp")
A.crop <- crop(A, extent(contorno), snap='out')
contorno.na<-setValues(A.crop, NA) contorno.r<-rasterize(contorno, contorno.na) ### isso pode demorar, dependendo do seu shapefile C <- mask(x=A.crop, mask=contorno.r)
Saudações,
-- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898
----- Original Message ----- From: ASANTOS<alexandresantosbr@yahoo.com.br> To:r-br@listas.c3sl.ufpr.br Cc: Sent: Thursday, April 4, 2013 10:31 AM Subject: [R-br] Criando uma mascara com shapefile sobre raster
Boa tarde pessoal,
Estou com um problema e não consigo criar uma mascara com um arquivo no formato shapefile sobre raster usando a função crop() do pacote raster, por algum motivo meu objeto contorno que é um SpatialLinesDataFrame não esta servido para oferecer o polígono limítrofe da área, alguém poderia me dar um help, segue CRM:
require("raster") A <- stack(c("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif"))## Imagem plotRGB(A) ## Plota a imagem contorno<- readShapeLines("Catas_Altas.shp") ## Contorno da área lines(contorno, col="red")Plota o contorno C <- crop(A,contorno) ## Recorta o que esta contido no contorno na imagem Erro em .local(x, y, ...) : nenhum slot de nome "legend" para esse objeto de classe "RasterStack"
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br ======================================================================
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br ======================================================================

Obrigado pela atenção Thiago, Tentei fazer um CRM, mas com raster estava difícil, coloquei no dropbox mesmo, segue a ultima tentativa que fiz com suas dicas: # require(raster) #Dados https://www.dropbox.com/s/lzj71k9vt6dbou1/LANDSAT_5_TM_20100506_217_074_L2_B... in tiff https://www.dropbox.com/s/bfcwpbw36gdlwjq/Catas_Altas.shp#contorno em shapefile # land.img<- stack(c("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif")) ## Imagem Landsat 5 plotRGB(land.img,1) #Plota a banda 7 da imagem #Poligono de interesse em shapefile comm coordenadas em UTM contorno<- readShapeLines("Catas_Altas.shp", proj4string=CRS("+proj=utm +zone=23 +south +datum=WGS84 +units=m +no_defs")) # #Quero selecionar os pixels da imagem que estão contidos no interior do polígono contorno A.crop <- crop(land.img, extent(contorno), snap='out') contorno.na<-setValues(A.crop, NA) contorno.r<-rasterize(contorno, contorno.na) C <- mask(x=A.crop, mask=contorno.r) # Em 05/04/2013 09:18, Thiago V. dos Santos escreveu:
Mas você recebe algum erro ou o resultado é diferente do esperado?
O melhor mesmo seria fornecer seus dados para tentarmos reproduzir o problema. Não dá pra colocar no dropbox? 50Mb não é nada tão grande assim... Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898 ------------------------------------------------------------------------ *From:* ASANTOS <alexandresantosbr@yahoo.com.br> *To:* r-br@listas.c3sl.ufpr.br; Thiago V. dos Santos <thi_veloso@yahoo.com.br> *Sent:* Thursday, April 4, 2013 9:23 PM *Subject:* Re: [R-br] Criando uma mascara com shapefile sobre raster
Thiago,
Explicando melhor teoricamente, pois um CRM implicaria em uma imagem de 50MB, tenho:
1) Uma imagem do landsat 5 com um quadrante de interesse; 2)Um contorno em shapefile de uma área de 200 hectares.
Quero utilizar apenas os pixels da imagem contidos no interior da área de 200 hectares, para tanto extend() não resolve pois utiliza apenas utiliza coordenadas max e min e não considera a forma (contorno) do meu polígono para seleção dos pixels contidos nele.
Não consegui realizar o que desejo com a rotina sugerida. Mascara, usei como um termo que implica em área útil da imagem, não quero o quadrante todo oferecido pela imagem, mas aquilo que esta contido no meu shapefile.
Obrigado pela atenção,
Alexandre
Em 04/04/2013 21:03, Thiago V. dos Santos escreveu:
Alexandre,
O que a área do raster tem a ver com o tipo de função usada para carregar o shapefile?
Você não consegui recortar o raster com o shapefile usando os comandos que eu eu sugeri? O que exatamente você quis dizer com criar uma máscara na pergunta inicial?
Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota
http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde...
Phone: (612) 323 9898
----- Original Message ----- From: ASANTOS <alexandresantosbr@yahoo.com.br <mailto:alexandresantosbr@yahoo.com.br>> To: r-br@listas.c3sl.ufpr.br <mailto:r-br@listas.c3sl.ufpr.br> Cc: Sent: Thursday, April 4, 2013 5:14 PM Subject: Re: [R-br] Criando uma mascara com shapefile sobre raster
Thiago,
Não deu certo não, transformei em SpatialPolygons(list(Polygons(list(Polygon(contorno2)),"contorno2"))), prefiro continuar tentando com readShapeLines("Catas_Altas.shp", proj4string=CRS("+proj=utm +zone=23 +south +datum=WGS84 +units=m +no_defs")), porque consigo visualizar a área sobre o raster, achei alguns posts mais usando o GRASS, mas gostaria de fazer tudo só no R.
Obrigado,
Alexandre
Em 04/04/2013 12:18, Thiago V. dos Santos escreveu:
Alexandre,
a) Tente ler o seu shapefile com a funcao readShapePoly.
b) Se nao der certo, sugiro uma combinacao das funcoes crop e raster. Nesse caso, experimente rodar o seu codigo com as seguintes mudancas:
require("raster") A <- stack("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif") contorno<- readShapePoly("Catas_Altas.shp")
A.crop <- crop(A, extent(contorno), snap='out')
contorno.na<-setValues(A.crop, NA) contorno.r<-rasterize(contorno, contorno.na) ### isso pode demorar, dependendo do seu shapefile C <- mask(x=A.crop, mask=contorno.r)
Saudações,
-- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota
http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde...
Phone: (612) 323 9898
----- Original Message ----- From: ASANTOS<alexandresantosbr@yahoo.com.br <mailto:alexandresantosbr@yahoo.com.br>> To:r-br@listas.c3sl.ufpr.br <mailto:r-br@listas.c3sl.ufpr.br> Cc: Sent: Thursday, April 4, 2013 10:31 AM Subject: [R-br] Criando uma mascara com shapefile sobre raster
Boa tarde pessoal,
Estou com um problema e não consigo criar uma mascara com um arquivo no formato shapefile sobre raster usando a função crop() do pacote raster, por algum motivo meu objeto contorno que é um SpatialLinesDataFrame não esta servido para oferecer o polígono limítrofe da área, alguém poderia me dar um help, segue CRM:
require("raster") A <- stack(c("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif"))## Imagem plotRGB(A) ## Plota a imagem contorno<- readShapeLines("Catas_Altas.shp") ## Contorno da área lines(contorno, col="red")Plota o contorno C <- crop(A,contorno) ## Recorta o que esta contido no contorno na imagem Erro em .local(x, y, ...) : nenhum slot de nome "legend" para esse objeto de classe "RasterStack"
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br <mailto:alexandresantosbr@yahoo.com.br> alexandre.santos@cas.ifmt.edu.br <mailto:alexandre.santos@cas.ifmt.edu.br> ======================================================================
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br <mailto:R-br@listas.c3sl.ufpr.br> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br <mailto:alexandresantosbr@yahoo.com.br> alexandre.santos@cas.ifmt.edu.br <mailto:alexandre.santos@cas.ifmt.edu.br> ======================================================================
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br ======================================================================

Alexandre, O .shp é só uma parte do dado, a geometria. Para reproduzir o seu problema, vou precisar também do .dbf e do .shx, além do .prj se ele já estiver projetado. Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898 ________________________________ From: ASANTOS <alexandresantosbr@yahoo.com.br> To: r-br@listas.c3sl.ufpr.br Sent: Saturday, April 6, 2013 11:32 AM Subject: Re: [R-br] Criando uma mascara com shapefile sobre raster Obrigado pela atenção Thiago, Tentei fazer um CRM, mas com raster estava difícil, coloquei no dropbox mesmo, segue a ultima tentativa que fiz com suas dicas: # require(raster) #Dados https://www.dropbox.com/s/lzj71k9vt6dbou1/LANDSAT_5_TM_20100506_217_074_L2_B... in tiff https://www.dropbox.com/s/bfcwpbw36gdlwjq/Catas_Altas.shp#contorno em shapefile # land.img<- stack(c("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif")) ## Imagem Landsat 5 plotRGB(land.img,1) #Plota a banda 7 da imagem #Poligono de interesse em shapefile comm coordenadas em UTM contorno<- readShapeLines("Catas_Altas.shp", proj4string=CRS("+proj=utm +zone=23 +south +datum=WGS84 +units=m +no_defs")) # #Quero selecionar os pixels da imagem que estão contidos no interior do polígono contorno A.crop <- crop(land.img, extent(contorno), snap='out') contorno.na<-setValues(A.crop, NA) contorno.r<-rasterize(contorno, contorno.na) C <- mask(x=A.crop, mask=contorno.r) # Em 05/04/2013 09:18, Thiago V. dos Santos escreveu: Mas você recebe algum erro ou o resultado é diferente do esperado?
O melhor mesmo seria fornecer seus dados para tentarmos reproduzir o problema. Não dá pra colocar no dropbox? 50Mb não é nada tão grande assim... Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898
________________________________ From: ASANTOS <alexandresantosbr@yahoo.com.br> To: r-br@listas.c3sl.ufpr.br; Thiago V. dos Santos <thi_veloso@yahoo.com.br> Sent: Thursday, April 4, 2013 9:23 PM Subject: Re: [R-br] Criando uma mascara com shapefile sobre raster
Thiago,
Explicando melhor teoricamente, pois um CRM implicaria
em uma
imagem de 50MB, tenho:
1) Uma imagem do landsat 5 com um quadrante de interesse; 2)Um contorno em shapefile de uma área de 200 hectares.
Quero utilizar apenas os pixels da imagem contidos no interior da área de 200 hectares, para tanto extend() não resolve pois utiliza apenas utiliza coordenadas max e min e não considera a forma (contorno) do meu polígono para seleção dos pixels contidos nele.
Não consegui realizar o que desejo com a rotina sugerida. Mascara, usei como um termo que implica em área útil da imagem, não quero o quadrante todo oferecido pela imagem, mas aquilo que esta contido no meu shapefile.
Obrigado pela atenção,
Alexandre
Em 04/04/2013 21:03, Thiago V. dos Santos escreveu:
Alexandre,
O que a área do raster tem a ver com o tipo de função usada para carregar o shapefile?
Você não consegui recortar o raster com o shapefile usando os comandos que eu eu sugeri? O que exatamente você quis dizer com criar uma máscara na pergunta inicial?
Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898
----- Original Message ----- From: ASANTOS <alexandresantosbr@yahoo.com.br> To: r-br@listas.c3sl.ufpr.br Cc: Sent: Thursday, April 4, 2013 5:14 PM Subject: Re: [R-br] Criando uma mascara com shapefile sobre raster
Thiago,
Não deu certo não, transformei em
SpatialPolygons(list(Polygons(list(Polygon(contorno2)),"contorno2"))),
prefiro continuar tentando com readShapeLines("Catas_Altas.shp", proj4string=CRS("+proj=utm +zone=23 +south +datum=WGS84 +units=m +no_defs")), porque consigo visualizar a área sobre o raster, achei alguns posts mais usando o GRASS, mas gostaria de fazer tudo só no R.
Obrigado,
Alexandre
Em 04/04/2013 12:18, Thiago V. dos Santos escreveu:
Alexandre,
a) Tente ler o seu shapefile com a funcao readShapePoly.
b) Se nao der certo, sugiro uma combinacao das funcoes crop e raster. Nesse caso, experimente rodar o seu codigo com as seguintes mudancas:
require("raster") A <- stack("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif") contorno<- readShapePoly("Catas_Altas.shp")
A.crop <- crop(A, extent(contorno), snap='out')
contorno.na<-setValues(A.crop, NA) contorno.r<-rasterize(contorno, contorno.na) ### isso pode demorar, dependendo do seu shapefile C <- mask(x=A.crop, mask=contorno.r)
Saudações,
-- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898
----- Original Message ----- From: ASANTOS<alexandresantosbr@yahoo.com.br> To:r-br@listas.c3sl.ufpr.br Cc: Sent: Thursday, April 4, 2013 10:31 AM Subject: [R-br] Criando uma mascara com shapefile sobre raster
Boa tarde pessoal,
Estou com um problema e não consigo criar uma mascara com um arquivo no formato shapefile sobre raster usando a função crop() do pacote raster, por algum motivo meu objeto contorno que é um SpatialLinesDataFrame não esta servido para oferecer o polígono limítrofe da área, alguém poderia me dar um help, segue CRM:
require("raster") A <- stack(c("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif"))## Imagem plotRGB(A) ## Plota a imagem contorno<- readShapeLines("Catas_Altas.shp") ## Contorno da área lines(contorno, col="red")Plota o contorno C <- crop(A,contorno) ## Recorta o que esta contido no contorno na imagem Erro em .local(x, y, ...) : nenhum slot de nome "legend" para esse objeto de classe "RasterStack"
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br
======================================================================
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br ======================================================================
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br ====================================================================== _______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.

Thiago Segue dbf e shx, prj não foi projetado ainda não, https://www.dropbox.com/s/p0idcxmh7td8hgi/Catas_Altas.dbf ## Dbf https://www.dropbox.com/s/mssh8lq6cy61ncd/Catas_Altas.shx ## Shx, Muito obrigado, Alexandre Em 06/04/2013 14:05, Thiago V. dos Santos escreveu:
Alexandre,
O .shp é só uma parte do dado, a geometria. Para reproduzir o seu problema, vou precisar também do .dbf e do .shx, além do .prj se ele já estiver projetado.
Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898 ------------------------------------------------------------------------ *From:* ASANTOS <alexandresantosbr@yahoo.com.br> *To:* r-br@listas.c3sl.ufpr.br *Sent:* Saturday, April 6, 2013 11:32 AM *Subject:* Re: [R-br] Criando uma mascara com shapefile sobre raster
Obrigado pela atenção Thiago,
Tentei fazer um CRM, mas com raster estava difícil, coloquei no dropbox mesmo, segue a ultima tentativa que fiz com suas dicas:
# require(raster)
#Dados https://www.dropbox.com/s/lzj71k9vt6dbou1/LANDSAT_5_TM_20100506_217_074_L2_B... in tiff https://www.dropbox.com/s/bfcwpbw36gdlwjq/Catas_Altas.shp#contorno em shapefile # land.img<- stack(c("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif")) ## Imagem Landsat 5 plotRGB(land.img,1) #Plota a banda 7 da imagem
#Poligono de interesse em shapefile comm coordenadas em UTM contorno<- readShapeLines("Catas_Altas.shp", proj4string=CRS("+proj=utm +zone=23 +south +datum=WGS84 +units=m +no_defs")) # #Quero selecionar os pixels da imagem que estão contidos no interior do polígono contorno A.crop <- crop(land.img, extent(contorno), snap='out') contorno.na<-setValues(A.crop, NA) contorno.r<-rasterize(contorno, contorno.na) C <- mask(x=A.crop, mask=contorno.r) #
Em 05/04/2013 09:18, Thiago V. dos Santos escreveu:
Mas você recebe algum erro ou o resultado é diferente do esperado?
O melhor mesmo seria fornecer seus dados para tentarmos reproduzir o problema. Não dá pra colocar no dropbox? 50Mb não é nada tão grande assim... Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898 ------------------------------------------------------------------------ *From:* ASANTOS <alexandresantosbr@yahoo.com.br> <mailto:alexandresantosbr@yahoo.com.br> *To:* r-br@listas.c3sl.ufpr.br <mailto:r-br@listas.c3sl.ufpr.br>; Thiago V. dos Santos <thi_veloso@yahoo.com.br> <mailto:thi_veloso@yahoo.com.br> *Sent:* Thursday, April 4, 2013 9:23 PM *Subject:* Re: [R-br] Criando uma mascara com shapefile sobre raster
Thiago,
Explicando melhor teoricamente, pois um CRM implicaria em uma imagem de 50MB, tenho:
1) Uma imagem do landsat 5 com um quadrante de interesse; 2)Um contorno em shapefile de uma área de 200 hectares.
Quero utilizar apenas os pixels da imagem contidos no interior da área de 200 hectares, para tanto extend() não resolve pois utiliza apenas utiliza coordenadas max e min e não considera a forma (contorno) do meu polígono para seleção dos pixels contidos nele.
Não consegui realizar o que desejo com a rotina sugerida. Mascara, usei como um termo que implica em área útil da imagem, não quero o quadrante todo oferecido pela imagem, mas aquilo que esta contido no meu shapefile.
Obrigado pela atenção,
Alexandre
Em 04/04/2013 21:03, Thiago V. dos Santos escreveu:
Alexandre,
O que a área do raster tem a ver com o tipo de função usada para carregar o shapefile?
Você não consegui recortar o raster com o shapefile usando os comandos que eu eu sugeri? O que exatamente você quis dizer com criar uma máscara na pergunta inicial?
Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota
http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde...
Phone: (612) 323 9898
----- Original Message ----- From: ASANTOS <alexandresantosbr@yahoo.com.br <mailto:alexandresantosbr@yahoo.com.br>> To: r-br@listas.c3sl.ufpr.br <mailto:r-br@listas.c3sl.ufpr.br> Cc: Sent: Thursday, April 4, 2013 5:14 PM Subject: Re: [R-br] Criando uma mascara com shapefile sobre raster
Thiago,
Não deu certo não, transformei em SpatialPolygons(list(Polygons(list(Polygon(contorno2)),"contorno2"))), prefiro continuar tentando com readShapeLines("Catas_Altas.shp", proj4string=CRS("+proj=utm +zone=23 +south +datum=WGS84 +units=m +no_defs")), porque consigo visualizar a área sobre o raster, achei alguns posts mais usando o GRASS, mas gostaria de fazer tudo só no R.
Obrigado,
Alexandre
Em 04/04/2013 12:18, Thiago V. dos Santos escreveu:
Alexandre,
a) Tente ler o seu shapefile com a funcao readShapePoly.
b) Se nao der certo, sugiro uma combinacao das funcoes crop e raster. Nesse caso, experimente rodar o seu codigo com as seguintes mudancas:
require("raster") A <- stack("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif") contorno<- readShapePoly("Catas_Altas.shp")
A.crop <- crop(A, extent(contorno), snap='out')
contorno.na<-setValues(A.crop, NA) contorno.r<-rasterize(contorno, contorno.na) ### isso pode demorar, dependendo do seu shapefile C <- mask(x=A.crop, mask=contorno.r)
Saudações,
-- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota
http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde...
Phone: (612) 323 9898
----- Original Message ----- From: ASANTOS<alexandresantosbr@yahoo.com.br <mailto:alexandresantosbr@yahoo.com.br>> To:r-br@listas.c3sl.ufpr.br <mailto:r-br@listas.c3sl.ufpr.br> Cc: Sent: Thursday, April 4, 2013 10:31 AM Subject: [R-br] Criando uma mascara com shapefile sobre raster
Boa tarde pessoal,
Estou com um problema e não consigo criar uma mascara com um arquivo no formato shapefile sobre raster usando a função crop() do pacote raster, por algum motivo meu objeto contorno que é um SpatialLinesDataFrame não esta servido para oferecer o polígono limítrofe da área, alguém poderia me dar um help, segue CRM:
require("raster") A <- stack(c("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif"))## Imagem plotRGB(A) ## Plota a imagem contorno<- readShapeLines("Catas_Altas.shp") ## Contorno da área lines(contorno, col="red")Plota o contorno C <- crop(A,contorno) ## Recorta o que esta contido no contorno na imagem Erro em .local(x, y, ...) : nenhum slot de nome "legend" para esse objeto de classe "RasterStack"
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br <mailto:alexandresantosbr@yahoo.com.br> alexandre.santos@cas.ifmt.edu.br <mailto:alexandre.santos@cas.ifmt.edu.br> ======================================================================
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br <mailto:R-br@listas.c3sl.ufpr.br> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br <mailto:alexandresantosbr@yahoo.com.br> alexandre.santos@cas.ifmt.edu.br <mailto:alexandre.santos@cas.ifmt.edu.br> ======================================================================
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br <mailto:e-mails:alexandresantosbr@yahoo.com.br> alexandre.santos@cas.ifmt.edu.br <mailto:alexandre.santos@cas.ifmt.edu.br> ======================================================================
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br <mailto:R-br@listas.c3sl.ufpr.br> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br ======================================================================

Alexandre, Acredito que o codigo no final dessa mensagem funcione. O maior problema foi converter o seu shapefile de polylines para polygons (voce tinha mencionado na primeira pergunta). So consegui fazer isso usando uma combinacao de funcoes dos pacores maptools e PBSmapping - voce deve instalar esse pacote. Primeiro eu converti as polylines para polysets (classe do pacote PBSmapping) e em seguida polysets para poligonos. O fluxo subsequente foi o mesmo que eu tinha te passado anteriormente. Alem disso, carreguei a banda que voce mandou como brick (ao inves de stack) para para fins de simplicidade. Se voce fizer questao do stack para aplicar a todas as bandas da imagem, entao tera que fazer um loop entre elas - for (i in 1:nbands(land)){}. --------------------------------------------------- # Require packages require(raster) require(maptools) require(PBSmapping) #Load data land <- raster("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif") contorno_line <- readShapeLines ("Catas_Altas.shp", proj4string=CRS("+proj=utm +zone=23 +south +datum=WGS84 +units=m +no_defs")) # Convert SpatialLines to PolySet and then to SpatialPolygons - this will require package PBSmapping contorno_poly <- PolySet2SpatialPolygons (SpatialLines2PolySet(contorno_line), close_polys=TRUE) # Then, perform crop and mask procedures as usual land.crop <- crop(land, extent(contorno_poly), snap='out') contorno.na <- setValues(land.crop, NA) contorno.r <- rasterize(contorno_poly, contorno.na) land_mask <- mask(x=land.crop, mask=contorno_poly) #Check final result plot(land_mask) --------------------------------------------------- Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898 ________________________________ From: ASANTOS <alexandresantosbr@yahoo.com.br> To: r-br@listas.c3sl.ufpr.br; Thiago V. dos Santos <thi_veloso@yahoo.com.br> Sent: Saturday, April 6, 2013 1:17 PM Subject: Re: [R-br] Criando uma mascara com shapefile sobre raster Thiago Segue dbf e shx, prj não foi projetado ainda não, https://www.dropbox.com/s/p0idcxmh7td8hgi/Catas_Altas.dbf ## Dbf https://www.dropbox.com/s/mssh8lq6cy61ncd/Catas_Altas.shx ## Shx, Muito obrigado, Alexandre Em 06/04/2013 14:05, Thiago V. dos Santos escreveu: Alexandre,
O .shp é só uma parte do dado, a geometria. Para reproduzir o seu problema, vou precisar também do .dbf e do .shx, além do .prj se ele já estiver projetado.
Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898
________________________________ From: ASANTOS <alexandresantosbr@yahoo.com.br> To: r-br@listas.c3sl.ufpr.br Sent: Saturday, April 6, 2013 11:32 AM Subject: Re: [R-br] Criando uma mascara com shapefile sobre raster
Obrigado pela atenção Thiago,
Tentei fazer um CRM, mas com raster estava difícil,
coloquei no dropbox mesmo, segue a ultima tentativa que fiz com suas dicas:
# require(raster)
#Dados https://www.dropbox.com/s/lzj71k9vt6dbou1/LANDSAT_5_TM_20100506_217_074_L2_B... in tiff https://www.dropbox.com/s/bfcwpbw36gdlwjq/Catas_Altas.shp#contorno em shapefile # land.img<-
stack(c("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif")) ## Imagem Landsat 5
plotRGB(land.img,1) #Plota a banda 7 da imagem
#Poligono de interesse em shapefile comm coordenadas em UTM contorno<- readShapeLines("Catas_Altas.shp", proj4string=CRS("+proj=utm +zone=23 +south +datum=WGS84 +units=m +no_defs")) # #Quero selecionar os pixels da imagem que estão contidos no interior do polígono contorno A.crop <- crop(land.img, extent(contorno), snap='out') contorno.na<-setValues(A.crop, NA) contorno.r<-rasterize(contorno, contorno.na) C <- mask(x=A.crop, mask=contorno.r) #
Em 05/04/2013 09:18, Thiago V. dos Santos escreveu:
Mas você recebe algum erro ou o resultado é diferente do esperado?
O melhor mesmo seria fornecer seus dados para tentarmos reproduzir o problema. Não dá pra colocar no dropbox? 50Mb não é nada tão grande assim... Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898
________________________________ From: ASANTOS <alexandresantosbr@yahoo.com.br> To: r-br@listas.c3sl.ufpr.br; Thiago V. dos Santos <thi_veloso@yahoo.com.br> Sent: Thursday, April 4, 2013 9:23 PM Subject: Re: [R-br] Criando uma mascara com shapefile sobre raster
Thiago,
Explicando melhor teoricamente, pois um
CRM implicaria em uma
imagem de 50MB, tenho:
1) Uma imagem do landsat 5 com um quadrante de interesse; 2)Um contorno em shapefile de uma área de 200 hectares.
Quero utilizar apenas os pixels da imagem contidos no interior da área de 200 hectares, para tanto extend() não resolve pois utiliza apenas utiliza coordenadas max e min e não considera a forma (contorno) do meu polígono para seleção dos pixels contidos nele.
Não consegui realizar o que desejo com a rotina sugerida. Mascara, usei como um termo que implica em área útil da imagem, não quero o quadrante todo oferecido pela imagem, mas aquilo que esta contido no meu shapefile.
Obrigado pela atenção,
Alexandre
Em 04/04/2013 21:03, Thiago V. dos Santos escreveu:
Alexandre,
O que a área do raster tem a ver com o tipo de função usada para carregar o shapefile?
Você não consegui recortar o raster com o shapefile usando os comandos que eu eu sugeri? O que exatamente você quis dizer com criar uma máscara na pergunta inicial?
Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898
----- Original Message ----- From: ASANTOS <alexandresantosbr@yahoo.com.br> To: r-br@listas.c3sl.ufpr.br Cc: Sent: Thursday, April 4, 2013 5:14 PM Subject: Re: [R-br] Criando uma mascara com shapefile sobre raster
Thiago,
Não deu certo não, transformei em
SpatialPolygons(list(Polygons(list(Polygon(contorno2)),"contorno2"))),
prefiro continuar tentando com readShapeLines("Catas_Altas.shp", proj4string=CRS("+proj=utm +zone=23 +south +datum=WGS84 +units=m +no_defs")), porque consigo visualizar a área sobre o raster, achei alguns posts mais usando o GRASS, mas gostaria de fazer tudo só no R.
Obrigado,
Alexandre
Em 04/04/2013 12:18, Thiago V. dos Santos escreveu:
Alexandre,
a) Tente ler o seu shapefile com a funcao readShapePoly.
b) Se nao der certo, sugiro uma combinacao das funcoes crop e raster. Nesse caso, experimente rodar o seu codigo com as seguintes mudancas:
require("raster") A <- stack("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif") contorno<- readShapePoly("Catas_Altas.shp")
A.crop <- crop(A, extent(contorno), snap='out')
contorno.na<-setValues(A.crop, NA) contorno.r<-rasterize(contorno, contorno.na) ### isso pode demorar, dependendo do seu shapefile C <- mask(x=A.crop, mask=contorno.r)
Saudações,
-- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898
----- Original Message ----- From: ASANTOS<alexandresantosbr@yahoo.com.br> To:r-br@listas.c3sl.ufpr.br Cc: Sent: Thursday, April 4, 2013 10:31 AM Subject: [R-br] Criando uma mascara com shapefile sobre raster
Boa tarde pessoal,
Estou com um problema e não consigo criar uma mascara com um arquivo no formato shapefile sobre raster usando a função crop() do pacote raster, por algum motivo meu objeto contorno que é um SpatialLinesDataFrame não esta servido para oferecer o polígono limítrofe da área, alguém poderia me dar um help, segue CRM:
require("raster") A <- stack(c("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif"))## Imagem plotRGB(A) ## Plota a imagem contorno<- readShapeLines("Catas_Altas.shp") ## Contorno da área lines(contorno, col="red")Plota o contorno C <- crop(A,contorno) ## Recorta o que esta contido no contorno na imagem Erro em .local(x, y, ...) : nenhum slot de nome "legend" para esse objeto de classe "RasterStack"
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br
======================================================================
_______________________________________________
R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br ======================================================================
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br ====================================================================== _______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br ======================================================================

PERFEITO!!!! Thiago, Era isto mesmo que eu queria fazer. Minha abordagem inicial era trabalhar com polígonos usando o PBSmapping, mas estava difícil fazer a representação do contorno neste formato sobre a imagem. Tenho uma última questão e vou precisar combinar diferentes bandas, por isso a bordagem inicial usando stack(), mas vou utilizar um loop sobre brick() conforme me recomendou, porém o que me preocupa foi o processo de rasterize() que gostaria de saber se vai mudar o valor dos pixels? Pois quero plotar novamente como na imagem inicial em escala de cinza, mas se fazer um plot greyscale o valor dos pixels não vão ficar subjetivo? Obrigado, Alexandre Em 06/04/2013 18:52, Thiago V. dos Santos escreveu:
Alexandre,
Acredito que o codigo no final dessa mensagem funcione.
O maior problema foi converter o seu shapefile de polylines para polygons (voce tinha mencionado na primeira pergunta). So consegui fazer isso usando uma combinacao de funcoes dos pacores maptools e PBSmapping - voce deve instalar esse pacote.
Primeiro eu converti as polylines para polysets (classe do pacote PBSmapping) e em seguida polysets para poligonos. O fluxo subsequente foi o mesmo que eu tinha te passado anteriormente.
Alem disso, carreguei a banda que voce mandou como brick (ao inves de stack) para para fins de simplicidade. Se voce fizer questao do stack para aplicar a todas as bandas da imagem, entao tera que fazer um loop entre elas - for (i in 1:nbands(land)){}.
--------------------------------------------------- # Require packages require(raster) require(maptools) require(PBSmapping)
#Load data land <- raster("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif") contorno_line <- readShapeLines ("Catas_Altas.shp", proj4string=CRS("+proj=utm +zone=23 +south +datum=WGS84 +units=m +no_defs"))
# Convert SpatialLines to PolySet and then to SpatialPolygons - this will require package PBSmapping contorno_poly <- PolySet2SpatialPolygons (SpatialLines2PolySet(contorno_line), close_polys=TRUE)
# Then, perform crop and mask procedures as usual land.crop <- crop(land, extent(contorno_poly), snap='out') contorno.na <- setValues(land.crop, NA) contorno.r <- rasterize(contorno_poly, contorno.na) land_mask <- mask(x=land.crop, mask=contorno_poly)
#Check final result plot(land_mask) ---------------------------------------------------
Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898 ------------------------------------------------------------------------ *From:* ASANTOS <alexandresantosbr@yahoo.com.br> *To:* r-br@listas.c3sl.ufpr.br; Thiago V. dos Santos <thi_veloso@yahoo.com.br> *Sent:* Saturday, April 6, 2013 1:17 PM *Subject:* Re: [R-br] Criando uma mascara com shapefile sobre raster
Thiago
Segue dbf e shx, prj não foi projetado ainda não,
https://www.dropbox.com/s/p0idcxmh7td8hgi/Catas_Altas.dbf ## Dbf
https://www.dropbox.com/s/mssh8lq6cy61ncd/Catas_Altas.shx ## Shx,
Muito obrigado,
Alexandre
Em 06/04/2013 14:05, Thiago V. dos Santos escreveu:
Alexandre,
O .shp é só uma parte do dado, a geometria. Para reproduzir o seu problema, vou precisar também do .dbf e do .shx, além do .prj se ele já estiver projetado.
Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898 ------------------------------------------------------------------------ *From:* ASANTOS <alexandresantosbr@yahoo.com.br> <mailto:alexandresantosbr@yahoo.com.br> *To:* r-br@listas.c3sl.ufpr.br <mailto:r-br@listas.c3sl.ufpr.br> *Sent:* Saturday, April 6, 2013 11:32 AM *Subject:* Re: [R-br] Criando uma mascara com shapefile sobre raster
Obrigado pela atenção Thiago,
Tentei fazer um CRM, mas com raster estava difícil, coloquei no dropbox mesmo, segue a ultima tentativa que fiz com suas dicas:
# require(raster)
#Dados https://www.dropbox.com/s/lzj71k9vt6dbou1/LANDSAT_5_TM_20100506_217_074_L2_B... in tiff https://www.dropbox.com/s/bfcwpbw36gdlwjq/Catas_Altas.shp#contorno em shapefile # land.img<- stack(c("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif")) ## Imagem Landsat 5 plotRGB(land.img,1) #Plota a banda 7 da imagem
#Poligono de interesse em shapefile comm coordenadas em UTM contorno<- readShapeLines("Catas_Altas.shp", proj4string=CRS("+proj=utm +zone=23 +south +datum=WGS84 +units=m +no_defs")) # #Quero selecionar os pixels da imagem que estão contidos no interior do polígono contorno A.crop <- crop(land.img, extent(contorno), snap='out') contorno.na<-setValues(A.crop, NA) contorno.r<-rasterize(contorno, contorno.na) C <- mask(x=A.crop, mask=contorno.r) #
Em 05/04/2013 09:18, Thiago V. dos Santos escreveu:
Mas você recebe algum erro ou o resultado é diferente do esperado?
O melhor mesmo seria fornecer seus dados para tentarmos reproduzir o problema. Não dá pra colocar no dropbox? 50Mb não é nada tão grande assim... Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898 ------------------------------------------------------------------------ *From:* ASANTOS <alexandresantosbr@yahoo.com.br> <mailto:alexandresantosbr@yahoo.com.br> *To:* r-br@listas.c3sl.ufpr.br <mailto:r-br@listas.c3sl.ufpr.br>; Thiago V. dos Santos <thi_veloso@yahoo.com.br> <mailto:thi_veloso@yahoo.com.br> *Sent:* Thursday, April 4, 2013 9:23 PM *Subject:* Re: [R-br] Criando uma mascara com shapefile sobre raster
Thiago,
Explicando melhor teoricamente, pois um CRM implicaria em uma imagem de 50MB, tenho:
1) Uma imagem do landsat 5 com um quadrante de interesse; 2)Um contorno em shapefile de uma área de 200 hectares.
Quero utilizar apenas os pixels da imagem contidos no interior da área de 200 hectares, para tanto extend() não resolve pois utiliza apenas utiliza coordenadas max e min e não considera a forma (contorno) do meu polígono para seleção dos pixels contidos nele.
Não consegui realizar o que desejo com a rotina sugerida. Mascara, usei como um termo que implica em área útil da imagem, não quero o quadrante todo oferecido pela imagem, mas aquilo que esta contido no meu shapefile.
Obrigado pela atenção,
Alexandre
Em 04/04/2013 21:03, Thiago V. dos Santos escreveu:
Alexandre,
O que a área do raster tem a ver com o tipo de função usada para carregar o shapefile?
Você não consegui recortar o raster com o shapefile usando os comandos que eu eu sugeri? O que exatamente você quis dizer com criar uma máscara na pergunta inicial?
Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota
http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde...
Phone: (612) 323 9898
----- Original Message ----- From: ASANTOS <alexandresantosbr@yahoo.com.br <mailto:alexandresantosbr@yahoo.com.br>> To: r-br@listas.c3sl.ufpr.br <mailto:r-br@listas.c3sl.ufpr.br> Cc: Sent: Thursday, April 4, 2013 5:14 PM Subject: Re: [R-br] Criando uma mascara com shapefile sobre raster
Thiago,
Não deu certo não, transformei em SpatialPolygons(list(Polygons(list(Polygon(contorno2)),"contorno2"))), prefiro continuar tentando com readShapeLines("Catas_Altas.shp", proj4string=CRS("+proj=utm +zone=23 +south +datum=WGS84 +units=m +no_defs")), porque consigo visualizar a área sobre o raster, achei alguns posts mais usando o GRASS, mas gostaria de fazer tudo só no R.
Obrigado,
Alexandre
Em 04/04/2013 12:18, Thiago V. dos Santos escreveu:
Alexandre,
a) Tente ler o seu shapefile com a funcao readShapePoly.
b) Se nao der certo, sugiro uma combinacao das funcoes crop e raster. Nesse caso, experimente rodar o seu codigo com as seguintes mudancas:
require("raster") A <- stack("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif") contorno<- readShapePoly("Catas_Altas.shp")
A.crop <- crop(A, extent(contorno), snap='out')
contorno.na<-setValues(A.crop, NA) contorno.r<-rasterize(contorno, contorno.na) ### isso pode demorar, dependendo do seu shapefile C <- mask(x=A.crop, mask=contorno.r)
Saudações,
-- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota
http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde...
Phone: (612) 323 9898
----- Original Message ----- From: ASANTOS<alexandresantosbr@yahoo.com.br <mailto:alexandresantosbr@yahoo.com.br>> To:r-br@listas.c3sl.ufpr.br <mailto:r-br@listas.c3sl.ufpr.br> Cc: Sent: Thursday, April 4, 2013 10:31 AM Subject: [R-br] Criando uma mascara com shapefile sobre raster
Boa tarde pessoal,
Estou com um problema e não consigo criar uma mascara com um arquivo no formato shapefile sobre raster usando a função crop() do pacote raster, por algum motivo meu objeto contorno que é um SpatialLinesDataFrame não esta servido para oferecer o polígono limítrofe da área, alguém poderia me dar um help, segue CRM:
require("raster") A <- stack(c("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif"))## Imagem plotRGB(A) ## Plota a imagem contorno<- readShapeLines("Catas_Altas.shp") ## Contorno da área lines(contorno, col="red")Plota o contorno C <- crop(A,contorno) ## Recorta o que esta contido no contorno na imagem Erro em .local(x, y, ...) : nenhum slot de nome "legend" para esse objeto de classe "RasterStack"
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br <mailto:alexandresantosbr@yahoo.com.br> alexandre.santos@cas.ifmt.edu.br <mailto:alexandre.santos@cas.ifmt.edu.br>
======================================================================
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br <mailto:R-br@listas.c3sl.ufpr.br> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e
forneça código mínimo reproduzível.
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br <mailto:alexandresantosbr@yahoo.com.br> alexandre.santos@cas.ifmt.edu.br <mailto:alexandre.santos@cas.ifmt.edu.br> ======================================================================
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br <mailto:e-mails:alexandresantosbr@yahoo.com.br> alexandre.santos@cas.ifmt.edu.br <mailto:alexandre.santos@cas.ifmt.edu.br> ======================================================================
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br <mailto:R-br@listas.c3sl.ufpr.br> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br <mailto:R-br@listas.c3sl.ufpr.br> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br <mailto:e-mails:alexandresantosbr@yahoo.com.br> alexandre.santos@cas.ifmt.edu.br <mailto:alexandre.santos@cas.ifmt.edu.br> ======================================================================
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br ======================================================================

Thiago, Desculpe pensei um pouco e achei a solução para retornar ao valor inicial dos pixels, o problema agora esta sendo salvar esta imagem regular em tiff, sendo: #Check final result plot(land_mask) image(land_mask, axes = FALSE, col = grey(seq(0, 1, length = 256))) # require(rgdal) img.mask <- as(x, "SpatialPixelsDataFrame") # Converting the RasterLayer object to a SpatialPixelsDataFrame object writeGDAL(img.mask, "img.mask.tif", drivername="GTiff") # This doesn´t works # Sendo que a imagem final não produz um tiff com o mesmo resultado que em image(land_mask, axes = FALSE, col = grey(seq(0, 1, length = 256))) Obrigado, Alexandre Em 06/04/2013 19:48, ASANTOS escreveu:
PERFEITO!!!! Thiago,
Era isto mesmo que eu queria fazer. Minha abordagem inicial era trabalhar com polígonos usando o PBSmapping, mas estava difícil fazer a representação do contorno neste formato sobre a imagem. Tenho uma última questão e vou precisar combinar diferentes bandas, por isso a bordagem inicial usando stack(), mas vou utilizar um loop sobre brick() conforme me recomendou, porém o que me preocupa foi o processo de rasterize() que gostaria de saber se vai mudar o valor dos pixels? Pois quero plotar novamente como na imagem inicial em escala de cinza, mas se fazer um plot greyscale o valor dos pixels não vão ficar subjetivo?
Obrigado,
Alexandre
Em 06/04/2013 18:52, Thiago V. dos Santos escreveu:
Alexandre,
Acredito que o codigo no final dessa mensagem funcione.
O maior problema foi converter o seu shapefile de polylines para polygons (voce tinha mencionado na primeira pergunta). So consegui fazer isso usando uma combinacao de funcoes dos pacores maptools e PBSmapping - voce deve instalar esse pacote.
Primeiro eu converti as polylines para polysets (classe do pacote PBSmapping) e em seguida polysets para poligonos. O fluxo subsequente foi o mesmo que eu tinha te passado anteriormente.
Alem disso, carreguei a banda que voce mandou como brick (ao inves de stack) para para fins de simplicidade. Se voce fizer questao do stack para aplicar a todas as bandas da imagem, entao tera que fazer um loop entre elas - for (i in 1:nbands(land)){}.
--------------------------------------------------- # Require packages require(raster) require(maptools) require(PBSmapping)
#Load data land <- raster("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif") contorno_line <- readShapeLines ("Catas_Altas.shp", proj4string=CRS("+proj=utm +zone=23 +south +datum=WGS84 +units=m +no_defs"))
# Convert SpatialLines to PolySet and then to SpatialPolygons - this will require package PBSmapping contorno_poly <- PolySet2SpatialPolygons (SpatialLines2PolySet(contorno_line), close_polys=TRUE)
# Then, perform crop and mask procedures as usual land.crop <- crop(land, extent(contorno_poly), snap='out') contorno.na <- setValues(land.crop, NA) contorno.r <- rasterize(contorno_poly, contorno.na) land_mask <- mask(x=land.crop, mask=contorno_poly)
#Check final result plot(land_mask) ---------------------------------------------------
Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898 ------------------------------------------------------------------------ *From:* ASANTOS <alexandresantosbr@yahoo.com.br> *To:* r-br@listas.c3sl.ufpr.br; Thiago V. dos Santos <thi_veloso@yahoo.com.br> *Sent:* Saturday, April 6, 2013 1:17 PM *Subject:* Re: [R-br] Criando uma mascara com shapefile sobre raster
Thiago
Segue dbf e shx, prj não foi projetado ainda não,
https://www.dropbox.com/s/p0idcxmh7td8hgi/Catas_Altas.dbf ## Dbf
https://www.dropbox.com/s/mssh8lq6cy61ncd/Catas_Altas.shx ## Shx,
Muito obrigado,
Alexandre
Em 06/04/2013 14:05, Thiago V. dos Santos escreveu:
Alexandre,
O .shp é só uma parte do dado, a geometria. Para reproduzir o seu problema, vou precisar também do .dbf e do .shx, além do .prj se ele já estiver projetado.
Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898 ------------------------------------------------------------------------ *From:* ASANTOS <alexandresantosbr@yahoo.com.br> <mailto:alexandresantosbr@yahoo.com.br> *To:* r-br@listas.c3sl.ufpr.br <mailto:r-br@listas.c3sl.ufpr.br> *Sent:* Saturday, April 6, 2013 11:32 AM *Subject:* Re: [R-br] Criando uma mascara com shapefile sobre raster
Obrigado pela atenção Thiago,
Tentei fazer um CRM, mas com raster estava difícil, coloquei no dropbox mesmo, segue a ultima tentativa que fiz com suas dicas:
# require(raster)
#Dados https://www.dropbox.com/s/lzj71k9vt6dbou1/LANDSAT_5_TM_20100506_217_074_L2_B... in tiff https://www.dropbox.com/s/bfcwpbw36gdlwjq/Catas_Altas.shp#contorno em shapefile # land.img<- stack(c("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif")) ## Imagem Landsat 5 plotRGB(land.img,1) #Plota a banda 7 da imagem
#Poligono de interesse em shapefile comm coordenadas em UTM contorno<- readShapeLines("Catas_Altas.shp", proj4string=CRS("+proj=utm +zone=23 +south +datum=WGS84 +units=m +no_defs")) # #Quero selecionar os pixels da imagem que estão contidos no interior do polígono contorno A.crop <- crop(land.img, extent(contorno), snap='out') contorno.na<-setValues(A.crop, NA) contorno.r<-rasterize(contorno, contorno.na) C <- mask(x=A.crop, mask=contorno.r) #
Em 05/04/2013 09:18, Thiago V. dos Santos escreveu:
Mas você recebe algum erro ou o resultado é diferente do esperado?
O melhor mesmo seria fornecer seus dados para tentarmos reproduzir o problema. Não dá pra colocar no dropbox? 50Mb não é nada tão grande assim... Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898 ------------------------------------------------------------------------ *From:* ASANTOS <alexandresantosbr@yahoo.com.br> <mailto:alexandresantosbr@yahoo.com.br> *To:* r-br@listas.c3sl.ufpr.br <mailto:r-br@listas.c3sl.ufpr.br>; Thiago V. dos Santos <thi_veloso@yahoo.com.br> <mailto:thi_veloso@yahoo.com.br> *Sent:* Thursday, April 4, 2013 9:23 PM *Subject:* Re: [R-br] Criando uma mascara com shapefile sobre raster
Thiago,
Explicando melhor teoricamente, pois um CRM implicaria em uma imagem de 50MB, tenho:
1) Uma imagem do landsat 5 com um quadrante de interesse; 2)Um contorno em shapefile de uma área de 200 hectares.
Quero utilizar apenas os pixels da imagem contidos no interior da área de 200 hectares, para tanto extend() não resolve pois utiliza apenas utiliza coordenadas max e min e não considera a forma (contorno) do meu polígono para seleção dos pixels contidos nele.
Não consegui realizar o que desejo com a rotina sugerida. Mascara, usei como um termo que implica em área útil da imagem, não quero o quadrante todo oferecido pela imagem, mas aquilo que esta contido no meu shapefile.
Obrigado pela atenção,
Alexandre
Em 04/04/2013 21:03, Thiago V. dos Santos escreveu:
Alexandre,
O que a área do raster tem a ver com o tipo de função usada para carregar o shapefile?
Você não consegui recortar o raster com o shapefile usando os comandos que eu eu sugeri? O que exatamente você quis dizer com criar uma máscara na pergunta inicial?
Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota
http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde...
Phone: (612) 323 9898
----- Original Message ----- From: ASANTOS <alexandresantosbr@yahoo.com.br <mailto:alexandresantosbr@yahoo.com.br>> To: r-br@listas.c3sl.ufpr.br <mailto:r-br@listas.c3sl.ufpr.br> Cc: Sent: Thursday, April 4, 2013 5:14 PM Subject: Re: [R-br] Criando uma mascara com shapefile sobre raster
Thiago,
Não deu certo não, transformei em
SpatialPolygons(list(Polygons(list(Polygon(contorno2)),"contorno2"))),
prefiro continuar tentando com readShapeLines("Catas_Altas.shp", proj4string=CRS("+proj=utm +zone=23 +south +datum=WGS84 +units=m +no_defs")), porque consigo visualizar a área sobre o raster, achei alguns posts mais usando o GRASS, mas gostaria de fazer tudo só no R.
Obrigado,
Alexandre
Em 04/04/2013 12:18, Thiago V. dos Santos escreveu:
Alexandre,
a) Tente ler o seu shapefile com a funcao readShapePoly.
b) Se nao der certo, sugiro uma combinacao das funcoes crop e raster. Nesse caso, experimente rodar o seu codigo com as seguintes mudancas:
require("raster") A <- stack("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif") contorno<- readShapePoly("Catas_Altas.shp")
A.crop <- crop(A, extent(contorno), snap='out')
contorno.na<-setValues(A.crop, NA) contorno.r<-rasterize(contorno, contorno.na) ### isso pode demorar, dependendo do seu shapefile C <- mask(x=A.crop, mask=contorno.r)
Saudações,
-- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota
http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde...
Phone: (612) 323 9898
----- Original Message ----- From: ASANTOS<alexandresantosbr@yahoo.com.br <mailto:alexandresantosbr@yahoo.com.br>> To:r-br@listas.c3sl.ufpr.br <mailto:r-br@listas.c3sl.ufpr.br> Cc: Sent: Thursday, April 4, 2013 10:31 AM Subject: [R-br] Criando uma mascara com shapefile sobre raster
Boa tarde pessoal,
Estou com um problema e não consigo criar uma mascara com um arquivo no formato shapefile sobre raster usando a função crop() do pacote raster, por algum motivo meu objeto contorno que é um SpatialLinesDataFrame não esta servido para oferecer o polígono limítrofe da área, alguém poderia me dar um help, segue CRM:
require("raster") A <- stack(c("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif"))## Imagem plotRGB(A) ## Plota a imagem contorno<- readShapeLines("Catas_Altas.shp") ## Contorno da área lines(contorno, col="red")Plota o contorno C <- crop(A,contorno) ## Recorta o que esta contido no contorno na imagem Erro em .local(x, y, ...) : nenhum slot de nome "legend" para esse objeto de classe "RasterStack"
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br <mailto:alexandresantosbr@yahoo.com.br> alexandre.santos@cas.ifmt.edu.br <mailto:alexandre.santos@cas.ifmt.edu.br>
======================================================================
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br <mailto:R-br@listas.c3sl.ufpr.br> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e
forneça código mínimo reproduzível.
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br <mailto:alexandresantosbr@yahoo.com.br> alexandre.santos@cas.ifmt.edu.br <mailto:alexandre.santos@cas.ifmt.edu.br> ======================================================================
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br <mailto:e-mails:alexandresantosbr@yahoo.com.br> alexandre.santos@cas.ifmt.edu.br <mailto:alexandre.santos@cas.ifmt.edu.br> ======================================================================
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br <mailto:R-br@listas.c3sl.ufpr.br> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br <mailto:R-br@listas.c3sl.ufpr.br> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br <mailto:e-mails:alexandresantosbr@yahoo.com.br> alexandre.santos@cas.ifmt.edu.br <mailto:alexandre.santos@cas.ifmt.edu.br> ======================================================================
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br ======================================================================
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br ======================================================================

Alexandre, Acho que consigo ajudar. a) a imagem final nao tera o histograma adulterado pelo recorte, mas ele sera diferente porque contem apenas uma parte dos dados da imagem original. Se voce quiser manter a mesma escala durante o plot, tera que controlar os valores manualmente (de acordo com o comando para plotar que voce esta usando) para que o range seja o mesmo da imagem original. Isso deixaria as duas imagens "comparaveis". b) voce nao precisa fazer nenhuma conversao para salvar a imagem final de Tiff. O proprio pacote raster pode salvar (usando drivers do rgdal), em algo parecido com isso: require(rgdal) writeRaster(land_mask, filename="landsat_cropped.tif", format="GTiff", overwrite=TRUE) O comando acima funcionara tanto para uma imagem quanto para brick (ou stack). Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898 ________________________________ From: ASANTOS <alexandresantosbr@yahoo.com.br> To: r-br@listas.c3sl.ufpr.br Sent: Saturday, April 6, 2013 7:26 PM Subject: Re: [R-br] Criando uma mascara com shapefile sobre raster Thiago, Desculpe pensei um pouco e achei a solução para retornar ao valor inicial dos pixels, o problema agora esta sendo salvar esta imagem regular em tiff, sendo: #Check final result plot(land_mask) image(land_mask, axes = FALSE, col = grey(seq(0, 1, length = 256))) # require(rgdal) img.mask <- as(x, "SpatialPixelsDataFrame") # Converting the RasterLayer object to a SpatialPixelsDataFrame object writeGDAL(img.mask, "img.mask.tif", drivername="GTiff") # This doesn´t works # Sendo que a imagem final não produz um tiff com o mesmo resultado que em image(land_mask, axes = FALSE, col = grey(seq(0, 1, length = 256))) Obrigado, Alexandre Em 06/04/2013 19:48, ASANTOS escreveu: PERFEITO!!!! Thiago,
Era isto mesmo que eu queria fazer. Minha abordagem
inicial era trabalhar com polígonos usando o PBSmapping, mas estava difícil fazer a representação do contorno neste formato sobre a imagem. Tenho uma última questão e vou precisar combinar diferentes bandas, por isso a bordagem inicial usando stack(), mas vou utilizar um loop sobre brick() conforme me recomendou, porém o que me preocupa foi o processo de rasterize() que gostaria de saber se vai mudar o valor dos pixels? Pois quero plotar novamente como na imagem inicial em escala de cinza, mas se fazer um plot greyscale o valor dos pixels não vão ficar subjetivo?
Obrigado,
Alexandre
Em 06/04/2013 18:52, Thiago V. dos Santos escreveu:
Alexandre,
Acredito que o codigo no final dessa mensagem funcione.
O maior problema foi converter o seu shapefile de polylines para polygons (voce tinha mencionado na primeira pergunta). So consegui fazer isso usando uma combinacao de funcoes dos pacores maptools e PBSmapping - voce deve instalar esse pacote.
Primeiro eu converti as polylines para polysets (classe do pacote PBSmapping) e em seguida polysets para poligonos. O fluxo subsequente foi o mesmo que eu tinha te passado anteriormente.
Alem disso, carreguei a banda que voce mandou como brick (ao inves de stack) para para fins de simplicidade. Se voce fizer questao do stack para aplicar a todas as bandas da imagem, entao tera que fazer um loop entre elas - for (i in 1:nbands(land)){}.
--------------------------------------------------- # Require packages require(raster) require(maptools) require(PBSmapping)
#Load data land <- raster("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif") contorno_line <- readShapeLines ("Catas_Altas.shp", proj4string=CRS("+proj=utm +zone=23 +south +datum=WGS84 +units=m +no_defs"))
# Convert SpatialLines to PolySet and then to SpatialPolygons - this will require package PBSmapping contorno_poly <- PolySet2SpatialPolygons (SpatialLines2PolySet(contorno_line), close_polys=TRUE)
# Then, perform crop and mask procedures as usual land.crop <- crop(land, extent(contorno_poly), snap='out') contorno.na <- setValues(land.crop, NA) contorno.r <- rasterize(contorno_poly, contorno.na) land_mask <- mask(x=land.crop, mask=contorno_poly)
#Check final result plot(land_mask) ---------------------------------------------------
Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898
________________________________ From: ASANTOS <alexandresantosbr@yahoo.com.br> To: r-br@listas.c3sl.ufpr.br; Thiago V. dos Santos <thi_veloso@yahoo.com.br> Sent: Saturday, April 6, 2013 1:17 PM Subject: Re: [R-br] Criando uma mascara com shapefile sobre raster
Thiago
Segue dbf e shx, prj não foi projetado ainda não,
https://www.dropbox.com/s/p0idcxmh7td8hgi/Catas_Altas.dbf ## Dbf
https://www.dropbox.com/s/mssh8lq6cy61ncd/Catas_Altas.shx ## Shx,
Muito obrigado,
Alexandre
Em 06/04/2013 14:05, Thiago V. dos Santos escreveu:
Alexandre,
O .shp é só uma parte do dado, a geometria. Para reproduzir o seu problema, vou precisar também do .dbf e do .shx, além do .prj se ele já estiver projetado.
Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898
________________________________ From: ASANTOS <alexandresantosbr@yahoo.com.br> To: r-br@listas.c3sl.ufpr.br Sent: Saturday, April 6, 2013 11:32 AM Subject: Re: [R-br] Criando uma mascara com shapefile sobre raster
Obrigado pela atenção Thiago,
Tentei fazer um CRM, mas com raster
estava difícil, coloquei no dropbox mesmo, segue a ultima tentativa que fiz com suas dicas:
# require(raster)
#Dados https://www.dropbox.com/s/lzj71k9vt6dbou1/LANDSAT_5_TM_20100506_217_074_L2_B... in tiff https://www.dropbox.com/s/bfcwpbw36gdlwjq/Catas_Altas.shp#contorno em shapefile # land.img<-
stack(c("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif")) ## Imagem Landsat 5
plotRGB(land.img,1) #Plota a banda 7 da imagem
#Poligono de interesse em shapefile comm coordenadas em UTM contorno<- readShapeLines("Catas_Altas.shp", proj4string=CRS("+proj=utm +zone=23 +south +datum=WGS84 +units=m +no_defs")) # #Quero selecionar os pixels da imagem que estão contidos no interior do polígono contorno A.crop <- crop(land.img, extent(contorno), snap='out') contorno.na<-setValues(A.crop, NA) contorno.r<-rasterize(contorno, contorno.na) C <- mask(x=A.crop, mask=contorno.r) #
Em 05/04/2013 09:18, Thiago V. dos Santos escreveu:
Mas você recebe algum erro ou o resultado é diferente do esperado?
O melhor mesmo seria fornecer seus dados para tentarmos reproduzir o problema. Não dá pra colocar no dropbox? 50Mb não é nada tão grande assim... Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898
________________________________ From: ASANTOS <alexandresantosbr@yahoo.com.br> To: r-br@listas.c3sl.ufpr.br; Thiago V. dos Santos <thi_veloso@yahoo.com.br> Sent: Thursday, April 4, 2013 9:23 PM Subject: Re: [R-br] Criando uma mascara com shapefile sobre raster
Thiago,
Explicando melhor
teoricamente, pois um CRM implicaria em uma
imagem de 50MB, tenho:
1) Uma imagem do landsat 5 com um quadrante de interesse; 2)Um contorno em shapefile de uma área de 200 hectares.
Quero utilizar apenas os pixels da imagem contidos no interior da área de 200 hectares, para tanto extend() não resolve pois utiliza apenas utiliza coordenadas max e min e não considera a forma (contorno) do meu polígono para seleção dos pixels contidos nele.
Não consegui realizar o que desejo com a rotina sugerida. Mascara, usei como um termo que implica em área útil da imagem, não quero o quadrante todo oferecido pela imagem, mas aquilo que esta contido no meu shapefile.
Obrigado pela atenção,
Alexandre
Em 04/04/2013 21:03, Thiago V. dos Santos escreveu:
Alexandre,
O que a área do raster tem a ver com o tipo de função usada para carregar o shapefile?
Você não consegui recortar o raster com o shapefile usando os comandos que eu eu sugeri? O que exatamente você quis dizer com criar uma máscara na pergunta inicial?
Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898
----- Original Message ----- From: ASANTOS <alexandresantosbr@yahoo.com.br> To: r-br@listas.c3sl.ufpr.br Cc: Sent: Thursday, April 4, 2013 5:14 PM Subject: Re: [R-br] Criando uma mascara com shapefile sobre raster
Thiago,
Não deu certo não, transformei em
SpatialPolygons(list(Polygons(list(Polygon(contorno2)),"contorno2"))),
prefiro continuar tentando com readShapeLines("Catas_Altas.shp", proj4string=CRS("+proj=utm +zone=23 +south +datum=WGS84 +units=m +no_defs")), porque consigo visualizar a área sobre o raster, achei alguns posts mais usando o GRASS, mas gostaria de fazer tudo só no R.
Obrigado,
Alexandre
Em 04/04/2013 12:18, Thiago V. dos Santos escreveu:
Alexandre,
a) Tente ler o seu shapefile com a funcao readShapePoly.
b) Se nao der certo, sugiro uma combinacao das funcoes crop e raster. Nesse caso, experimente rodar o seu codigo com as seguintes mudancas:
require("raster") A <- stack("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif") contorno<- readShapePoly("Catas_Altas.shp")
A.crop <- crop(A, extent(contorno), snap='out')
contorno.na<-setValues(A.crop, NA)
contorno.r<-rasterize(contorno, contorno.na) ### isso pode demorar, dependendo do seu shapefile
C <- mask(x=A.crop, mask=contorno.r)
Saudações,
-- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898
----- Original Message ----- From: ASANTOS<alexandresantosbr@yahoo.com.br> To:r-br@listas.c3sl.ufpr.br Cc: Sent: Thursday, April 4, 2013 10:31 AM Subject: [R-br] Criando uma mascara com shapefile sobre raster
Boa tarde pessoal,
Estou com um problema e não consigo criar uma mascara com um arquivo no formato shapefile sobre raster usando a função crop() do pacote raster, por algum motivo meu objeto contorno que é um SpatialLinesDataFrame não esta servido para oferecer o polígono limítrofe da área, alguém poderia me dar um help, segue CRM:
require("raster") A <- stack(c("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif"))## Imagem plotRGB(A) ## Plota a imagem contorno<- readShapeLines("Catas_Altas.shp") ## Contorno da área lines(contorno, col="red")Plota o contorno C <- crop(A,contorno) ## Recorta o que esta contido no contorno na imagem Erro em .local(x, y, ...) : nenhum slot de nome "legend" para esse objeto de classe "RasterStack"
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br
======================================================================
_______________________________________________
R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br ======================================================================
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br ====================================================================== _______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br ======================================================================
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br ======================================================================
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br ====================================================================== _______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.

Redobrados agradecimentos Thiago, Agora vou poder começar a classificar as imagens com suas combinações de bandas por NDVI, WDVI etc., ou seja muito trabalho pela frente ainda. Abraço, Alexandre -- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br alexandre.santos@cas.ifmt.edu.br ====================================================================== Em 06/04/2013 21:09, Thiago V. dos Santos escreveu:
Alexandre,
Acho que consigo ajudar.
a) a imagem final nao tera o histograma adulterado pelo recorte, mas ele sera diferente porque contem apenas uma parte dos dados da imagem original. Se voce quiser manter a mesma escala durante o plot, tera que controlar os valores manualmente (de acordo com o comando para plotar que voce esta usando) para que o range seja o mesmo da imagem original. Isso deixaria as duas imagens "comparaveis".
b) voce nao precisa fazer nenhuma conversao para salvar a imagem final de Tiff. O proprio pacote raster pode salvar (usando drivers do rgdal), em algo parecido com isso: require(rgdal) writeRaster(land_mask, filename="landsat_cropped.tif", format="GTiff", overwrite=TRUE)
O comando acima funcionara tanto para uma imagem quanto para brick (ou stack). Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898 ------------------------------------------------------------------------ *From:* ASANTOS <alexandresantosbr@yahoo.com.br> *To:* r-br@listas.c3sl.ufpr.br *Sent:* Saturday, April 6, 2013 7:26 PM *Subject:* Re: [R-br] Criando uma mascara com shapefile sobre raster
Thiago,
Desculpe pensei um pouco e achei a solução para retornar ao valor inicial dos pixels, o problema agora esta sendo salvar esta imagem regular em tiff, sendo: #Check final result plot(land_mask) image(land_mask, axes = FALSE, col = grey(seq(0, 1, length = 256))) # require(rgdal) img.mask <- as(x, "SpatialPixelsDataFrame") # Converting the RasterLayer object to a SpatialPixelsDataFrame object writeGDAL(img.mask, "img.mask.tif", drivername="GTiff") # This doesn´t works #
Sendo que a imagem final não produz um tiff com o mesmo resultado que em image(land_mask, axes = FALSE, col = grey(seq(0, 1, length = 256)))
Obrigado,
Alexandre
Em 06/04/2013 19:48, ASANTOS escreveu:
PERFEITO!!!! Thiago,
Era isto mesmo que eu queria fazer. Minha abordagem inicial era trabalhar com polígonos usando o PBSmapping, mas estava difícil fazer a representação do contorno neste formato sobre a imagem. Tenho uma última questão e vou precisar combinar diferentes bandas, por isso a bordagem inicial usando stack(), mas vou utilizar um loop sobre brick() conforme me recomendou, porém o que me preocupa foi o processo de rasterize() que gostaria de saber se vai mudar o valor dos pixels? Pois quero plotar novamente como na imagem inicial em escala de cinza, mas se fazer um plot greyscale o valor dos pixels não vão ficar subjetivo?
Obrigado,
Alexandre
Em 06/04/2013 18:52, Thiago V. dos Santos escreveu:
Alexandre,
Acredito que o codigo no final dessa mensagem funcione.
O maior problema foi converter o seu shapefile de polylines para polygons (voce tinha mencionado na primeira pergunta). So consegui fazer isso usando uma combinacao de funcoes dos pacores maptools e PBSmapping - voce deve instalar esse pacote.
Primeiro eu converti as polylines para polysets (classe do pacote PBSmapping) e em seguida polysets para poligonos. O fluxo subsequente foi o mesmo que eu tinha te passado anteriormente.
Alem disso, carreguei a banda que voce mandou como brick (ao inves de stack) para para fins de simplicidade. Se voce fizer questao do stack para aplicar a todas as bandas da imagem, entao tera que fazer um loop entre elas - for (i in 1:nbands(land)){}.
--------------------------------------------------- # Require packages require(raster) require(maptools) require(PBSmapping)
#Load data land <- raster("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif") contorno_line <- readShapeLines ("Catas_Altas.shp", proj4string=CRS("+proj=utm +zone=23 +south +datum=WGS84 +units=m +no_defs"))
# Convert SpatialLines to PolySet and then to SpatialPolygons - this will require package PBSmapping contorno_poly <- PolySet2SpatialPolygons (SpatialLines2PolySet(contorno_line), close_polys=TRUE)
# Then, perform crop and mask procedures as usual land.crop <- crop(land, extent(contorno_poly), snap='out') contorno.na <- setValues(land.crop, NA) contorno.r <- rasterize(contorno_poly, contorno.na) land_mask <- mask(x=land.crop, mask=contorno_poly)
#Check final result plot(land_mask) ---------------------------------------------------
Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898 ------------------------------------------------------------------------ *From:* ASANTOS <alexandresantosbr@yahoo.com.br> <mailto:alexandresantosbr@yahoo.com.br> *To:* r-br@listas.c3sl.ufpr.br <mailto:r-br@listas.c3sl.ufpr.br>; Thiago V. dos Santos <thi_veloso@yahoo.com.br> <mailto:thi_veloso@yahoo.com.br> *Sent:* Saturday, April 6, 2013 1:17 PM *Subject:* Re: [R-br] Criando uma mascara com shapefile sobre raster
Thiago
Segue dbf e shx, prj não foi projetado ainda não,
https://www.dropbox.com/s/p0idcxmh7td8hgi/Catas_Altas.dbf ## Dbf
https://www.dropbox.com/s/mssh8lq6cy61ncd/Catas_Altas.shx ## Shx,
Muito obrigado,
Alexandre
Em 06/04/2013 14:05, Thiago V. dos Santos escreveu:
Alexandre,
O .shp é só uma parte do dado, a geometria. Para reproduzir o seu problema, vou precisar também do .dbf e do .shx, além do .prj se ele já estiver projetado.
Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898 ------------------------------------------------------------------------ *From:* ASANTOS <alexandresantosbr@yahoo.com.br> <mailto:alexandresantosbr@yahoo.com.br> *To:* r-br@listas.c3sl.ufpr.br <mailto:r-br@listas.c3sl.ufpr.br> *Sent:* Saturday, April 6, 2013 11:32 AM *Subject:* Re: [R-br] Criando uma mascara com shapefile sobre raster
Obrigado pela atenção Thiago,
Tentei fazer um CRM, mas com raster estava difícil, coloquei no dropbox mesmo, segue a ultima tentativa que fiz com suas dicas:
# require(raster)
#Dados https://www.dropbox.com/s/lzj71k9vt6dbou1/LANDSAT_5_TM_20100506_217_074_L2_B... in tiff https://www.dropbox.com/s/bfcwpbw36gdlwjq/Catas_Altas.shp#contorno em shapefile # land.img<- stack(c("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif")) ## Imagem Landsat 5 plotRGB(land.img,1) #Plota a banda 7 da imagem
#Poligono de interesse em shapefile comm coordenadas em UTM contorno<- readShapeLines("Catas_Altas.shp", proj4string=CRS("+proj=utm +zone=23 +south +datum=WGS84 +units=m +no_defs")) # #Quero selecionar os pixels da imagem que estão contidos no interior do polígono contorno A.crop <- crop(land.img, extent(contorno), snap='out') contorno.na<-setValues(A.crop, NA) contorno.r<-rasterize(contorno, contorno.na) C <- mask(x=A.crop, mask=contorno.r) #
Em 05/04/2013 09:18, Thiago V. dos Santos escreveu:
Mas você recebe algum erro ou o resultado é diferente do esperado?
O melhor mesmo seria fornecer seus dados para tentarmos reproduzir o problema. Não dá pra colocar no dropbox? 50Mb não é nada tão grande assim... Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... Phone: (612) 323 9898 ------------------------------------------------------------------------ *From:* ASANTOS <alexandresantosbr@yahoo.com.br> <mailto:alexandresantosbr@yahoo.com.br> *To:* r-br@listas.c3sl.ufpr.br <mailto:r-br@listas.c3sl.ufpr.br>; Thiago V. dos Santos <thi_veloso@yahoo.com.br> <mailto:thi_veloso@yahoo.com.br> *Sent:* Thursday, April 4, 2013 9:23 PM *Subject:* Re: [R-br] Criando uma mascara com shapefile sobre raster
Thiago,
Explicando melhor teoricamente, pois um CRM implicaria em uma imagem de 50MB, tenho:
1) Uma imagem do landsat 5 com um quadrante de interesse; 2)Um contorno em shapefile de uma área de 200 hectares.
Quero utilizar apenas os pixels da imagem contidos no interior da área de 200 hectares, para tanto extend() não resolve pois utiliza apenas utiliza coordenadas max e min e não considera a forma (contorno) do meu polígono para seleção dos pixels contidos nele.
Não consegui realizar o que desejo com a rotina sugerida. Mascara, usei como um termo que implica em área útil da imagem, não quero o quadrante todo oferecido pela imagem, mas aquilo que esta contido no meu shapefile.
Obrigado pela atenção,
Alexandre
Em 04/04/2013 21:03, Thiago V. dos Santos escreveu:
Alexandre,
O que a área do raster tem a ver com o tipo de função usada para carregar o shapefile?
Você não consegui recortar o raster com o shapefile usando os comandos que eu eu sugeri? O que exatamente você quis dizer com criar uma máscara na pergunta inicial?
Saudações, -- Thiago V. dos Santos PhD student Land and Atmospheric Science University of Minnesota
http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde...
Phone: (612) 323 9898
----- Original Message ----- From: ASANTOS <alexandresantosbr@yahoo.com.br <mailto:alexandresantosbr@yahoo.com.br>> To: r-br@listas.c3sl.ufpr.br <mailto:r-br@listas.c3sl.ufpr.br> Cc: Sent: Thursday, April 4, 2013 5:14 PM Subject: Re: [R-br] Criando uma mascara com shapefile sobre raster
Thiago,
Não deu certo não, transformei em
SpatialPolygons(list(Polygons(list(Polygon(contorno2)),"contorno2"))),
prefiro continuar tentando com readShapeLines("Catas_Altas.shp", proj4string=CRS("+proj=utm +zone=23 +south +datum=WGS84 +units=m +no_defs")), porque consigo visualizar a área sobre o raster, achei alguns posts mais usando o GRASS, mas gostaria de fazer tudo só no R.
Obrigado,
Alexandre
Em 04/04/2013 12:18, Thiago V. dos Santos escreveu: > Alexandre, > > a) Tente ler o seu shapefile com a funcao readShapePoly. > > b) Se nao der certo, sugiro uma combinacao das funcoes crop e raster. Nesse caso, experimente rodar o seu codigo com as seguintes mudancas: > > require("raster") > A <- stack("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif") > contorno<- readShapePoly("Catas_Altas.shp") > > A.crop <- crop(A, extent(contorno), snap='out') > > contorno.na<-setValues(A.crop, NA) > contorno.r<-rasterize(contorno, contorno.na) ### isso pode demorar, dependendo do seu shapefile > C <- mask(x=A.crop, mask=contorno.r) > > > Saudações, > > -- > Thiago V. dos Santos > PhD student > Land and Atmospheric Science > University of Minnesota > http://www.laas.umn.edu/CurrentStudents/MeettheStudents/ThiagodosSantos/inde... > Phone: (612) 323 9898 > > > ----- Original Message ----- > From: ASANTOS<alexandresantosbr@yahoo.com.br <mailto:alexandresantosbr@yahoo.com.br>> > To:r-br@listas.c3sl.ufpr.br <mailto:r-br@listas.c3sl.ufpr.br> > Cc: > Sent: Thursday, April 4, 2013 10:31 AM > Subject: [R-br] Criando uma mascara com shapefile sobre raster > > Boa tarde pessoal, > > Estou com um problema e não consigo criar uma mascara com um arquivo no formato shapefile sobre raster usando a função crop() do pacote raster, por algum motivo meu objeto contorno que é um SpatialLinesDataFrame não esta servido para oferecer o polígono limítrofe da área, alguém poderia me dar um help, segue CRM: > > require("raster") > A <- stack(c("LANDSAT_5_TM_20100506_217_074_L2_BAND7.tif"))## Imagem > plotRGB(A) ## Plota a imagem > contorno<- readShapeLines("Catas_Altas.shp") ## Contorno da área > lines(contorno, col="red")Plota o contorno > C <- crop(A,contorno) ## Recorta o que esta contido no contorno na imagem > Erro em .local(x, y, ...) : > nenhum slot de nome "legend" para esse objeto de classe "RasterStack" > > > -- ====================================================================== > Alexandre dos Santos > Proteção Florestal > Coordenador do curso Técnico em Florestas > Vice Coordenador do curso de Engenharia Florestal > IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso > Campus Cáceres > Caixa Postal 244 > Avenida dos Ramires, s/n > Bairro: Distrito Industrial > Cáceres - MT CEP: 78.200-000 > Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) > e-mails:alexandresantosbr@yahoo.com.br <mailto:alexandresantosbr@yahoo.com.br> > alexandre.santos@cas.ifmt.edu.br <mailto:alexandre.santos@cas.ifmt.edu.br> > ====================================================================== > > _______________________________________________ > R-br mailing list > R-br@listas.c3sl.ufpr.br <mailto:R-br@listas.c3sl.ufpr.br> > https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br > Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível. > >
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br <mailto:alexandresantosbr@yahoo.com.br> alexandre.santos@cas.ifmt.edu.br <mailto:alexandre.santos@cas.ifmt.edu.br> ======================================================================
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br <mailto:e-mails:alexandresantosbr@yahoo.com.br> alexandre.santos@cas.ifmt.edu.br <mailto:alexandre.santos@cas.ifmt.edu.br> ======================================================================
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br <mailto:R-br@listas.c3sl.ufpr.br> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br <mailto:R-br@listas.c3sl.ufpr.br> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br <mailto:e-mails:alexandresantosbr@yahoo.com.br> alexandre.santos@cas.ifmt.edu.br <mailto:alexandre.santos@cas.ifmt.edu.br> ======================================================================
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br <mailto:e-mails:alexandresantosbr@yahoo.com.br> alexandre.santos@cas.ifmt.edu.br <mailto:alexandre.santos@cas.ifmt.edu.br> ======================================================================
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br <mailto:R-br@listas.c3sl.ufpr.br> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
-- ====================================================================== Alexandre dos Santos Proteção Florestal Coordenador do curso Técnico em Florestas Vice Coordenador do curso de Engenharia Florestal IFMT - Instituto Federal de Educação, Ciência e Tecnologia de Mato Grosso Campus Cáceres Caixa Postal 244 Avenida dos Ramires, s/n Bairro: Distrito Industrial Cáceres - MT CEP: 78.200-000 Fone: (+55) 65 8132-8112 (TIM) (+55) 65 9686-6970 (VIVO) e-mails:alexandresantosbr@yahoo.com.br <mailto:e-mails:alexandresantosbr@yahoo.com.br> alexandre.santos@cas.ifmt.edu.br <mailto:alexandre.santos@cas.ifmt.edu.br> ======================================================================
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br <mailto:R-br@listas.c3sl.ufpr.br> https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
_______________________________________________ R-br mailing list R-br@listas.c3sl.ufpr.br https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br Leia o guia de postagem (http://www.leg.ufpr.br/r-br-guia) e forneça código mínimo reproduzível.
participantes (2)
-
ASANTOS
-
Thiago V. dos Santos