R/coord_clean.R

# Convert coordenate character to numeric
coord_clean = function(coord)
{
	sapply(coord, 
			function(coord) {
				
				if(is.numeric(coord)) coord = paste(coord, sep = "", collapse = " ")
				
				## toUP
				coord = toupper(coord)
				p1 = " |\u60|\u2033|\u201D|\u201C|\u2DD|\u22|\u27|\u60|"
				p2 = "\uB0|\uB4|\u2DA|\u384|\u2018|\u2019|\u2032|\uBA|\u27"
				
				## substitui espaços e caraacteres por "/"
				#a0 = gsub(" ", "-", coord)
				aa = gsub(paste0(p1, p2), "/", coord)
				bb = gsub(",", ".", aa)
				cc = gsub("[A-Z]|-", "", bb)
				dd = gsub(" ", "", cc)
				
				## remove espacos, numeros e barras
				ref = toupper(trimws(gsub("[0-9]|\\.|[:[blank]:]|/", "", bb)))
				## orienta
				ws = c("W", "O", "S", "OESTE", "WEST", "SOUTH", "SUL", "-")
				## sinal conforme orientação
				signal = ifelse(ref %in% ws, -1, 1)
				
				## remove barra "/"
				dms = unlist(strsplit(dd, "/"))
				
				dms = as.numeric(dms)
				
				#if(is.na(dms[2])) dms[2] <- 0
				#if(is.na(dms[3])) dms[3] <- 0
				
				dms = stats::na.omit(dms)
				
				#names(dms) <- c("deg", "min", "sec")
				
				dms[1] = dms[1] * signal
				
				return(dms)
				
			}, USE.NAMES = FALSE)
}#end coord_clean

#x = "-77°50'8.34\""
#coord_clean(x)
salah31416/toolbox documentation built on June 3, 2019, 6:59 p.m.