我已经从csv文件创建了一个类Large SpatialPointDataFrame,我正在尝试使用tmap绘制数据点。当我使用 plot(( 绘制 SpatialPointDataFrame 时,一切看起来都很好。但是,当我尝试使用 tmap 绘制它时,它只显示一个点,而且它不是它应该在的地方,顺便说一句,显示的点是数据框中的最后一项。 我在想我的投影仪可能有问题?空间点数据帧的 CRS(使用 SVY21 或 EPSG:3414( 属性:
crs: +init=epsg:3414 +proj=tmerc +lat_0=1.366666666666667 +lon_0=103.8333333333333 +k=1 +x_0=28001.642 +y_0=38744.572 +ellps=WGS84 +units=m +no_defs
这就是我将数据帧转换为空间点数据帧的方式,其中列表是从 csv 文件中读取的原始数据帧。
coords <- listing[ , c("latitude", "longitude")]
crs <- CRS("+init=epsg:3414")
listing_sp <- SpatialPointsDataFrame(coords = coords, listing, proj4string = crs)
关于我应该如何调试的任何建议?
在代码中,您crs <- CRS("+init=epsg:3414")
,您正在分配投影,但源数据尚未转换为该投影。如果源数据采用纬度/纬度,则与 WGS84 投影(epsg 代码 4326(一起使用。
使用与坐标匹配的投影创建空间点数据帧后,只需使用spTransform
重新投影即可。要重新投影到 SVY21,您仍然需要转换。如果没有一些可重现的数据,就无法进行测试,但它应该看起来像这样。
coords <- listing[ , c("latitude", "longitude")]
crs <- CRS("+init=epsg:4326")
listing_sp <- SpatialPointsDataFrame(coords = coords, listing, proj4string = crs)
listing_sp_svy21 <- spTransform(listing_sp, CRS("+init=epsg:3414"))