纬度和经度到UTM坐标

时间:2013-02-28 15:49:40

标签: r utm rgdal

我有一个来自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 - 包也是新下载的。

2 个答案:

答案 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 =“”可能会解决此问题。