[R-br] Como Salvar Shapefile

classic Classic list List threaded Threaded
8 messages Options
Reply | Threaded
Open this post in threaded view
|

[R-br] Como Salvar Shapefile

R-br mailing list
Bom dia colegas listeiros!

Ultimamente venho tentando manusear arquivos espaciais utilizando o R.
Em alguns casos, objetos do tipo 'large SpatialPolygons' são gerados dentro do código. Quando isso ocorre (acredito que seja algo que acontece por padrão, devido a grande quantidade de informações armazenadas no objeto), a função writeOGR, que utilizo para salvar os shapefiles, quebra, por só tratar de objetos do tipo 'Spatial' e não os 'large Spatial'.
Sendo assim, gostaria de saber se existe a possibilidade de salvar um shapefile a partir de um objeto do tipo 'large Spatial' ou ainda se existe a possibilidade de transformar esse num objeto do tipo SpatialPolygonsDataFrame, para que a função writeOGR possa funcionar normalmente.

Segue código desenvolvido seguido do erro gerado. 
Desde já, agradeço pela ajuda de todos!

rodar_bibliotecas = function(necessarias_para_o_projeto){
  
  if(necessarias_para_o_projeto){
    library(rgrass7)
    library(spatstat) 
    library(maptools) 
    library(shapefiles)
    library(foreign)
    library(magrittr)
    library(formattable)
    library(e1071)
    library(rlang)
    library(rgdal)
    library(rgeos)
    library(raster)
    library(sp)
    library(sf)
    library(RcppCNPy)
    library(deldir)
    library(dismo)
    library(dplyr)
    library(ggplot2)
    library(gstat)
    library(tidyverse)
    library(smoothr)
    library(viridisLite)
  }
  return('Ok')
}

rodar_bibliotecas(TRUE)

raiz = '/home/yury/pesquisa/arquivos/areas/'
clientes = dir(raiz)

for (cliente in 1:length(clientes)) {
  
  analises = dir(paste0(raiz, clientes[cliente]))
  q = list()
  
  for (analise in 1:length(analises)) {
    
    shapefile_contorno = readOGR(paste0(raiz, clientes[cliente], '/', analises[analise], '/', 'vetores.shp'))
    shapefile_contorno$id = 1
    dissolvido = unionSpatialPolygons(shapefile_contorno, IDs = shapefile_contorno$id)
    #plot(dissolvido)
    
    q[analise] = dissolvido
    
  }
  
  fim = q[[1]]
  for (x in 2:length(q)){
    
    fim = bind(fim, q[[x]])
    
  }
plot(fim)

path_to_save = paste0(raiz, clientes[cliente])
writeOGR(fim,
         dsn = path_to_save,
         layer = paste0('contorno_', clientes[cliente]),
         driver = 'ESRI Shapefile',
         overwrite_layer = TRUE)

}

