Gerardo Flores
He estado tratando de decodificar polígonos de Google encriptados con R usando el paquete googlePolylines que he logrado configurando el polígono como texto pero no puedo hacer el mismo procedimiento importando un archivo csv con los polígonos.
Por ejemplo, tengo el siguiente código:
library(googlePolylines)
pol<-"j~thAxdvtMtXmL|LgCpKxCjQzD~T`GzXrAlMePnDsKpVoF`QgBnNoM~IcA`JiGnd@iYvZuLzKkSlH_d@wDef@iJwFyZfUmc@hCsa@N{\\|SeCzOaFgQwD{SaPiC|WwBpPr@bGsG{FeQxEkOtXa@dXgFtHyJoIiGui@NqaAvFuRyQxEia@he@u_@b\\og@dHuZyJaX_d@zK_Ua@eBwMq`A}AyRcTkKce@c]uWeS{DuRzZtCh]|b@zGuCbm@fUdTsLbS__@wBoTlu@zVbm@dc@l]oExn@gf@vUgPbAkL|HtCnXi@zKtRvc@CzPxBpLxAnEvFvDpPx^cFlBTh@??Dn@@f@~G|QFH~\\gMj@Su@}@"
polylines<-c(pol)
coordinates<-decode(polylines)
Esto funciona pero para esto tengo que cambiar manualmente el polígono encriptado. Lo que quiero hacer es importar un csv (datapolygons.csv) con el polígono encriptado (polígono de columna) y luego decodificarlo. He probado con el siguiente código pero me da un mensaje de error.
datapolygons.csv (el polígono se escribe igual que el polígono codificado anterior)
store_id | nombre_tienda | polígono
12345 | AL AZAR | “j~thAxdvtMtXmL…”
library(googlePolylines)
polyfile=read.table('datapolygon.csv', header=TRUE, sep=',')
pol<-levels(droplevels(polyfile$polygon))
polylines<-c(pol)
coordinates<-decode(polylines)
Mensaje de error: Error en rcpp_decode_polyline(polilíneas, “coords”) : basic_string::at: __n (que es 363) >= this->size() (que es 363)
Cualquier ayuda sería muy apreciada. ¡Gracias!
ian campbell
¿Es posible que la cadena esté dañada en su .csv
¿expediente? ¿Quizás cuando hiciste el data.frame para escribir? La corrupción parece ocurrir durante la conversión a factor()
.
No tengo problemas para escribirlo y volver a entrar:
polyfile <- data.frame(store_address_id = 12345,
store_name = "RANDOM",
polygon = "j~thAxdvtMtXmL|LgCpKxCjQzD~T`GzXrAlMePnDsKpVoF`QgBnNoM~IcA`JiGnd@iYvZuLzKkSlH_d@wDef@iJwFyZfUmc@hCsa@N{\\|SeCzOaFgQwD{SaPiC|WwBpPr@bGsG{FeQxEkOtXa@dXgFtHyJoIiGui@NqaAvFuRyQxEia@he@u_@b\\og@dHuZyJaX_d@zK_Ua@eBwMq`A}AyRcTkKce@c]uWeS{DuRzZtCh]|b@zGuCbm@fUdTsLbS__@wBoTlu@zVbm@dc@l]oExn@gf@vUgPbAkL|HtCnXi@zKtRvc@CzPxBpLxAnEvFvDpPx^cFlBTh@??Dn@@f@~G|QFH~\\gMj@Su@}@",
stringsAsFactors = FALSE)
write.csv(file="~/test.csv",polyfile)
polyfile2 <- read.table('~/test.csv', header=TRUE, sep=',',stringsAsFactors = FALSE)
decode(polyfile2$polygon)
[[1]]
lat lon
1 -12.07286 -76.95965
2 -12.07697 -76.95750
3 -12.07920 -76.95682
4 -12.08121 -76.95759
5 -12.08415 -76.95853
6 -12.08767 -76.95982
7 -12.09181 -76.96024
8 -12.09412 -76.95749
9 -12.09500 -76.95547
10 -12.09877 -76.95427
-
Hola Ian, desafortunadamente sigo recibiendo el mismo mensaje de error.
– Gerardo Flores
26 de marzo de 2020 a las 3:50
-
Creo que su
.csv
el archivo puede estar corrupto. Ver mi edición.– Ian Campbell
26 de marzo de 2020 a las 4:11
-
Sí, estaba corrupto y tuve que eliminar el primero y el último ” en el archivo csv. Gracias, ahora funciona perfectamente.
– Gerardo Flores
26 de marzo de 2020 a las 16:33
Hola Gerardos, puedes proporcionar una muestra del objeto.
polyfile
por ejemplo condput(head(polyfile))
?– Ian Campbell
26 de marzo de 2020 a las 3:24
Hola Ian, obtengo esto: estructura (lista (store_address_id = 12345L, store_name = estructura (1L, .Label = “ALEATORIO”, clase = “factor”), polígono = estructura (1L, .Label = “\”j~thAxdvtMtXmL |LgCpKxCjQzD~T
GzXrAlMePnDsKpVoF
QgBnNoM~IcAJiGnd@iYvZuLzKkSlH_d@wDef@iJwFyZfUmc@hCsa@N{\\\\|SeCzOaFgQwD{SaPiC|WwBpPr@bGsG{FeQxEkOtXa@dXgFtHyJoIiGui@NqaAvFuRyQxEia@he@u_@b\\\\og@dHuZyJaX_d@zK_Ua@eBwMq
A}AyRcTkKce@c]uWeS{DuRzZtCh]|b@zGuCbm@fUdTsLbS__@wBoTlu@zVbm@dc@l]oExn@gf@vUgPbAkL|HtCnXi@zKtRvc@CzPxBpLxAnEvFvDpPx^cFlBTh@??Dn@@f@~G|QFH ~\\\\gMj@Su@}@\””, clase = “factor”)), fila.nombres = 1L, clase = “datos.marco”)– Gerardo Flores
26 de marzo de 2020 a las 3:33
Lo siento por el formato, realmente no sé cómo solucionarlo.
– Gerardo Flores
26 de marzo de 2020 a las 3:34
El problema es que hay acentos graves (el mismo carácter en ~) en la cadena que están estropeando la sintaxis de rebajas.
– Ian Campbell
26 de marzo de 2020 a las 3:49
Sí, el polígono codificado tiene una extraña lista de caracteres y comienza con “y termina con el mismo símbolo, así que creo que ese puede ser el problema, pero realmente no sé cómo resolverlo”.
– Gerardo Flores
26 de marzo de 2020 a las 3:52