Создать растр с геопривязанной информацией в R

9

Обращаясь к моему предыдущему вопросу , как мне «геокодировать» / конвертировать - используя R - сгенерированное растровое изображение в формат, который можно отобразить в виде слоя на карте? Короче говоря, я собираюсь воссоздать результаты коммерческого программного обеспечения SpatialKey ( скриншот ).

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

Mimo
источник
Поскольку это исключительно вопрос программирования, это не совсем тема. Посмотрели ли вы информацию о пакете spatstat и краткий PDF-файл курса, чтобы узнать, есть ли там информация? Я уверен, что это произошло раньше, и быстрый поиск в Google выводит этот релевантный ответ R-help . Я не удивлюсь, если появятся и более прямые решения с еще большим поиском.
Энди W
Как вы создали сгенерированное растровое изображение? Это происходит из другого приложения или сделано в R?
Симбамангу
Он генерируется в R с использованием функции image ().
Мимо
x имеет неодинаковое разрешение по горизонтали и вертикали. Такие данные не могут быть сохранены в формате arc-ascii. My x имеет размерность 4684, 1950, жалуется на разрешение. Я сделал то же самое, хотя. Багги

Ответы:

15

Растровый пакет позволяет создавать произвольные растры (размер, проекция) или использовать существующие объекты, например матрицы; Затем вы можете назначить проекции и экстенты. Ваша image()функция принимает матричный аргумент, который можно использовать напрямую:

library(raster)    
## Create a matrix with random data & use image()
xy <- matrix(rnorm(400),20,20)
image(xy)

# Turn the matrix into a raster
rast <- raster(xy)
# Give it lat/lon coords for 36-37°E, 3-2°S
extent(rast) <- c(36,37,-3,-2)
# ... and assign a projection
projection(rast) <- CRS("+proj=longlat +datum=WGS84")
plot(rast)

Затем вы можете использовать writeRaster()с любым количеством форматов, например,

writeRaster(rast, "~/myraster.asc", format = "ascii")
Simbamangu
источник
2

Есть несколько разных способов, но если вы захотите использовать инструменты с открытым исходным кодом в Windows, я могу предложить 3 варианта:

  1. Используйте инструмент gdal_translate в GDAL (библиотека манипулирования георастрами с открытым исходным кодом). Вероятно, вам понадобится -gcp pixel line easting northing elevationпараметр, в котором пиксель и линия равны x / y на растре ( http://www.gdal.org/gdal_datamodel.html ) и восточнее / севернее географических координат. Вы также должны будете указать прогноз с-a_srs srs_def
  2. Используйте привязки r к GDAL и сделайте то же самое
  3. Более простым способом «GUI» может быть следование этому руководству и использование QGIS с GDAL. Недостатком этого является то, что вы должны настроить QGIS и GDAL, если вы еще этого не сделали.

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

Stev_k
источник