Извлечь данные из NetCDF, используя шейп-файл, состоящий из многоугольного многоугольника в R? - PullRequest
2 голосов
/ 25 июня 2019

У меня есть файл NetCDF, в котором хранятся данные об осадках за 38 лет.Я использую шейп-файл моей области для извлечения данных для моей области интересов.Когда я использовал приведенный ниже код, я получаю данные, соответствующие точкам сетки, которые находятся внутри многоугольника.Однако я заинтересован в извлечении данных на основе каждого многоугольника шейп-файла (в нашем случае 12) и сохранении фрейма данных с использованием имени многоугольника.Ниже мой пример кода

library(ncdf4)
library(rgdal)
library(raster)
library(maptools)
library(GISTools)

NC = brick("Daily_Pcp.nc")
Subbasin_SHP=readOGR("my_Shapefile.shp")
crs(NC)
crs(Subbasin_SHP)
SHP=spTransform(Subbasin_SHP, crs(NC))

Polygon_Names=my_shapefile$Subbasin # there are 12 polygon (subbasins) in my shapefile with specific name

PCP_Data=mask(NC, Subbasin_SHP)
DF=as.data.frame(PCP_Data, xy=TRUE)
DF_insidepoints=DF[complete.cases(DF),]
write.csv(DF_insidepoints, "DataForEntireShapefile.csv")

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

plot(Subbasin_SHP, col="gray", border="blue", axes=TRUE, pbg="white")
pointLabel(coordinates(Subbasin_SHP), labels = Subbasin_SHP$Subbasin) 

enter image description here

...