<div dir="ltr">Bom dia, Pedro e colegas listeiros.<div><br></div><div>Gostaria de agradecer pela elucidação do problema, Pedro! </div><div>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.</div><div>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'.</div><div><br></div><div>Mais uma vez, agradeço pela ajuda dos colegas!</div><div><br></div><div>Att</div><div><br clear="all"><div><div dir="ltr" class="gmail_signature" data-smartmail="gmail_signature"><div dir="ltr"><div>Yury Duarte<br></div>Engenheiro Agrônomo - ESALQ/USP<br></div></div></div><br></div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">Em qua, 16 de jan de 2019 às 16:57, Pedro R. Andrade por (R-br) <<a href="mailto:r-br@listas.c3sl.ufpr.br">r-br@listas.c3sl.ufpr.br</a>> escreveu:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">Prezado Yury,<br>
<br>
todo shapefile precisa de uma tabela de atributos, mesmo que voce nao <br>
tenha uma. Por isto o writeOGR precisa de um Spatial*DataFrame. Para <br>
conseguir salvar, basta criar um SpatialPolygonsDataFrame a partir do <br>
seu SpatialPolygons. Por exemplo:<br>
<br>
require(rgdal)<br>
require(sp)<br>
<br>
p <- <br>
SpatialPolygons(list(Polygons(list(Polygon(cbind(c(2,4,4,1,2),c(2,3,5,4,2)))), <br>
"2"), Polygons(list(Polygon(cbind(c(5,4,2,5),c(2,3,2,2)))), "3")))<br>
<br>
# o codigo abaixo vai dar o mesmo erro que voce teve:<br>
writeOGR(p,dsn = ".", layer = "abc", driver = 'ESRI Shapefile', <br>
overwrite_layer = TRUE)<br>
<br>
# transforma o SpatialPolygons em um SpatialPolygonsDataFrame<br>
p.df <- data.frame(value=1:length(p)) # cria um atributo fake<br>
rownames(p.df)<-getSpPPolygonsIDSlots(p)<br>
p <- SpatialPolygonsDataFrame(p, p.df)<br>
<br>
# agora funciona (mesmo codigo pra salvar acima)<br>
writeOGR(p,dsn = ".", layer = "abc", driver = 'ESRI Shapefile', <br>
overwrite_layer = TRUE)<br>
<br>
Agora, caso o seu dado seja muito grande e o rgdal nao funcione, melhor <br>
migrar para o sf que é muito mais rapido e eficiente em termos de memória.<br>
<br>
Um abraço,<br>
<br>
Pedro<br>
<br>
<br>
Em 16/01/2019 16:22, Yury Duarte por (R-br) escreveu:<br>
> Testei o efeito da função gSimplify(), mas acho que não vou poder <br>
> utiliza-la.<br>
> Mesmo passando um valor baixo no parâmetro 'tol', a quantidade de <br>
> detalhes perdida nos contornos dos meus polígonos é grande.<br>
> Acredito que eliminar polígonos concêntricos possa ajudar a diminuir o <br>
> tamanho do objeto gerado pelo script (ainda não sei como fazer essa <br>
> verificação e eliminação), mas o número de casos em que isso ocorre não <br>
> está sendo tão grande assim.<br>
> <br>
> Yury Duarte<br>
> Engenheiro Agrônomo - ESALQ/USP<br>
> <br>
> <br>
> Em qua, 16 de jan de 2019 às 13:22, Elias T. Krainski <br>
> <<a href="mailto:eliaskrainski@yahoo.com.br" target="_blank">eliaskrainski@yahoo.com.br</a> <mailto:<a href="mailto:eliaskrainski@yahoo.com.br" target="_blank">eliaskrainski@yahoo.com.br</a>>> escreveu:<br>
> <br>
> Não seria o caso de reduzir a resolução do shapefile? Já teve<br>
> situaçoes que usei gSimplify() e escolhi parametros que se mostraram<br>
> adequados ao meu objetivo.<br>
> <br>
> Elias T. Krainski<br>
> <br>
> <br>
> Em quarta-feira, 16 de janeiro de 2019 12:08:04 BRST, Yury Duarte<br>
> <<a href="mailto:yurynepomuceno@gmail.com" target="_blank">yurynepomuceno@gmail.com</a> <mailto:<a href="mailto:yurynepomuceno@gmail.com" target="_blank">yurynepomuceno@gmail.com</a>>> escreveu:<br>
> <br>
> <br>
> Bom dia Elias, como vai?<br>
> <br>
> Interessante sua solução!<br>
> Não estou acostumado a salvar minhas saídas no formato .RData. Irei<br>
> testar esse formato nos casos onde irei trabalhar os dados/analises<br>
> apenas em ambiente R.<br>
> Aparentemente, esse formato economiza bastante espaço em disco.<br>
> Entretanto, para essa situação em especial, eu realmente tenho a<br>
> necessidade de salvar as saídas em formato .shp, pois tenho que<br>
> aplicar o resultado do script em outros ambientes (nos SIGs em geral<br>
> e no Google Earth).<br>
> <br>
> Caso tenha(m) mais alguma sugestão, ficarei feliz em testar.<br>
> <br>
> Mais uma vez, agradeço pela disponibilidade e apoio!<br>
> <br>
> Att<br>
> <br>
> Yury Duarte<br>
> Engenheiro Agrônomo - ESALQ/USP<br>
> <br>
> <br>
> Em qua, 16 de jan de 2019 às 11:24, Elias T. Krainski<br>
> <<a href="mailto:eliaskrainski@yahoo.com.br" target="_blank">eliaskrainski@yahoo.com.br</a> <mailto:<a href="mailto:eliaskrainski@yahoo.com.br" target="_blank">eliaskrainski@yahoo.com.br</a>>><br>
> escreveu:<br>
> <br>
> se você for usar apenas em ambiente R, a melhor opção é usar<br>
> save(...). Frequentemente uso com compress='xz'.<br>
> <br>
> Elias T. Krainski<br>
> <br>
> <br>
> Em terça-feira, 15 de janeiro de 2019 11:30:21 BRST, Yury Duarte<br>
> por (R-br) <<a href="mailto:r-br@listas.c3sl.ufpr.br" target="_blank">r-br@listas.c3sl.ufpr.br</a><br>
> <mailto:<a href="mailto:r-br@listas.c3sl.ufpr.br" target="_blank">r-br@listas.c3sl.ufpr.br</a>>> escreveu:<br>
> <br>
> <br>
> Bom dia colegas listeiros!<br>
> <br>
> Ultimamente venho tentando manusear arquivos espaciais<br>
> utilizando o R.<br>
> Em alguns casos, objetos do tipo 'large SpatialPolygons' são<br>
> gerados dentro do código. Quando isso ocorre (acredito que seja<br>
> algo que acontece por padrão, devido a grande quantidade de<br>
> informações armazenadas no objeto), a função writeOGR, que<br>
> utilizo para salvar os shapefiles, quebra, por só tratar de<br>
> objetos do tipo 'Spatial' e não os 'large Spatial'.<br>
> Sendo assim, gostaria de saber se existe a possibilidade de<br>
> salvar um shapefile a partir de um objeto do tipo 'large<br>
> Spatial' ou ainda se existe a possibilidade de transformar esse<br>
> num objeto do tipo SpatialPolygonsDataFrame, para que a função<br>
> writeOGR possa funcionar normalmente.<br>
> <br>
> Segue código desenvolvido seguido do erro gerado.<br>
> Desde já, agradeço pela ajuda de todos!<br>
> <br>
> rodar_bibliotecas = function(necessarias_para_o_projeto){<br>
> if(necessarias_para_o_projeto){<br>
> library(rgrass7)<br>
> library(spatstat)<br>
> library(maptools)<br>
> library(shapefiles)<br>
> library(foreign)<br>
> library(magrittr)<br>
> library(formattable)<br>
> library(e1071)<br>
> library(rlang)<br>
> library(rgdal)<br>
> library(rgeos)<br>
> library(raster)<br>
> library(sp)<br>
> library(sf)<br>
> library(RcppCNPy)<br>
> library(deldir)<br>
> library(dismo)<br>
> library(dplyr)<br>
> library(ggplot2)<br>
> library(gstat)<br>
> library(tidyverse)<br>
> library(smoothr)<br>
> library(viridisLite)<br>
> }<br>
> return('Ok')<br>
> }<br>
> <br>
> rodar_bibliotecas(TRUE)<br>
> <br>
> raiz = '/home/yury/pesquisa/arquivos/areas/'<br>
> clientes = dir(raiz)<br>
> <br>
> for (cliente in 1:length(clientes)) {<br>
> analises = dir(paste0(raiz, clientes[cliente]))<br>
> q = list()<br>
> for (analise in 1:length(analises)) {<br>
> shapefile_contorno = readOGR(paste0(raiz,<br>
> clientes[cliente], '/', analises[analise], '/', 'vetores.shp'))<br>
> shapefile_contorno$id = 1<br>
> dissolvido = unionSpatialPolygons(shapefile_contorno, IDs =<br>
> shapefile_contorno$id)<br>
> #plot(dissolvido)<br>
> q[analise] = dissolvido<br>
> }<br>
> fim = q[[1]]<br>
> for (x in 2:length(q)){<br>
> fim = bind(fim, q[[x]])<br>
> }<br>
> plot(fim)<br>
> <br>
> path_to_save = paste0(raiz, clientes[cliente])<br>
> writeOGR(fim,<br>
> dsn = path_to_save,<br>
> layer = paste0('contorno_', clientes[cliente]),<br>
> driver = 'ESRI Shapefile',<br>
> overwrite_layer = TRUE)<br>
> <br>
> }<br>
> <br>
> Error in writeOGR(fim, dsn = path_to_save, layer =<br>
> paste0("contorno_", : obj must be a SpatialPointsDataFrame,<br>
> SpatialLinesDataFrame or SpatialPolygonsDataFrame<br>
> <br>
> Yury Duarte<br>
> Engenheiro Agrônomo - ESALQ/USP<br>
> _______________________________________________<br>
> R-br mailing list<br>
> <a href="mailto:R-br@listas.c3sl.ufpr.br" target="_blank">R-br@listas.c3sl.ufpr.br</a> <mailto:<a href="mailto:R-br@listas.c3sl.ufpr.br" target="_blank">R-br@listas.c3sl.ufpr.br</a>><br>
> <a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" rel="noreferrer" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
> Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" rel="noreferrer" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e<br>
> forne�a c�digo m�nimo reproduz�vel.<br>
> <br>
> <br>
> _______________________________________________<br>
> R-br mailing list<br>
> <a href="mailto:R-br@listas.c3sl.ufpr.br" target="_blank">R-br@listas.c3sl.ufpr.br</a><br>
> <a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" rel="noreferrer" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
> Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" rel="noreferrer" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e forne�a c�digo m�nimo reproduz�vel.<br>
> <br>
<br>
-- <br>
Pedro R. Andrade, Dr.<br>
Earth System Science Center (CCST)<br>
National Institute for Space Research (INPE)<br>
Sao Jose dos Campos, Brazil<br>
_______________________________________________<br>
R-br mailing list<br>
<a href="mailto:R-br@listas.c3sl.ufpr.br" target="_blank">R-br@listas.c3sl.ufpr.br</a><br>
<a href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br" rel="noreferrer" target="_blank">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a><br>
Leia o guia de postagem (<a href="http://www.leg.ufpr.br/r-br-guia" rel="noreferrer" target="_blank">http://www.leg.ufpr.br/r-br-guia</a>) e fornea cdigo mnimo reproduzvel.</blockquote></div>