【问题标题】:Issues plotting spatial point data using tmap使用 tmap 绘制空间点数据的问题
【发布时间】:2020-09-02 23:25:11
【问题描述】:

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

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

    一旦使用与坐标匹配的投影创建了 spatialPointDataFrame,您只需使用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"))
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-07-19
      • 1970-01-01
      • 1970-01-01
      • 2020-10-21
      • 2019-01-20
      • 2019-03-29
      • 2019-06-06
      • 1970-01-01
      相关资源
      最近更新 更多