通常情況下,如果你知道你的數據預測,但這一預測是不是你的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
我謙卑的尊重鞠躬。謝謝。 –