-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathmun_coleta.r
151 lines (105 loc) · 3.86 KB
/
mun_coleta.r
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
# instalando pacotes
packages = c( "rgdal", "raster", "maptools", "dismo")
for (p in setdiff(packages, installed.packages()[, "Package"])) {
install.packages(p, dependencies = T)
}
#lendo pacotes
require(rgdal)
require(raster)
require(maptools)
require(dismo)
#Lendo os pontos
#
manimax=gbif("Manilkara", "maxima")
micomira=gbif("Miconia", "mirabilis")
#especie, lon, lat, municipio
pts=manimax[,c("species","lon","lat","municipality", "adm1")]
pts=micomira[,c("species","lon","lat","municipality", "adm1")]
pts=na.exclude(pts)
#convertendo em um objeto 'spatial'
coordinates(pts)<- ~lon+lat
## Lendo o shape dos municípios do brasil
#br_mun=readOGR("./Shapes/brasil_mun_ibge/brasil_mun_ibge.shp")
br_mun=readShapeSpatial("./Shapes/brasil_mun_ibge/brasil_mun_ibge.shp")
br_mun$NOMEMUNICP
br_mun$NOMEUF
#atribuinto projeções aos shapes e aos pontos
proj4string(br_mun) <- CRS("+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0")
proj4string(pts) <- CRS("+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0")
#criando um data frame
pts1=as.data.frame(pts)
#extraindo dados dos shapes a partir dos pontos
muni_shape=over(pts,br_mun)[,c('NOMEMUNICP','NOMEUF')]
muni_shape[,1]=as.vector(muni_shape[,1])
muni_shape[,2]=as.vector(muni_shape[,2])
pts1=cbind(pts1,muni_shape)
for(i in 1:dim(pts1)[1]){
pts1[,i]=tolower(pts1[,i])
}
pts1
#função de Athos (https://pt.stackoverflow.com/questions/46473/remover-acentos)
rm_accent <- function(str,pattern="all") {
# Rotinas e funções úteis V 1.0
# rm.accent - REMOVE ACENTOS DE PALAVRAS
# Função que tira todos os acentos e pontuações de um vetor de strings.
# Parâmetros:
# str - vetor de strings que terão seus acentos retirados.
# patterns - vetor de strings com um ou mais elementos indicando quais acentos deverão ser retirados.
# Para indicar quais acentos deverão ser retirados, um vetor com os símbolos deverão ser passados.
# Exemplo: pattern = c("´", "^") retirará os acentos agudos e circunflexos apenas.
# Outras palavras aceitas: "all" (retira todos os acentos, que são "´", "`", "^", "~", "¨", "ç")
if(!is.character(str))
str <- as.character(str)
pattern <- unique(pattern)
if(any(pattern=="Ç"))
pattern[pattern=="Ç"] <- "ç"
symbols <- c(
acute = "áéíóúÁÉÍÓÚýÝ",
grave = "àèìòùÀÈÌÒÙ",
circunflex = "âêîôûÂÊÎÔÛ",
tilde = "ãõÃÕñÑ",
umlaut = "äëïöüÄËÏÖÜÿ",
cedil = "çÇ"
)
nudeSymbols <- c(
acute = "aeiouAEIOUyY",
grave = "aeiouAEIOU",
circunflex = "aeiouAEIOU",
tilde = "aoAOnN",
umlaut = "aeiouAEIOUy",
cedil = "cC"
)
accentTypes <- c("´","`","^","~","¨","ç")
if(any(c("all","al","a","todos","t","to","tod","todo")%in%pattern)) # opcao retirar todos
return(chartr(paste(symbols, collapse=""), paste(nudeSymbols, collapse=""), str))
for(i in which(accentTypes%in%pattern))
str <- chartr(symbols[i],nudeSymbols[i], str)
return(str)
}
pts1$municipality=rm_accent(pts1$municipality)
pts1$municipality==pts1$NOMEMUNICP
pts1$adm1==pts1$NOMEUF
pts1$filt="Ok"
for(i in 1:dim(pts1)[1]){
if((pts1$municipality==pts1$NOMEMUNICP)[i]==FALSE){
pts1[i,"filt"]="suspeito"
}
}
pts1
pts1$filt[pts1$municipality==pts1$NOMEMUNICP,]="ok"
#testando a função filt_municip ####
manimax=gbif("Manilkara", "maxima")
#especie, lon, lat, municipio
pts=manimax[,c("species","lon","lat","municipality", "adm1")]
micomira=gbif("Miconia", "mirabilis")
#especie, lon, lat, municipio
pts=micomira[,c("species","lon","lat","municipality", "adm1")]
pts1=na.exclude(pts)
source("https://raw.githubusercontent.com/diogosbr/filtros/master/filt_municip.R")
source("https://raw.githubusercontent.com/diogosbr/filtros/master/coord_invertida.R")
pts1
names(pts1)=c("species" , "lat" , "lon" , "municipality" ,"adm1" )
teste=filt_municip(pts1)
head(teste)
teste2=invert(teste)
head(teste2)