SERVIÇO PÚBLICO FEDERAL
UNIVERSIDADE FEDERAL DO PARÁ INSTITUTO DE GEOCIENCIAS
CURSO DE ESPECIALIZAÇÃO EM GEOMINAS Prof. Joaquim Carlos Barbosa Queiroz
Unidade III: Métodos de estimação. krigagem simples, ordinária e indicativa.
1. Métodos de estimação
Para estimativas de valores em localizações não amostradas, existem diversos algoritmos de interpolação, tais como: krigagem, inverso do quadrado da distância, curvatura mínima, funções de base radial, triangulação, etc. Todos esses métodos estimam o valor em um determinado local, como uma soma ponderada de valores de dados em locais adjacentes. Quase todos atribuem pesos de acordo com as funções que dão um peso diminuindo com o aumento da distância de separação. A krigagem atribui pesos de acordo com os valores de covariância espacial. Em particular:
▪ Se os dados são bastante densos e uniformemente distribuídas ao longo da área de estudo, em geral se tem boas estimativas, independentemente do algoritmo de interpolação
▪ Se os dados estão agrupados (em clusters) e com grandes lacunas entre si, pode-se obter estimativas não confiáveis, independentemente do algoritmo de interpolação.
▪ Quase todos os algoritmos de interpolação subestimam os altos valores e superestimam os baixos; isto é inerente ao cálculo da média e se um algoritmo de interpolação não considera a média não seria considerado razoável
▪ Ajuda para compensar os efeitos do agrupamento de dados, atribuindo a pontos individuais dentro de um cluster menos peso do que pontos isolados de dados (ou, tratando aglomerados mais como pontos únicos)
▪ Dá estimativa do erro de estimação (variância de krigagem), juntamente com a estimativa da variável, Z.
▪ A disponibilidade de erro de estimação fornece base para a simulação estocástica de possíveis realizações de Z(u).
▪ Considera a anisotropia do meio. 2. Krigagem
2.1. Krigagem Simples
To dos os estimadores de krigagem são variantes do estimador de regressão linear básico Z*(u) definida como (GOOVAERTS, 1997):
3.1
onde λα(u) é o peso atribuído a cada valor observado Z(uα) localizado dentro de determinada vizinhança W(u) centrado em u. Os n(u) pesos são escolhidos de forma a minimizar a estimação ou erro da variância sob a condição de não-tendenciosidade do estimador. Os pesos de krigagem, λα(u), são derivados da função de covariância ou semivariograma As diferenças entre os vários tipos de krigagem residem no modelo considerado para a tendência m(u) na expressão (3.1).
A krigagem simples (SK) considera a média m(u) conhecida e constante por toda a área de estudo, enquanto a krigagem ordinária (KO) limita o domínio de estacionaridade da média à vizinhança local W(u) e, ao contrário da KS, a média é desconhecida.
A KO considera a variação local da média limitada ao domínio de estacionaridade da média a uma vizinhança local W(u) centrada sobre a localização u a ser estimada. O estimador da krigagem ordinária pode ser escrito como
3.2
Neste caso, a média local m(u’) é constante, mas desconhecido.
A minimização da variância do erro, sujeita à restrição da soma dos pesos igual a 1, permite a determinação dos pesos λα(u) a partir do seguinte sistema de equações chamado de sistema de krigagem ordinária (equações normais com restrições):
3.3
onde C(uβ – uα) e C(u – uα) são, respectivamente, a covariância entre os pontos uβ
e uα e u e uα e μ(u) é o parâmetro de Lagrange associado com a restrição
.
Substituindo a covariância por sua expressão C(h) = Co – γ(h), o sistema (3.3) e a variância podem ser escritos em função do modelo semivariográfico γ(h).
2.3. Krigagem Indicativa (IK)
A krigagem indicativa é utilizada para o mapeamento de variáveis nas seguintes situações:
▪ Mapeamento de risco de ocorrência de uma variável contínua acima de determinado ponto de corte (cutoff)
▪ Predição da variação espacial da probabilidade da variável estar dentro de um determinado critério (mapas probabilisticos).
São utilizadas variáveis indicativas para definição dos valores limites (threshold), definidas como:
quando z(ui) é uma v.a. categórica, onde zcat é o código ou índice da categoria de
interesse, e
para v.a. quantitativas, onde zcut é uma valor de corte para v.a. quantitativa Z(u). No modelamento da variabilidade espacial são utilizados variogramas indicativos definidos como,
Os variogramas indicativos medem a proporção de pares de pontos
separados pelo vetor h, em que ocorreu o evento de interesse, no caso z(u) = zcat ou z(u) ≤ zcut.
Teoricamente, o semivariograma é zero se a distância entre o pares de pontos for zero, mas na prática, geralmente ocorre uma descontinuidade na origem do semivariograma, chamado de Efeito pepita. Ou seja, a medida que h tende a zero o semivariograma assumirá um valor positivo Co. Isto se deve a erros amostrais ou a presença de variabilidade em curtas escalas, onde amostras separadas em pequenas distância pode apresentar diferenças significantes. (ISAAKS & SRIVASTAVA, 1990, p. 143).
No caso de variáveis quantitativas o semivariograma indicativo mede o quanto dois valores z separados por um vetor h estão em lados opostos do valor de corte zk. Em outras palavras, mede a frequencia de transição entre duas classe de valores z em função de h. Quanto maior o semivariograma indicativo, menos conectados no espaço são os pequenos ou grandes valores.
Para variáveis categóricas o semivariograma indicativo mede a freqüência com que duas localizações separadas por um vetor h pertencem a diferentes categorias. Quanto menor o valor do semivariograma, melhor a conectividade espacial da categoria.
Aproximação indicativa no modelamento da incerteza local
• A função é modelada para um conjunto de K valores limites zk, que discretizam a faixa de variação de z
▪ A resolução da fdac é então aumentada pela interpolação dentro de cada classe (zk;zk+1] e extrapolação dos dois valores extremos, z1 e zk
▪ A estimação geoestatística não-paramétrica dos valores da fdac é baseada na interpretação da probabilidade condicional como a esperança condicional de uma variável aleatória indicativa:
onde
▪ Os valores da fdac podem ser obtidos por krigagem ordinária de
PROCEDIMENTO (O programa R realiza essas tarefas automaticamente ☺ ) 1. Fazer a codificação de cada observação em um vetor de K valores indicativos. O numero de classes deve ser escolhido de modo que as K+1 classes tenham
aproximadamente frequencias iguais. Recomenda-se usar mais de 5 classes e menos de 15.
2. Calcular os semivariogramas experimentais para cada ponto de corte zk e, em seguida, fazer o modelamento dos mesmos.
3. Em cada localização não amostrada u,
– Estimar os K valores da fdac usando, por exemplo, a krigagem ordinária indicativa, i.e,
– Interpolar ou extrapolar os valores da fdac para construir um modelo continuo para a fdac, que permita recuperar a probabilidade de qualquer ponto z.
3. Krigagem multivariada: co-krigagem
• A krigagem, é um caso particular do método co-krigagem • Requisitos :
– dependência espacial para cada uma das variáveis Z1 e Z2,
– dependência espacial entre Z1 e Z2
No caso de uma simples variável secundária (Y), o estimador de cokrigagem ordinária é escrito como:
condições de não-tendenciosidade
Sistema de cokrigagem para determinação dos n pesos e
Composto de (n1 + n2 + 2) equações com 2 parâmetros de Lagrange μ1 e μ2
associados às duas condições de não-tendenciosidade:
∑
1∑
1 2 2 2 1 1 = =1 ' ' * ) ( ) ( + ) ( ) ( = ) ( n α n α α α α α COK λ Z λ Y Z 2 1 u u u u u∑
1 1 1 = 1 = ) ( n α α λ u∑
2 2 2 1 = ' =1 n α α λ 1 α λ λα2Este sistema de cokrigagem apresenta uma e somente uma solução se: (i) não há dois dados totalmente redundantes, isto é:
u u se: = 1,..., n.
u’ u’ se: ’ ’ = 1,..., n’.
(ii) a matriz de funções de covariância é positiva-definida.
Ensaio 3 (Script: Unidade 3):
• krigagem ordinária isotrópica para o Niquel e anisotrópica para o Cobalto • Krigagem indicativa
o mapas probabilistiscos e temáticos para o uso da terra
o mapas de riscos para o cádmio (valor máximo permitido ou ponto de corte: 0.8 ppm)
a) Variáveis selecionadas: Niquel, Cobalto e Cadmio (quantitativas) b) landuse (qualitativas) = = = = + + = = + + = = = = = 1 1 ,..., 1 ' ) -( ) -( ) -( ) ( ,..., 1 ) -( ) -( ) -( ) (
∑
∑
∑
∑
∑
∑
' ' ' 1 1 ' '1 ' ' ' 2 ' 2 1 '1 ' ' 1 1 1 1 2 1 2 n n n n ZY Y ZY n n Z ZY Z n para C C C n para C C C u u u u u u u u u u u u u u ) ( ) ( ) ( ) ( h h h h Y ZY ZY Z C C C CPROGRAMA R
1. krigagem ordinária:
1.1 Isotrópica para o Niquel
#Definir a área de trabalho
setwd("D:/PPGCA/Hidrogeo")
#dados de entrada podem ser no formato ASCII (.txt) #Carregar dados
jura.pred <- read.table("jura.txt", head=T) jura.pred[1:5,]
## lendo arquivo com bordas da área
bor <- read.table("jurabor.txt", head=T) bor[1:5,] # mostrar 5 linhas do aqrquivo x y 1 2.1497 4.3352 2 2.1151 4.2197 3 2.1151 4.0927 4 2.1728 3.9888 5 2.1843 3.8849
####### Krigagem Ordinária usando o geoR ####### ### Analise semivariografica: Niquel
jura.pred<-read.table("jura.txt",head=T)
Ni<-as.geodata(jura.pred,coords.col = 1:2, data.col = 9)
Ni #mostrar a variavel Niquel area de trabalho
varNi <- variog(Ni, uvec = seq(0, 2, length = 20), option = "bin")
varNi
#Semivariograma unidirecional experimental #par(mfrow = c(1,2)) # set up the graphics
plot(varNi, xlab = "Distância", ylab = "Semivariância", type="l")
title("Semivariograma Experimental: Niquel")
#Semivariograma unidirecional e modelo ajustado
plot(varNi, xlab = "Distância", ylab = "Semivariância") lines.variomodel(cov.model = "spherical" , cov.pars = rbind(c(9,0.12),c(64,1.4)), nugget = 11, max.dist = 2, lwd = 2, col = "red")
text(1,0.1,"MODELO:11+9,0 Sph(h/0,12) + 64 Sph (h/1,4)") title("Semivariograma Experimental e modelo ajustado: Niquel")
### Mapa de Krigagem do Niquel
locNi <- expand.grid(seq(0,5.5,l=100), seq(0,6,l=120)) kcNi<-ksline(Ni,locations=locNi,cov.model= "spherical", cov.pars=rbind(c(9,0.12),c(64,1.4)),nugget = 11) contour(kcNi,filled=TRUE,bor=bor,col=terrain.colors(20), nlevels = 13)
# definindo uma palleta de cores require(maptools) bluepal<-colorRampPalette(c=terrain.colors(20)) brks <- c(0,5,10,15,20,25,30,35,40,45) cols <- bluepal(length(brks) - 1) names(kcNi)
image(kcNi, border=bor, loc=locNi, val=kcNi$predict, col = terrain.colors(20))
legend(-0.5,6, fill = cols, legend = leglabs(brks,"<", ">="),bty = "n", cex = 0.8,col=terrain.colors(20)) title("Krigagem Ordinaria Ni")
1.2 Anisotrópica para o Cobalto
###### 1.2 Krigagem ordinária com anisotropia #####
### 2.3. Analise semivariografica: Cobalto
#Semivariogramas experimentais nas duas direções (anisotropia) coordinates(Geo) = ~ x + y;
vCo <- variogram(Co~1, Geo, alpha=c(67.5,157.5)) plot(vCo,type="b", lty=2,pch=19,
col="black",main="Cobalto") # Modelo anisotropico ajustado # Procedimento para fazer a
# anisotropia Combinada (Geométrica e ZONAL)
# 1. Fazer a Anisotropia geometrica # Procedimento
# 1. Alcance na direção 67.5 (eixo maior) = 1.5 # 2. Alcance na direção 157.5 (eixo menor) = 1.0
# 3. Razão de anisotropia = 1.0/1.5 = 0.67 ( deve ser < 1 )
vm.Co <- vgm(11.5, # sill "Sph", # modelo 1.5, # alcance 2.0, # nugget anis=c(67.5,0.67)) # anisotropia plot(vCo,vm.Co,type="p",pch=19,
col=c("black"),main="Cobalto (Modelo geométrico)") # 2. Fazer a Anisotropia Zonal:
# Procedimento
# 1. Alcance (range) na direção 157.5 = 100000 #(efetivamente infinito)
# 2. Alcance na direção 157.5 = 100000/1e5 = 1.0 # 100000 = 1e05
# 3. Acrescentar no sill 2.5 (na direção 157.5)
zonal = vgm(2.5, "Sph", 100000, anis = c(67.5, 1/1e5)) # Somar 11.5 + 2.5 = 14
vm = vgm(11.5,"Sph",1.5,add.to = zonal, nugget = 2) plot(vCo, vm,pch=19, col="black",
main = "Cobalto (Anisotropia Zonal)") vm # modelo de anisotropia combinada
### 2.4. Mapa de Krigagem do Cobalto
### OBS: para incluir o modelo de anisotropia #(geometrico e zonal) é
### necessário utilizar a livraria gstat ## Krigagem do Cobalto com o gstat
Coi <- gstat(id = "Co", formula = Co ~ 1, data = Geo) gCo <- gstat(Coi, id = "Co", model = vm) # vm : modelo anisotropico do Cobalto
jura.grid <- expand.grid(seq(0,5.5,l=105), seq(0,6,l=120))
names(jura.grid) <- c("x","y") gridded(jura.grid) = ~x+y
koCo <- predict(gCo, newdata = jura.grid) names(koCo)
summary(koCo)
koCo[1] # estimativas (predict) obtidas pela krigagem
spplot(koCo)
spplot(koCo[1]) # Mapa de krigagem # Esse mapa não inclui as bordas
# Mudando os dados para plotar com auxilio do geoR # para incluir as bordas
loc <- expand.grid(seq(0,5.5,l=105), seq(0,6,l=120)) bor <- read.table("jurabor.txt", head=T)
kCo <- as.data.frame(koCo[1]) # estimativas da krigagem kCo[1:5,]
class(kCo) <- "kriging" kCo$predict <- kCo$Co.pred
kCo$coords <- cbind(kCo$x,kCo$y) names(kCo)
contour(kCo, locations = loc, val=kCo$Co.pred, borders = bor, filled = TRUE,
col=terrain.colors(30),main="Krigagem Ordinaria Cobalto \n (Anisotropia Combinada)",cex=0.5)
# definindo uma palleta de cores
bluepal <-
colorRampPalette(c("blue","cyan","green","yellow","orang e","red"), space = "rgb")
brks <- c(0,2,4,6,8,10,12,14,16) cols <- bluepal(length(brks) - 1)
image(kCo, border=bor, loc=loc, val=kCo$predict, col = bluepal(50))
legend(0.2,6, fill = cols, legend = leglabs(brks,"<", ">="),bty = "n", cex = 0.8,col=bluepal(50))
title("Krigagem Ordinaria Cobalto \n (Anisotropia Combinada)")
2. Krigagem indicativa
3.1 Mapas probabilistiscos e temáticos para o uso da terra
###### 3. Krigagem Indicativa ######### ###### 3.1 Mapas de proabilidades
###### para gerar os mapas temáticos ######### # LER NOVAMENTE O ARQUIVO DE ENTRADA jura.txt
Geo <- read.table("jura.txt", head=T)
Geo[1:5,] #mostrar os dados (variáveis) na area de trabalho
#1. Acrescenta no arquvo Geo variáveis "dummy" # para identificar cada uso da terrs (Landuse) Geo[1:5,]
# Uso da Terra Nome da variavel # Floresta: Flore(1) # Pasto : Pasto(2) # Prado : Prado(3) # lavoura : Lavoura(4) Geo$Flore <- ifelse(Geo$Landuse==1,1,0) Geo$Pasto <- ifelse(Geo$Landuse==2,1,0) Geo$Prado <- ifelse(Geo$Landuse==3,1,0) Geo$Lavoura <- ifelse(Geo$Landuse==4,1,0) Geo[1:5,] Geo[1:5,13:16] # Flore coluna 13 # Pasto coluna 14 # Prado coluna 15 # Lavoura coluna 16
### 1. Semivariograma indicativo experimental:Floresta Flore <-as.geodata(Geo,coords.col=1:2,data.col = 13) par(mfrow = c(1,2)) # set up the graphics
v.flor <- variog(Flore, uvec = seq(0, 2, length = 20), option = "bin")
plot(v.flor,pch=19, xlab = "Distância", ylab = "Semivariância", main = "Semivariograma Floresta",
#Semivariograma unidirecional e modelo ajustado
plot(v.flor,pch=19, xlab = "Distância", ylab = "Semivariância")
lines.variomodel(cov.model = "spherical" , cov.pars = rbind(c(0.04,0.5),c(0.08,1.4)), nugget = 0.01, max.dist = 2, lwd = 2, col = "red")
text(1,0, "MODELO: 0.01+0.04Sph(h/0,5)+ \n 0.08Sph (h/1,4)",cex=0.6)
title("Semivariograma Experimental \n e modelo ajustado",cex.main = 0.8)
# Ajuste usando mínimos quadrados ponderados par(mfrow = c(1,1))
locin <- matrix(c(0.04,0.08,0.5,1.4), ncol=2)
flor.ols <- variofit(v.flor, ini=locin, nugget=0.01, min="optim")
plot(v.flor,pch=19)
lines(flor.ols, lty=1, lwd=2, col="red") title("Semivariograma ajustado Floresta")
### 2. Semivariograma experimental da variavel Pasto Pasto <-as.geodata(Geo,coords.col =1:2,data.col = 14) par(mfrow = c(1,2)) # set up the graphics
v.pas <- variog(Pasto, uvec = seq(0, 2, length = 20), option = "bin")
plot(v.pas,pch=19, xlab = "Distância", ylab = "Semivariância",
main="Semivariograma Pasto", type = "b", col = "black",cex.main=0.8)
#Semivariograma unidirecional e modelo ajustado
plot(v.pas,pch=19, xlab = "Distância", ylab = "Semivariância")
lines.variomodel(cov.model = "spherical" , cov.pars = rbind(c(0.17,0.4)), nugget = 0.01, max.dist = 2, lwd = 2, col = "red")
text(1,0, "MODELO:0.01+0.17Sph(h/0,4)",cex=0.6)
title("Semivariograma Experimental \n e modelo ajustado",cex.main = 0.8)
# Ajuste usando mínimos quadrados ponderados par(mfrow = c(1,1)) # set up the graphics
pas.ols <- variofit(v.pas, ini=c(0.17,0.4), nugget=0.01, min="optim")
plot(v.pas, pch=19)
lines(pas.ols, lty=1, lwd=2,col="red") title("Semivariograma ajustado Pasto")
### 3. Semivariograma experimental da variavel Prado Prado <-as.geodata(Geo,coords.col=1:2, data.col = 15) par(mfrow = c(1,2))
v.pra <- variog(Prado, uvec = seq(0, 2, length = 20), option = "bin")
plot(v.pra,pch=19, xlab = "Distância", ylab = "Semivariância",
main = "Semivariograma Prado", type = "b", col = "black",,cex.main = 0.8)
#Semivariograma unidirecional e modelo ajustado
plot(v.pra,pch=19, xlab = "Distância", ylab = "Semivariância")
lines.variomodel(cov.model = "spherical" , cov.pars = rbind(c(0.23,0.4)), nugget = 0.01, max.dist = 2, lwd = 2, col = "red")
text(1,0.01, "MODELO: 0.01 + 0.23 Sph(h/0,4)",cex=0.6) title("Semivariograma Experimental \n e modelo ajustado",cex.main = 0.8)
## Ajuste usando mínimos quadrados ponderados par(mfrow = c(1,1)) # set up the graphics
pra.ols <- variofit(v.pra, ini=c(0.23,0.4), nugget=0.02,min="optim")
plot(v.pra,pch=19)
lines(pra.ols, lty=1,lwd=2, col="red") title("Semivariograma ajustado: Prado")
### 4. Semivariograma experimental da variavel Lavoura Lavoura<-as.geodata(Geo,coords.col=1:2,data.col = 16) par(mfrow = c(1,2))
v.lav <- variog(Lavoura, uvec = seq(0, 2, length = 20), option = "bin")
plot(v.lav, pch=19,xlab = "Distância", ylab = "Semivariância",
main = "Semivariograma Lavoura",type = "b", col = "black",cex.main = 0.8)
#Semivariograma unidirecional e modelo ajustado
plot(v.lav,pch=19, xlab = "Distância", ylab = "Semivariância")
lines.variomodel(cov.model = "spherical" , cov.pars = rbind(c(0.020,0.4)), nugget = 0.001, max.dist = 2, lwd = 2, col = "red")
text(1,0, "MODELO: 0.001+0.020Sph(h/0,4)",cex=0.6)
title("Semivariograma Experimental \n e modelo ajustado",cex.main = 0.8)
# Ajuste usando mínimos quadrados ponderados par(mfrow = c(1,1)) # set up the graphics
lav.ols <- variofit(v.lav, ini=c(0.020,0.4), nugget=0.00,min="optim")
plot(v.lav,pch=19)
lines(lav.ols, lty=1,lwd=2, col="red") title("Semivariograma ajustado: Lavoura")
## Krigagem indicativa para os mapas probabilisticos #Definir grid (malha)
x <- seq(0,5.5,l=100) y <- seq(0, 6, l=120)
locn <- expand.grid(x=x,y=y)
kc.flor <- krige.conv(Flore, loc=locn, krige=krige.control(obj=flor.ols))
kc.pas <- krige.conv(Pasto, loc=locn, krige=krige.control(obj=pas.ols))
kc.pra <- krige.conv(Prado, loc=locn, krige=krige.control(obj=pra.ols))
kc.lav <- krige.conv(Lavoura, loc=locn, krige=krige.control(obj=lav.ols))
# Mapas probabilisticos para cada categoria par(mfrow = c(1,1))
#1. Floresta (mapa de probabilidades)
contour(kc.flor, locations = locn, val=kc.flor$predict, borders = jbor, filled = TRUE, col=bluepal1(22))
title("Floresta") flor<-kc.flor$predict
image(kc.flor, border=bor, loc=locn, val=flor,col=bluepal1(22))
legend.krige(x.leg=c(0.1,0.5), y.leg=c(3,5.5), val=flor,col=bluepal1(22), vert=TRUE)
title("Floresta") pas<-kc.pas$predict
image(kc.pas, border=bor, loc=locn, val=pas,col=bluepal1(22))
legend.krige(x.leg=c(0.1,0.5), y.leg=c(3,5.5), val=pas,col=bluepal1(22), vert=TRUE)
title("Pasto")
pra<-kc.pra$predict
image(kc.pra, border=bor, loc=locn, val=pra,col=bluepal1(22)) legend.krige(x.leg=c(0.1,0.5), y.leg=c(3,5.5), val=pra,col=bluepal1(22), vert=TRUE) title("Prado") lavo<-kc.lav$predict image(kc.lav, loc=locn,border=bor,val=lavo,col=bluepal1(22)) legend.krige(x.leg=c(0.1,0.5), y.leg=c(3,5.5), val=lavo,col=bluepal1(22), vert=TRUE) title("Lavoura")
### Construçao de mapas temáticos com uso de Mapas de ### probabilidade
#Construção das tabelas com valores preditos prob <- cbind(kc.flor$predict,kc.pas$predict, kc.pra$predict,kc.lav$predict)
colnames(prob) <- c("Floresta", "Pasto", "Prado", "Lavoura") #Renomeando as colunas de cada categoria
max <- max.col(prob) # categoria com valor máximo de probabilidade
mapa <- cbind(locn,max) # Tabela com localização e valor máximo
colnames(mapa) <- c("X","Y","Prob") #Renomeando as colunas
class(mapa) <- "kriging" # classe das variaveis
mapa$predict <- mapa$Prob # redefinindo o valor "Prob" mapa$coords <- cbind(mapa$X,mapa$Y) #coordenadas
#Mapa de probabilidades por classes par(mfrow = c(1,1))
par(cex = 1.1) #definfindo o tamanho dos caracteres
image(mapa, locations = locn, borders=bor, xlab="W-E", ylab="S-N",
col = bluepal1(4))
legend(0.25, 5.75,c("Floresta", "Pasto", "Prado","Lavoura"), fill = bluepal1(4)) title("Uso da terra")
3.2 Mapa de riscos para o Cádmio (valor máximo permitido (Zc : 0.8 ppm))
###### 3.2 Mapas de riscos
###### Variável selecionada: Cadmio
###### Valor máximo permitido (Zc = 0.8 ppm) ### Selecionar a variavel Cadmio
jura.pred <- read.table("jura.txt", head=T)
Cd<-as.geodata(jura.pred,coords.col = 1:2, data.col = 5)
# Analise variografica
par(mfrow = c(1,2)) # set up the graphics
variogCd <- variog(Cd, uvec = seq(0, 2, length = 20), option = "bin")
plot(variogCd,type="l",main="Semivariograma experimental")
#Semivariograma unidirecional e modelo ajustado (geoR)
plot(variogCd, xlab = "Distância", ylab = "Semivariância",main="Modelo ajustado")
lines.variomodel(cov.model = "spherical" , cov.pars = rbind(c(0.35,0.2),c(0.26,1.3)), nugget = 0.25, max.dist = 2, lwd = 2, col = "red")
text(1,0.1, "MODELO: 0,25 + 0,35 Sph(h/0,2) + 0,26 Sph (h/1,3)")
## Ajuste usando mínimos quadrados ponderados
par(mfrow = c(1,1)) # set up the graphics locin <- matrix(c(0.35,0.26,0.2,1.3), ncol=2)
Cd.ols <- variofit(variogCd, ini=locin, nugget=0.25, min="optim")
Cd.ols
plot(variogCd)
##Execução com um grid (50x60:menos tempo de computação ##Krigagem indicativa
#Definir grid (malha)
x <- seq(0,5.5,l=50) y <- seq(0, 6, l=60)
locCdi <- expand.grid(x=x,y=y) summary(locCdi)
## Krigagem Indicativa: predição de probabilidades e quantis
## Probabilidade de Cd ser maior que 0.8 ppm em cada um dos pontos
OC <- output.control(thres=0.8,
quan=c(0.34,0.50,0.60,0.80,0.90)) Cd.kc <- krige.conv(Cd, loc=locCdi,
krige=krige.control(obj=Cd.ols),output=OC)
# examinando o objeto retornado pela função
names(Cd.kc)
Zp<-Cd.kc$pred # valores preditos Zv<-Cd.kc$krige.var # variancia
Zprob=Cd.kc$prob # probabilidades estimados do valor ser menor que 0.8 nos pontos selecionados
Zc=1-Cd.kc$prob # probabilidades estimados do valor ser maior que 0.8 nos pontos selecionados
Ztype=Cd.kc$mean # E-type (médias) Zq=Cd.kc$quant # quantis
#Salvando os resultados em uma tabela
ki <- cbind(Zp,Zv,Zc,Zprob,Ztype,Cd.kc$quant) kind<-cbind(locCdi,ki) names(kind) write.table(kind,"tkind0.dat") ###Mapas #Mapa de probabilidades Zc>0.8
image(Cd.kc, border=jbor, loc=locCdi, val=Zc,col=terrain.colors(30))
legend.krige(x.leg=c(-0.4,-0.05),
y.leg=c(3,6),Zc,col=terrain.colors(30), vert=TRUE) title("Cadmio: Prob Zc>0.8")
# Mapa dos valores médios (E-type)
image(Cd.kc, border=bor, loc=locCdi, val=Cd.kc$Ztype,col=terrain.colors(30)) legend.krige(x.leg=c(-0.4,-0.05),
y.leg=c(3,6),Cd.kc$Ztype,col=terrain.colors(30), vert=TRUE)
## Mapeando quantis
names(Cd.kc$quant)
# Mapa dos valores medianos (quantil-0.5)
Zmed=Cd.kc$q50
image(Cd.kc, border=bor, loc=locCdi, val=Zmed,col=terrain.colors(30)) legend.krige(x.leg=c(-0.4,-0.05),
y.leg=c(3,6),Zmed,col=terrain.colors(30), vert=TRUE) title("Cadmio: Mediana")
Exercício 3: Escolher uma ou duas variáveis quantitativas (Cu, Pb, Co, Cr e Zn ) do banco jura.txt
a) Construir o mapa da variável com uso da krigagem ordinaria
b) Com uso da krigagem indicativa, construir o mapa temático para a variável tipo de rocha e o mapa de risco para a variável escolhida em a). As tolerâncias máximas permitidas se encontram na Tabela 1 (Unidade 1)