我正在尝试使用 WKT 字段在数据框中绘制点。
library(rgeos)
library(rgdal)
> head(df)
id_pixel id_lote geo
1 1000013 10000131 POINT(-6421630.0792544 -3100141.21446612)
2 1000013 10000132 POINT(-6421398.42289614 -3100141.21446612)
3 1002031 10020311447 POINT(-6423017.27939664 -3120987.67242424)
4 1002031 10020311449 POINT(-6422093.39197093 -3121221.94306813)
5 1002031 10020311450 POINT(-6422785.09835309 -3121218.46519762)
6 6020361 602036 POINT(-5550130.276 -3814563.524)
> dim(df)
[1] 790381 3
我使用 rgeos 中的 readWKT 将 WKT 转换为坐标,然后绘制点
point.sp <- SpatialPointsDataFrame(readWKT(df[1,3]), data=df[1,])
for (n in 2:dim(df)[[1]]) {
point.sp <- rbind(point.sp,
SpatialPointsDataFrame(readWKT(df[n,3]),data=df[n,]))
print(n)
}
即使这是有效的,我也有几个问题需要解决。
首先,for 循环运行太慢。由于我的数据框有 790381 行,我需要让它更快。有没有办法让这个更有效?也许使用应用或其他功能?这是最重要的问题
其次,我得到的坐标被截断。我在 RGEOS WKT Functions 文档中没有找到任何关于此的内容。可以获得完整的坐标。
> point.sp
coordinates id_pixel id_lote geo
1 (-6421630, -3100141) 1000013 10000131 POINT(-6421630.0792544 -3100141.21446612)
2 (-6421398, -3100141) 1000013 10000132 POINT(-6421398.42289614 -3100141.21446612)
3 (-6423017, -3120988) 1002031 10020311447 POINT(-6423017.27939664 -3120987.67242424)
4 (-6422093, -3121222) 1002031 10020311449 POINT(-6422093.39197093 -3121221.94306813)
5 (-6422785, -3121218) 1002031 10020311450 POINT(-6422785.09835309 -3121218.46519762)
6 (-5550130, -3814564) 6020361 602036 POINT(-5550130.276 -3814563.524)
7 (-5550362, -3814100) 6020362 602036 POINT(-5550361.932 -3814100.212)
8 (-5550362, -3814564) 6020363 602036 POINT(-5550361.932 -3814563.524)
第三,当我绘制点时,我无法操纵点的类型或大小。我收到此警告消息:
plot(point.sp, type="p" , lwd= 0.25,axes = 1, col='orange')
Warning messages:
1: In axis(1, ...) : graphical parameter "type" is obsolete
2: In axis(2, ...) : graphical parameter "type" is obsolete
3: In title(...) : graphical parameter "type" is obsolete
所以也许我应该使用完全不同的方法,或者我可以通过一些调整让它工作吗?
谢谢!对不起我漂亮的英语...