为纬度经度点数据设置CRS
set CRS for latitude longitude point data
我有一些带有经纬度的点。我想设置 CRS 来计算距离。我尝试设置 CRS,但它显示错误“error in (function (类, fdef, mtable) :
无法找到签名“CRS”的函数“proj4string”的继承方法
long <- c(133.2982, 132.6715,133.2375,133.3048,133.2594,133.2165)
lat <- c(35.5716,35.3551,35.5504,35.5707,35.5680,35.5708)
lonlat <-data.frame(cbind(long,lat))
pj <- sp::CRS("+proj=longlat +datum=WGS84")
fetch_locs = sp::SpatialPoints(lonlat[,1:2],
sp::CRS(proj4string(pj)))
先评论几句:
- 目前不鼓励使用 proj4string,首选 EPSG 代码。
- 不再支持 proj4string 中的“+datum=”声明,
请改用“+省略号”。
- 您可能会选择切换到较新的
sf
软件包。
所以:
以下是使用旧 sp
包创建 SpatialPoints 对象的方法:
library(sp)
long <- c(133.2982, 132.6715,133.2375,133.3048,133.2594,133.2165)
lat <- c(35.5716,35.3551,35.5504,35.5707,35.5680,35.5708)
lonlat <-data.frame(cbind(long,lat))
lonlat_sp = SpatialPoints(coords=lonlat, proj4string=CRS("+proj=longlat +ellips=WGS84"))
这是使用 sf
包
完成的方法
library(sf)
Linking to GEOS 3.9.0, GDAL 3.2.2, PROJ 7.2.1
lonlat_sf = st_as_sf(lonlat, coords=c("long", "lat"), crs="EPSG:4326")
我有一些带有经纬度的点。我想设置 CRS 来计算距离。我尝试设置 CRS,但它显示错误“error in (function (类, fdef, mtable) : 无法找到签名“CRS”的函数“proj4string”的继承方法
long <- c(133.2982, 132.6715,133.2375,133.3048,133.2594,133.2165)
lat <- c(35.5716,35.3551,35.5504,35.5707,35.5680,35.5708)
lonlat <-data.frame(cbind(long,lat))
pj <- sp::CRS("+proj=longlat +datum=WGS84")
fetch_locs = sp::SpatialPoints(lonlat[,1:2],
sp::CRS(proj4string(pj)))
先评论几句:
- 目前不鼓励使用 proj4string,首选 EPSG 代码。
- 不再支持 proj4string 中的“+datum=”声明, 请改用“+省略号”。
- 您可能会选择切换到较新的
sf
软件包。
所以:
以下是使用旧 sp
包创建 SpatialPoints 对象的方法:
library(sp)
long <- c(133.2982, 132.6715,133.2375,133.3048,133.2594,133.2165)
lat <- c(35.5716,35.3551,35.5504,35.5707,35.5680,35.5708)
lonlat <-data.frame(cbind(long,lat))
lonlat_sp = SpatialPoints(coords=lonlat, proj4string=CRS("+proj=longlat +ellips=WGS84"))
这是使用 sf
包
library(sf)
Linking to GEOS 3.9.0, GDAL 3.2.2, PROJ 7.2.1
lonlat_sf = st_as_sf(lonlat, coords=c("long", "lat"), crs="EPSG:4326")