空间投影问题 - 未知数据 GRS1980
spatial projection issues - unknown datum 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)
也许您需要定义投影而不是变换投影。例如,尝试将未知数的基准定义为 NAD83 并查看它们是否对齐。如果不行,试试定义成NAD27,再转换成NAD83,看看行不行。您需要先告诉它正确的起点,然后才能将其转换为其他东西。我的猜测是 NAD83 或 NAD27 而不是 WGS84,因为椭圆体以及它的移动方式。 https://www.esri.com/arcgis-blog/products/arcgis-desktop/mapping/wgs84-vs-nad83/
我有两个来自不同来源但应该代表相同多边形的 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)
也许您需要定义投影而不是变换投影。例如,尝试将未知数的基准定义为 NAD83 并查看它们是否对齐。如果不行,试试定义成NAD27,再转换成NAD83,看看行不行。您需要先告诉它正确的起点,然后才能将其转换为其他东西。我的猜测是 NAD83 或 NAD27 而不是 WGS84,因为椭圆体以及它的移动方式。 https://www.esri.com/arcgis-blog/products/arcgis-desktop/mapping/wgs84-vs-nad83/