[R-br] Como Salvar Shapefile

Yury Duarte yurynepomuceno em gmail.com
Qui Jan 17 08:36:36 -02 2019


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) <
r-br em listas.c3sl.ufpr.br> 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
> > <eliaskrainski em yahoo.com.br <mailto:eliaskrainski em yahoo.com.br>>
> 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
> >     <yurynepomuceno em gmail.com <mailto:yurynepomuceno em gmail.com>>
> 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
> >     <eliaskrainski em yahoo.com.br <mailto:eliaskrainski em yahoo.com.br>>
> >     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) <r-br em listas.c3sl.ufpr.br
> >         <mailto:r-br em listas.c3sl.ufpr.br>> 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
> >         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
> > 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
> 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 fornea cdigo
> mnimo reproduzvel.
-------------- Próxima Parte ----------
Um anexo em HTML foi limpo...
URL: <http://listas.inf.ufpr.br/pipermail/r-br/attachments/20190117/f5580bb7/attachment.html>


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