Normalement, si vous savez que vos données sont projetées, mais que cette projection ne fait pas partie de votre fichier TIF, votre pouvez simplement ajouter dans votre objet R après l'importation:
proj4string(imageData) <- CRS("your projection")
J'aime en utilisant EPSG pour cela, si votre TIF était en projection GoogleEarth par exemple, je le ferais:
proj4string(imageData) <- CRS("+init=EPSG:4326")
trouve juste ce que vous NAD83 projection exacte (ce site peut aider http://spatialreference.org/).
Ensuite, vous pouvez reprojeter dans le choix de la projection:
imageDataProj <- spTransform(imageDataProj, CRS("your new projection"))
Comme une note de côté, je préfère toujours en utilisant le paquet raster
pour le traitement des formats raster. Cependant, changer la projection d'un gros fichier raster avec R peut être fastidieux, alors maintenant j'utilise directement GDAL (via gdalwarp
). Vous pouvez appeler toutes les options gdal assez facilement dans R avec le package gdalUtils
, mais vous devrez réimporter les résultats dans R après la main.
de commentaire ci-dessous EDITS OP:
Utilisation du package raster:
library(raster)
Chargement du TIF:
rr <- raster("C:\\temp\\n0r_201601011100.tif")
Enregistrer vous coordonnées pixels équations dans les fonctions.Je remarquai changé la fonction Lat (enlevé le signe négatif, il ne fonctionne pas avec elle, vous devrez valider)
Lon = function(JJ) 0.01 * JJ + 162
Lat = function(II) 0.01 * II + 50.0
Obtenez l'étendue de votre trame brute en coordonnées pixel:
ext.rr <- extent(rr)
Préparer une nouvelle trame vide qui sera projeté, ont la bonne résolution et l'étendue:
rr2 <- raster(nrows=nrow(rr), ncols=ncol(rr), xmn=Lon([email protected]), xmx=Lon([email protected]), ymn=Lat([email protected]), ymx=Lat([email protected]))
Remplissez ce nouveau raster avec vos valeurs modifiées (après l'équation que vous avez donné dans la comm ents):
values(rr2) <- (values(rr) - 7) * 5
Et vous obtenez:
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)
Notez que la projection lat long a été prise en charge automatiquement par la fonction de trame. J'espère que c'est ce que vous cherchez.
Ceci est utile. Mes données sont en coordonnées de pixels: 'Lat = -0.01 * I + 50.0',' Lon = 0.01 * J + 162.', où I et J sont les coordonnées rectilignes de chaque cellule de la grille. Donc, je dois le faire avant d'effectuer des changements de projection. Aussi, quel est le meilleur moyen de transformer les valeurs entières dans chaque cellule avec: 'y = (intX - 7) * 5'? –
J'ai mis à jour ma réponse suite à votre commentaire – Bastien
Je m'incline humblement. Je vous remercie. –