如何使用 R 从 PROJ4 字符串接收 EPSG 代码?
How to receive EPSG code from PROJ4 string using R?
如何使用 R 从 PROJ4 字符串接收 EPSG 代码?
我有一堆栅格数据集(随机分布在世界各地,南北半球),坐标参考系统为UTM WGS84。现在我想用R找出每个数据集的具体EPSG代码。你有什么想法吗?
# Install and load package raster
install.packages('raster')
library(raster)
# Load a specific raster dataset and query the crs
raster_dat <- raster('D:/UnknownUser/GlobalRasterData/raster_dat1')
crs(raster_dat)
# CRS arguments:
# +proj=utm +zone=13 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0
也许可以动态创建 EPSG 代码,因为似乎 EPSG 代码总是北半球 <326> 和特定区域编号的组合,例如<32>(对于德国)导致 EPSG 代码 <326> + <32> = <32632>.
不幸的是,我发现您似乎从南半球的 <327> 开始,然后添加特定的区域编号,例如<32>(对于尼日利亚)导致 <327> + <32> =<32732>.
现在我不确定这个理论是否正确(需要验证,包括来源)以及是否有更简单的方法从 PROJ4 字符串接收 EPSG 代码.
我找到的有用链接:
URL:https://spatialreference.org/ref/epsg/?page=9&search=wgs+84+utm
URL:https://de.wikipedia.org/wiki/UTM-Koordinatensystem#/media/Datei:Utm-zones.jpg
编辑:
# Install and load package rgdal
install.packages('rgdal')
library(rgdal)
# following function could be helpful; it creates a dataframe with 3columns; epsg-code, annotation and proj4-string - unfortunately it seems like there is not an epsg code for each utm wgs84 zone...
epsg_list <- rgdal::make_EPSG()
提前致谢,ExploreR
rgdal
包还有一个 showEPSG()
功能。
## example data from sf package
nc <- sf::read_sf(system.file("shape/nc.shp", package="sf"))
nc_crs <- raster::crs(nc)
nc_crs
#> [1] "+proj=longlat +datum=NAD27 +no_defs"
rgdal::showEPSG(nc_crs)
#> [1] "4267"
## Double check it with sf::st_crs
sf::st_crs(nc)
#> Coordinate Reference System:
#> EPSG: 4267
#> proj4string: "+proj=longlat +datum=NAD27 +no_defs"
## Your proj4 string
p4_example <- '+proj=utm +zone=13 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0;'
rgdal::showEPSG(p4_example)
#> [1] "32613"
由 reprex package (v0.3.0)
于 2020-01-09 创建
如何使用 R 从 PROJ4 字符串接收 EPSG 代码?
我有一堆栅格数据集(随机分布在世界各地,南北半球),坐标参考系统为UTM WGS84。现在我想用R找出每个数据集的具体EPSG代码。你有什么想法吗?
# Install and load package raster
install.packages('raster')
library(raster)
# Load a specific raster dataset and query the crs
raster_dat <- raster('D:/UnknownUser/GlobalRasterData/raster_dat1')
crs(raster_dat)
# CRS arguments:
# +proj=utm +zone=13 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0
也许可以动态创建 EPSG 代码,因为似乎 EPSG 代码总是北半球 <326> 和特定区域编号的组合,例如<32>(对于德国)导致 EPSG 代码 <326> + <32> = <32632>.
不幸的是,我发现您似乎从南半球的 <327> 开始,然后添加特定的区域编号,例如<32>(对于尼日利亚)导致 <327> + <32> =<32732>.
现在我不确定这个理论是否正确(需要验证,包括来源)以及是否有更简单的方法从 PROJ4 字符串接收 EPSG 代码.
我找到的有用链接:
URL:https://spatialreference.org/ref/epsg/?page=9&search=wgs+84+utm
URL:https://de.wikipedia.org/wiki/UTM-Koordinatensystem#/media/Datei:Utm-zones.jpg
编辑:
# Install and load package rgdal
install.packages('rgdal')
library(rgdal)
# following function could be helpful; it creates a dataframe with 3columns; epsg-code, annotation and proj4-string - unfortunately it seems like there is not an epsg code for each utm wgs84 zone...
epsg_list <- rgdal::make_EPSG()
提前致谢,ExploreR
rgdal
包还有一个 showEPSG()
功能。
## example data from sf package
nc <- sf::read_sf(system.file("shape/nc.shp", package="sf"))
nc_crs <- raster::crs(nc)
nc_crs
#> [1] "+proj=longlat +datum=NAD27 +no_defs"
rgdal::showEPSG(nc_crs)
#> [1] "4267"
## Double check it with sf::st_crs
sf::st_crs(nc)
#> Coordinate Reference System:
#> EPSG: 4267
#> proj4string: "+proj=longlat +datum=NAD27 +no_defs"
## Your proj4 string
p4_example <- '+proj=utm +zone=13 +datum=WGS84 +units=m +no_defs +ellps=WGS84 +towgs84=0,0,0;'
rgdal::showEPSG(p4_example)
#> [1] "32613"
由 reprex package (v0.3.0)
于 2020-01-09 创建