Определите, совпадают ли две сетки точно в R - PullRequest
0 голосов
/ 15 марта 2019

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

Растр 1

day class : RasterLayer dimensions : 2367, 2909, 6885603 (nrow, ncol, ncell) resolution : 0.0008333333, 0.0008333333 (x, y) extent : -123.6325, -121.2083, 36.8925, 38.865 (xmin, xmax, ymin, ymax) coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 names : DAY_BA values : 0, 14917 (min, max)

Растр 2

night class : RasterLayer dimensions : 2365, 2909, 6879785 (nrow, ncol, ncell) resolution : 0.0008333333, 0.0008333333 (x, y) extent : -123.6325, -121.2083, 36.89417, 38.865 (xmin, xmax, ymin, ymax) coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 names : NIGHT_BA values : 0, 1744 (min, max)

Шейп-файл

mgrs class : SpatialPolygonsDataFrame features : 1186800 extent : -122.6511, -121.594, 37.10124, 38.27151 (xmin, xmax, ymin, ymax) coord. ref. : +proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0 variables : 12

Файлы большие и загружают их, а построение графиков для визуального сравнения ничего интересного не дает.

Я пытался вычислить расстояние в метрах между верхним и нижним экстентами для каждого, используя функции из https://eurekastatistics.com/calculating-a-distance-matrix-for-geographic-points-using-r/,, полагая, что приращения в 100 м означают, что они находятся на расстоянии приращения в 100 м друг от друга, нопохоже, это не так.

distance.100m <- GeoDistanceInMetresMatrix(df.lims)/100 distance.100m DayMin DayMax NightMin NightMax MSMin MSMax DayMin 0.000000 3056.1968 1.906129 3056.1968 903.7839357 2363.0676716 DayMax 3056.196849 0.0000 3054.546060 0.0000 2332.1390496 739.6121652 NightMin 1.906129 3054.5461 0.000000 3054.5461 902.8710503 2361.5160232 NightMax 3056.196849 0.0000 3054.546060 0.0000 2332.1390496 739.6121652 MSMin 903.783936 2332.1390 902.871050 2332.1390 0.0000000 1598.8812655 MSMax 2363.067672 739.6122 2361.516023 739.6122 1598.8812655 0.0000000

Есть идеи, как сравнить пиксели в ряд?Я хочу сохранить исходные значения, если это возможно, а не повторной выборки.

1 Ответ

0 голосов
/ 15 марта 2019

Учитывая, что все координаты экстента одинаковы, кроме одного (ymin), а разрешение одинаковое, они должны совпадать.

Сначала мы можем посмотреть на экстенты

d <- raster(nrow=2367, ncol=2909, ext=extent(c(-123.6325, -121.2083, 36.8925, 38.865)))
n <- raster(nrow=2365, ncol=2909, ext=extent(c(-123.6325, -121.2083, 36.89417, 38.865)))  
e <- extent(c(-122.6511, -121.594, 37.10124, 38.27151))

plot(extent(d), col='green', lwd=2)
plot(extent(n), add=TRUE, col="red")
plot(e, add=TRUE, col="blue")

Очевидно, что растры похожи, а полигоны находятся внутри экстента растров.

Мы можем проверить происхождениерастры, чтобы увидеть, совпадают ли они:

origin(n)
#[1] 3.331042e-05 6.573362e-05
origin(d)
#[1]  3.331042e-05 -7.105427e-14

Не совсем, но это, вероятно, из-за округления.Если мы сделаем

res(n) <- 1/1200
res(d) <- 1/1200

Чтобы (вероятно) получить то, что у вас действительно (должно) быть:

origin(n)
[1] -9.947598e-14  4.263256e-14
origin(d)
[1] -9.947598e-14 -7.105427e-14

Поскольку экстент d больше, вы можете обрезать его доn, чтобы все выстраивалось в линию

d <- crop(d, n)
...