lidar:projetos:rcode_alsmodelo
Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
| Ambos lados da revisão anteriorRevisão anteriorPróxima revisão | Revisão anterior | ||
| lidar:projetos:rcode_alsmodelo [2023/11/27 10:33] – criada lcer | lidar:projetos:rcode_alsmodelo [2023/11/27 10:41] (atual) – removida lcer | ||
|---|---|---|---|
| Linha 1: | Linha 1: | ||
| - | [[ lidar: | ||
| - | |||
| - | < | ||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | # Inventário com dados LiDAR na Fazenda Modelo ~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | # | ||
| - | # Autor: Luiz Carlos Estraviz Rodriguez | ||
| - | # Departamento de Ciências Florestais | ||
| - | # ESALQ/USP - 25/Nov/2023 | ||
| - | # | ||
| - | # Inventário florestal da Fazenda Modelo | ||
| - | # - download dos dados mantidos em um repositório github público | ||
| - | # - shape files dos talhões florestais | ||
| - | # - LiDAR multitemporal (2013 e 2014) | ||
| - | # - sugestão de pasta para armazenamento local: | ||
| - | # C:/ | ||
| - | # | ||
| - | # Linguagem de programação: | ||
| - | # R (v 4.3) | ||
| - | # | ||
| - | # | ||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | rm(list=ls(all=TRUE)) | ||
| - | gc() | ||
| - | |||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | # 1. Leitura e organização inicial de dados | ||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ---- | ||
| - | if(!require(tidyverse)) | ||
| - | install.packages(" | ||
| - | library(tidyverse) | ||
| - | |||
| - | # Define diretórios e pastas de trabalho | ||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | prjNam <- " | ||
| - | wrkDir <- str_c(' | ||
| - | dir.create(wrkDir, | ||
| - | setwd(str_c(wrkDir)) | ||
| - | lidDir <- str_c(' | ||
| - | dir.create(lidDir, | ||
| - | |||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | # Define os nomes dos tiles LiDAR multitemporais que serão lidos do | ||
| - | # repositório, | ||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | gitOnde < | ||
| - | gitNome < | ||
| - | " | ||
| - | " | ||
| - | # anoData <- c(" | ||
| - | anoData <- c(" | ||
| - | |||
| - | # Faz o download dos tiles | ||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | options(timeout=1000) # Reset timeout oferecendo mais tempo de download | ||
| - | for (ano in anoData) { | ||
| - | dirLAZ <- paste0(lidDir, | ||
| - | dir.create(dirLAZ, | ||
| - | for (nome in gitNome){ | ||
| - | gitFile <- paste0(gitOnde, | ||
| - | localFl <- paste0(dirLAZ, | ||
| - | if(!file.exists(localFl)) | ||
| - | download.file(gitFile, | ||
| - | } | ||
| - | } | ||
| - | |||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | # Download dos shapes da Fazenda Modelo (2 layers: talhoes e parcelas) | ||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | gitOnde <- " | ||
| - | gitNome <- " | ||
| - | gitArqv <- file.path(gitOnde, | ||
| - | |||
| - | tmpd <- tempdir(check = TRUE) # diretório temporário | ||
| - | zipf <- file.path(tmpd, | ||
| - | |||
| - | options(timeout=1000) # Reset timeout oferecendo mais tempo de download | ||
| - | if(!file.exists(zipf)) | ||
| - | download.file(gitArqv, | ||
| - | |||
| - | shpDir <- str_c(wrkDir, | ||
| - | dir.create(shpDir, | ||
| - | unzip(zipf, exdir = shpDir) | ||
| - | unlink(zipf) | ||
| - | # ---- | ||
| - | |||
| - | |||
| - | # ********************************************************************* | ||
| - | # 2: A Amostragem Dupla (AD) com variável auxiliar LiDAR começa aqui. | ||
| - | # **************************************************************** ---- | ||
| - | # devtools:: | ||
| - | # devtools:: | ||
| - | if(!require(lidR)) | ||
| - | install.packages(" | ||
| - | # e tiver o package devtools instalado, rode | ||
| - | # alternativamente as duas linhas acima. | ||
| - | library(lidR) | ||
| - | |||
| - | if(!require(future)) | ||
| - | install.packages(" | ||
| - | library(future) | ||
| - | |||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | # Define quantos cores vão ser usados no processamento paralelo | ||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | cores <- as.integer(parallel:: | ||
| - | if (cores > 4L){cores <- cores - 1L} else {cores <- 3L} | ||
| - | plan(multisession, | ||
| - | |||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | # Leitura dos catálogos de dados LiDAR (2013 e 2014) | ||
| - | # Exibe conteúdo do catálogo e confere se os mapas de tiles são iguais | ||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | dirLAZ <- paste0(lidDir, | ||
| - | ctg <- readLAScatalog(dirLAZ) | ||
| - | opt_select(ctg) <- " | ||
| - | plot(ctg) | ||
| - | |||
| - | if(!require(mapview)) | ||
| - | install.packages(" | ||
| - | library(mapview) | ||
| - | plot(ctg, mapview = TRUE, map.type = " | ||
| - | |||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | # Recorta nuvens usando os limites dos talhões com buffer de 10m | ||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | opt_chunk_buffer(ctg) <- 10 # 10 m buffer | ||
| - | opt_output_files(ctg) <- paste0(tempfile(), | ||
| - | ctg_tal = clip_roi(ctg, | ||
| - | |||
| - | plot(ctg_tal, | ||
| - | plot(ctg_tal, | ||
| - | |||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | # Classifica pontos de solo | ||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | if(!require(RCSF)) | ||
| - | install.packages(" | ||
| - | library(RCSF) | ||
| - | opt_output_files(ctg_tal) <- paste0(tempdir(), | ||
| - | ctg <- classify_ground(ctg_tal, | ||
| - | rm(ctg_tal) | ||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | # Normaliza as nuvens de pontos dos talhões | ||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | opt_output_files(ctg) <- paste0(tempdir(), | ||
| - | ctg <- normalize_height(ctg, | ||
| - | |||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | # Converte e salva o novo conjunto de tiles normalizado | ||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | dirLAZ <- paste0(dirLAZ, | ||
| - | opt_output_files(ctg) <- | ||
| - | paste0(dirLAZ, | ||
| - | opt_chunk_buffer(ctg) <- 20 # com buffers ao redor de cada tile | ||
| - | opt_chunk_size(ctg) <- 300 # retile para tiles de 300 m | ||
| - | opt_laz_compression(ctg) <- TRUE # mantém formato LAZ | ||
| - | ctg <- catalog_retile(ctg) | ||
| - | plot(ctg, mapview = TRUE, map.type = " | ||
| - | |||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | # Lê o shape e atributos dos talhoes | ||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | if(!require(sf)) | ||
| - | install.packages(" | ||
| - | library(sf) | ||
| - | shpArq | ||
| - | tal_shp <- st_read(shpArq) | ||
| - | st_is_valid(tal_shp) | ||
| - | plot(tal_shp, | ||
| - | |||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | # Lê os centróides das parcelas de inventário convencional | ||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | shpArq | ||
| - | par_shp <- st_read(shpArq) | ||
| - | st_is_valid(par_shp) | ||
| - | |||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | # Este bloco cria funções que permitem produzir gráficos esteticamente | ||
| - | # caprichados para apresentar os índices de correlação de Pearson | ||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ---- | ||
| - | # Parâmetros dos gráficos | ||
| - | txt.size = 6 | ||
| - | thm.size = (14/5) * txt.size | ||
| - | |||
| - | Tema <- theme( | ||
| - | axis.line | ||
| - | axis.text.x | ||
| - | axis.title.y = element_blank(), | ||
| - | axis.text.y | ||
| - | axis.ticks | ||
| - | legend.justification = c(1, 0), | ||
| - | legend.position | ||
| - | legend.text | ||
| - | legend.title = element_blank(), | ||
| - | panel.border | ||
| - | panel.background = element_blank(), | ||
| - | panel.grid.major = element_line(colour = " | ||
| - | title = element_text(size = thm.size, colour=" | ||
| - | plot.background = element_rect(colour = " | ||
| - | ) | ||
| - | |||
| - | # Função para reordenamento da cormat (correlation matrix) | ||
| - | reorder_cormat <- function(cormat){ | ||
| - | # Use correlation between variables as distance | ||
| - | dd <- as.dist((1-cormat)/ | ||
| - | hc <- hclust(dd) | ||
| - | cormat < | ||
| - | } | ||
| - | |||
| - | # Função para definição do triângulo superior da cormat | ||
| - | get_upper_tri <- function(cormat){ | ||
| - | cormat[lower.tri(cormat)]< | ||
| - | return(cormat) | ||
| - | } | ||
| - | |||
| - | # Função para embelazamento da cormat | ||
| - | if(!require(reshape2)) | ||
| - | install.packages(" | ||
| - | library(reshape2) | ||
| - | graphCormat <- function(cormat){ | ||
| - | # Resets font size for correlation matrix graph | ||
| - | txt.size = 6 | ||
| - | thm.size = (14/5) * txt.size | ||
| - | upper_tri <- get_upper_tri(cormat) | ||
| - | # Melt the correlation matrix | ||
| - | melted_cormat <- melt(upper_tri, | ||
| - | p <- ggplot(melted_cormat, | ||
| - | geom_tile(color = " | ||
| - | scale_fill_gradient2(low = " | ||
| - | | ||
| - | | ||
| - | coord_fixed() + | ||
| - | geom_text(aes(Var2, | ||
| - | theme( | ||
| - | axis.line | ||
| - | axis.title.x = element_blank(), | ||
| - | axis.text.x | ||
| - | axis.title.y = element_blank(), | ||
| - | axis.text.y | ||
| - | axis.ticks | ||
| - | legend.direction = " | ||
| - | legend.justification = c(1, 0), | ||
| - | legend.position | ||
| - | legend.text | ||
| - | panel.border | ||
| - | panel.background = element_blank(), | ||
| - | panel.grid.major = element_line(colour = " | ||
| - | title = element_text(size = thm.size, colour=" | ||
| - | plot.background = element_rect(colour = " | ||
| - | ) + | ||
| - | guides(fill = guide_colorbar(barwidth = 7, barheight = 1, | ||
| - | | ||
| - | return(p) | ||
| - | } | ||
| - | # ----- | ||
| - | |||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | # Estudo da correlação das métricas LiDAR com parâmetros de interesse | ||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ ---- | ||
| - | opt_filter(ctg) <- " | ||
| - | |||
| - | # Cálculo " | ||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | D <- plot_metrics(ctg, | ||
| - | |||
| - | # Escolhe um subgrupo de métricas e dados para estudo da correlação | ||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | X <- tibble(D) %>% select(VTCC, | ||
| - | zq90, zq95, pzabovezmean, | ||
| - | |||
| - | # Prepara o gráfico para análise das correlações | ||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | cormat <- X %>% cor() | ||
| - | cormat <- round(cor(cormat), | ||
| - | p <- graphCormat(cormat) | ||
| - | |||
| - | grfDir <- str_c(wrkDir, | ||
| - | |||
| - | fileGrf <- paste0(grfDir, | ||
| - | nomeGrf <- " | ||
| - | jpeg(fileGrf, | ||
| - | plot(p + labs(title=nomeGrf)) | ||
| - | dev.off() | ||
| - | |||
| - | # Análise de regressão por quadrados mínimos ordinários (OLS) para | ||
| - | # determinação do modelo de predição. | ||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | m <- lm(VTCC ~ zq90 + IDINV, data = X) | ||
| - | summary(m) | ||
| - | plot(X$VTCC, | ||
| - | abline(0,1) | ||
| - | |||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | # Gera métricas para Área Total | ||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | # É possível gerar uma função que calcula qualquer métrica desejada | ||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | metriLiDAR < | ||
| - | if (length(z)< | ||
| - | metris <- list( | ||
| - | n <- length(z), | ||
| - | zmean <- mean(z), | ||
| - | zq90 <- quantile(z, 0.90), | ||
| - | zq95 <- quantile(z, 0.95), | ||
| - | zrelief | ||
| - | zabvmean <- (length(z[z> | ||
| - | ) | ||
| - | names(metris) <- c(" | ||
| - | " | ||
| - | return(metris) | ||
| - | } | ||
| - | |||
| - | # Aplica a função de métricas específicas em cada talhão separadamente | ||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | prjNam <- " | ||
| - | wrkDir <- str_c(' | ||
| - | lidDir <- str_c(wrkDir, | ||
| - | ctgDir <- str_c(lidDir, | ||
| - | |||
| - | arq1a <- paste0(lidDir, | ||
| - | arq1d <- paste0(lidDir, | ||
| - | arq2a <- paste0(lidDir, | ||
| - | arq2c <- paste0(lidDir, | ||
| - | |||
| - | las <- readLAS(arq1a) | ||
| - | d1a <- hexagon_metrics(las, | ||
| - | plot(d1a, pal = heat.colors, | ||
| - | |||
| - | las <- readLAS(arq1d) | ||
| - | d1d <- hexagon_metrics(las, | ||
| - | plot(d1d, pal = heat.colors, | ||
| - | |||
| - | las <- readLAS(arq2a) | ||
| - | d2a <- hexagon_metrics(las, | ||
| - | plot(d2a, pal = heat.colors, | ||
| - | |||
| - | las <- readLAS(arq2c) | ||
| - | d2c <- hexagon_metrics(las, | ||
| - | plot(d2c, pal = heat.colors, | ||
| - | # ---- | ||
| - | |||
| - | |||
| - | |||
| - | # +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | ||
| - | # AGORA É SUA VEZ | ||
| - | # ESTUDO DIRIGIDO ... | ||
| - | # PRODUZA O MAPA DE ESTIMATIVAS DE VOLUME | ||
| - | # +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | ||
| - | |||
| - | |||
| - | |||
| - | |||
| - | # +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ | ||
| - | # O BLOCO A SEGUIR SERÁ UTIL SE QUISER " | ||
| - | # CALCULA AS INFORMAÇÕES NECESSÁRIAS PARA GERAR O QUADRO | ||
| - | # DE COMPARAÇÃO ENTRE ACS, ACE E AD !! | ||
| - | # +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ ----- | ||
| - | |||
| - | # Funções para a | ||
| - | # Amostragem dupla | ||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | doubleSampleRegPars = function(y, x, xLarge, alpha=.05){ | ||
| - | n = length(y) | ||
| - | beta = ( sum(y*x, na.rm=T) - ( sum(x, na.rm=T)*sum(y, | ||
| - | / ( sum(x^2, na.rm=T) - (sum(x, na.rm=T)^2 / n) ) | ||
| - | | ||
| - | rho = cor(y,x) | ||
| - | N = length(xLarge) | ||
| - | | ||
| - | ydsr = mean(y, na.rm=T) + beta * ( mean(xLarge, | ||
| - | vardsr = (var(y, na.rm=T)/ | ||
| - | stderr = sqrt(vardsr) | ||
| - | ci = calcCI(stderr, | ||
| - | | ||
| - | out = c(media = ydsr, var = vardsr, dp = stderr, ic = ci, erro = 100*ci/ | ||
| - | | ||
| - | return(out) | ||
| - | } | ||
| - | |||
| - | # Função para determinação da quantidade ideal de parcelas amostrais, | ||
| - | # isto é, da intensidade amostral que gera erro admissível | ||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | dubleSamplePlotNumber = function(y, x, xLarge, Cpg = 300, | ||
| - | | ||
| - | | ||
| - | rho = cor(x,y) | ||
| - | a = var(y) * (1 - rho^2) | ||
| - | b = var(y) * rho^2 | ||
| - | | ||
| - | B = errDesired * mean(y) | ||
| - | qt = qt(1 - alpha/2, length(y)-1) | ||
| - | | ||
| - | nG = (sqrt( a*b*Cpg ) + b) / (B^2 / qt^2) | ||
| - | nP = (sqrt( a*b/Cpg ) + a) / (B^2 / qt^2) | ||
| - | | ||
| - | return(nP) | ||
| - | } | ||
| - | |||
| - | |||
| - | spatialPlotMetrics | ||
| - | mutate(VTCC = ifelse(VTCC <50, VTCC*10, | ||
| - | |||
| - | lims = spatialPlotMetrics %>% names %in% c(' | ||
| - | lidarOnly = spatialPlotMetrics[, | ||
| - | |||
| - | interestVars = c(' | ||
| - | corrMat = cor(spatialPlotMetrics[, | ||
| - | corrMat = corrMat[, | ||
| - | |||
| - | handPick = c(' | ||
| - | vars = c(' | ||
| - | handp = as.data.frame(cbind(vars, | ||
| - | doubleSamplePars = foreach(i = interestVars, | ||
| - | aux = corrMat[i,] | ||
| - | #pick = which( aux == max(aux) ) %>% names | ||
| - | pick = handp$handPick[vars == i] | ||
| - | XL = metrics[, | ||
| - | | ||
| - | est = doubleSampleRegPars(spatialPlotMetrics[, | ||
| - | spatialPlotMetrics[, | ||
| - | #est = doubleSampleRatioPars(spatialPlotMetrics[, | ||
| - | names(est) = i | ||
| - | | ||
| - | est %<>% t %>% as.data.frame | ||
| - | est$aux = pick | ||
| - | | ||
| - | return(est) | ||
| - | } | ||
| - | |||
| - | doubleSamplePars <- doubleSamplePars %>% select(-rho) %>% t() | ||
| - | |||
| - | doubleSamplePars %>% | ||
| - | kbl(caption = " | ||
| - | kable_classic(full_width = F) | ||
| - | |||
| - | # Gráfico para análise da precisão dos métodos amostrais | ||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | erro = 1:20 | ||
| - | scsPlotn <- tamanhoIdealACS(parcelas$VTCC, | ||
| - | errDesired = erro/100) | ||
| - | tamanhoIdealACE(y = parcelas$VTCC, | ||
| - | g = parcelas$IDINV, | ||
| - | Nh = parcPorEstrato, | ||
| - | erro/100) | ||
| - | |||
| - | cssPlotn <- tamanhoIdealACE(parcelas$VTCC, | ||
| - | errDesired = erro/100) | ||
| - | |||
| - | dsPlotn = dubleSamplePlotNumber(spatialPlotMetrics$VTCC, | ||
| - | spatialPlotMetrics$zq99, | ||
| - | metrics$zq99, | ||
| - | |||
| - | png(' | ||
| - | plot( scsPlotn ~ erro, type=' | ||
| - | ylim=c(0, | ||
| - | axes=F) | ||
| - | lines(erro, cssPlotn, col=' | ||
| - | lines(erro, dsPlotn, col=' | ||
| - | box() | ||
| - | axis(1) | ||
| - | axis(2, at = c(25, 50, 75, 100, 125, 150, 175, 200)) | ||
| - | abline(v=10, | ||
| - | lines(c(0, | ||
| - | lines(c(0, | ||
| - | lines(c(0, | ||
| - | legend(' | ||
| - | | ||
| - | dev.off() | ||
| - | |||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | # Este script foi atualizado em Novembro/ | ||
| - | # na seguinte sequência, as mais recentes versões do pacote lidR*: | ||
| - | # | ||
| - | # | ||
| - | # | ||
| - | # | ||
| - | # * lidR latest development version | ||
| - | # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | ||
| - | # ---- | ||
| - | </ | ||
lidar/projetos/rcode_alsmodelo.1701081237.txt.gz · Última modificação: (edição externa)
