gpt4 book ai didi

r - PROJ4 到 PROJ6 升级和 "Discarded datum"警告

转载 作者:行者123 更新时间:2023-12-04 04:27:21 26 4
gpt4 key购买 nike

语境
我的问题与从PROJ4升级到PROJ6引起的变化有关
以及各种 R 空间包的结果( spsfraster )。
我们现在收到很多关于“废弃数据”的警告,看起来有点令人担忧,我很担心
有点困惑我应该怎么做。我可以看到这会产生可怕的后果
在某些情况下,而在其他情况下可以忽略它们。
似乎我不是唯一一个有点迷茫的人(见 here)。
我希望我提出的带有特定可重现示例的问题将有助于我们更好地理解该主题。
我知道我们可以remove the warnings ,
我已经阅读了上下文:r-spatial blog post ,
Migration to PROJ6/GDAL3
these workshop notes ( map View 似乎
在较新的版本中以不同方式处理此问题)
问题
问题一:
可能是一个幼稚的问题:
我了解需要实现新的符号/格式 (WKT)
在 PROJ6 中(例如因为需要更高的精度)但我不明白为什么有
需要从旧的 proj4 字符串表示法中删除数据部分。为什么不只是
保持原样(并以新的 WKT 格式/符号实现新功能)
问题二:
似乎我们有 3 个关于旧 proj4 格式的数据丢失的案例:

  • 没有警告:数据保持在旧的 proj4string 符号中(sf 默认?)
  • 我们有一个警告“丢弃的数据 (...) 但 +towgs84= 保留了值”
  • 我们有一个警告“Discarded datum (...)”(在这种情况下,“+towgs84=”部分
    字符串被丢弃/丢弃 –> sp默认 ?? )

  • 下面的例子说明了我们有这些警告的不同情况。
    为什么我们在同一个 CRS 上有这 3 个不同的案例(这里是 EPSG 31370)?
    删除基准和/或 +towgs84 的后果是什么?部分 ?
    我应该对第二个警告比第三个更不担心吗?
    问题三:
    在下面的可重现示例中,我尝试从相应的栅格中提取值
    到 3 个点,栅格和具有不同 CRS 的点。
    然而,根据使用的方法,我得到不同的结果。
    我的印象是这与这个PROJ4 –> PROJ6的变化和数据有关
    下降,但我可能是错的。
    我创建这个例子只是因为我想了解这些“数据丢失”的后果
    在crs
    我使用函数 raster::extract和 3 种不同的一般方法(每次都是 sfsp点的对象),我希望从中得到相同的输出:
  • 没有手动重投影,我让 raster::extract完成匹配点和栅格的 crs 的工作
  • 手动将点重新投影到栅格的 crs
  • 手动将栅格重新投影到点的 crs

  • 使用第 3 种方法,我得到了 sp 的 2 组不同的值。或 sf对象和
    我用第二种(和第一种方法)得到了第三组值(如果
    我用 spsf对象)。
  • 哪些值是“正确的”值? (可能 351.7868 236.4216 309.0073)
  • 为什么有些方法会失败(这与警告消息/数据内容有关吗?)?
  • 当我对空间对象进行投影并收到这些警告时,我该如何检查
    我的空间对象已“正确”投影?

  • 问题4:
    是否可以提供关于应该做什么的一般性建议
    当我们收到这些警告信息时?
    例如 :
  • 如果可能,请不要使用旧的 proj4 字符串表示法,而是使用 WKT 表示法
    (但这并不总是可能的。例如 - 如果我没有错,我将被迫使用
    旧的 proj4 符号,因为这就是 raster用途)
  • 如果我知道这里使用的光栅的 epsg 代码,我想最安全的方法是
    使用该代码重新投影点 sf ,例如:st_transform(SF, crs = xxxx)

  • 可重现的例子
    创建点和栅格空间数据 + 检查 CRS 的处理方式
    SF点空间对象
    简而言之:CRS主要以WKT格式存储。
    旧的 proj4string 可应要求提供,不要丢弃数据/ towgs84部分
    library(sf)
    #> Linking to GEOS 3.8.0, GDAL 3.0.2, PROJ 6.2.1
    library(sp)
    library(raster)

    # create 3 points
    coo <- data.frame(x = c(246000, 247000, 246500), y = c(184000, 186000, 185000))

    # create an sf spatial object
    SF <- st_as_sf(coo, coords = c("x", "y"), crs = 31370)

    # Check the CRS :
    # the proj4string includes the datum/+towgs84 information - no warning
    st_crs(SF)$proj4string
    #> [1] "+proj=lcc +lat_0=90 +lon_0=4.36748666666667 +lat_1=51.1666672333333 +lat_2=49.8333339 +x_0=150000.013 +y_0=5400088.438 +ellps=intl +towgs84=-99.059,53.322,-112.486,0.419,-0.83,1.885,-1 +units=m +no_defs"

    # Same value with `raster::crs` but with a
    # Warning "Discarded datum (...) but +towgs84= values preserved"
    raster::crs(SF)
    #> Warning in showSRID(uprojargs, format = "PROJ", multiline = "NO"): Discarded datum Unknown_based_on_International_1909_Hayford_ellipsoid in CRS definition,
    #> but +towgs84= values preserved
    #> CRS arguments:
    #> +proj=lcc +lat_0=90 +lon_0=4.36748666666667 +lat_1=51.1666672333333
    #> +lat_2=49.8333339 +x_0=150000.013 +y_0=5400088.438 +ellps=intl
    #> +towgs84=-99.059,53.322,-112.486,0.419,-0.83,1.885,-1 +units=m +no_defs

    # WKT
    st_crs(SF)
    #> Coordinate Reference System:
    #> User input: EPSG:31370
    #> wkt:
    #> BOUNDCRS[
    #> SOURCECRS[
    #> PROJCRS["Belge 1972 / Belgian Lambert 72",
    #> BASEGEOGCRS["Belge 1972",
    #> DATUM["Reseau National Belge 1972",
    #> ELLIPSOID["International 1924",6378388,297,
    #> LENGTHUNIT["metre",1]]],
    #> PRIMEM["Greenwich",0,
    #> ANGLEUNIT["degree",0.0174532925199433]],
    #> ID["EPSG",4313]],
    #> CONVERSION["Belgian Lambert 72",
    #> METHOD["Lambert Conic Conformal (2SP)",
    #>
    #> (...)
    #>
    #> ID["EPSG",1609],
    #> REMARK["Scale difference is given by information source as 0.999999. Given in this record in ppm to assist application usage. Very similar parameter values (to slightly less precision) used for BD72 to ETRS89: see code 1652."]]]
    cat(raster::wkt(SF)) # does not work with sf
    #> Error in raster::wkt(SF): tentative d'obtenir le slot "crs" d'un objet (classe "sf") qui n'est pas un objet S4
    SP点空间对象
    简而言之:CRS 主要以 proj4 字符串格式存储并删除数据和 towgs84部分
    不像 sf )。
    新的 WKT 符号作为注释存储在 CRS 对象中,但与 sf 不同。
    SP <- coo
    coordinates(SP) <- ~x+y
    proj4string(SP) <- CRS("+init=epsg:31370")
    #> Warning in showSRID(uprojargs, format = "PROJ", multiline = "NO"): Discarded
    #> datum Reseau_National_Belge_1972 in CRS definition

    # the proj4 string do not contain the `towgs84` part
    # Warning "Discarded datum (...)"
    CRS("+init=epsg:31370")
    #> Warning in showSRID(uprojargs, format = "PROJ", multiline = "NO"): Discarded
    #> datum Reseau_National_Belge_1972 in CRS definition
    #> CRS arguments:
    #> +proj=lcc +lat_0=90 +lon_0=4.36748666666667 +lat_1=51.1666672333333
    #> +lat_2=49.8333339 +x_0=150000.013 +y_0=5400088.438 +ellps=intl +units=m
    #> +no_defs
    # With `raster::crs` same proj4string but no warning
    raster::crs(SP)
    #> CRS arguments:
    #> +proj=lcc +lat_0=90 +lon_0=4.36748666666667 +lat_1=51.1666672333333
    #> +lat_2=49.8333339 +x_0=150000.013 +y_0=5400088.438 +ellps=intl +units=m
    #> +no_defs

    # WKT notation + a warning: this WKT is indeed different from the SF one (no datum here ?)
    cat(comment(CRS("+init=epsg:31370")))
    #> Warning in showSRID(uprojargs, format = "PROJ", multiline = "NO"): Discarded
    #> datum Reseau_National_Belge_1972 in CRS definition
    #> PROJCRS["Belge 1972 / Belgian Lambert 72",
    #> BASEGEOGCRS["Belge 1972",
    #> DATUM["Reseau National Belge 1972",
    #> ELLIPSOID["International 1924",6378388,297,
    #> LENGTHUNIT["metre",1]]],
    #>
    #> (...)
    #>
    #> USAGE[
    #> SCOPE["unknown"],
    #> AREA["Belgium - onshore"],
    #> BBOX[49.5,2.5,51.51,6.4]]]
    # Same output without warning
    cat(raster::wkt(SP))
    #> PROJCRS["Belge 1972 / Belgian Lambert 72",
    #> BASEGEOGCRS["Belge 1972",
    #> DATUM["Reseau National Belge 1972",
    #> ELLIPSOID["International 1924",6378388,297,
    #> LENGTHUNIT["metre",1]]],
    #>
    #> (...)
    #>
    #> USAGE[
    #> SCOPE["unknown"],
    #> AREA["Belgium - onshore"],
    #> BBOX[49.5,2.5,51.51,6.4]]]
    光栅
    raster ,旧的 proj4 符号和新的 WKT 符号似乎都被存储了。
    r <- raster::raster(system.file("external/test.grd", package="raster"))
    raster::crs(r)
    #> CRS arguments:
    #> +proj=sterea +lat_0=52.1561605555556 +lon_0=5.38763888888889
    #> +k=0.9999079 +x_0=155000 +y_0=463000 +datum=WGS84 +units=m +no_defs
    cat(raster::wkt(r))
    #> PROJCRS["unknown",
    #> BASEGEOGCRS["unknown",
    #> DATUM["World Geodetic System 1984",
    #> ELLIPSOID["WGS 84",6378137,298.257223563,
    #> LENGTHUNIT["metre",1]],
    #> ID["EPSG",6326]],
    #>
    #> (...)
    #>
    #> AXIS["(N)",north,
    #> ORDER[2],
    #> LENGTHUNIT["metre",1,
    #> ID["EPSG",9001]]]]
    此数据集不包含 +towgs84 proj4string 中的一部分。但是当你阅读
    带有 +towgs84 的栅格在 proj4string 中它似乎被删除了。
    不可复制的例子:
    GISfolder <- "/my/path"
    tmp <- raster(paste0(GISfolder, 'my_file.tif'))
    #> Warning in showSRID(uprojargs, format = "PROJ", multiline = "NO"): Discarded
    #> datum Unknown_based_on_International_1909_Hayford_ellipsoid in CRS definition
    raster::crs(tmp)
    #> CRS arguments:
    #> +proj=lcc +lat_0=90 +lon_0=4.36748666666667 +lat_1=49.8333339
    #> +lat_2=51.1666672333333 +x_0=150000.01256 +y_0=5400088.4378 +ellps=intl
    #> +units=m +no_defs
    cat(raster::wkt(tmp))
    #> PROJCRS["unknown",
    #> BASEGEOGCRS["unknown",
    #> DATUM["Unknown based on International 1909 (Hayford) ellipsoid",
    #> ELLIPSOID["International 1909 (Hayford)",6378388,297,
    #> LENGTHUNIT["metre",1,
    #> ID["EPSG",9001]]]],
    #> PRIMEM["Greenwich",0,
    #> ANGLEUNIT["degree",0.0174532925199433],
    #> ID["EPSG",8901]]],
    #>
    #> (...)
    #>
    #> AXIS["(N)",north,
    #> ORDER[2],
    #> LENGTHUNIT["metre",1,
    #> ID["EPSG",9001]]]]
    我可能还应该探索当我们使用 stars 时会发生什么包而不是 raster但是这个问题
    已经很长了(我在光栅包上构建了很多代码)
    从栅格中提取值
    使用来自 raster::extract 的自动重投影
    # extract the values from the raster, 
    # the function extract reprojects the points
    # in the same crs as the raster layer
    extract(r, SF)
    #> Warning in showSRID(uprojargs, format = "PROJ", multiline = "NO"): Discarded datum Unknown_based_on_International_1909_Hayford_ellipsoid in CRS definition,
    #> but +towgs84= values preserved
    #> Warning in .local(x, y, ...): Transforming SpatialPoints to the CRS of the
    #> Raster
    #> [1] 351.7868 236.4216 309.0073
    extract(r, SP)
    #> Warning in .local(x, y, ...): Transforming SpatialPoints to the CRS of the
    #> Raster
    #> [1] 351.7868 236.4216 309.0073
    手动将点重新投影到栅格的 crs
    带有来自光栅的 proj4string 的 SF
    SF_proj <- st_transform(SF, crs = raster::crs(r))
    extract(r, SF_proj)
    #> [1] 351.7868 236.4216 309.0073
    来自栅格的带有 WKT 的 SF
    SF_proj <- st_transform(SF, crs = raster::wkt(r))
    extract(r, SF_proj)
    #> [1] 351.7868 236.4216 309.0073
    来自光栅的带有 proj4string 的 SP
    SP_proj <- spTransform(SP, raster::crs(r))
    extract(r, SP_proj)
    #> [1] 351.7868 236.4216 309.0073
    来自栅格的带有 WKT 的 SP sp::spTransform 不接受 wkt fromat –> 不起作用
    # error
    SP_proj <- spTransform(SP, raster::wkt(r))
    #> Error in CRS(CRSobj): PROJ4 argument-value pairs must begin with +: PROJCRS["unknown",
    #> BASEGEOGCRS["unknown",
    #> DATUM["World Geodetic System 1984",
    #> ELLIPSOID["WGS 84",6378137,298.257223563,
    #> LENGTHUNIT["metre",1]],
    #> ID["EPSG",6326]],
    #>
    #> (...)
    #>
    #> AXIS["(N)",north,
    #> ORDER[2],
    #> LENGTHUNIT["metre",1,
    #> ID["EPSG",9001]]]]
    # extract(r, SP_proj)
    手动将栅格重新投影到点的 crs
    使用 SF 的 proj4string(带数据)
    –> 结果与之前的尝试不同
    # EPSG 31370 proj4 string with the datum:
    lambert72 <- sf::st_crs(31370)$proj4string
    lambert72
    #> [1] "+proj=lcc +lat_0=90 +lon_0=4.36748666666667 +lat_1=51.1666672333333 +lat_2=49.8333339 +x_0=150000.013 +y_0=5400088.438 +ellps=intl +towgs84=-99.059,53.322,-112.486,0.419,-0.83,1.885,-1 +units=m +no_defs"
    # there is a warning when we project the raster but the full string seems to be used
    r2 <- raster::projectRaster(r, crs = lambert72)
    #> Warning in showSRID(uprojargs, format = "PROJ", multiline = "NO"): Discarded datum Unknown_based_on_International_1909_Hayford_ellipsoid in CRS definition,
    #> but +towgs84= values preserved
    raster::crs(r2)
    #> CRS arguments:
    #> +proj=lcc +lat_0=90 +lon_0=4.36748666666667 +lat_1=51.1666672333333
    #> +lat_2=49.8333339 +x_0=150000.013 +y_0=5400088.438 +ellps=intl
    #> +towgs84=-99.059,53.322,-112.486,0.419,-0.83,1.885,-1 +units=m +no_defs

    extract(r2, SP)
    #> [1] 341.6399 222.1028 301.2286
    使用SF的WKT
    –> 不起作用,因为 raster::projectRaster不接受 WKT 格式
    为其 crs争论
    lambert72 <- sf::st_crs(31370)
    lambert72
    #> Coordinate Reference System:
    #> User input: EPSG:31370
    #> wkt:
    #> BOUNDCRS[
    #> SOURCECRS[
    #> PROJCRS["Belge 1972 / Belgian Lambert 72",
    #> BASEGEOGCRS["Belge 1972",
    #> DATUM["Reseau National Belge 1972",
    #> ELLIPSOID["International 1924",6378388,297,
    #> LENGTHUNIT["metre",1]]],
    #> PRIMEM["Greenwich",0,
    #>
    #> (...)
    #>
    #> AREA["Belgium - onshore"],
    #> BBOX[49.5,2.5,51.51,6.4]],
    #> ID["EPSG",1609],
    #> REMARK["Scale difference is given by information source as 0.999999. Given in this record in ppm to assist application usage. Very similar parameter values (to slightly less precision) used for BD72 to ETRS89: see code 1652."]]]
    r2 <- raster::projectRaster(r, crs = lambert72)
    #> Error in wkt(projto): tentative d'obtenir le slot "crs" d'un objet (classe "crs") qui n'est pas un objet S4
    使用SP的proj4string(无数据)
    –> 结果与之前的尝试不同
    # EPSG 31370 proj4 string without the datum:
    lambert72 <- sp::CRS("+init=epsg:31370")@projargs
    #> Warning in showSRID(uprojargs, format = "PROJ", multiline = "NO"): Discarded
    #> datum Reseau_National_Belge_1972 in CRS definition
    lambert72
    #> [1] "+proj=lcc +lat_0=90 +lon_0=4.36748666666667 +lat_1=51.1666672333333 +lat_2=49.8333339 +x_0=150000.013 +y_0=5400088.438 +ellps=intl +units=m +no_defs"
    # warning
    r3 <- raster::projectRaster(r, crs = lambert72)
    #> Warning in showSRID(uprojargs, format = "PROJ", multiline = "NO"): Discarded
    #> datum Unknown_based_on_International_1909_Hayford_ellipsoid in CRS definition
    raster::crs(r3)
    #> CRS arguments:
    #> +proj=lcc +lat_0=90 +lon_0=4.36748666666667 +lat_1=51.1666672333333
    #> +lat_2=49.8333339 +x_0=150000.013 +y_0=5400088.438 +ellps=intl +units=m
    #> +no_defs

    extract(r3, coo)
    #> [1] 348.5775 329.1199 277.2260
    session 信息
    sessionInfo()
    #> R version 3.6.2 (2019-12-12)
    #> Platform: x86_64-pc-linux-gnu (64-bit)
    #> Running under: Ubuntu 18.04.4 LTS
    #>
    #> (...)
    #>
    #> other attached packages:
    #> [1] raster_3.3-13 sp_1.4-2 sf_0.9-5 knitr_1.29
    #>
    #> (...)
    #>
    用于:
    GEOS 3.8.0, GDAL 3.0.2, PROJ 6.2.1
    创建于 2020-09-03 由 reprex package (v0.3.0)

    最佳答案

    https://gis.stackexchange.com/questions/372692 中给出的一些注释.请先看那里。

    1. I understand that there is a need for a new notation/format (WKT)implemented in PROJ6 (eg because of a need of higher precision) but Idon’t understand why there is a need to remove the datum part form theold proj4 string notation. Why not just keep it as it has always been(and implement the new features in the new WKT format/notation)
    +datum=部分在 GDAL 中已弃用 exportToProj4()来自 GDAL >= 3。自 顺丰 , rgdal 光栅 使用GDAL读取文件,Proj4字符串表示没有全部 +datum=也许除了 WGS84、NAD83 和 NAD27。警告来自于在 exportToProj4() 之前检查内部存在哪些节点。运行,然后出现。我们不能依赖 +datum=+towgs84=当我们使用 PROJ >= 6/GDAL >= 3 时。
    进一步的评论与示例有关:
    > library(sf)
    Linking to GEOS 3.8.1, GDAL 3.1.3, PROJ 7.1.1
    > #> Linking to GEOS 3.8.0, GDAL 3.0.2, PROJ 6.2.1
    > library(sp)
    > library(raster)
    > packageVersion("sf")
    [1] ‘0.9.6’
    > packageVersion("sp")
    [1] ‘1.4.4’
    > packageVersion("raster")
    [1] ‘3.3.13’
    > library(rgdal)
    rgdal: version: 1.5-17, (SVN revision 1060)
    Geospatial Data Abstraction Library extensions to R successfully loaded
    Loaded GDAL runtime: GDAL 3.1.3, released 2020/09/01
    Path to GDAL shared files: /usr/local/share/gdal
    GDAL binary built with GEOS: TRUE
    Loaded PROJ runtime: Rel. 7.1.1, September 1st, 2020, [PJ_VERSION: 711]
    Path to PROJ shared files: /home/rsb/.local/share/proj:/usr/local/share/proj:/usr/local/share/proj
    PROJ CDN enabled: FALSE
    Linking to sp version:1.4-4
    To mute warnings of possible GDAL/OSR exportToProj4() degradation,
    use options("rgdal_show_exportToProj4_warnings"="none") before loading rgdal.
    我正在使用开发版本,以及最新版本的 PROJ 和 GDAL。
    > coo <- data.frame(x = c(246000, 247000, 246500), y = c(184000, 186000, 185000))
    > SF <- st_as_sf(coo, coords = c("x", "y"), crs = 31370)
    > st_crs(SF)$proj4string
    [1] "+proj=lcc +lat_0=90 +lon_0=4.36748666666667 +lat_1=51.1666672333333 +lat_2=49.8333339 +x_0=150000.013 +y_0=5400088.438 +ellps=intl +towgs84=-99.059,53.322,-112.486,0.419,-0.83,1.885,-1 +units=m +no_defs"
    > st_crs(SF)
    Coordinate Reference System:
    User input: EPSG:31370
    wkt:
    PROJCRS["Belge 1972 / Belgian Lambert 72",
    BASEGEOGCRS["Belge 1972",
    DATUM["Reseau National Belge 1972",
    ELLIPSOID["International 1924",6378388,297,
    LENGTHUNIT["metre",1]]],
    PRIMEM["Greenwich",0,
    ANGLEUNIT["degree",0.0174532925199433]],
    ID["EPSG",4313]],
    CONVERSION["Belgian Lambert 72",
    METHOD["Lambert Conic Conformal (2SP)",
    ID["EPSG",9802]],
    PARAMETER["Latitude of false origin",90,
    ANGLEUNIT["degree",0.0174532925199433],
    ID["EPSG",8821]],
    PARAMETER["Longitude of false origin",4.36748666666667,
    ANGLEUNIT["degree",0.0174532925199433],
    ID["EPSG",8822]],
    PARAMETER["Latitude of 1st standard parallel",51.1666672333333,
    ANGLEUNIT["degree",0.0174532925199433],
    ID["EPSG",8823]],
    PARAMETER["Latitude of 2nd standard parallel",49.8333339,
    ANGLEUNIT["degree",0.0174532925199433],
    ID["EPSG",8824]],
    PARAMETER["Easting at false origin",150000.013,
    LENGTHUNIT["metre",1],
    ID["EPSG",8826]],
    PARAMETER["Northing at false origin",5400088.438,
    LENGTHUNIT["metre",1],
    ID["EPSG",8827]]],
    CS[Cartesian,2],
    AXIS["easting (X)",east,
    ORDER[1],
    LENGTHUNIT["metre",1]],
    AXIS["northing (Y)",north,
    ORDER[2],
    LENGTHUNIT["metre",1]],
    USAGE[
    SCOPE["unknown"],
    AREA["Belgium - onshore"],
    BBOX[49.5,2.5,51.51,6.4]],
    ID["EPSG",31370]]
    现在没有 +datum=保留在 Proj4 字符串中,但所有 CRS 规范都存在于 WKT2_2019 字符串中。没有 $proj4string"crs"对象,如果您要求,它会即时生成。
    我们仍在研究强制转换,但我们已经有了:
    > cat(raster::wkt(as(SF, "Spatial")), "\n")
    PROJCRS["Belge 1972 / Belgian Lambert 72",
    BASEGEOGCRS["Belge 1972",
    DATUM["Reseau National Belge 1972",
    ELLIPSOID["International 1924",6378388,297,
    LENGTHUNIT["metre",1]]],
    PRIMEM["Greenwich",0,
    ANGLEUNIT["degree",0.0174532925199433]],
    ID["EPSG",4313]],
    CONVERSION["Belgian Lambert 72",
    METHOD["Lambert Conic Conformal (2SP)",
    ID["EPSG",9802]],
    PARAMETER["Latitude of false origin",90,
    ANGLEUNIT["degree",0.0174532925199433],
    ID["EPSG",8821]],
    PARAMETER["Longitude of false origin",4.36748666666667,
    ANGLEUNIT["degree",0.0174532925199433],
    ID["EPSG",8822]],
    PARAMETER["Latitude of 1st standard parallel",51.1666672333333,
    ANGLEUNIT["degree",0.0174532925199433],
    ID["EPSG",8823]],
    PARAMETER["Latitude of 2nd standard parallel",49.8333339,
    ANGLEUNIT["degree",0.0174532925199433],
    ID["EPSG",8824]],
    PARAMETER["Easting at false origin",150000.013,
    LENGTHUNIT["metre",1],
    ID["EPSG",8826]],
    PARAMETER["Northing at false origin",5400088.438,
    LENGTHUNIT["metre",1],
    ID["EPSG",8827]]],
    CS[Cartesian,2],
    AXIS["easting (X)",east,
    ORDER[1],
    LENGTHUNIT["metre",1]],
    AXIS["northing (Y)",north,
    ORDER[2],
    LENGTHUNIT["metre",1]],
    USAGE[
    SCOPE["unknown"],
    AREA["Belgium - onshore"],
    BBOX[49.5,2.5,51.51,6.4]],
    ID["EPSG",31370]]
    下一个:

    > SP <- coo
    > coordinates(SP) <- ~x+y
    > proj4string(SP) <- CRS("+init=epsg:31370")
    Warning message:
    In showSRID(uprojargs, format = "PROJ", multiline = "NO", prefer_proj = prefer_proj) :
    Discarded datum Reseau_National_Belge_1972 in CRS definition
    > cat(wkt(SP), "\n")
    PROJCRS["Belge 1972 / Belgian Lambert 72",
    BASEGEOGCRS["Belge 1972",
    DATUM["Reseau National Belge 1972",
    ELLIPSOID["International 1924",6378388,297,
    LENGTHUNIT["metre",1]]],
    PRIMEM["Greenwich",0,
    ANGLEUNIT["degree",0.0174532925199433]],
    ID["EPSG",4313]],
    CONVERSION["Belgian Lambert 72",
    METHOD["Lambert Conic Conformal (2SP)",
    ID["EPSG",9802]],
    PARAMETER["Latitude of false origin",90,
    ANGLEUNIT["degree",0.0174532925199433],
    ID["EPSG",8821]],
    PARAMETER["Longitude of false origin",4.36748666666667,
    ANGLEUNIT["degree",0.0174532925199433],
    ID["EPSG",8822]],
    PARAMETER["Latitude of 1st standard parallel",51.1666672333333,
    ANGLEUNIT["degree",0.0174532925199433],
    ID["EPSG",8823]],
    PARAMETER["Latitude of 2nd standard parallel",49.8333339,
    ANGLEUNIT["degree",0.0174532925199433],
    ID["EPSG",8824]],
    PARAMETER["Easting at false origin",150000.013,
    LENGTHUNIT["metre",1],
    ID["EPSG",8826]],
    PARAMETER["Northing at false origin",5400088.438,
    LENGTHUNIT["metre",1],
    ID["EPSG",8827]],
    ID["EPSG",19961]],
    CS[Cartesian,2],
    AXIS["(E)",east,
    ORDER[1],
    LENGTHUNIT["metre",1,
    ID["EPSG",9001]]],
    AXIS["(N)",north,
    ORDER[2],
    LENGTHUNIT["metre",1,
    ID["EPSG",9001]]],
    USAGE[
    SCOPE["unknown"],
    AREA["Belgium - onshore"],
    BBOX[49.5,2.5,51.51,6.4]]]
    你注意到 +towgs84=已经没有了,那是因为WKT2_2019中的DATUM绝对足够在需要的时候生成坐标操作了。 PROJ >= 6/GDAL >= 3 不需要转换到 WGS84 GEOGCRS hub 并继续转换到 objective-c RS。警告是因为 sp::CRS()生成完全指定的 WKT2_2019 字符串和遗留的 Proj4 字符串——现代 PROJ/GDAL 缺少位,我们希望没有人再依赖它——如果你这样做了,你已经被警告了。
    我现在把这个留在这里,引用 SE 线程上的回复。如果 光栅 开发人员可以发表评论,这会有所帮助,但就我们从反向依赖关系检查中看到的而言,当 PROJ >= 6/GDAL >= 3 时,raster 似乎已经转为使用 WKT2_2019(与其他包一样)而不是 Proj4。由于有些平台还是PROJ < 6/GDAL < 3,所以我们要尽量提供这两种设置。

    关于r - PROJ4 到 PROJ6 升级和 "Discarded datum"警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63727886/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com