<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>