<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="Content-Type">
</head>
<body text="#000000" bgcolor="#FFFFFF">
Boa tarde Éder,<br>
<br>
GENIAL!!!!! Era isso mesmo que eu precisava, muito clara
e limpa sua programação, tinha conseguido achar o erro e usar <span
style="font-family:arial,sans-serif;font-size:13px">bacias@data$LEVEL2,
</span>mas na hora de desenhar as tortas, estava tentando calcular
os centroides das bacias com trueCentroids =
gCentroid(bacias2,byid=TRUE) do pacote GISTools e convertendo para
um novo shape e depois novamente para polígonos espaciais, tava
ficando uma gambiarra para desenhar as tortas, fico com a sua opção,<br>
<br>
Muito Obrigado!!!<br>
<br>
Alexandre<br>
<br>
<br>
<br>
<div class="moz-cite-prefix">Em 30/05/2014 08:14, Éder Comunello
escreveu:<br>
</div>
<blockquote
cite="mid:CABmC8gnHFSLK=1iNF52J+VpkyKqELQX0tBP2i+uJz4xKEmj4fQ@mail.gmail.com"
type="cite">
<div dir="ltr">Alexandre, bom dia!
<div><br>
</div>
<div>Basicamente o erro está no vetor de identificadores que
você definiu para unionSpatialPolygons(). Ao invés de '<span
style="font-family:arial,sans-serif;font-size:13px">Dissolve_bacia',
bastaria entrar com "</span><span
style="font-family:arial,sans-serif;font-size:13px">bacias@data$LEVEL2".</span></div>
<div><span style="font-family:arial,sans-serif;font-size:13px"><br>
</span></div>
<div><font face="arial, sans-serif">Resolvi rodar o procedimento
todo e obtive a figura abaixo. Obtive 'tortas' sem
subdivisão, provavelmente porque tem bacias com a ocorrência
de apenas um valor do atributo $CT. </font></div>
<div><font face="arial, sans-serif"><br>
</font></div>
<div><br>
</div>
<div><font face="arial, sans-serif">
<div><img src="cid:part1.04090809.02060206@yahoo.com.br"
width="471.99999999999994" height="471.99999999999994"><br>
</div>
<div>
<br>
</div>
<div><br>
</div>
</font><span style="font-family:arial,sans-serif">Disponibilizo
o código que produzi e se for de ajuda, peço que
disponibilize o produto final pra vermos como ficou.
Comentei na medida do possível...</span></div>
<div><font face="arial, sans-serif"><br>
</font></div>
<div><font face="arial, sans-serif"><br>
</font></div>
<div><font face="courier new, monospace">### <code r></font></div>
<div><font face="courier new, monospace">setwd("C:/LAB/RGIS/maps/bacias")</font></div>
<div><font face="courier new, monospace">pkgs <-
c("maptools", "shapefiles", "rgdal", "mapplots",
"RColorBrewer")</font></div>
<div><font face="courier new, monospace">sapply(pkgs, require,
character=T)</font></div>
<div><font face="courier new, monospace"><br>
</font></div>
<div><font face="courier new, monospace">### Download
----------------------------------------------------------------
#</font></div>
<div><font face="courier new, monospace">links <- c(</font></div>
<div><font face="courier new, monospace">"<a
moz-do-not-send="true"
href="https://www.dropbox.com/s/enrdm739ts4eba0/sa_bas_ll_r500m.shp">https://www.dropbox.com/s/enrdm739ts4eba0/sa_bas_ll_r500m.shp</a>",</font></div>
<div><font face="courier new, monospace">"<a
moz-do-not-send="true"
href="https://www.dropbox.com/s/fnnumaix0v88jo1/sa_bas_ll_r500m.shx">https://www.dropbox.com/s/fnnumaix0v88jo1/sa_bas_ll_r500m.shx</a>",</font></div>
<div><font face="courier new, monospace">"<a
moz-do-not-send="true"
href="https://www.dropbox.com/s/o152vc0n15w54em/sa_bas_ll_r500m.dbf">https://www.dropbox.com/s/o152vc0n15w54em/sa_bas_ll_r500m.dbf</a>",</font></div>
<div><font face="courier new, monospace">"<a
moz-do-not-send="true"
href="https://www.dropbox.com/s/2l24sso20645511/indv_atributos.csv">https://www.dropbox.com/s/2l24sso20645511/indv_atributos.csv</a>")</font></div>
<div><font face="courier new, monospace"><br>
</font></div>
<div><font face="courier new, monospace">newLinks <-
gsub("^.*/s/", "<a moz-do-not-send="true"
href="http://dl.dropbox.com/s/">http://dl.dropbox.com/s/</a>",
links); newLinks</font></div>
<div><font face="courier new, monospace"><br>
</font></div>
<div><font face="courier new, monospace">vDown <-
sum(sapply(newLinks, function(x) file.exists(basename(x))))</font></div>
<div><font face="courier new, monospace"><br>
</font></div>
<div><font face="courier new, monospace">if (vDown<4) {</font></div>
<div><font face="courier new, monospace">sapply(newLinks,
function(a) {</font></div>
<div><font face="courier new, monospace">
tryCatch(download.file(a, dest=basename(a), mode='wb'),</font></div>
<div><font face="courier new, monospace">
error=function(...) print("Falha no download!"))})}</font></div>
<div><font face="courier new, monospace"><br>
</font></div>
<div><font face="courier new, monospace">sapply(basename(newLinks),
<a moz-do-not-send="true" href="http://file.info">file.info</a>)[1,]
### sizes</font></div>
<div><font face="courier new, monospace"><br>
</font></div>
<div><font face="courier new, monospace">### Carregando
shapefile
---------------------------------------------------- #</font></div>
<div><font face="courier new, monospace">CRS.new <-
CRS("+proj=longlat +datum=WGS84")</font></div>
<div><font face="courier new, monospace">bacias.ori <-
readOGR(".", "sa_bas_ll_r500m")</font></div>
<div><font face="courier new, monospace">proj4string(bacias.ori)
<- CRS.new</font></div>
<div><font face="courier new, monospace"><br>
</font></div>
<div><font face="courier new, monospace">### Visualização
excessivamente demorada! Melhor utilizar o vetor
simplificado!</font></div>
<div><font face="courier new, monospace">### Os tempos anotados
(s) foram tomados num netbook de configuração modesta.</font></div>
<div><font face="courier new, monospace">#
system.time(plot(bacias.ori, col=topo.colors(32),
border=NA)) ### 44s</font></div>
<div><font face="courier new, monospace"><br>
</font></div>
<div><font face="courier new, monospace">### Entendendo os dados
----------------------------------------------------- #</font></div>
<div><font face="courier new, monospace">t(names(bacias.ori@data))
### LEVELS c(5:10)</font></div>
<div><font face="courier new, monospace">sapply(bacias.ori@data[,c(3:10)],
function(x) length(unique(x)))</font></div>
<div>
<font face="courier new, monospace"># SA_BAS_ SA_BAS_ID
LEVEL1 LEVEL2 LEVEL3 LEVEL4 LEVEL5 LEVEL6 </font></div>
<div><font face="courier new, monospace"># 5339 5339
11 92 569 1775 2374 2430 </font></div>
<div><font face="courier new, monospace"># ^ ^
^ ^ ^ ^ ^ ^</font></div>
<div><font face="courier new, monospace"># | |
| | | | | |</font></div>
<div><font face="courier new, monospace"># Elementos Elementos
MegaBacias Bacias Sub-Bacias Mini-Bacias Micro-Bacias
Nano-Bacias</font></div>
<div><font face="courier new, monospace"># Lembrando que a
escala acima é só uma brincadeira... :)</font></div>
<div><font face="courier new, monospace">#</font></div>
<div><font face="courier new, monospace"># São 5339 elementos
(possivelmente todos polígonos) que podem ser retratados
como 11 Grandes # Bacias ou 92 Bacias.</font></div>
<div><font face="courier new, monospace"># Quando você usa o
cut() pra atribuir cor, na verdade o R desenha os 5339
elementos e </font></div>
<div><font face="courier new, monospace"># 'pinta' os que tem o
mesmo rótulo com a mesma cor. Usando o
unionSpatialPolygons() com </font></div>
<div><font face="courier new, monospace"># $LEVEL2 você passará
a ter 92 polígonos.</font></div>
<div><font face="courier new, monospace">#</font></div>
<div><font face="courier new, monospace"># Na hora de locar as
'tortas' é outro problema, pois cada bacia do LEVEL2 é
representada por</font></div>
<div><font face="courier new, monospace"># diversos polígonos,
por vezes centenas, e você teria que escolher um desses
polígonos ou # </font></div>
<div><font face="courier new, monospace"># obter a coordenda
média desses.</font></div>
<div><font face="courier new, monospace"><br>
</font></div>
<div><font face="courier new, monospace">### Simplificando
-----------------------------------------------------------
#</font></div>
<div><font face="courier new, monospace">bacias.mod <-
unionSpatialPolygons(bacias.ori, bacias.ori$LEVEL2) ###
modIFICADO</font></div>
<div><font face="courier new, monospace">bacias <-
rgeos::gSimplify(bacias.mod, .4, topologyPreserve=TRUE) # .4
degrees</font></div>
<div><font face="courier new, monospace">length(bacias.ori);
length(bacias.mod); length(bacias)</font></div>
<div><font face="courier new, monospace">#
system.time(plot(bacias.ori, col=topo.colors(32),
border=NA)) ### 44s</font></div>
<div><font face="courier new, monospace">#
system.time(plot(bacias.mod, col=topo.colors(32),
border=NA)) ### 30s</font></div>
<div><font face="courier new, monospace">system.time(plot(bacias,
col=topo.colors(32), border=NA)) ### 18s</font></div>
<div><font face="courier new, monospace"><br>
</font></div>
<div><font face="courier new, monospace">### Info
--------------------------------------------------------------------
#</font></div>
<div><font face="courier new, monospace">str(bacias, max=2)</font></div>
<div><font face="courier new, monospace">str(bacias@data)
### "SpatialPolygons" - Não tem @data!!!</font></div>
<div><font face="courier new, monospace">### Podemos utilizar o
@data original (bacias.ori)</font></div>
<div><font face="courier new, monospace">str(bacias.ori@data)
### "SpatialPolygonsDataFrame" - DATA!!!</font></div>
<div><font face="courier new, monospace">### Continuaremos a
utilizar bacia.ori para quantificações!</font></div>
<div><font face="courier new, monospace"><br>
</font></div>
<div><font face="courier new, monospace">### Remover Polígonos
menores ----------------------------------------------- #</font></div>
<div><font face="courier new, monospace">### Esse trecho é para
eliminar polígonos menores para fins de agilizar a
visualização</font></div>
<div><font face="courier new, monospace">### Deixo apenas pra
referência. pois não teve muito efeito</font></div>
<div><font face="courier new, monospace"># subPolys
<-sapply(bacias@polygons, function(a)
sum(sapply(a@Polygons, length)))</font></div>
<div><font face="courier new, monospace"># table(subPolys)</font></div>
<div><font face="courier new, monospace"># subAreas <-
lapply(bacias@polygons, function(a) sapply(a@Polygons,
function(b) b@area))</font></div>
<div>
<font face="courier new, monospace"># sapply(subAreas, sum)</font></div>
<div><font face="courier new, monospace"># sum(sapply(subAreas,
sum)<2)</font></div>
<div><font face="courier new, monospace"># str(bacias,
max.level=3)</font></div>
<div><font face="courier new, monospace"># bigPolys <-
which(sapply(subAreas, sum) >= 2); length(bigPolys)</font></div>
<div><font face="courier new, monospace"># BIG <-
lapply(bigPolys, function(a) {bacias@polygons[[a]]});
length(BIG)</font></div>
<div><font face="courier new, monospace"># bacias2 <-
SpatialPolygons(BIG)</font></div>
<div><font face="courier new, monospace">#
system.time(plot(bacias2, col=topo.colors(32), border=NA))
### 18s</font></div>
<div><font face="courier new, monospace"><br>
</font></div>
<div><font face="courier new, monospace">### Coordenadas dos
pontos + atributos</font></div>
<div><font face="courier new, monospace">pontos
<- read.csv("indv_atributos.csv", sep=";", head=T)</font></div>
<div><font face="courier new, monospace">names(pontos)
<- c("num_loc", "LAT", "LON", "CT")</font></div>
<div><font face="courier new, monospace">coordinates(pontos)
<- ~LON+LAT</font></div>
<div><font face="courier new, monospace">proj4string(pontos)
<- CRS.new</font></div>
<div><font face="courier new, monospace"><br>
</font></div>
<div><font face="courier new, monospace">### Pontos no mapa</font></div>
<div>
<font face="courier new, monospace">system.time(plot(bacias,
col=topo.colors(32), border=NA)) ### 18s</font></div>
<div><font face="courier new, monospace">points(pontos)</font></div>
<div><font face="courier new, monospace"><br>
</font></div>
<div><font face="courier new, monospace">### Pontos pertencentes
a cada bacia nível 2 (LEVEL2)</font></div>
<div><font face="courier new, monospace">bacias@bbox;
pontos@bbox</font></div>
<div><font face="courier new, monospace">id2 <- over(pontos,
bacias.ori)$LEVEL2</font></div>
<div><font face="courier new, monospace">id2i <- id2[!<a
moz-do-not-send="true" href="http://is.na">is.na</a>(id2)]
### Inside Points; if outside == NA</font></div>
<div><font face="courier new, monospace"><br>
</font></div>
<div><font face="courier new, monospace">newData <-
reshape2::dcast(pontos@data, id2i~CT, length,
value.var='CT'); newData</font></div>
<div><font face="courier new, monospace">coords <-
coordinates(bacias)</font></div>
<div><font face="courier new, monospace">coords.df <-
data.frame(id2i=as.numeric(row.names(coords)), coords)</font></div>
<div><font face="courier new, monospace"><br>
</font></div>
<div><font face="courier new, monospace">newData2 <-
merge(newData, coords.df); newData2</font></div>
<div><font face="courier new, monospace">### Observe que em
vários casos a torta terá apenas um valor!!!</font></div>
<div><font face="courier new, monospace"><br>
</font></div>
<div><font face="courier new, monospace">### Adiciono o gráfico
torta para cada pontos$LEVEL2 a frequencia de pontos$CT</font></div>
<div><font face="courier new, monospace">x11()</font></div>
<div><font face="courier new, monospace">system.time(plot(bacias,
col=topo.colors(32), border=NA, axes=T)) ### 18s</font></div>
<div><font face="courier new, monospace">lapply(1:nrow(newData2),
function(x) add.pie(z=as.numeric(newData[x,2:7]),
x=newData2$X1[x], y=newData2$X2[x], radius=3, labels=" "))</font></div>
<div><font face="courier new, monospace"><br>
</font></div>
<div><font face="courier new, monospace">### </code></font></div>
<div><font face="arial, sans-serif"><br>
</font>
<div class="gmail_extra"><br>
</div>
<div class="gmail_extra">
<br>
</div>
<div class="gmail_extra"><br clear="all">
<div>
<div dir="ltr">Éder Comunello <<a
moz-do-not-send="true"
href="mailto:comunello.eder@gmail.com" target="_blank">c</a><a
moz-do-not-send="true"
href="mailto:omunello.eder@gmail.com" target="_blank">omunello.eder@gmail.com</a>>
<br>
Dourados, MS - [22 16.5'S, 54 49'W]<br>
</div>
</div>
<br>
<br>
</div>
</div>
</div>
<br>
<fieldset class="mimeAttachmentHeader"></fieldset>
<br>
<pre wrap="">_______________________________________________
R-br mailing list
<a class="moz-txt-link-abbreviated" href="mailto:R-br@listas.c3sl.ufpr.br">R-br@listas.c3sl.ufpr.br</a>
<a class="moz-txt-link-freetext" href="https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br">https://listas.inf.ufpr.br/cgi-bin/mailman/listinfo/r-br</a>
Leia o guia de postagem (<a class="moz-txt-link-freetext" href="http://www.leg.ufpr.br/r-br-guia">http://www.leg.ufpr.br/r-br-guia</a>) e forneça código mínimo reproduzível.</pre>
</blockquote>
<br>
<pre class="moz-signature" cols="72">--
======================================================================
Alexandre dos Santos
Proteção 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)
<a class="moz-txt-link-abbreviated" href="mailto:e-mails:alexandresantosbr@yahoo.com.br">e-mails:alexandresantosbr@yahoo.com.br</a>
<a class="moz-txt-link-abbreviated" href="mailto:alexandre.santos@cas.ifmt.edu.br">alexandre.santos@cas.ifmt.edu.br</a>
Lattes: <a class="moz-txt-link-freetext" href="http://lattes.cnpq.br/1360403201088680">http://lattes.cnpq.br/1360403201088680</a>
======================================================================
</pre>
</body>
</html>