首页 > 解决方案 > 空间投影问题 - 未知数据 GRS1980

问题描述

我有两个来自不同来源但应该代表同一个多边形的 sf 对象。然而,在绘制它们时,它们显然看起来相互偏移:

在此处输入图像描述

重新投影对象似乎并不能解决问题,我想知道这是否是由于其中一个对象具有“基于 GRS 1980 的未知数据”。

st_crs(sf1)
Coordinate Reference System:
  User input: NAD83 
  wkt:
GEOGCRS["NAD83",
    DATUM["North American Datum 1983",
        ELLIPSOID["GRS 1980",6378137,298.257222101,
            LENGTHUNIT["metre",1]]], [...]


st_crs(sf2)
Coordinate Reference System:
  User input: Unknown datum based upon the GRS 1980 ellipsoid 
  wkt:
GEOGCRS["Unknown datum based upon the GRS 1980 ellipsoid",
    DATUM["Not specified (based on GRS 1980 ellipsoid)",
        ELLIPSOID["GRS 1980",6378137,298.257222101,
            LENGTHUNIT["metre",1]]], [...]

如果是这样,有什么方法可以识别基准并确保多边形正确排列?

用 sf 对象表示:

download.file(destfile = "sf1.rds","https://github.com/JoakimWeill/projection_issue_reprex/raw/master/sf1.rds")
download.file(destfile = "sf2.rds","https://github.com/JoakimWeill/projection_issue_reprex/raw/master/sf2.rds")

sf1 <- readRDS("sf1.rds")
sf2 <- readRDS("sf2.rds")

ggplot() +
  geom_sf(data = sf1, fill = "red", alpha = .5) +
  geom_sf(data = sf2, fill = "blue", alpha = .5)

sf1 <- st_transform(sf1, st_crs(sf2))

ggplot() +
  geom_sf(data = sf1, fill = "red", alpha = .5) +
  geom_sf(data = sf2, fill = "blue", alpha = .5)

标签: rgeospatialspatialsf

解决方案


也许您需要定义投影而不是转换投影。例如,尝试将未知数据的基准定义为 NAD83,并查看它们是否对齐。如果不是,请尝试将其定义为 NAD27,转换为 NAD83,然后查看它是否有效。您需要先告诉它正确的起点,然后才能将其转换为其他内容。我的猜测是 NAD83 或 NAD27 而不是 WGS84,因为椭圆体,以及它是如何移动的。https://www.esri.com/arcgis-blog/products/arcgis-desktop/mapping/wgs84-vs-nad83/


推荐阅读