Error in writeOGR(fim, dsn = path_to_save, layer = paste0("contorno_", : obj must be a SpatialPointsDataFrame, SpatialLinesDataFrame or SpatialPolygonsDataFrame

Yury Duarte
Engenheiro Agrônomo - ESALQ/USP

_______________________________________________
R-br mailing list
[hidden email]
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.
Reply | Threaded
Open this post in threaded view
|

Re: [R-br] Como Salvar Shapefile

R-br mailing list
se você for usar apenas em ambiente R, a melhor opção é usar save(...). Frequentemente uso com compress='xz'.

Elias T. Krainski


Em terça-feira, 15 de janeiro de 2019 11:30:21 BRST, Yury Duarte por (R-br) <[hidden email]> escreveu:


Bom dia colegas listeiros!

Ultimamente venho tentando manusear arquivos espaciais utilizando o R.
Em alguns casos, objetos do tipo 'large SpatialPolygons' são gerados dentro do código. Quando isso ocorre (acredito que seja algo que acontece por padrão, devido a grande quantidade de informações armazenadas no objeto), a função writeOGR, que utilizo para salvar os shapefiles, quebra, por só tratar de objetos do tipo 'Spatial' e não os 'large Spatial'.
Sendo assim, gostaria de saber se existe a possibilidade de salvar um shapefile a partir de um objeto do tipo 'large Spatial' ou ainda se existe a possibilidade de transformar esse num objeto do tipo SpatialPolygonsDataFrame, para que a função writeOGR possa funcionar normalmente.

Segue código desenvolvido seguido do erro gerado. 
Desde já, agradeço pela ajuda de todos!

rodar_bibliotecas = function(necessarias_para_o_projeto){
  
  if(necessarias_para_o_projeto){
    library(rgrass7)
    library(spatstat) 
    library(maptools) 
    library(shapefiles)
    library(foreign)
    library(magrittr)
    library(formattable)
    library(e1071)
    library(rlang)
    library(rgdal)
    library(rgeos)
    library(raster)
    library(sp)
    library(sf)
    library(RcppCNPy)
    library(deldir)
    library(dismo)
    library(dplyr)
    library(ggplot2)
    library(gstat)
    library(tidyverse)
    library(smoothr)
    library(viridisLite)
  }
  return('Ok')
}

rodar_bibliotecas(TRUE)

raiz = '/home/yury/pesquisa/arquivos/areas/'
clientes = dir(raiz)

for (cliente in 1:length(clientes)) {
  
  analises = dir(paste0(raiz, clientes[cliente]))
  q = list()
  
  for (analise in 1:length(analises)) {
    
    shapefile_contorno = readOGR(paste0(raiz, clientes[cliente], '/', analises[analise], '/', 'vetores.shp'))
    shapefile_contorno$id = 1
    dissolvido = unionSpatialPolygons(shapefile_contorno, IDs = shapefile_contorno$id)
    #plot(dissolvido)
    
    q[analise] = dissolvido
    
  }
  
  fim = q[[1]]
  for (x in 2:length(q)){
    
    fim = bind(fim, q[[x]])
    
  }
plot(fim)

path_to_save = paste0(raiz, clientes[cliente])
writeOGR(fim,
         dsn = path_to_save,
         layer = paste0('contorno_', clientes[cliente]),
         driver = 'ESRI Shapefile',
         overwrite_layer = TRUE)

}

Error in writeOGR(fim, dsn = path_to_save, layer = paste0("contorno_", : obj must be a SpatialPointsDataFrame, SpatialLinesDataFrame or SpatialPolygonsDataFrame

Yury Duarte
Engenheiro Agrônomo - ESALQ/USP
_______________________________________________
R-br mailing list
[hidden email]
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
[hidden email]
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.
Reply | Threaded
Open this post in threaded view
|

Re: [R-br] Como Salvar Shapefile

R-br mailing list
Bom dia Elias, como vai?

Interessante sua solução!
Não estou acostumado a salvar minhas saídas no formato .RData. Irei testar esse formato nos casos onde irei trabalhar os dados/analises apenas em ambiente R.
Aparentemente, esse formato economiza bastante espaço em disco.
Entretanto, para essa situação em especial, eu realmente tenho a necessidade de salvar as saídas em formato .shp, pois tenho que aplicar o resultado do script em outros ambientes (nos SIGs em geral e no Google Earth). 

Caso tenha(m) mais alguma sugestão, ficarei feliz em testar.

Mais uma vez, agradeço pela disponibilidade e apoio!

Att 

Yury Duarte
Engenheiro Agrônomo - ESALQ/USP


Em qua, 16 de jan de 2019 às 11:24, Elias T. Krainski <[hidden email]> escreveu:
se você for usar apenas em ambiente R, a melhor opção é usar save(...). Frequentemente uso com compress='xz'.

Elias T. Krainski


Em terça-feira, 15 de janeiro de 2019 11:30:21 BRST, Yury Duarte por (R-br) <[hidden email]> escreveu:


Bom dia colegas listeiros!

Ultimamente venho tentando manusear arquivos espaciais utilizando o R.
Em alguns casos, objetos do tipo 'large SpatialPolygons' são gerados dentro do código. Quando isso ocorre (acredito que seja algo que acontece por padrão, devido a grande quantidade de informações armazenadas no objeto), a função writeOGR, que utilizo para salvar os shapefiles, quebra, por só tratar de objetos do tipo 'Spatial' e não os 'large Spatial'.
Sendo assim, gostaria de saber se existe a possibilidade de salvar um shapefile a partir de um objeto do tipo 'large Spatial' ou ainda se existe a possibilidade de transformar esse num objeto do tipo SpatialPolygonsDataFrame, para que a função writeOGR possa funcionar normalmente.

Segue código desenvolvido seguido do erro gerado. 
Desde já, agradeço pela ajuda de todos!

rodar_bibliotecas = function(necessarias_para_o_projeto){
  
  if(necessarias_para_o_projeto){
    library(rgrass7)
    library(spatstat) 
    library(maptools) 
    library(shapefiles)
    library(foreign)
    library(magrittr)
    library(formattable)
    library(e1071)
    library(rlang)
    library(rgdal)
    library(rgeos)
    library(raster)
    library(sp)
    library(sf)
    library(RcppCNPy)
    library(deldir)
    library(dismo)
    library(dplyr)
    library(ggplot2)
    library(gstat)
    library(tidyverse)
    library(smoothr)
    library(viridisLite)
  }
  return('Ok')
}

rodar_bibliotecas(TRUE)

raiz = '/home/yury/pesquisa/arquivos/areas/'
clientes = dir(raiz)

for (cliente in 1:length(clientes)) {
  
  analises = dir(paste0(raiz, clientes[cliente]))
  q = list()
  
  for (analise in 1:length(analises)) {
    
    shapefile_contorno = readOGR(paste0(raiz, clientes[cliente], '/', analises[analise], '/', 'vetores.shp'))
    shapefile_contorno$id = 1
    dissolvido = unionSpatialPolygons(shapefile_contorno, IDs = shapefile_contorno$id)
    #plot(dissolvido)
    
    q[analise] = dissolvido
    
  }
  
  fim = q[[1]]
  for (x in 2:length(q)){
    
    fim = bind(fim, q[[x]])
    
  }
plot(fim)

path_to_save = paste0(raiz, clientes[cliente])
writeOGR(fim,
         dsn = path_to_save,
         layer = paste0('contorno_', clientes[cliente]),
         driver = 'ESRI Shapefile',
         overwrite_layer = TRUE)

}

Error in writeOGR(fim, dsn = path_to_save, layer = paste0("contorno_", : obj must be a SpatialPointsDataFrame, SpatialLinesDataFrame or SpatialPolygonsDataFrame

Yury Duarte
Engenheiro Agrônomo - ESALQ/USP
_______________________________________________
R-br mailing list
[hidden email]
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
[hidden email]
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.
Reply | Threaded
Open this post in threaded view
|

Re: [R-br] Como Salvar Shapefile

R-br mailing list
Não seria o caso de reduzir a resolução do shapefile? Já teve situaçoes que usei gSimplify() e escolhi parametros que se mostraram adequados ao meu objetivo.

Elias T. Krainski


Em quarta-feira, 16 de janeiro de 2019 12:08:04 BRST, Yury Duarte <[hidden email]> escreveu:


Bom dia Elias, como vai?

Interessante sua solução!
Não estou acostumado a salvar minhas saídas no formato .RData. Irei testar esse formato nos casos onde irei trabalhar os dados/analises apenas em ambiente R.
Aparentemente, esse formato economiza bastante espaço em disco.
Entretanto, para essa situação em especial, eu realmente tenho a necessidade de salvar as saídas em formato .shp, pois tenho que aplicar o resultado do script em outros ambientes (nos SIGs em geral e no Google Earth). 

Caso tenha(m) mais alguma sugestão, ficarei feliz em testar.

Mais uma vez, agradeço pela disponibilidade e apoio!

Att 

Yury Duarte
Engenheiro Agrônomo - ESALQ/USP


Em qua, 16 de jan de 2019 às 11:24, Elias T. Krainski <[hidden email]> escreveu:
se você for usar apenas em ambiente R, a melhor opção é usar save(...). Frequentemente uso com compress='xz'.

Elias T. Krainski


Em terça-feira, 15 de janeiro de 2019 11:30:21 BRST, Yury Duarte por (R-br) <[hidden email]> escreveu:


Bom dia colegas listeiros!

Ultimamente venho tentando manusear arquivos espaciais utilizando o R.
Em alguns casos, objetos do tipo 'large SpatialPolygons' são gerados dentro do código. Quando isso ocorre (acredito que seja algo que acontece por padrão, devido a grande quantidade de informações armazenadas no objeto), a função writeOGR, que utilizo para salvar os shapefiles, quebra, por só tratar de objetos do tipo 'Spatial' e não os 'large Spatial'.
Sendo assim, gostaria de saber se existe a possibilidade de salvar um shapefile a partir de um objeto do tipo 'large Spatial' ou ainda se existe a possibilidade de transformar esse num objeto do tipo SpatialPolygonsDataFrame, para que a função writeOGR possa funcionar normalmente.

Segue código desenvolvido seguido do erro gerado. 
Desde já, agradeço pela ajuda de todos!

rodar_bibliotecas = function(necessarias_para_o_projeto){
  
  if(necessarias_para_o_projeto){
    library(rgrass7)
    library(spatstat) 
    library(maptools) 
    library(shapefiles)
    library(foreign)
    library(magrittr)
    library(formattable)
    library(e1071)
    library(rlang)
    library(rgdal)
    library(rgeos)
    library(raster)
    library(sp)
    library(sf)
    library(RcppCNPy)
    library(deldir)
    library(dismo)
    library(dplyr)
    library(ggplot2)
    library(gstat)
    library(tidyverse)
    library(smoothr)
    library(viridisLite)
  }
  return('Ok')
}

rodar_bibliotecas(TRUE)

raiz = '/home/yury/pesquisa/arquivos/areas/'
clientes = dir(raiz)

for (cliente in 1:length(clientes)) {
  
  analises = dir(paste0(raiz, clientes[cliente]))
  q = list()
  
  for (analise in 1:length(analises)) {
    
    shapefile_contorno = readOGR(paste0(raiz, clientes[cliente], '/', analises[analise], '/', 'vetores.shp'))
    shapefile_contorno$id = 1
    dissolvido = unionSpatialPolygons(shapefile_contorno, IDs = shapefile_contorno$id)
    #plot(dissolvido)
    
    q[analise] = dissolvido
    
  }
  
  fim = q[[1]]
  for (x in 2:length(q)){
    
    fim = bind(fim, q[[x]])
    
  }
plot(fim)

path_to_save = paste0(raiz, clientes[cliente])
writeOGR(fim,
         dsn = path_to_save,
         layer = paste0('contorno_', clientes[cliente]),
         driver = 'ESRI Shapefile',
         overwrite_layer = TRUE)

}

Error in writeOGR(fim, dsn = path_to_save, layer = paste0("contorno_", : obj must be a SpatialPointsDataFrame, SpatialLinesDataFrame or SpatialPolygonsDataFrame

Yury Duarte
Engenheiro Agrônomo - ESALQ/USP
_______________________________________________
R-br mailing list
[hidden email]
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
[hidden email]
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.
Reply | Threaded
Open this post in threaded view
|

Re: [R-br] Como Salvar Shapefile

R-br mailing list
Testei o efeito da função gSimplify(), mas acho que não vou poder utiliza-la. 
Mesmo passando um valor baixo no parâmetro 'tol', a quantidade de detalhes perdida nos contornos dos meus polígonos é grande.
Acredito que eliminar polígonos concêntricos possa ajudar a diminuir o tamanho do objeto gerado pelo script (ainda não sei como fazer essa verificação e eliminação), mas o número de casos em que isso ocorre não está sendo tão grande assim.

Yury Duarte
Engenheiro Agrônomo - ESALQ/USP


Em qua, 16 de jan de 2019 às 13:22, Elias T. Krainski <[hidden email]> escreveu:
Não seria o caso de reduzir a resolução do shapefile? Já teve situaçoes que usei gSimplify() e escolhi parametros que se mostraram adequados ao meu objetivo.

Elias T. Krainski


Em quarta-feira, 16 de janeiro de 2019 12:08:04 BRST, Yury Duarte <[hidden email]> escreveu:


Bom dia Elias, como vai?

Interessante sua solução!
Não estou acostumado a salvar minhas saídas no formato .RData. Irei testar esse formato nos casos onde irei trabalhar os dados/analises apenas em ambiente R.
Aparentemente, esse formato economiza bastante espaço em disco.
Entretanto, para essa situação em especial, eu realmente tenho a necessidade de salvar as saídas em formato .shp, pois tenho que aplicar o resultado do script em outros ambientes (nos SIGs em geral e no Google Earth). 

Caso tenha(m) mais alguma sugestão, ficarei feliz em testar.

Mais uma vez, agradeço pela disponibilidade e apoio!

Att 

Yury Duarte
Engenheiro Agrônomo - ESALQ/USP


Em qua, 16 de jan de 2019 às 11:24, Elias T. Krainski <[hidden email]> escreveu:
se você for usar apenas em ambiente R, a melhor opção é usar save(...). Frequentemente uso com compress='xz'.

Elias T. Krainski


Em terça-feira, 15 de janeiro de 2019 11:30:21 BRST, Yury Duarte por (R-br) <[hidden email]> escreveu:


Bom dia colegas listeiros!

Ultimamente venho tentando manusear arquivos espaciais utilizando o R.
Em alguns casos, objetos do tipo 'large SpatialPolygons' são gerados dentro do código. Quando isso ocorre (acredito que seja algo que acontece por padrão, devido a grande quantidade de informações armazenadas no objeto), a função writeOGR, que utilizo para salvar os shapefiles, quebra, por só tratar de objetos do tipo 'Spatial' e não os 'large Spatial'.
Sendo assim, gostaria de saber se existe a possibilidade de salvar um shapefile a partir de um objeto do tipo 'large Spatial' ou ainda se existe a possibilidade de transformar esse num objeto do tipo SpatialPolygonsDataFrame, para que a função writeOGR possa funcionar normalmente.

Segue código desenvolvido seguido do erro gerado. 
Desde já, agradeço pela ajuda de todos!

rodar_bibliotecas = function(necessarias_para_o_projeto){
  
  if(necessarias_para_o_projeto){
    library(rgrass7)
    library(spatstat) 
    library(maptools) 
    library(shapefiles)
    library(foreign)
    library(magrittr)
    library(formattable)
    library(e1071)
    library(rlang)
    library(rgdal)
    library(rgeos)
    library(raster)
    library(sp)
    library(sf)
    library(RcppCNPy)
    library(deldir)
    library(dismo)
    library(dplyr)
    library(ggplot2)
    library(gstat)
    library(tidyverse)
    library(smoothr)
    library(viridisLite)
  }
  return('Ok')
}

rodar_bibliotecas(TRUE)

raiz = '/home/yury/pesquisa/arquivos/areas/'
clientes = dir(raiz)

for (cliente in 1:length(clientes)) {
  
  analises = dir(paste0(raiz, clientes[cliente]))
  q = list()
  
  for (analise in 1:length(analises)) {
    
    shapefile_contorno = readOGR(paste0(raiz, clientes[cliente], '/', analises[analise], '/', 'vetores.shp'))
    shapefile_contorno$id = 1
    dissolvido = unionSpatialPolygons(shapefile_contorno, IDs = shapefile_contorno$id)
    #plot(dissolvido)
    
    q[analise] = dissolvido
    
  }
  
  fim = q[[1]]
  for (x in 2:length(q)){
    
    fim = bind(fim, q[[x]])
    
  }
plot(fim)

path_to_save = paste0(raiz, clientes[cliente])
writeOGR(fim,
         dsn = path_to_save,
         layer = paste0('contorno_', clientes[cliente]),
         driver = 'ESRI Shapefile',
         overwrite_layer = TRUE)

}

Error in writeOGR(fim, dsn = path_to_save, layer = paste0("contorno_", : obj must be a SpatialPointsDataFrame, SpatialLinesDataFrame or SpatialPolygonsDataFrame

Yury Duarte
Engenheiro Agrônomo - ESALQ/USP
_______________________________________________
R-br mailing list
[hidden email]
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
[hidden email]
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.
Reply | Threaded
Open this post in threaded view
|

Re: [R-br] Como Salvar Shapefile

R-br mailing list
Prezado Yury,

todo shapefile precisa de uma tabela de atributos, mesmo que voce nao
tenha uma. Por isto o writeOGR precisa de um Spatial*DataFrame. Para
conseguir salvar, basta criar um SpatialPolygonsDataFrame a partir do
seu SpatialPolygons. Por exemplo:

require(rgdal)
require(sp)

p <-
SpatialPolygons(list(Polygons(list(Polygon(cbind(c(2,4,4,1,2),c(2,3,5,4,2)))),
"2"), Polygons(list(Polygon(cbind(c(5,4,2,5),c(2,3,2,2)))), "3")))

# o codigo abaixo vai dar o mesmo erro que voce teve:
writeOGR(p,dsn = ".", layer = "abc", driver = 'ESRI Shapefile',
overwrite_layer = TRUE)

# transforma o SpatialPolygons em um SpatialPolygonsDataFrame
p.df <- data.frame(value=1:length(p)) # cria um atributo fake
rownames(p.df)<-getSpPPolygonsIDSlots(p)
p <- SpatialPolygonsDataFrame(p, p.df)

# agora funciona (mesmo codigo pra salvar acima)
writeOGR(p,dsn = ".", layer = "abc", driver = 'ESRI Shapefile',
overwrite_layer = TRUE)

Agora, caso o seu dado seja muito grande e o rgdal nao funcione, melhor
migrar para o sf que é muito mais rapido e eficiente em termos de memória.

Um abraço,

Pedro


Em 16/01/2019 16:22, Yury Duarte por (R-br) escreveu:

> Testei o efeito da função gSimplify(), mas acho que não vou poder
> utiliza-la.
> Mesmo passando um valor baixo no parâmetro 'tol', a quantidade de
> detalhes perdida nos contornos dos meus polígonos é grande.
> Acredito que eliminar polígonos concêntricos possa ajudar a diminuir o
> tamanho do objeto gerado pelo script (ainda não sei como fazer essa
> verificação e eliminação), mas o número de casos em que isso ocorre não
> está sendo tão grande assim.
>
> Yury Duarte
> Engenheiro Agrônomo - ESALQ/USP
>
>
> Em qua, 16 de jan de 2019 às 13:22, Elias T. Krainski
> <[hidden email] <mailto:[hidden email]>> escreveu:
>
>     Não seria o caso de reduzir a resolução do shapefile? Já teve
>     situaçoes que usei gSimplify() e escolhi parametros que se mostraram
>     adequados ao meu objetivo.
>
>     Elias T. Krainski
>
>
>     Em quarta-feira, 16 de janeiro de 2019 12:08:04 BRST, Yury Duarte
>     <[hidden email] <mailto:[hidden email]>> escreveu:
>
>
>     Bom dia Elias, como vai?
>
>     Interessante sua solução!
>     Não estou acostumado a salvar minhas saídas no formato .RData. Irei
>     testar esse formato nos casos onde irei trabalhar os dados/analises
>     apenas em ambiente R.
>     Aparentemente, esse formato economiza bastante espaço em disco.
>     Entretanto, para essa situação em especial, eu realmente tenho a
>     necessidade de salvar as saídas em formato .shp, pois tenho que
>     aplicar o resultado do script em outros ambientes (nos SIGs em geral
>     e no Google Earth).
>
>     Caso tenha(m) mais alguma sugestão, ficarei feliz em testar.
>
>     Mais uma vez, agradeço pela disponibilidade e apoio!
>
>     Att
>
>     Yury Duarte
>     Engenheiro Agrônomo - ESALQ/USP
>
>
>     Em qua, 16 de jan de 2019 às 11:24, Elias T. Krainski
>     <[hidden email] <mailto:[hidden email]>>
>     escreveu:
>
>         se você for usar apenas em ambiente R, a melhor opção é usar
>         save(...). Frequentemente uso com compress='xz'.
>
>         Elias T. Krainski
>
>
>         Em terça-feira, 15 de janeiro de 2019 11:30:21 BRST, Yury Duarte
>         por (R-br) <[hidden email]
>         <mailto:[hidden email]>> escreveu:
>
>
>         Bom dia colegas listeiros!
>
>         Ultimamente venho tentando manusear arquivos espaciais
>         utilizando o R.
>         Em alguns casos, objetos do tipo 'large SpatialPolygons' são
>         gerados dentro do código. Quando isso ocorre (acredito que seja
>         algo que acontece por padrão, devido a grande quantidade de
>         informações armazenadas no objeto), a função writeOGR, que
>         utilizo para salvar os shapefiles, quebra, por só tratar de
>         objetos do tipo 'Spatial' e não os 'large Spatial'.
>         Sendo assim, gostaria de saber se existe a possibilidade de
>         salvar um shapefile a partir de um objeto do tipo 'large
>         Spatial' ou ainda se existe a possibilidade de transformar esse
>         num objeto do tipo SpatialPolygonsDataFrame, para que a função
>         writeOGR possa funcionar normalmente.
>
>         Segue código desenvolvido seguido do erro gerado.
>         Desde já, agradeço pela ajuda de todos!
>
>         rodar_bibliotecas = function(necessarias_para_o_projeto){
>            if(necessarias_para_o_projeto){
>              library(rgrass7)
>              library(spatstat)
>              library(maptools)
>              library(shapefiles)
>              library(foreign)
>              library(magrittr)
>              library(formattable)
>              library(e1071)
>              library(rlang)
>              library(rgdal)
>              library(rgeos)
>              library(raster)
>              library(sp)
>              library(sf)
>              library(RcppCNPy)
>              library(deldir)
>              library(dismo)
>              library(dplyr)
>              library(ggplot2)
>              library(gstat)
>              library(tidyverse)
>              library(smoothr)
>              library(viridisLite)
>            }
>            return('Ok')
>         }
>
>         rodar_bibliotecas(TRUE)
>
>         raiz = '/home/yury/pesquisa/arquivos/areas/'
>         clientes = dir(raiz)
>
>         for (cliente in 1:length(clientes)) {
>            analises = dir(paste0(raiz, clientes[cliente]))
>            q = list()
>            for (analise in 1:length(analises)) {
>              shapefile_contorno = readOGR(paste0(raiz,
>         clientes[cliente], '/', analises[analise], '/', 'vetores.shp'))
>              shapefile_contorno$id = 1
>              dissolvido = unionSpatialPolygons(shapefile_contorno, IDs =
>         shapefile_contorno$id)
>              #plot(dissolvido)
>              q[analise] = dissolvido
>            }
>            fim = q[[1]]
>            for (x in 2:length(q)){
>              fim = bind(fim, q[[x]])
>            }
>         plot(fim)
>
>         path_to_save = paste0(raiz, clientes[cliente])
>         writeOGR(fim,
>                   dsn = path_to_save,
>                   layer = paste0('contorno_', clientes[cliente]),
>                   driver = 'ESRI Shapefile',
>                   overwrite_layer = TRUE)
>
>         }
>
>         Error in writeOGR(fim, dsn = path_to_save, layer =
>         paste0("contorno_", : obj must be a SpatialPointsDataFrame,
>         SpatialLinesDataFrame or SpatialPolygonsDataFrame
>
>         Yury Duarte
>         Engenheiro Agrônomo - ESALQ/USP
>         _______________________________________________
>         R-br mailing list
>         [hidden email] <mailto:[hidden email]>
>         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
> [hidden email]
> 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.
>

--
Pedro R. Andrade, Dr.
Earth System Science Center (CCST)
National Institute for Space Research (INPE)
Sao Jose dos Campos, Brazil
_______________________________________________
R-br mailing list
[hidden email]
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 fornea cdigo mnimo reproduzvel.
Reply | Threaded
Open this post in threaded view
|

Re: [R-br] Como Salvar Shapefile

R-br mailing list
Bom dia, Pedro e colegas listeiros.

Gostaria de agradecer pela elucidação do problema, Pedro! 
Não havia percebido que a falta de valor para o atributo dos polígonos estava ausente/era necessário para a função desempenhar corretamente.
Agora, com os valores fake inseridos no objeto, mesmo para os que tem grande número de polígonos, o 'rgdal' está performando bem em grava-los, mas farei uns testes utilizando a lib 'sf'.

Mais uma vez, agradeço pela ajuda dos colegas!

Att

Yury Duarte
Engenheiro Agrônomo - ESALQ/USP


Em qua, 16 de jan de 2019 às 16:57, Pedro R. Andrade por (R-br) <[hidden email]> escreveu:
Prezado Yury,

todo shapefile precisa de uma tabela de atributos, mesmo que voce nao
tenha uma. Por isto o writeOGR precisa de um Spatial*DataFrame. Para
conseguir salvar, basta criar um SpatialPolygonsDataFrame a partir do
seu SpatialPolygons. Por exemplo:

require(rgdal)
require(sp)

p <-
SpatialPolygons(list(Polygons(list(Polygon(cbind(c(2,4,4,1,2),c(2,3,5,4,2)))),
"2"), Polygons(list(Polygon(cbind(c(5,4,2,5),c(2,3,2,2)))), "3")))

# o codigo abaixo vai dar o mesmo erro que voce teve:
writeOGR(p,dsn = ".", layer = "abc", driver = 'ESRI Shapefile',
overwrite_layer = TRUE)

# transforma o SpatialPolygons em um SpatialPolygonsDataFrame
p.df <- data.frame(value=1:length(p)) # cria um atributo fake
rownames(p.df)<-getSpPPolygonsIDSlots(p)
p <- SpatialPolygonsDataFrame(p, p.df)

# agora funciona (mesmo codigo pra salvar acima)
writeOGR(p,dsn = ".", layer = "abc", driver = 'ESRI Shapefile',
overwrite_layer = TRUE)

Agora, caso o seu dado seja muito grande e o rgdal nao funcione, melhor
migrar para o sf que é muito mais rapido e eficiente em termos de memória.

Um abraço,

Pedro


Em 16/01/2019 16:22, Yury Duarte por (R-br) escreveu:
> Testei o efeito da função gSimplify(), mas acho que não vou poder
> utiliza-la.
> Mesmo passando um valor baixo no parâmetro 'tol', a quantidade de
> detalhes perdida nos contornos dos meus polígonos é grande.
> Acredito que eliminar polígonos concêntricos possa ajudar a diminuir o
> tamanho do objeto gerado pelo script (ainda não sei como fazer essa
> verificação e eliminação), mas o número de casos em que isso ocorre não
> está sendo tão grande assim.
>
> Yury Duarte
> Engenheiro Agrônomo - ESALQ/USP
>
>
> Em qua, 16 de jan de 2019 às 13:22, Elias T. Krainski
> <[hidden email] <mailto:[hidden email]>> escreveu:
>
>     Não seria o caso de reduzir a resolução do shapefile? Já teve
>     situaçoes que usei gSimplify() e escolhi parametros que se mostraram
>     adequados ao meu objetivo.
>
>     Elias T. Krainski
>
>
>     Em quarta-feira, 16 de janeiro de 2019 12:08:04 BRST, Yury Duarte
>     <[hidden email] <mailto:[hidden email]>> escreveu:
>
>
>     Bom dia Elias, como vai?
>
>     Interessante sua solução!
>     Não estou acostumado a salvar minhas saídas no formato .RData. Irei
>     testar esse formato nos casos onde irei trabalhar os dados/analises
>     apenas em ambiente R.
>     Aparentemente, esse formato economiza bastante espaço em disco.
>     Entretanto, para essa situação em especial, eu realmente tenho a
>     necessidade de salvar as saídas em formato .shp, pois tenho que
>     aplicar o resultado do script em outros ambientes (nos SIGs em geral
>     e no Google Earth).
>
>     Caso tenha(m) mais alguma sugestão, ficarei feliz em testar.
>
>     Mais uma vez, agradeço pela disponibilidade e apoio!
>
>     Att
>
>     Yury Duarte
>     Engenheiro Agrônomo - ESALQ/USP
>
>
>     Em qua, 16 de jan de 2019 às 11:24, Elias T. Krainski
>     <[hidden email] <mailto:[hidden email]>>
>     escreveu:
>
>         se você for usar apenas em ambiente R, a melhor opção é usar
>         save(...). Frequentemente uso com compress='xz'.
>
>         Elias T. Krainski
>
>
>         Em terça-feira, 15 de janeiro de 2019 11:30:21 BRST, Yury Duarte
>         por (R-br) <[hidden email]
>         <mailto:[hidden email]>> escreveu:
>
>
>         Bom dia colegas listeiros!
>
>         Ultimamente venho tentando manusear arquivos espaciais
>         utilizando o R.
>         Em alguns casos, objetos do tipo 'large SpatialPolygons' são
>         gerados dentro do código. Quando isso ocorre (acredito que seja
>         algo que acontece por padrão, devido a grande quantidade de
>         informações armazenadas no objeto), a função writeOGR, que
>         utilizo para salvar os shapefiles, quebra, por só tratar de
>         objetos do tipo 'Spatial' e não os 'large Spatial'.
>         Sendo assim, gostaria de saber se existe a possibilidade de
>         salvar um shapefile a partir de um objeto do tipo 'large
>         Spatial' ou ainda se existe a possibilidade de transformar esse
>         num objeto do tipo SpatialPolygonsDataFrame, para que a função
>         writeOGR possa funcionar normalmente.
>
>         Segue código desenvolvido seguido do erro gerado.
>         Desde já, agradeço pela ajuda de todos!
>
>         rodar_bibliotecas = function(necessarias_para_o_projeto){
>            if(necessarias_para_o_projeto){
>              library(rgrass7)
>              library(spatstat)
>              library(maptools)
>              library(shapefiles)
>              library(foreign)
>              library(magrittr)
>              library(formattable)
>              library(e1071)
>              library(rlang)
>              library(rgdal)
>              library(rgeos)
>              library(raster)
>              library(sp)
>              library(sf)
>              library(RcppCNPy)
>              library(deldir)
>              library(dismo)
>              library(dplyr)
>              library(ggplot2)
>              library(gstat)
>              library(tidyverse)
>              library(smoothr)
>              library(viridisLite)
>            }
>            return('Ok')
>         }
>
>         rodar_bibliotecas(TRUE)
>
>         raiz = '/home/yury/pesquisa/arquivos/areas/'
>         clientes = dir(raiz)
>
>         for (cliente in 1:length(clientes)) {
>            analises = dir(paste0(raiz, clientes[cliente]))
>            q = list()
>            for (analise in 1:length(analises)) {
>              shapefile_contorno = readOGR(paste0(raiz,
>         clientes[cliente], '/', analises[analise], '/', 'vetores.shp'))
>              shapefile_contorno$id = 1
>              dissolvido = unionSpatialPolygons(shapefile_contorno, IDs =
>         shapefile_contorno$id)
>              #plot(dissolvido)
>              q[analise] = dissolvido
>            }
>            fim = q[[1]]
>            for (x in 2:length(q)){
>              fim = bind(fim, q[[x]])
>            }
>         plot(fim)
>
>         path_to_save = paste0(raiz, clientes[cliente])
>         writeOGR(fim,
>                   dsn = path_to_save,
>                   layer = paste0('contorno_', clientes[cliente]),
>                   driver = 'ESRI Shapefile',
>                   overwrite_layer = TRUE)
>
>         }
>
>         Error in writeOGR(fim, dsn = path_to_save, layer =
>         paste0("contorno_", : obj must be a SpatialPointsDataFrame,
>         SpatialLinesDataFrame or SpatialPolygonsDataFrame
>
>         Yury Duarte
>         Engenheiro Agrônomo - ESALQ/USP
>         _______________________________________________
>         R-br mailing list
>         [hidden email] <mailto:[hidden email]>
>         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
> [hidden email]
> 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.
>

--
Pedro R. Andrade, Dr.
Earth System Science Center (CCST)
National Institute for Space Research (INPE)
Sao Jose dos Campos, Brazil
_______________________________________________
R-br mailing list
[hidden email]
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 fornea cdigo mnimo reproduzvel.

_______________________________________________
R-br mailing list
[hidden email]
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.
Reply | Threaded
Open this post in threaded view
|

Re: [R-br] Como Salvar Shapefile

R-br mailing list
In reply to this post by R-br mailing list
 
Eu não consegui rodar este exemplo:

> require(rgdal)
Carregando pacotes exigidos: rgdal
Carregando pacotes exigidos: sp
rgdal: version: 1.3-4, (SVN revision 766)
 Geospatial Data Abstraction Library extensions to R successfully loaded
 Loaded GDAL runtime: GDAL 2.2.3, released 2017/11/20
 Path to GDAL shared files: C:/Users/Mauro/Documents/R/win-library/3.4/rgdal/gdal
 GDAL binary built with GEOS: TRUE 
 Loaded PROJ.4 runtime: Rel. 4.9.3, 15 August 2016, [PJ_VERSION: 493]
 Path to PROJ.4 shared files: C:/Users/Mauro/Documents/R/win-library/3.4/rgdal/proj
 Linking to sp version: 1.3-1 
Warning message:
package ‘rgdal’ was built under R version 3.4.4 
> require(sp)
> p <- 
+ SpatialPolygons(list(Polygons(list(Polygon(cbind(c(2,4,4,1,2),c(2,3,5,4,2)))), 
+ "2"), Polygons(list(Polygon(cbind(c(5,4,2,5),c(2,3,2,2)))), "3")))
> # o codigo abaixo vai dar o mesmo erro que voce teve:
> writeOGR(p,dsn = ".", layer = "abc", driver = 'ESRI Shapefile', 
+ overwrite_layer = TRUE)
Error in writeOGR(p, dsn = ".", layer = "abc", driver = "ESRI Shapefile",  : 
  obj must be a SpatialPointsDataFrame, SpatialLinesDataFrame or
    SpatialPolygonsDataFrame
> # transforma o SpatialPolygons em um SpatialPolygonsDataFrame
> p.df <- data.frame(value=1:length(p)) # cria um atributo fake
> rownames(p.df)<-getSpPPolygonsIDSlots(p)
Warning message:
use *apply and slot directly 
> p <- SpatialPolygonsDataFrame(p, p.df)
> # agora funciona (mesmo codigo pra salvar acima)
> writeOGR(p,dsn = ".", layer = "abc", driver = 'ESRI Shapefile', 
+ overwrite_layer = TRUE)
> q()
 

todo shapefile precisa de uma tabela de atributos, mesmo que voce nao
tenha uma. Por isto o writeOGR precisa de um Spatial*DataFrame. Para
conseguir salvar, basta criar um SpatialPolygonsDataFrame a partir do
seu SpatialPolygons. Por exemplo:

require(rgdal)
require(sp)

p <-
SpatialPolygons(list(Polygons(list(Polygon(cbind(c(2,4,4,1,2),c(2,3,5,4,2)))),
"2"), Polygons(list(Polygon(cbind(c(5,4,2,5),c(2,3,2,2)))), "3")))

# o codigo abaixo vai dar o mesmo erro que voce teve:
writeOGR(p,dsn = ".", layer = "abc", driver = 'ESRI Shapefile',
overwrite_layer = TRUE)

# transforma o SpatialPolygons em um SpatialPolygonsDataFrame
p.df <- data.frame(value=1:length(p)) # cria um atributo fake
rownames(p.df)<-getSpPPolygonsIDSlots(p)
p <- SpatialPolygonsDataFrame(p, p.df)

# agora funciona (mesmo codigo pra salvar acima)
writeOGR(p,dsn = ".", layer = "abc", driver = 'ESRI Shapefile',
overwrite_layer = TRUE)

Agora, caso o seu dado seja muito grande e o rgdal nao funcione, melhor
migrar para o sf que é muito mais rapido e eficiente em termos de memória.

Um abraço,

Pedro


Em 16/01/2019 16:22, Yury Duarte por (R-br) escreveu:

> Testei o efeito da função gSimplify(), mas acho que não vou poder
> utiliza-la.
> Mesmo passando um valor baixo no parâmetro 'tol', a quantidade de
> detalhes perdida nos contornos dos meus polígonos é grande.
> Acredito que eliminar polígonos concêntricos possa ajudar a diminuir o
> tamanho do objeto gerado pelo script (ainda não sei como fazer essa
> verificação e eliminação), mas o número de casos em que isso ocorre não
> está sendo tão grande assim.
>
> Yury Duarte
> Engenheiro Agrônomo - ESALQ/USP
>
>
> Em qua, 16 de jan de 2019 às 13:22, Elias T. Krainski
> <[hidden email] <mailto:[hidden email]>> escreveu:
>
> Não seria o caso de reduzir a resolução do shapefile? Já teve
> situaçoes que usei gSimplify() e escolhi parametros que se mostraram
> adequados ao meu objetivo.
>
> Elias T. Krainski
>
>
> Em quarta-feira, 16 de janeiro de 2019 12:08:04 BRST, Yury Duarte
> <[hidden email] <mailto:[hidden email]>> escreveu:
>
>
> Bom dia Elias, como vai?
>
> Interessante sua solução!
> Não estou acostumado a salvar minhas saídas no formato .RData. Irei
> testar esse formato nos casos onde irei trabalhar os dados/analises
> apenas em ambiente R.
> Aparentemente, esse formato economiza bastante espaço em disco.
> Entretanto, para essa situação em especial, eu realmente tenho a
> necessidade de salvar as saídas em formato .shp, pois tenho que
> aplicar o resultado do script em outros ambientes (nos SIGs em geral
> e no Google Earth).
>
> Caso tenha(m) mais alguma sugestão, ficarei feliz em testar.
>
> Mais uma vez, agradeço pela disponibilidade e apoio!
>
> Att
>
> Yury Duarte
> Engenheiro Agrônomo - ESALQ/USP
>
>
> Em qua, 16 de jan de 2019 às 11:24, Elias T. Krainski
> <[hidden email] <mailto:[hidden email]>>
> escreveu:
>
> se você for usar apenas em ambiente R, a melhor opção é usar
> save(...). Frequentemente uso com compress='xz'.
>
> Elias T. Krainski
>
>
> Em terça-feira, 15 de janeiro de 2019 11:30:21 BRST, Yury Duarte
> por (R-br) <[hidden email]
> <mailto:[hidden email]>> escreveu:
>
>
> Bom dia colegas listeiros!
>
> Ultimamente venho tentando manusear arquivos espaciais
> utilizando o R.
> Em alguns casos, objetos do tipo 'large SpatialPolygons' são
> gerados dentro do código. Quando isso ocorre (acredito que seja
> algo que acontece por padrão, devido a grande quantidade de
> informações armazenadas no objeto), a função writeOGR, que
> utilizo para salvar os shapefiles, quebra, por só tratar de
> objetos do tipo 'Spatial' e não os 'large Spatial'.
> Sendo assim, gostaria de saber se existe a possibilidade de
> salvar um shapefile a partir de um objeto do tipo 'large
> Spatial' ou ainda se existe a possibilidade de transformar esse
> num objeto do tipo SpatialPolygonsDataFrame, para que a função
> writeOGR possa funcionar normalmente.
>
> Segue código desenvolvido seguido do erro gerado.
> Desde já, agradeço pela ajuda de todos!
>
> rodar_bibliotecas = function(necessarias_para_o_projeto){
>   if(necessarias_para_o_projeto){
>     library(rgrass7)
>     library(spatstat)
>     library(maptools)
>     library(shapefiles)
>     library(foreign)
>     library(magrittr)
>     library(formattable)
>     library(e1071)
>     library(rlang)
>     library(rgdal)
>     library(rgeos)
>     library(raster)
>     library(sp)
>     library(sf)
>     library(RcppCNPy)
>     library(deldir)
>     library(dismo)
>     library(dplyr)
>     library(ggplot2)
>     library(gstat)
>     library(tidyverse)
>     library(smoothr)
>     library(viridisLite)
>   }
>   return('Ok')
> }
>
> rodar_bibliotecas(TRUE)
>
> raiz = '/home/yury/pesquisa/arquivos/areas/'
> clientes = dir(raiz)
>
> for (cliente in 1:length(clientes)) {
>   analises = dir(paste0(raiz, clientes[cliente]))
>   q = list()
>   for (analise in 1:length(analises)) {
>     shapefile_contorno = readOGR(paste0(raiz,
> clientes[cliente], '/', analises[analise], '/', 'vetores.shp'))
>     shapefile_contorno$id = 1
>     dissolvido = unionSpatialPolygons(shapefile_contorno, IDs =
> shapefile_contorno$id)
>     #plot(dissolvido)
>     q[analise] = dissolvido
>   }
>   fim = q[[1]]
>   for (x in 2:length(q)){
>     fim = bind(fim, q[[x]])
>   }
> plot(fim)
>
> path_to_save = paste0(raiz, clientes[cliente])
> writeOGR(fim,
>          dsn = path_to_save,
>          layer = paste0('contorno_', clientes[cliente]),
>          driver = 'ESRI Shapefile',
>          overwrite_layer = TRUE)
>
> }
>
> Error in writeOGR(fim, dsn = path_to_save, layer =
> paste0("contorno_", : obj must be a SpatialPointsDataFrame,
> SpatialLinesDataFrame or SpatialPolygonsDataFrame
>
> Yury Duarte
> Engenheiro Agrônomo - ESALQ/USP
> _______________________________________________
> R-br mailing list
> [hidden email] <mailto:[hidden email]>
> 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
> [hidden email]
> 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.
>

--
Pedro R. Andrade, Dr.
Earth System Science Center (CCST)
National Institute for Space Research (INPE)
Sao Jose dos Campos, Brazil
_______________________________________________
R-br mailing list
[hidden email]
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 fornea cdigo mnimo reproduzvel.

_______________________________________________
R-br mailing list
[hidden email]
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.