[R-br] Criando uma mascara com shapefile sobre raster

ASANTOS alexandresantosbr em yahoo.com.br
Sábado Abril 6 20:48:50 BRT 2013


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/index.htm
> Phone: (612) 323 9898
> ------------------------------------------------------------------------
> *From:* ASANTOS <alexandresantosbr em yahoo.com.br>
> *To:* r-br em listas.c3sl.ufpr.br; Thiago V. dos Santos 
> <thi_veloso em 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/index.htm
>> Phone: (612) 323 9898
>> ------------------------------------------------------------------------
>> *From:* ASANTOS <alexandresantosbr em yahoo.com.br> 
>> <mailto:alexandresantosbr em yahoo.com.br>
>> *To:* r-br em listas.c3sl.ufpr.br <mailto:r-br em 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_BAND7.tif#Raster 
>> 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/index.htm
>>> Phone: (612) 323 9898
>>> ------------------------------------------------------------------------
>>> *From:* ASANTOS <alexandresantosbr em yahoo.com.br> 
>>> <mailto:alexandresantosbr em yahoo.com.br>
>>> *To:* r-br em listas.c3sl.ufpr.br <mailto:r-br em listas.c3sl.ufpr.br>; 
>>> Thiago V. dos Santos <thi_veloso em yahoo.com.br> 
>>> <mailto:thi_veloso em 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/index.htm
>>> > Phone: (612) 323 9898
>>> >
>>> >
>>> > ----- Original Message -----
>>> > From: ASANTOS <alexandresantosbr em yahoo.com.br 
>>> <mailto:alexandresantosbr em yahoo.com.br>>
>>> > To: r-br em listas.c3sl.ufpr.br <mailto:r-br em 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/index.htm
>>> >> Phone: (612) 323 9898
>>> >>
>>> >>
>>> >> ----- Original Message -----
>>> >> From: ASANTOS<alexandresantosbr em yahoo.com.br 
>>> <mailto:alexandresantosbr em yahoo.com.br>>
>>> >> To:r-br em listas.c3sl.ufpr.br <mailto:r-br em 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 em yahoo.com.br 
>>> <mailto:alexandresantosbr em yahoo.com.br>
>>> >> alexandre.santos em cas.ifmt.edu.br 
>>> <mailto:alexandre.santos em cas.ifmt.edu.br>
>>> >> 
>>> ======================================================================
>>> >>
>>> >> _______________________________________________
>>> >> R-br mailing list
>>> >> R-br em listas.c3sl.ufpr.br <mailto:R-br em 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 em yahoo.com.br 
>>> <mailto:alexandresantosbr em yahoo.com.br>
>>> alexandre.santos em cas.ifmt.edu.br 
>>> <mailto:alexandre.santos em 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 em yahoo.com.br  <mailto:e-mails:alexandresantosbr em yahoo.com.br>  
>>          alexandre.santos em cas.ifmt.edu.br  <mailto:alexandre.santos em cas.ifmt.edu.br>                     
>> ======================================================================
>>
>> _______________________________________________
>> R-br mailing list
>> R-br em listas.c3sl.ufpr.br <mailto:R-br em 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 em listas.c3sl.ufpr.br  <mailto:R-br em 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 em yahoo.com.br  <mailto:e-mails:alexandresantosbr em yahoo.com.br>  
>          alexandre.santos em cas.ifmt.edu.br  <mailto:alexandre.santos em 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 em yahoo.com.br
         alexandre.santos em cas.ifmt.edu.br
======================================================================

-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20130406/150e6f0d/attachment.html>


Mais detalhes sobre a lista de discussão R-br