我对R中的GIS映射是陌生的。我试图绘制越南地图,并用犯罪编号或其他内容“填充”。我的代码如下
st <- c('HCMC', 'Hanoi','Danang', 'Thanh Hoa', 'An Giang')
lat <- c(10.78, 21.02, 16.06, 19.82, 10.38)
long <- c(106.69, 105.83, 108.24, 105.79, 105.42)
ba <- c(96,99,88,56,7)
bls <- c(0.85, 1.63, 1.09, 0.61, 0.20)
vn <- data.frame(st,lat, long, ba, bls)
st
-状态名称,lat
-纬度,long
-经度,ba
,bls
-其他属性。
现在,我使用下面的代码将数据帧转换为shapefile以进行进一步处理
WGScoor <- vn
coordinates(WGScoor) = ~long+lat
proj4string(WGScoor)<- CRS("+proj=longlat +datum=WGS84")
LLcoor <- spTransform(WGScoor,CRS("+proj=longlat"))
raster::shapefile(LLcoor, "MyShapefile.shp")
然后我使用readOGR再次读取shapefile
library(rgdal)
viet <- readOGR("MyShapefile.dbf")
然后我使用以下代码进行绘制
qtm(viet, fill="ba", fill.style="quantile",
fill.n=4,
fill.palette="Greens",
legend.text.size = 0.5,
layout.legend.position = c("right", "bottom"))
我得到一个输出。但这仅是包装盒中的5分。我没有在越南的地图上看到它。
答案 0 :(得分:0)
读取shapefile时,应引用以.shp结尾的文件。这就是readOGR()
没有产生正确对象的原因。
似乎您可以使用与编写shapefile相同的功能来读取shapefile:
viet <- raster::shapefile("MyShapefile.shp")
应该可以。