正在使用tmap绘制空间点数据

问题描述 投票:0回答:1

我已经从一个csv文件创建了一个大的SpatialPointDataFrame类,我正在尝试使用tmap绘制数据点。当我使用plot()绘制SpatialPointDataFrame时,一切看起来都很好。但是,当我尝试使用tmap对其进行绘制时,它仅显示一个点,而且它不应该显示在该位置,顺便说一句,显示的点是数据框中的最后一项。我在想我的projecton可能有问题吗? SpatialPointDataFrame的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)

关于我应该如何调试的任何建议?

r gis geospatial sp tmap
1个回答
0
投票

在您的代码中crs <- CRS("+init=epsg:3414"),您正在分配一个投影,但是您的源数据尚未转换为该投影。如果源数据以经/纬度表示,则应与WGS84投影(epsg code 4326)一起使用。

一旦使用与坐标相匹配的投影创建了spacepointPointDataFrame,只需使用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"))
© www.soinside.com 2019 - 2024. All rights reserved.