Zonas deEstudo

Carga de Dados
library(xlsx)
library(tidyr)
library(dplyr)
library(DT)
od = read.xlsx2(file = "C:/Users/fagne/OneDrive/Engenharia/_EIM/NovoHamburgo/Zoneamento/od.xlsx", sheetIndex = 4, header = 1)
library(data.table)
library(DT)
# Converte para data.table
odplot = od
setDT(odplot)
# Renomeia a primeira coluna
setnames(odplot, "Matriz", "Origem")
# Renomeia as colunas de destino
zonas <- paste0("Zona ", 1:(ncol(odplot) - 1))
setnames(odplot, old = names(odplot)[-1], new = zonas)
# Renomeia os valores da coluna Origem
odplot[, Origem := paste0("Zona ", Origem)]
# Converte valores para numérico
odplot[, (zonas) := lapply(.SD, as.numeric), .SDcols = zonas]
# Exibe como datatable interativo
datatable(odplot, options = list(pageLength = 10, scrollX = TRUE))
Wide para long
od_long <- od %>%
# Converte todas as colunas de X1 a X7 para numérico
mutate(across(starts_with("X"), as.numeric)) %>%
# Transforma de wide para long
pivot_longer(
cols = starts_with("X"),
names_to = "destino",
values_to = "viagem"
) %>%
# Remove o "X" da coluna destino e converte para número
mutate(
destino = as.integer(gsub("X", "", destino)),
origem = as.integer(Matriz) # Converte a coluna Matriz para número
) %>%
# Reorganiza as colunas
select(origem, destino, viagem)
od_long$viagem = 100*od_long$viagem
datatable(od_long)
Valida para saber se
soma 100%
sum(od_long$viagem)
## [1] 100
Carrega a
distribuição
distribuicao = read.xlsx2(file = "C:/Users/fagne/OneDrive/Engenharia/_EIM/NovoHamburgo/Zoneamento/IDsZonas.xlsx", sheetIndex = 2, header = 1)
datatable(distribuicao)
Desagregação de ZTs em
bairros
1. Preparar
distribuicao
distribuicao_clean <- distribuicao %>%
mutate(
ZT = as.integer(ZT),
Pop = as.numeric(Pop..)
) %>%
group_by(ZT) %>%
mutate(
peso_pop = Pop / sum(Pop) # peso relativo dentro da ZT
) %>%
ungroup()
datatable(distribuicao_clean)
4. Resultado
final
od_final_clean <- od_final %>%
select(ID_origem, ID_destino, viagem_desagregada)
write.xlsx2(od_final_clean, file = "OdFinal.xlsx")
datatable(od_final_clean)
Verifica se soma
100%
sum(od_final_clean$viagem_desagregada)
## [1] 100
Origem/Destino por
bairros
origemdestinobairros = read.xlsx2(file = "C:/Users/fagne/OneDrive/Engenharia/_EIM/NovoHamburgo/Zoneamento/odPlano_Mobilidade_Novo_Hamburgo.xlsx", sheetIndex = 1, header = 1)
origemdestinobairros$Total = NULL
origemdestinobairros$X. = NULL
origemdestinobairros = origemdestinobairros[1:29,]
datatable(origemdestinobairros)
row.names(origemdestinobairros) = origemdestinobairros$OD...Bairros
Remove a primeira
coluna (nomes de bairros de origem) e converte o restante
matriz_numerica <- origemdestinobairros %>%
select(-OD...Bairros) %>%
mutate(across(everything(), ~ as.numeric(.)))
Soma total da
matriz
soma_total <- sum(matriz_numerica, na.rm = TRUE)
soma_total
## [1] 25781
Calcula percentual de
cada célula e soma para validação
matriz_percentual <- matriz_numerica / soma_total * 100
sum(matriz_percentual, na.rm = TRUE)
## [1] 100
Matriz Final
matriz_percentual <- origemdestinobairros %>%
select(OD...Bairros) %>%
bind_cols(matriz_percentual)
row.names(matriz_percentual) = 1:nrow(matriz_percentual)
datatable(matriz_percentual)