2013-02-28 198 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 =」「可以解決這個問題