Ir para Fase 6.

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))

Ir para Fase 8.