在 sf 对象上设置正确的 crs 以绘制坐标点

Posted

技术标签:

【中文标题】在 sf 对象上设置正确的 crs 以绘制坐标点【英文标题】:Set the right crs on sf object to plot coordinate points 【发布时间】:2018-10-18 07:54:56 【问题描述】:

我正在尝试为我的 sf 对象定义正确的 CRS。我想在以下图层(国家:荷兰)上绘制点:

Simple feature collection with 380 features and 3 fields
geometry type:  MULTIPOLYGON
dimension:      XY
bbox:           xmin: 13565.4 ymin: 306846.2 xmax: 278026.1 ymax: 619232.6
epsg (SRID):    NA
proj4string:    +proj=sterea +lat_0=52.15616055555555 +lon_0=5.38763888888889 +k=0.9999079 +x_0=155000 +y_0=463000 +ellps=bessel +units=m +no_defs

输出:

这个层有正确的投影。

但是POINT层没有正确的CRS项目大概是因为它没有proj4string

Simple feature collection with 566 features and 5 fields
geometry type:  POINT
dimension:      XY
bbox:           xmin: 3.5837 ymin: 50.86487 xmax: 7.120998 ymax: 53.44835
epsg (SRID):    NA
proj4string:    NA

如何设置与上一张地图相同的投影,以便在其上绘制坐标点?

【问题讨论】:

【参考方案1】:

另外还有一个函数st_set_crs(),可以在管道中使用。例如,

points %>% st_set_crs(st_crs(polygons))

【讨论】:

我在包 sf 中找不到函数 st_set_crs。现在已经过时了吗? 它似乎是geotidy 包的一部分。 sf::st_set_crs() 存在。【参考方案2】:

您可以使用st_crs

正如示例中所说:

st_crs(x) <- value 

在你的情况下可能是

st_crs(points) <- st_crs(polygons)

注意:这些点当然应该在同一个坐标系中注册。如果没有,您必须为它们找出正确的坐标系,然后使用st_transform 将它们放入与多边形相同的坐标系中。

【讨论】:

以上是关于在 sf 对象上设置正确的 crs 以绘制坐标点的主要内容,如果未能解决你的问题,请参考以下文章

我现在有大量的经纬度坐标点,想在地图上绘制各点相连的图形。谷歌API或者百度API可以实现这样的功能吗?

高德地图的Marker和MarkerCluster的应用场景分析

ARCgisEngine二次开发,输入坐标点,在axmapcontrol上显示?(vs2008)

matlab提取图像上的任意坐标点

如何解决这个问题 收集坐标点多边形

Delphi 绘图[1] TCanvas(画布)的类成员 及参数介绍