将csv导入R,提取多边形并使用googlePolylines包进行解码



我一直在尝试使用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

最新更新