R как получить вектор широт из обычного tif с помощью кирпича - PullRequest
0 голосов
/ 25 июня 2018

У меня есть TIF-файл, который я прочитал с использованием кирпича. Я могу видеть пространственное расширение файла TIF:

b<-brick("t.tif")
b 
class       : RasterBrick 
dimensions  : 10, 10, 100, 1  (nrow, ncol, ncell, nlayers)
resolution  : 0.0001851853, 0.0001851854  (x, y)
extent      : -18.61944, -18.61759, 37.83856, 37.84041  (xmin, xmax, ymin, ymax)
coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 
data source : /scratch/tompkins/water_allafrica/t.tif 
names       :   t 
min values  :   0 
max values  : 255 

extent(SpatialPoints(b))
class       : Extent 
xmin        : -18.61935 
xmax        : -18.61769 
ymin        : 37.83865 
ymax        : 37.84031 

Но я не могу понять, как легко получить вектор широты и долготы, который мне нужен для определения заголовка файла netcdf, который я хочу выписать. Я мог бы сделать это вручную, но я предполагаю, что есть встроенная функция, которую проще использовать.

Пример входного файла здесь: http://clima -dods.ictp.it / Users / tompkins / stackoverflow / t.tif

1 Ответ

0 голосов
/ 25 июня 2018

Это может быть то, что вам нужно:

ext <- extent(b)

lat <- seq(ext@ymin,ext@ymax,res(b)[2])
lon <- seq(ext@xmin,ext@xmax,res(b)[1])

Таким образом, в основном вы создаете вектор последовательности от x / y min до max с интервалом разрешения кирпича.

Значения относятся к угловым координатам ячейки ... вас также могут заинтересовать центры ячейки.

Только для иллюстрации:

# create testraster
x <- raster(resolution=c(40,40))

x[]<- 1:ncell(x)

# plot

plot(x)

# add corner coordinates


plot(SpatialPoints(cbind(rep(extent(x)@xmin,10),seq(extent(x)@ymin,extent(x)@ymax,res(x)[2])),proj4string = crs(x)),
     col='red',pch='*',cex=5,add=T)


# add cell centers

plot(SpatialPoints(xyFromCell(x,cellFromRowCol(x,1:nrow(x),1)),proj4string = crs(x)),
     col='blue',pch='*',cex=5,add=T)

enter image description here

Таким образом, приведенный выше метод дает вам широты, обозначенные красными звездочками. Если вам нужны синие, вы можете использовать xyFromCell, который возвращает координаты ячейки растра.

...