我有一个来自UTM-zone 33 north的大纬度经度信息。
我尝试了以下命令将此地理信息转换为UTM坐标(我的数据集对象最初称为S3km):
library(rgdal)
UTM33N<-"+proj=utm+zone=33+north"
UTM33N<-paste(UTM33N,"+ellps=WGS84",sep="")
UTM33N<-paste(UTM33N,"+datum=WGS84",sep="")
UTM33N<-paste(UTM33N,"+units=m+no_defs",sep="")
coord.UTM33N<-project(as.matrix(S3km[,c("Longitude","Latitude")]),UTM33N)
我收到以下错误消息:
Error in project(as.matrix(S3km[,c("Longitude","Latitude")]),UTM33N):
no arguments in initialization list.
有谁知道这是什么问题?我下载了最新的R版本(即R 2.15.2)和rgdal
- 包也是新下载的。
答案 0 :(得分:3)
您的代码似乎至少存在一些问题:
正如Lucas所指出的, PROJ4 字符串在参数之间需要空格,因此请使用sep = " "
(paste()
的默认值)而不是sep = ""
。
此外, sp 和 rgdal 包中的函数可以将proj4strings包含在对CRS()
实用程序函数的调用中。
以下是一个可以适应您情况的工作示例:
library(rgdal)
## Create an example SpatialPoints object
pts <- SpatialPoints(cbind(-120:-121, 39:40),
proj4string = CRS("+proj=longlat +datum=NAD27"))
## Construct a proper proj4string
UTM11N <- "+proj=utm +zone=11 +datum=NAD83 +units=m +no_defs"
UTM11N <- paste(UTM11N, "+ellps=GRS80 +towgs84=0,0,0")
UTM11N <- CRS(UTM11N)
## Project your points
ptsUTM <- spTransform(pts, UTM11N)
## Check that it worked
ptsUTM
# SpatialPoints:
# coords.x1 coords.x2
# [1,] 240111.6 4321052
# [2,] 158420.9 4435418
# Coordinate Reference System (CRS) arguments: +proj=utm +zone=11
# +datum=NAD83 +units=m +no_defs +ellps=GRS80 +towgs84=0,0,0
答案 1 :(得分:2)
您使用的投影信息似乎格式不正确。这可能导致函数无法识别投影字符串中的参数。如rgdal中所述,投影信息必须符合PROJ.4文档(即+ =和空格分隔参数之间没有空格。例如:“+ proj = lcc + lat_1 = 48 + lat_2 = 33 + lon_0 = -100“ 将粘贴函数参数更改为sep =“”可能会解决此问题。