通常情况下,如果你知道你的数据预测,但这一预测是不是你的TIF文件的一部分,你可以简单地在你的[R对象添加它在导入后:
proj4string(imageData) <- CRS("your projection")
我喜欢使用EPSG的是,如果你的TIF在GoogleEarth的投影例如,我会做:
proj4string(imageData) <- CRS("+init=EPSG:4326")
只要找到你NAD83准确预测是什么(这个网站可以帮助http://spatialreference.org/)。
然后你就可以在你选择投影的重新投影它:
imageDataProj <- spTransform(imageDataProj, CRS("your new projection"))
作为一个方面说明,我总是喜欢使用raster
包处理光栅格式。然而,用R改变大光栅文件的投影可能会很挑剔,所以现在我直接使用GDAL(通过gdalwarp
)。您可以使用gdalUtils
包轻松地在R中调用所有gdal选项,但您必须将结果手动导入到R中。
EDITS以下从OP评论:
使用光栅包:
library(raster)
加载TIF:
rr <- raster("C:\\temp\\n0r_201601011100.tif")
为您节省像素坐标方程函数。注意到我改变了纬度功能(除去负号,但没有使用它,你必须验证)
Lon = function(JJ) 0.01 * JJ + 162
Lat = function(II) 0.01 * II + 50.0
获取像素的原始光栅的程度坐标:
ext.rr <- extent(rr)
准备新的空光栅将被投射,有良好的分辨率和范围:
rr2 <- raster(nrows=nrow(rr), ncols=ncol(rr), xmn=Lon([email protected]), xmx=Lon([email protected]), ymn=Lat([email protected]), ymx=Lat([email protected]))
填补了这一新的栅格与修改后的值(你在COMM给了以下公式已废除):
values(rr2) <- (values(rr) - 7) * 5
,你会得到:
rr2
class : RasterLayer
dimensions : 2600, 6000, 15600000 (nrow, ncol, ncell)
resolution : 0.01, 0.01 (x, y)
extent : 162, 222, 50, 76 (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +ellps=WGS84 +towgs84=0,0,0
data source : in memory
names : layer
values : -35, 50 (min, max)
注意,经纬度长的投影是自动拾取通过光栅功能。希望这是你在找什么。
这很有帮助。我的数据是在像素坐标中:'Lat = -0.01 * I + 50.0','Lon = 0.01 * J + 162.',其中I和J是网格中每个单元格的直线坐标。所以,我需要在执行任何投影更改之前先执行此操作。另外,什么是最好的方法来变换每个单元格中的整数值:'y =(intX - 7)* 5'? –
我已经更新了我的回答下面的评论 – Bastien
我谦卑的尊重鞠躬。谢谢。 –