У меня есть три матрицы: первая - это матрица точек долготы, вторая - матрица точек широты, а третья - матрица значений качества воздуха, измеренных на каждой широте и долготе. В R я хотел бы объединить все это в растр. После обсуждения здесь и использования приведенных ниже данных о разметке я подумал, что смогу объединить матрицы следующим образом:
mat.lat=matrix(rep(41:50,10),10)
mat.long=matrix(rep(91:100,10),10)
mat.aq=matrix(rnorm(100),10)
r=raster(mat.aq,
xmn=min(mat.long),
xmx=max(mat.long),
ymn=min(mat.lat),
ymx=max(mat.lat)
)
Однако, когда я строю данные, они немного выкл . Я подозреваю, что это потому, что мои данные на самом деле более сложны, чем те, которые находятся в подготовленных данных, а фактическая сетка широты и долготы не распределена равномерно, а равномерно распределена - это то, что ожидает растровая команда.
Но я чувствую, что должен быть более умный способ объединения матриц, чем просто вспашка минимальных и максимальных значений широты и долготы. У меня есть значения lat / lon, поэтому я не хочу их интерполировать. Но после долгих поисков я не могу понять, как. Этот вопрос подошел близко, постер нашел решение их проблемы, которое не решает мою.
Как объединить две матрицы широт и долгот с матрицей точек данных в растр (или другой фрейм пространственных данных)?
Для фона, Я получил два файла netcdf от коллеги: один с сеткой точек широты и долготы, которые покрывают нашу область интересов. В этом первом файле netcdf широта и долгота являются переменными, а не измерениями. Второй файл netcdf содержит данные, которые нас интересуют, но не широта и долгота. Я хотел бы отобразить данные в этих файлах в R, но стандартные функции для чтения в файлах netcdf предполагают, что измерение файла netcdf уже имеет широту и долготу. После обсуждения здесь я решил, что смогу извлечь три массива информации и соединить их вместе, но мне тяжело это делать. ПЕРЕСМОТР Я нашел способ сделать это, хотя я уверен, что это ужасно, смущающе неэффективный способ снять шкуру с кошки, я поделюсь, если кто-то еще Google наткнется на эту страницу.
pts=cbind(lon=as.vector(mat.lon),
lat=as.vector(mat.lat),
aq=as.vector(mat.aq))
inter1=data.frame(pts)
inter1 <- cbind(inter1,
cat = rep(1L, nrow(inter1)),
stringsAsFactors = FALSE)
#convert to spatial points
coordinates(inter1) = ~lon + lat
proj4string(inter1)<-CRS("+init=epsg:4269")
r.grid <- raster(inter1,crs=CRS("+init=epsg:4269"),
nrows=315,
ncols=288)
r=rasterize(x=pts[,1:2],y=r,field=pts[,3])