Для пакетов Spatial
в пакетах spatstat
и maptools
можно использовать функции конвертера.Шейп-файл состоит как минимум из точек (или линий или полигонов) и атрибутов для каждого объекта.
library(spatstat)
library(sp)
library(maptools)
data(bei)
Приведите bei
к объекту Spatial
, здесь только точки без атрибутов, поскольку на объекте ppp
нет "отметок".
spPoints <- as(bei, "SpatialPoints")
Шейп-файлу требуется как минимум один столбец данных атрибутов, поэтому создайте фиктивный файл.
dummyData <- data.frame(dummy = rep(0, npoints(bei)))
Используя объект SpatialPoints
и фиктивные данные, сгенерируйте SpatialPointsDataFrame
.
spDF <- SpatialPointsDataFrame(spPoints, dummyData)
В этот момент вы должны определенно рассмотреть, что представляет собой система координат, используемая bei
, и можете ли вы представить ее с помощью WKT CRS
(известной текстовой системы координат координат).Вы можете присвоить это объекту Spatial
в качестве другого аргумента для SpatialPointsDataFrame
или после создания с помощью proj4string(spDF) <- CRS("+proj=etc...")
(но это целая проблема, на которой мы могли бы написать страницы).
Загрузите пакет rgdal
(это наиболее общий вариант, поскольку он поддерживает многие форматы и использует библиотеку GDAL, но может быть недоступен из-за системных зависимостей.
library(rgdal)
(Используйте writePolyShape
в пакете maptools
, если rgdal
недоступно).
Синтаксис - это объект, а затем «имя источника данных» (здесь текущий каталог, это может быть полный путьв .shp или папку), затем слой (для шейп-файлов имя файла без расширения), а затем имя выходного драйвера.
writeOGR(obj = spDF, dsn = ".", layer = "bei", driver = "ESRI Shapefile")
Обратите внимание, что запись завершится неудачно, еслиФайл "bei.shp" уже существует, и поэтому его нужно будет сначала удалить unlink("bei.shp")
.
Список файлов, начинающихся с "bei":
list.files(pattern = "^bei")
[1] "bei.dbf" "bei.shp" "bei.shx"
Обратите внимание, что общегоКонвертер as.Spatial для ppp
объектов, поскольку необходимо принять решение относительно того, является ли это точечным шаблоном с метками и т. д. - может быть интересно попробовать написать такой, который сообщает о том, были ли необходимы фиктивные данные, и т. д.вкл.
See следующие виньетки для получения дополнительной информации и деталей о различиях между этими представлениями данных:
library (sp);библиотека виньетки ("sp") (spatstat);виньетка ( "spatstat")