2015-03-06 2 views
0

Я пытаюсь взять данные из растра и нажать его в формате KML, чтобы получить серию полигонов с сеткой.Использование grid2poly с растром

Посмотрев образцы в Интернете, выяснилось, что путь к использованию - grid2poly с plotKML. К сожалению, я сделал ошибку, которую я могу разблокировать.

library(dismo) 
require(plotKML) 

library(rgdal) 

tmin <- getData("worldclim", var = "tmin", res = 10) # this will download 
# global data on minimum temperature at 10' resolution 

tmin1 <- raster(paste(getwd(), "/wc10/tmin1.bil", sep = "")) # Tmin for  January 

newext <- c(-1, 1, 40, 43.5) 
tmin1.c <- crop(tmin1, newext) 
plot(tmin1.c) 

tmin1.c # look at the info 
head(tmin1.c,5) 

tminvals <- rasterToPoints(tmin1.c) 

tminvals # look at the info 
head(tminvals,5) 
str(tminvals) 

########################### 
#Everything works down to here 
########################### 

library(sp) 
coordinates(tminvals) <- ~x+y 
gridded(tminvals) <- TRUE 

proj4string(tminvals) <- CRS("+proj=longlat +datum=WGS84") 
data(SAGA_pal) 

dem_poly <- grid2poly(tminvals, "tmin1", method = "sp") 

## visualize the data in Google Earth: 
kml(dem_poly, colour_scale = SAGA_pal[[1]], colour = tmin1, kmz = TRUE) 

Я получаю сообщение об ошибке для всех линий от coordinates(tminvals) <- ~x+y который выглядит следующим образом:

От Ошибка в (функции (классы, FDEF, mtable): не смог найти наследуемый метод для функции «координаты < -» для подписи «„матрица“»

Я не понимаю, что я делаю неправильно Когда я смотрю на набор данных tminvals Он выглядит так же по содержанию. как исходный пример данных eberg_grid.

ответ

1

Почему полигоны, а не растровые KML?

library(raster) 
tmin <- getData("worldclim", var = "tmin", res = 10) 
tmin1 <- tmin[[1]] 
newext <- c(-1, 1, 40, 43.5) 
tmin1.c <- crop(tmin1, newext) 

KML(tmin.c, 'test.kml') 

Если вам нужны многоугольники:

p <- rasterToPolygons(tmin.c) 

и теперь вы можете использовать KML (или KML) снова

Теперь, чтобы объяснить сообщение об ошибке вы получаете. Функция координат ожидает data.frame, вы даете ей матрицу. Вероятно, это исчезнет, ​​если вы сделаете это:

tminvals <- data.frame(tminvals) 
coordinates(tminvals) <- ~x+y 
+0

Ваши предложения работали - большое спасибо. Я хочу использовать многоугольники, чтобы ввести некоторую преувеличение в вертикальном масштабе. Проблема в том, что даже когда у меня есть _plotKML (tminvals, altitude = 5000 + tmin1 * 100, tessellate = TRUE, extrude = TRUE) _ в самом файле kml, параметр установлен на «clampedtoground». Я могу использовать текстовый редактор, чтобы сделать это абсолютным, но я действительно хочу сделать все это с R. – SteveG

+0

Я только что обнаружил параметры альфа, высоты и высоты! – SteveG

Смежные вопросы