我一直在尝试使用googlePolylines包解码加密的带有R的谷歌多边形,我通过将多边形设置为文本来实现这一点,但无法通过导入带有多边形的csv文件来完成相同的过程。
例如,我有以下代码:
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)
这是可行的,但为此我必须手动更改加密的多边形。我想做的是导入一个带有加密多边形(列多边形(的csv(datapolygons.csv(,然后对其进行解码。我尝试了以下代码,但它给了我一条错误消息。
datapolygons.csv(多边形与之前编码的多边形相同(
store_id | store_name |多边形
12345 |随机|"j~thAxdvtMtXmL……">
library(googlePolylines)
polyfile=read.table('datapolygon.csv', header=TRUE, sep=',')
pol<-levels(droplevels(polyfile$polygon))
polylines<-c(pol)
coordinates<-decode(polylines)
错误消息:rcpp_decode_polyline中的错误(多段线、"坐标"(:basic_string::at:__n(即363(>=this->size(((即363(
如有任何帮助,我们将不胜感激。非常感谢。
您的.csv
文件中的字符串是否已损坏?也许是在你制作数据帧时写出来的?损坏似乎发生在转换为factor()
的过程中。
我把它写出来再写回来没有问题:
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