2013-02-28 286 views
0

我有一个来自UTM区域33北部的大纬度经度信息。纬度和经度UTM坐标

我尝试下面的命令来这​​个地理信息转换为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 -package也是新下载的。

+2

什么语言/库您使用?请将相关标签添加到您的问题中。 – assylias 2013-02-28 15:53:50

回答

3

似乎有至少一对夫妇与您的代码的问题:

  • 卢卡斯指出,PROJ4字符串需要参数之间的空格,所以使用sep = " "paste()的默认值)而不是sep = ""

  • 此外,在SPrgdal包函数期望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.52 
# [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 
+0

巨大的谢谢你们! :)通过适当的间距和Josh改编的例子,我终于设法转换了我的坐标。 – user2120231 2013-02-28 19:41:36

2

您使用的投影信息似乎格式不正确。这可能会导致函数无法识别投影字符串中的参数。如rgdal中所述,投影信息必须符合PROJ.4文档(即,+ =和之间没有空格,例如:“+ proj = lcc + lat_1 = 48 + lat_2 = 33 + lon_0 = -100" 改变你的粘贴功能参数SEP =”“可以解决这个问题