Вычислить области с одним растровым слоем и одним шейп-файлом (полигоны) - PullRequest
0 голосов
/ 08 апреля 2020

У меня возникли проблемы с поиском решения проблемы в R. У меня есть один шейп-файл, который содержит около 300 полигонов (областей) и один растровый слой (карта LUL C), который содержит различные значения (например, инфраструктура, лес, озера и т. д.) для разных пикселей. Моя задача состоит в том, чтобы получить площадь каждого многоугольника в растровом файле (LUL C map) и затем вычесть значение (в моем случае три значения указывают на инфраструктуру) из общей площади каждого многоугольника.

Я новичок в программировании на R и использовании такого рода процессов, и поэтому буду очень признателен за любую помощь! Мне просто нужна помощь, чтобы понять, как решить эту проблему и на какие шаги разделить это. Так что терпите меня:)

Мне удалось прочитать в моем шейп-файле и растеризовать:

# Read shapefile into R
jvk_18 <- readOGR(dsn = "JKV_18_19/Alla_kretsar_geografisk1.shp")

#Change CRS on shapefile to same as rasterlayer, copy the one from raster layer
jvk_18 <- spTransform(jvk_18, 
                      CRS("+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs"))

# Set up a raster template for a 1000 degree grid in resulution.
ext <- extent(268607.50, 920075.4, 6133580, 7670992)
gridsize <- 100
r <- raster(ext, res = gridsize)

# Rasterize shapefile
rr <- rasterize(jvk_18, r)

#Plot raster (axes = T to get the map I want)
plot(rr, axes = T)

Затем я прочитал в своем растровом файле:

> mark_raster <- raster("Marktäckedata/nmd2018bas_generaliserad_v1_0.tif")
> plot(mark_data)

Так вот как далеко я зашла! Итак, мой вопрос ко всем вам, как поступить? - Оба имеют одинаковый CRS (WGS84)

  • Оба имеют одинаковый экстент

  • Я предполагаю, что мой растеризованный шейп-файл должен быть в такое же разрешение, как у моего растрового файла (то есть 10 * 10)? Должен ли я сделать это?

  • Что еще нужно сделать, прежде чем начать слияние или расчет?

  • Должен ли я объединить два слоя перед любым расчетом, и в этом случае, нужно ли что-то делать перед объединением?

  • Есть ли другой способ расчета площадей?

Я понимаю, что это очень много просить! И любая помощь будет очень признательна :)

1 Ответ

0 голосов
/ 09 апреля 2020

Вы могли бы продолжать идти по этому пути, но я думаю, что было бы проще просто запустить зональную статистику с помощью пакета пространственной среды.

zonal.stats(x, y, stats = c("min", "mean", "max"))
#x = Polygon object of class SpatialPolygonsDataFrame
#y = rasterLayer object of class raster

https://www.rdocumentation.org/packages/spatialEco/versions/1.3-0/topics/zonal.stats

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...