rm(list = ls(all.names = TRUE))
library(leaflet.extras)
## Loading required package: leaflet
library(apcluster)
##
## Attaching package: 'apcluster'
## The following object is masked from 'package:stats':
##
## heatmap
setwd("~/OneDrive/r-files/TCC/")
getwd()
## [1] "/Users/fagnersuteldemoura/OneDrive/r-files/TCC"
load(file = "apres2-25000.rda")
load(file = "x2-25000.rda")
head(x2)
## [,1] [,2]
## [1,] -51.22665 -30.08557
## [2,] -51.20434 -30.06956
## [3,] -51.22628 -30.03048
## [4,] -51.17905 -30.05931
## [5,] -51.18213 -30.00723
## [6,] -51.21227 -30.12198
dim(x2)
## [1] 20000 2
summary(apres)
## Length Class Mode
## 136 APResult S4
predict.apcluster <- function(s, exemplars, newdata)
{
simMat <- s(rbind(exemplars, newdata), sel=(1:nrow(newdata)) + nrow(exemplars))[1:nrow(exemplars), ]
unname(apply(simMat, 2, which.max))
}
SELECT * FROM ponto p, tipoSinal t WHERE _idtipoSinal IN (7, 8, 20) AND p._idtipoSinal = t.idtipoSinal
resultado <- list()
#carregamos o dataset de parquímetros
parq = read.csv('~/OneDrive/r-files/read_parquimetros/tipoSinal2.csv', header = FALSE, sep = ",")
head(parq)
dim(parq)
## [1] 220 23
#realizamos os tipecasts e data cleaning necessários
parq$V5 = as.integer(parq$V5)
parq$V6 = NULL;parq$V7 = NULL;parq$V8 = NULL;parq$V9 = NULL;parq$V10 = NULL;parq$V11 = NULL;parq$V12 = NULL;parq$V13 = NULL
parq$V14 = NULL;parq$V15 = NULL;parq$V16 = NULL;parq$V17 = NULL;parq$V19 = NULL;parq$V20 = NULL;parq$V1 = NULL
parq$V3 <- as.numeric(as.character(parq$V3))
parq$V4 <- as.numeric(as.character(parq$V4))
parq <- parq[parq$V3 < 0, ]
parq <- subset(parq, !is.na(V3))
#Convertemos os valores de receita para numérico
parq$'V18' = as.numeric(as.character(parq$'V18'))
#Convertemos o número de vagas para numérico
parq$'V5' = as.numeric(as.character(parq$'V5'))
#Multiplicamos o número de vagas pelo número de horas operacionais/ano
parq$'V5' = ((parq$'V5' * 11) *280)*1.5
#Dividimos a receita pelo número de horas para saber a taxa de ocupação
parq$densidade = (parq$'V18' / parq$'V5')
head(parq)
parq = parq[1:length(parq$V3),]
head(parq)
names(parq) = c("V0", "V1", "V2", "V3", "V4", "V5", "V6", "V7", "V8")
head(parq)
aa= length(parq$V3)/10
aa
## [1] 22
#Classificamos os parquímetros dentro dos clusters identificados na clusterização dos alvarás
resultado = predict.apcluster(negDistMat(r=2), x2[apres@exemplars, ], parq[1:length(parq$V3), 2:3])
parq$cluster[1:length(parq$V3)] = resultado
length(resultado)
## [1] 220
head(parq)
names(parq) = c("V0", "V1", "V2", "V3", "V4", "V5", "V6", "V7", "dens", "cluster")
dados = parq
head(dados)
tail(dados)
#Varificamos os clusters nos quais os parquímetros foram atribuídos
clusters_encontrados = unique(dados$cluster)
clusters_encontrados = sort(clusters_encontrados)
length(clusters_encontrados)
## [1] 24
clusters_encontrados
## [1] 4 6 8 10 17 29 34 36 40 41 43 45 46 52 68 78 83
## [18] 86 99 103 112 116 125 135
#Verificamos a quantidade de parquímetros em cada cluster
table(dados$cluster)
##
## 4 6 8 10 17 29 34 36 40 41 43 45 46 52 68 78 83 86
## 1 1 7 1 8 2 6 16 3 5 14 6 9 6 20 8 6 21
## 99 103 112 116 125 135
## 2 12 28 21 4 13
head(parq)
save(parq, file = "parq.Rda")
dim(parq)
## [1] 220 10
load("parq.Rda")
pal <- colorFactor(
palette = 'Dark2',
domain = parq$cluster
)
leaflet(parq) %>%
addTiles(group="Mapa") %>%
addCircles(group="Parquimetros", ~V1, ~V2, weight = 0.1, radius=30, color=~pal(cluster),
stroke = TRUE, fillOpacity = 0.8, popup=~paste("Cluster: ", cluster, "<br>Local: ", V0, sep = " ")) %>%
addLegend(group="Legenda", "topright", colors= "", labels=paste("Classificados em meio a ", summary(apres)[1], "Clusters"), title="Parquímetros em Porto Alegre") %>%
addLayersControl(overlayGroups = c("Mapa", "Parquimetros", "Legenda"),
options = layersControlOptions(collapsed = TRUE))
## Warning in RColorBrewer::brewer.pal(max(3, n), palette): n too large, allowed maximum for palette Dark2 is 8
## Returning the palette you asked for with that many colors
## Warning in RColorBrewer::brewer.pal(max(3, n), palette): n too large, allowed maximum for palette Dark2 is 8
## Returning the palette you asked for with that many colors
pal <- colorFactor(
palette = 'Dark2',
domain = parq$dens
)
leaflet(parq) %>%
addTiles(group="Mapa") %>%
addCircles(group="Parquimetros", ~V1, ~V2, weight = 0.1, radius=30, color=~pal(dens),
stroke = TRUE, fillOpacity = 0.8, popup=~paste("Local: ", V0, "<br>Ocupacao: ", dens, sep = " ")) %>%
addLegend(group="Legenda", "topright", colors= "", labels=paste("Classificados em meio a ", summary(apres)[1], "Clusters"), title="Parquímetros em Porto Alegre") %>%
addLayersControl(overlayGroups = c("Mapa", "Parquimetros", "Legenda"),
options = layersControlOptions(collapsed = TRUE))
## Warning in RColorBrewer::brewer.pal(max(3, n), palette): n too large, allowed maximum for palette Dark2 is 8
## Returning the palette you asked for with that many colors
## Warning in RColorBrewer::brewer.pal(max(3, n), palette): n too large, allowed maximum for palette Dark2 is 8
## Returning the palette you asked for with that many colors
#Classificamos os parquimetros de acordo com a taxa de ocupação
library(Hmisc)
## Loading required package: lattice
## Loading required package: survival
## Loading required package: Formula
## Loading required package: ggplot2
##
## Attaching package: 'Hmisc'
## The following objects are masked from 'package:base':
##
## format.pval, units
parq = parq[complete.cases(parq[ , ]),]
head(parq)
min(parq$dens)
## [1] 0.1034646
max(parq$dens)
## [1] 1.354961
dim(parq)
## [1] 220 10
prop.table(table(cut2(parq$dens, g=10)))
##
## [0.103,0.197) [0.197,0.230) [0.230,0.266) [0.266,0.304) [0.304,0.349)
## 0.1 0.1 0.1 0.1 0.1
## [0.349,0.391) [0.391,0.438) [0.438,0.497) [0.497,0.562) [0.562,1.355]
## 0.1 0.1 0.1 0.1 0.1
prop.table(table(cut2(parq$dens, g=3)))
##
## [0.103,0.282) [0.282,0.422) [0.422,1.355]
## 0.3363636 0.3318182 0.3318182
prop.table(table(cut2(parq$dens, g=4)))
##
## [0.103,0.245) [0.245,0.349) [0.349,0.470) [0.470,1.355]
## 0.25 0.25 0.25 0.25
prop.table(table(cut2(parq$dens, g=5)))
##
## [0.103,0.230) [0.230,0.304) [0.304,0.391) [0.391,0.497) [0.497,1.355]
## 0.2 0.2 0.2 0.2 0.2
parq$ocupacao <- as.integer(as.character(parq$dens))
parq$ocupacao <- round(parq$dens, 2)
parq$dens <- cut2(parq$dens, g=10)
head(parq)
pal <- colorFactor(
palette = "Blues",
domain = parq$dens
)
leaflet(parq) %>%
addTiles(group="Mapa") %>%
addCircles(group="Parquimetros", ~V1, ~V2, weight = 0.1, radius=50, color=~pal(dens),
stroke = TRUE, fillOpacity = 0.9, popup=~paste("Local: ", V0, "<br>Faixa: ", dens, "<br>Ocupacao: ", ocupacao,
"<br>Vagas: ", (((V3/280)/11)/1.5), sep = " ")) %>%
addLegend(group="Legenda", "topright", colors= "", labels=paste("Classificados em meio a ", summary(apres)[1], "Clusters"), title="Parquímetros em Porto Alegre") %>%
addLayersControl(overlayGroups = c("Mapa", "Parquimetros", "Legenda"),
options = layersControlOptions(collapsed = TRUE))
## Warning in RColorBrewer::brewer.pal(max(3, n), palette): n too large, allowed maximum for palette Blues is 9
## Returning the palette you asked for with that many colors
## Warning in RColorBrewer::brewer.pal(max(3, n), palette): n too large, allowed maximum for palette Blues is 9
## Returning the palette you asked for with that many colors
head(parq)
dim(parq)
## [1] 220 11
#Iniciamos a criação de polígonos de parquímetros
library(contoureR)
## Loading required package: geometry
poly = data.frame()
#Realizamos a iteração para gerar polígonos por cluster
for (i in clusters_encontrados){
temp = parq[parq$"cluster" == i, ]
ch1 = convexHullAM_Indexes(temp[,2],temp[,3], includeColinear=FALSE,zeroBased = FALSE)
print(i)
print(ch1)
for (ii in ch1) {
polying = temp[ii,]
poly = rbind(poly, polying)
}
}
## [1] 4
## [1] 1
## [1] 6
## [1] 1
## [1] 8
## [1] 7 3 6 4 7
## [1] 10
## [1] 1
## [1] 17
## [1] 5 6 8 4 7 1 5
## [1] 29
## [1] 1 2 1
## [1] 34
## [1] 6 2 1 4 3 5 6
## [1] 36
## [1] 2 5 8 1 10 16 15 2
## [1] 40
## [1] 3 1 2 3
## [1] 41
## [1] 4 1 3 5 4
## [1] 43
## [1] 2 10 13 9 1 8 7 2
## [1] 45
## [1] 5 6 1 4 5
## [1] 46
## [1] 2 7 6 3 2
## [1] 52
## [1] 1 6 5 4 1
## [1] 68
## [1] 3 6 8 12 10 1 3
## [1] 78
## [1] 8 4 7 5 6 2 1 8
## [1] 83
## [1] 1 5 6 4 2 1
## [1] 86
## [1] 7 12 4 3 17 9 5 6 7
## [1] 99
## [1] 1 2 1
## [1] 103
## [1] 7 9 10 11 5 3 2 1 7
## [1] 112
## [1] 7 1 5 6 26 20 15 7
## [1] 116
## [1] 16 3 4 7 9 21 16
## [1] 125
## [1] 2 4 3 1 2
## [1] 135
## [1] 4 3 12 5 6 8 10 1 4
poly
dim(poly)
## [1] 136 11
dados = poly
head(dados)
names(dados) = c("log", "lat", "lon", "v3", "v4", "V5", "group", "v7", "dens", "box_id", "ocupacao")
dados$id = (dados$box_id * 11)
dados$group = dados$id
head(dados)
library(sp)
#realizamos a criação dos objetos necessários
coordinates(dados)=c("lat","lon")
df = dados
head(df)
## coordinates
## 212 (-51.21107, -30.02931)
## 130 (-51.21156, -30.03829)
## 211 (-51.22252, -30.02809)
## 10 (-51.2209, -30.02849)
## 210 (-51.22032, -30.02793)
## 11 (-51.2224, -30.02754)
## log
## 212 Independencia Independencia - Independência, Porto Alegre - RS, 90035-073, Brasil
## 130 Av Ven?ncio Aires 928
## 211 Av. Alberto Bins, 410 - Centro Histórico, Porto Alegre - RS, 90030-141, Brasil
## 10 R. Cel Vicente 558
## 210 Av. Alberto Bins, 628 - Centro Histórico, Porto Alegre - RS, 90030-141, Brasil
## 11 R. Pinto Bandeira 377
## v3 v4 V5 group v7 dens box_id
## 212 73920 25817.45 44 Parquimetro [0.349,0.391) 4
## 130 83160 16946.50 FARROUPINHA 66 Parquimetro [0.197,0.230) 6
## 211 32340 3748.60 88 Parquimetro [0.103,0.197) 8
## 10 55440 25213.70 CENTRO 88 Parquimetro [0.438,0.497) 8
## 210 46200 23260.30 88 Parquimetro [0.497,0.562) 8
## 11 64680 53859.95 CENTRO 88 Parquimetro [0.562,1.355] 8
## ocupacao id
## 212 0.35 44
## 130 0.20 66
## 211 0.12 88
## 10 0.45 88
## 210 0.50 88
## 11 0.83 88
data <- data.frame(box_id=unique(df$box_id),row.names=unique(df$id))
head(data)
#Inicializamos a função de bind de dataframe e datapolygons
points2polygons <- function(df,data) {
get.grpPoly <- function(group,ID,df) {
Polygon(coordinates(df[df$id==ID & df$group==group,]))
}
get.spPoly <- function(ID,df) {
Polygons(lapply(unique(df[df$id==ID,]$group),get.grpPoly,ID,df),ID)
}
spPolygons <- SpatialPolygons(lapply(unique(df$id),get.spPoly,df))
SpatialPolygonsDataFrame(spPolygons,match.ID=T,data=data)
}
#Criamos o SpatialPolygonsDataFrame
spDF <- points2polygons(df,data)
## Warning in Polygon(coordinates(df[df$id == ID & df$group == group, ])):
## less than 4 coordinates in polygon
## Warning in Polygon(coordinates(df[df$id == ID & df$group == group, ])):
## less than 4 coordinates in polygon
## Warning in Polygon(coordinates(df[df$id == ID & df$group == group, ])):
## less than 4 coordinates in polygon
## Warning in Polygon(coordinates(df[df$id == ID & df$group == group, ])):
## less than 4 coordinates in polygon
## Warning in Polygon(coordinates(df[df$id == ID & df$group == group, ])):
## less than 4 coordinates in polygon
spDF[1]
## An object of class "SpatialPolygonsDataFrame"
## Slot "data":
## box_id
## 44 4
## 66 6
## 88 8
## 110 10
## 187 17
## 319 29
## 374 34
## 396 36
## 440 40
## 451 41
## 473 43
## 495 45
## 506 46
## 572 52
## 748 68
## 858 78
## 913 83
## 946 86
## 1089 99
## 1133 103
## 1232 112
## 1276 116
## 1375 125
## 1485 135
##
## Slot "polygons":
## [[1]]
## An object of class "Polygons"
## Slot "Polygons":
## [[1]]
## An object of class "Polygon"
## Slot "labpt":
## [1] -51.21107 -30.02931
##
## Slot "area":
## [1] 0
##
## Slot "hole":
## [1] FALSE
##
## Slot "ringDir":
## [1] 1
##
## Slot "coords":
## lat lon
## 212 -51.21107 -30.02931
## 212 -51.21107 -30.02931
## 212 -51.21107 -30.02931
## 212 -51.21107 -30.02931
##
##
##
## Slot "plotOrder":
## [1] 1
##
## Slot "labpt":
## [1] -51.21107 -30.02931
##
## Slot "ID":
## [1] "44"
##
## Slot "area":
## [1] 0
##
##
## [[2]]
## An object of class "Polygons"
## Slot "Polygons":
## [[1]]
## An object of class "Polygon"
## Slot "labpt":
## [1] -51.21156 -30.03829
##
## Slot "area":
## [1] 0
##
## Slot "hole":
## [1] FALSE
##
## Slot "ringDir":
## [1] 1
##
## Slot "coords":
## lat lon
## 130 -51.21156 -30.03829
## 130 -51.21156 -30.03829
## 130 -51.21156 -30.03829
## 130 -51.21156 -30.03829
##
##
##
## Slot "plotOrder":
## [1] 1
##
## Slot "labpt":
## [1] -51.21156 -30.03829
##
## Slot "ID":
## [1] "66"
##
## Slot "area":
## [1] 0
##
##
## [[3]]
## An object of class "Polygons"
## Slot "Polygons":
## [[1]]
## An object of class "Polygon"
## Slot "labpt":
## [1] -51.22150 -30.02801
##
## Slot "area":
## [1] 1.172286e-06
##
## Slot "hole":
## [1] FALSE
##
## Slot "ringDir":
## [1] 1
##
## Slot "coords":
## lat lon
## 211 -51.22252 -30.02809
## 10 -51.22240 -30.02754
## 210 -51.22032 -30.02793
## 11 -51.22090 -30.02849
## 2111 -51.22252 -30.02809
##
##
##
## Slot "plotOrder":
## [1] 1
##
## Slot "labpt":
## [1] -51.22150 -30.02801
##
## Slot "ID":
## [1] "88"
##
## Slot "area":
## [1] 1.172286e-06
##
##
## [[4]]
## An object of class "Polygons"
## Slot "Polygons":
## [[1]]
## An object of class "Polygon"
## Slot "labpt":
## [1] -51.23078 -30.04653
##
## Slot "area":
## [1] 0
##
## Slot "hole":
## [1] FALSE
##
## Slot "ringDir":
## [1] 1
##
## Slot "coords":
## lat lon
## 214 -51.23078 -30.04653
## 214 -51.23078 -30.04653
## 214 -51.23078 -30.04653
## 214 -51.23078 -30.04653
##
##
##
## Slot "plotOrder":
## [1] 1
##
## Slot "labpt":
## [1] -51.23078 -30.04653
##
## Slot "ID":
## [1] "110"
##
## Slot "area":
## [1] 0
##
##
## [[5]]
## An object of class "Polygons"
## Slot "Polygons":
## [[1]]
## An object of class "Polygon"
## Slot "labpt":
## [1] -51.25502 -30.11369
##
## Slot "area":
## [1] 3.809259e-06
##
## Slot "hole":
## [1] FALSE
##
## Slot "ringDir":
## [1] 1
##
## Slot "coords":
## lat lon
## 45 -51.25609 -30.11234
## 46 -51.25538 -30.11181
## 48 -51.25393 -30.11448
## 44 -51.25406 -30.11535
## 47 -51.25530 -30.11488
## 41 -51.25564 -30.11382
## 451 -51.25609 -30.11234
##
##
##
## Slot "plotOrder":
## [1] 1
##
## Slot "labpt":
## [1] -51.25502 -30.11369
##
## Slot "ID":
## [1] "187"
##
## Slot "area":
## [1] 3.809259e-06
##
##
## [[6]]
## An object of class "Polygons"
## Slot "Polygons":
## [[1]]
## An object of class "Polygon"
## Slot "labpt":
## [1] -51.18209 -30.04395
##
## Slot "area":
## [1] 0
##
## Slot "hole":
## [1] FALSE
##
## Slot "ringDir":
## [1] 1
##
## Slot "coords":
## lat lon
## 49 -51.18209 -30.04395
## 50 -51.18135 -30.04309
## 491 -51.18209 -30.04395
## -51.18209 -30.04395
##
##
##
## Slot "plotOrder":
## [1] 1
##
## Slot "labpt":
## [1] -51.18209 -30.04395
##
## Slot "ID":
## [1] "319"
##
## Slot "area":
## [1] 0
##
##
## [[7]]
## An object of class "Polygons"
## Slot "Polygons":
## [[1]]
## An object of class "Polygon"
## Slot "labpt":
## [1] -51.20745 -30.02972
##
## Slot "area":
## [1] 3.755965e-06
##
## Slot "hole":
## [1] FALSE
##
## Slot "ringDir":
## [1] 1
##
## Slot "coords":
## lat lon
## 198 -51.20980 -30.02901
## 52 -51.20889 -30.02891
## 51 -51.20586 -30.02943
## 54 -51.20584 -30.03037
## 53 -51.20668 -30.03064
## 197 -51.20776 -30.03035
## 1981 -51.20980 -30.02901
##
##
##
## Slot "plotOrder":
## [1] 1
##
## Slot "labpt":
## [1] -51.20745 -30.02972
##
## Slot "ID":
## [1] "374"
##
## Slot "area":
## [1] 3.755965e-06
##
##
## [[8]]
## An object of class "Polygons"
## Slot "Polygons":
## [[1]]
## An object of class "Polygon"
## Slot "labpt":
## [1] -51.20322 -30.02879
##
## Slot "area":
## [1] 1.16658e-05
##
## Slot "hole":
## [1] FALSE
##
## Slot "ringDir":
## [1] 1
##
## Slot "coords":
## lat lon
## 56 -51.20510 -30.02975
## 59 -51.20468 -30.02683
## 62 -51.20366 -30.02672
## 55 -51.20312 -30.02682
## 64 -51.20049 -30.02929
## 207 -51.20292 -30.03061
## 77 -51.20420 -30.03059
## 561 -51.20510 -30.02975
##
##
##
## Slot "plotOrder":
## [1] 1
##
## Slot "labpt":
## [1] -51.20322 -30.02879
##
## Slot "ID":
## [1] "396"
##
## Slot "area":
## [1] 1.16658e-05
##
##
## [[9]]
## An object of class "Polygons"
## Slot "Polygons":
## [[1]]
## An object of class "Polygon"
## Slot "labpt":
## [1] -51.21306 -30.04902
##
## Slot "area":
## [1] 6.785448e-07
##
## Slot "hole":
## [1] FALSE
##
## Slot "ringDir":
## [1] 1
##
## Slot "coords":
## lat lon
## 157 -51.21420 -30.05036
## 155 -51.21305 -30.04861
## 156 -51.21193 -30.04810
## 1571 -51.21420 -30.05036
##
##
##
## Slot "plotOrder":
## [1] 1
##
## Slot "labpt":
## [1] -51.21306 -30.04902
##
## Slot "ID":
## [1] "440"
##
## Slot "area":
## [1] 6.785448e-07
##
##
## [[10]]
## An object of class "Polygons"
## Slot "Polygons":
## [[1]]
## An object of class "Polygon"
## Slot "labpt":
## [1] -51.22669 -30.02942
##
## Slot "area":
## [1] 3.508785e-06
##
## Slot "hole":
## [1] FALSE
##
## Slot "ringDir":
## [1] 1
##
## Slot "coords":
## lat lon
## 162 -51.22798 -30.02928
## 16 -51.22672 -30.02788
## 18 -51.22534 -30.03039
## 201 -51.22684 -30.03048
## 1621 -51.22798 -30.02928
##
##
##
## Slot "plotOrder":
## [1] 1
##
## Slot "labpt":
## [1] -51.22669 -30.02942
##
## Slot "ID":
## [1] "451"
##
## Slot "area":
## [1] 3.508785e-06
##
##
## [[11]]
## An object of class "Polygons"
## Slot "Polygons":
## [[1]]
## An object of class "Polygon"
## Slot "labpt":
## [1] -51.23075 -30.02973
##
## Slot "area":
## [1] 1.302559e-05
##
## Slot "hole":
## [1] FALSE
##
## Slot "ringDir":
## [1] 1
##
## Slot "coords":
## lat lon
## 169 -51.23355 -30.02871
## 189 -51.22928 -30.02790
## 192 -51.22839 -30.02779
## 181 -51.22960 -30.03189
## 23 -51.23008 -30.03205
## 180 -51.23156 -30.03149
## 179 -51.23275 -30.03013
## 1691 -51.23355 -30.02871
##
##
##
## Slot "plotOrder":
## [1] 1
##
## Slot "labpt":
## [1] -51.23075 -30.02973
##
## Slot "ID":
## [1] "473"
##
## Slot "area":
## [1] 1.302559e-05
##
##
## [[12]]
## An object of class "Polygons"
## Slot "Polygons":
## [[1]]
## An object of class "Polygon"
## Slot "labpt":
## [1] -51.20814 -30.03704
##
## Slot "area":
## [1] 2.472507e-06
##
## Slot "hole":
## [1] FALSE
##
## Slot "ringDir":
## [1] 1
##
## Slot "coords":
## lat lon
## 141 -51.20884 -30.03935
## 200 -51.20828 -30.03518
## 134 -51.20731 -30.03649
## 139 -51.20834 -30.03850
## 1411 -51.20884 -30.03935
##
##
##
## Slot "plotOrder":
## [1] 1
##
## Slot "labpt":
## [1] -51.20814 -30.03704
##
## Slot "ID":
## [1] "495"
##
## Slot "area":
## [1] 2.472507e-06
##
##
## [[13]]
## An object of class "Polygons"
## Slot "Polygons":
## [[1]]
## An object of class "Polygon"
## Slot "labpt":
## [1] -51.20755 -30.02081
##
## Slot "area":
## [1] 1.637487e-06
##
## Slot "hole":
## [1] FALSE
##
## Slot "ringDir":
## [1] 1
##
## Slot "coords":
## lat lon
## 114 -51.20842 -30.02242
## 119 -51.20824 -30.02086
## 118 -51.20633 -30.01939
## 115 -51.20623 -30.01952
## 1141 -51.20842 -30.02242
##
##
##
## Slot "plotOrder":
## [1] 1
##
## Slot "labpt":
## [1] -51.20755 -30.02081
##
## Slot "ID":
## [1] "506"
##
## Slot "area":
## [1] 1.637487e-06
##
##
## [[14]]
## An object of class "Polygons"
## Slot "Polygons":
## [[1]]
## An object of class "Polygon"
## Slot "labpt":
## [1] -51.19777 -30.01900
##
## Slot "area":
## [1] 6.021167e-07
##
## Slot "hole":
## [1] FALSE
##
## Slot "ringDir":
## [1] 1
##
## Slot "coords":
## lat lon
## 120 -51.19804 -30.01803
## 125 -51.19748 -30.01878
## 124 -51.19746 -30.01934
## 123 -51.19791 -30.01990
## 1201 -51.19804 -30.01803
##
##
##
## Slot "plotOrder":
## [1] 1
##
## Slot "labpt":
## [1] -51.19777 -30.01900
##
## Slot "ID":
## [1] "572"
##
## Slot "area":
## [1] 6.021167e-07
##
##
## [[15]]
## An object of class "Polygons"
## Slot "Polygons":
## [[1]]
## An object of class "Polygon"
## Slot "labpt":
## [1] -51.22836 -30.03469
##
## Slot "area":
## [1] 9.928606e-06
##
## Slot "hole":
## [1] FALSE
##
## Slot "ringDir":
## [1] 1
##
## Slot "coords":
## lat lon
## 29 -51.22987 -30.03239
## 32 -51.22885 -30.03155
## 35 -51.22682 -30.03545
## 39 -51.22674 -30.03649
## 37 -51.22859 -30.03756
## 24 -51.22971 -30.03329
## 291 -51.22987 -30.03239
##
##
##
## Slot "plotOrder":
## [1] 1
##
## Slot "labpt":
## [1] -51.22836 -30.03469
##
## Slot "ID":
## [1] "748"
##
## Slot "area":
## [1] 9.928606e-06
##
##
## [[16]]
## An object of class "Polygons"
## Slot "Polygons":
## [[1]]
## An object of class "Polygon"
## Slot "labpt":
## [1] -51.22296 -30.03039
##
## Slot "area":
## [1] 7.488874e-06
##
## Slot "hole":
## [1] FALSE
##
## Slot "ringDir":
## [1] 1
##
## Slot "coords":
## lat lon
## 206 -51.22413 -30.02846
## 19 -51.22333 -30.02822
## 22 -51.22239 -30.02896
## 20 -51.22137 -30.03207
## 21 -51.22266 -30.03221
## 12 -51.22363 -30.03199
## 1 -51.22410 -30.03047
## 2061 -51.22413 -30.02846
##
##
##
## Slot "plotOrder":
## [1] 1
##
## Slot "labpt":
## [1] -51.22296 -30.03039
##
## Slot "ID":
## [1] "858"
##
## Slot "area":
## [1] 7.488874e-06
##
##
## [[17]]
## An object of class "Polygons"
## Slot "Polygons":
## [[1]]
## An object of class "Polygon"
## Slot "labpt":
## [1] -51.23010 -30.04459
##
## Slot "area":
## [1] 1.841822e-06
##
## Slot "hole":
## [1] FALSE
##
## Slot "ringDir":
## [1] 1
##
## Slot "coords":
## lat lon
## 107 -51.23069 -30.04499
## 111 -51.23017 -30.04316
## 112 -51.22944 -30.04420
## 110 -51.22999 -30.04572
## 108 -51.23048 -30.04571
## 1071 -51.23069 -30.04499
##
##
##
## Slot "plotOrder":
## [1] 1
##
## Slot "labpt":
## [1] -51.23010 -30.04459
##
## Slot "ID":
## [1] "913"
##
## Slot "area":
## [1] 1.841822e-06
##
##
## [[18]]
## An object of class "Polygons"
## Slot "Polygons":
## [[1]]
## An object of class "Polygon"
## Slot "labpt":
## [1] -51.23351 -30.03091
##
## Slot "area":
## [1] 7.548469e-06
##
## Slot "hole":
## [1] FALSE
##
## Slot "ringDir":
## [1] 1
##
## Slot "coords":
## lat lon
## 172 -51.23543 -30.03000
## 184 -51.23524 -30.02951
## 33 -51.23429 -30.02906
## 27 -51.23354 -30.02934
## 194 -51.23230 -30.03082
## 174 -51.23181 -30.03192
## 170 -51.23152 -30.03331
## 171 -51.23508 -30.03095
## 1721 -51.23543 -30.03000
##
##
##
## Slot "plotOrder":
## [1] 1
##
## Slot "labpt":
## [1] -51.23351 -30.03091
##
## Slot "ID":
## [1] "946"
##
## Slot "area":
## [1] 7.548469e-06
##
##
## [[19]]
## An object of class "Polygons"
## Slot "Polygons":
## [[1]]
## An object of class "Polygon"
## Slot "labpt":
## [1] -51.19292 -30.02196
##
## Slot "area":
## [1] 0
##
## Slot "hole":
## [1] FALSE
##
## Slot "ringDir":
## [1] 1
##
## Slot "coords":
## lat lon
## 74 -51.19292 -30.02196
## 75 -51.19233 -30.02177
## 741 -51.19292 -30.02196
## -51.19292 -30.02196
##
##
##
## Slot "plotOrder":
## [1] 1
##
## Slot "labpt":
## [1] -51.19292 -30.02196
##
## Slot "ID":
## [1] "1089"
##
## Slot "area":
## [1] 0
##
##
## [[20]]
## An object of class "Polygons"
## Slot "Polygons":
## [[1]]
## An object of class "Polygon"
## Slot "labpt":
## [1] -51.2175 -30.0304
##
## Slot "area":
## [1] 1.356111e-05
##
## Slot "hole":
## [1] FALSE
##
## Slot "ringDir":
## [1] 1
##
## Slot "coords":
## lat lon
## 14 -51.21913 -30.03008
## 147 -51.21879 -30.02795
## 148 -51.21861 -30.02786
## 149 -51.21808 -30.02782
## 8 -51.21653 -30.02772
## 6 -51.21586 -30.03321
## 5 -51.21653 -30.03308
## 4 -51.21845 -30.03265
## 142 -51.21913 -30.03008
##
##
##
## Slot "plotOrder":
## [1] 1
##
## Slot "labpt":
## [1] -51.2175 -30.0304
##
## Slot "ID":
## [1] "1133"
##
## Slot "area":
## [1] 1.356111e-05
##
##
## [[21]]
## An object of class "Polygons"
## Slot "Polygons":
## [[1]]
## An object of class "Polygon"
## Slot "labpt":
## [1] -51.20205 -30.02418
##
## Slot "area":
## [1] 1.728546e-05
##
## Slot "hole":
## [1] FALSE
##
## Slot "ringDir":
## [1] 1
##
## Slot "coords":
## lat lon
## 78 -51.20466 -30.02600
## 69 -51.20447 -30.02330
## 73 -51.20248 -30.02218
## 76 -51.19879 -30.02254
## 205 -51.20017 -30.02502
## 91 -51.20125 -30.02629
## 86 -51.20272 -30.02619
## 781 -51.20466 -30.02600
##
##
##
## Slot "plotOrder":
## [1] 1
##
## Slot "labpt":
## [1] -51.20205 -30.02418
##
## Slot "ID":
## [1] "1232"
##
## Slot "area":
## [1] 1.728546e-05
##
##
## [[22]]
## An object of class "Polygons"
## Slot "Polygons":
## [[1]]
## An object of class "Polygon"
## Slot "labpt":
## [1] -51.21114 -30.03511
##
## Slot "area":
## [1] 2.266183e-05
##
## Slot "hole":
## [1] FALSE
##
## Slot "ringDir":
## [1] 1
##
## Slot "coords":
## lat lon
## 150 -51.21425 -30.03390
## 128 -51.21043 -30.03184
## 129 -51.20843 -30.03479
## 133 -51.20971 -30.03796
## 138 -51.21096 -30.03833
## 216 -51.21238 -30.03751
## 1501 -51.21425 -30.03390
##
##
##
## Slot "plotOrder":
## [1] 1
##
## Slot "labpt":
## [1] -51.21114 -30.03511
##
## Slot "ID":
## [1] "1276"
##
## Slot "area":
## [1] 2.266183e-05
##
##
## [[23]]
## An object of class "Polygons"
## Slot "Polygons":
## [[1]]
## An object of class "Polygon"
## Slot "labpt":
## [1] -51.21461 -30.05280
##
## Slot "area":
## [1] 6.923602e-07
##
## Slot "hole":
## [1] FALSE
##
## Slot "ringDir":
## [1] 1
##
## Slot "coords":
## lat lon
## 159 -51.21496 -30.05272
## 161 -51.21430 -30.05171
## 160 -51.21436 -30.05279
## 158 -51.21472 -30.05396
## 1591 -51.21496 -30.05272
##
##
##
## Slot "plotOrder":
## [1] 1
##
## Slot "labpt":
## [1] -51.21461 -30.05280
##
## Slot "ID":
## [1] "1375"
##
## Slot "area":
## [1] 6.923602e-07
##
##
## [[24]]
## An object of class "Polygons"
## Slot "Polygons":
## [[1]]
## An object of class "Polygon"
## Slot "labpt":
## [1] -51.22932 -30.05913
##
## Slot "area":
## [1] 5.669106e-06
##
## Slot "hole":
## [1] FALSE
##
## Slot "ringDir":
## [1] 1
##
## Slot "coords":
## lat lon
## 99 -51.23052 -30.06042
## 98 -51.23038 -30.05910
## 208 -51.22979 -30.05761
## 100 -51.22864 -30.05756
## 101 -51.22808 -30.05861
## 103 -51.22822 -30.05965
## 105 -51.22836 -30.05981
## 96 -51.22947 -30.06080
## 991 -51.23052 -30.06042
##
##
##
## Slot "plotOrder":
## [1] 1
##
## Slot "labpt":
## [1] -51.22932 -30.05913
##
## Slot "ID":
## [1] "1485"
##
## Slot "area":
## [1] 5.669106e-06
##
##
##
## Slot "plotOrder":
## [1] 22 21 20 11 8 15 18 16 24 5 7 10 12 17 13 3 23 9 14 6 19 4 2
## [24] 1
##
## Slot "bbox":
## min max
## x -51.25609 -51.18135
## y -30.11535 -30.01803
##
## Slot "proj4string":
## CRS arguments: NA
class(spDF)
## [1] "SpatialPolygonsDataFrame"
## attr(,"package")
## [1] "sp"
#Plotamos o SpatialPolygonsDataFrame
plot(spDF,col=spDF$box_id+1)
#Salvamos o SpatialPolygonsDataFrame
library(rgdal)
## rgdal: version: 1.3-9, (SVN revision 794)
## Geospatial Data Abstraction Library extensions to R successfully loaded
## Loaded GDAL runtime: GDAL 2.1.3, released 2017/20/01
## Path to GDAL shared files: /Library/Frameworks/R.framework/Versions/3.5/Resources/library/rgdal/gdal
## GDAL binary built with GEOS: FALSE
## Loaded PROJ.4 runtime: Rel. 4.9.3, 15 August 2016, [PJ_VERSION: 493]
## Path to PROJ.4 shared files: /Library/Frameworks/R.framework/Versions/3.5/Resources/library/rgdal/proj
## Linking to sp version: 1.3-1
rgdal::writeOGR(obj = spDF,
dsn = "myParq.json",
layer = "myParq.json",
driver = "GeoJSON",
overwrite_layer = TRUE)
#carregamos os dados SpatialPolygonsDataFrame
parqs <- geojsonio::geojson_read("myParq.json",
what = "sp")
#Verificamos o objeto
head(parqs, 1)
## An object of class "SpatialPolygonsDataFrame"
## Slot "data":
## box_id
## 44 4
##
## Slot "polygons":
## [[1]]
## An object of class "Polygons"
## Slot "Polygons":
## [[1]]
## An object of class "Polygon"
## Slot "labpt":
## [1] -51.21107 -30.02931
##
## Slot "area":
## [1] 0
##
## Slot "hole":
## [1] FALSE
##
## Slot "ringDir":
## [1] 1
##
## Slot "coords":
## [,1] [,2]
## [1,] -51.21107 -30.02931
## [2,] -51.21107 -30.02931
## [3,] -51.21107 -30.02931
## [4,] -51.21107 -30.02931
##
##
##
## Slot "plotOrder":
## [1] 1
##
## Slot "labpt":
## [1] -51.21107 -30.02931
##
## Slot "ID":
## [1] "44"
##
## Slot "area":
## [1] 0
##
##
##
## Slot "plotOrder":
## [1] 1
##
## Slot "bbox":
## min max
## x -51.21107 -51.21107
## y -30.02931 -30.02931
##
## Slot "proj4string":
## CRS arguments:
## +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0
dim(parqs)
## [1] 24 1
library(raster)
##
## Attaching package: 'raster'
## The following objects are masked from 'package:Hmisc':
##
## mask, zoom
projection(parqs)
## [1] "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"
#Verificamos os dados espaciais no mapa
library(mapview)
mapviewPalette(name = "Viridis")
mapview(parqs)
#Como os parquímetros possuem uma área de abrangencia e os polígonos se limitam à posição
#dos parquímetros, assim criamos um buffer para expandir o tamanho do polígono
library(rgeos)
## rgeos version: 0.4-2, (SVN revision 581)
## GEOS runtime version: 3.6.1-CAPI-1.10.1
## Linking to sp version: 1.3-1
## Polygon checking: TRUE
##
## Attaching package: 'rgeos'
## The following object is masked from 'package:Hmisc':
##
## translate
AAE = gBuffer(parqs, width = 0.0004)
## Warning in gBuffer(parqs, width = 4e-04): Spatial object is not projected;
## GEOS expects planar coordinates
mapview(AAE)
#fazemos a carga dos dados dosclusters
load("clusters_centroids.rda")
head(dadostemp)
dados = as.data.frame(dados)
head(dados)
names(dados) = c("log", "Lon", "Lat", "Horas", "Receita", "Bairro", "clusterx11", "Equip", "faixas_ocupacao", "cluster", "ocupacao")
head(dados)
#realizamos typecast
dadostemp$cluster = as.numeric(as.character(dadostemp$cluster))
dados$cluster = as.numeric(as.character(dados$cluster))
#Realizamos um bind tipo "left outer join"
dados[,"centroide_lat"]<-dadostemp[dados[ ,"cluster"], "centroide_lat"]
dados[,"centroide_lon"]<-dadostemp[dados[ ,"cluster"], "centroide_lon"]
dados[,"medoide_lat"]<-dadostemp[dados[ ,"cluster"], "medoide_lat"]
dados[,"medoide_lon"]<-dadostemp[dados[ ,"cluster"], "medoide_lon"]
dados[,"area"]<-dadostemp[dados[ ,"cluster"], "area"]
dados[,"ocorrencias"]<-dadostemp[dados[ ,"cluster"], "ocorrencias"]
dados[,"alvara_km2"]<-dadostemp[dados[ ,"cluster"], "id"]
head(dados)
parquimetros_clusterizados = dados
save(parquimetros_clusterizados, file = "parquimetros_clusterizados.Rda")
load("parquimetros_clusterizados.Rda")
names(parquimetros_clusterizados) = c("log", "Lon", "Lat", "Horas", "Receita", "Bairro", "clusterx11", "Equip", "faixas_ocupacao", "cluster", "ocupacao", "cl", "centroide_lat", "centroide_lon", "medoide_lat", "medoide_lon", "area", "ocorrencias", "alvara_km2" )
head(parquimetros_clusterizados)
pal <- colorFactor(
palette = c("#00CC33", "#336633", "#FF007F", "red", "#7F0000"),
domain = parquimetros_clusterizados$faixas_ocupacao
)
library(leaflet)
leaflet(parquimetros_clusterizados) %>%
addTiles() %>%
addCircles(group="Parquimetros", ~Lon, ~Lat, weight = 0.1, radius=35, color=~pal(faixas_ocupacao),
stroke = TRUE, fillOpacity = 0.8, popup=~paste("Ocupação: ", ocupacao, sep = " ")) %>%
addLegend(group="Parquimetros", "topright", colors= "", labels="Numero de Alvaras por KM²", title="Alvarás em Porto Alegre") %>%
addLayersControl(overlayGroups = c("Parquimetros"),
options = layersControlOptions(collapsed = TRUE))