Как можно использовать R для
- разбить шейп-файл на 200-метровые квадраты / суб-полигоны,
- нанесите эту сетку (включая идентификационные номера для каждого квадрата) на исходную карту ниже, и
- оценить, в каком квадрате расположены конкретные географические координаты .
Я новичок в ГИС, и это, возможно, основной вопрос, но я не нашел учебника о том, как это сделать в R.
На данный момент я загружаю шейп-файл из Нью-Йорка и строю некоторые примерные географические координаты.
Я ищу пример (код R), как это с данными ниже.
# Load packages
library(maptools)
# Download shapefile for NYC
# OLD URL (no longer working)
# shpurl <- "http://www.nyc.gov/html/dcp/download/bytes/nybb_13a.zip"
shpurl <- "https://www1.nyc.gov/assets/planning/download/zip/data-maps/open-data/nybb_13a.zip"
tmp <- tempfile(fileext=".zip")
download.file(shpurl, destfile=tmp)
files <- unzip(tmp, exdir=getwd())
# Load & plot shapefile
shp <- readShapePoly(files[grep(".shp$", files)])
plot(shp)
# Define coordinates
points_of_interest <- data.frame(y=c(919500, 959500, 1019500, 1049500, 1029500, 989500),
x =c(130600, 150600, 180600, 198000, 248000, 218000),
id =c("A"), stringsAsFactors=F)
# Plot coordinates
points(points_of_interest$y, points_of_interest$x, pch=19, col="red")
r
vector-grid
point-in-polygon
majom
источник
источник
Ответы:
Вот пример использования
SpatialGrid
объекта:Теперь вы можете использовать реализованный
over
метод для получения идентификаторов ячеек:Чтобы построить шейп-файл и сетку с идентификаторами ячеек:
или без цвета / цветовой ключ:
источник
proj4string (DK_reg1) [1] "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"
ли у кого-нибудь какие-либо предложения о том, как разбить этот шейп-файл этой проекции на 1000 ячеек сетки одинакового размера? а затем случайным образом выбрать 100 из них и выделить их?Представленный в вопросе набор данных Нью-Йорк больше не доступен для скачивания. Я использую набор данных nc из пакета sf, чтобы продемонстрировать решение с использованием пакета sf:
источник
sf
пакет. Это круто!Если вы не смотрели на растровый пакет R, у него есть инструменты для преобразования в / из векторных ГИС-объектов, поэтому вы должны иметь возможность: а) создать растр (сетку) с ячейками 200x200 м и б) преобразовать его в набор полигонов с логический идентификатор какой-то. Оттуда я бы посмотрел на пакет sp, чтобы помочь с пересечением точек и многоугольной сетки. Эта http://cran.r-project.org/web/packages/sp/vignettes/over.pdf страница может стать хорошим началом. Бродя по документам sp package, вы можете начать с SpatialGrid-класса и просто полностью пропустить растровую часть.
источник
«ГИС-юниверс» сложен и имеет много стандартов, которым ваши данные должны соответствовать. Все «ГИС инструменты» взаимодействуют по ГИС-стандартам . Все «серьезные ГИС-данные» сегодня (2014) хранятся в базе данных .
Лучший способ «использовать R» в контексте ГИС с другими инструментами FOSS встроен в SQL. Лучшими инструментами являются PostgreSQL 9.X (см. PL / R ) и PostGIS .
Вы отвечаете:
shp2pgsql
иpgsql2shp
.ST_SnapToGrid()
,ST_AsRaster()
и т.д. Нам нужно лучше понять , ваши потребности , чтобы выразить в «рецепт».ST_Centroid()
из квадратов (?) ... Вы можете выразить "более математически", чтобы я понял.... Возможно, вам не нужно какое-либо растровое преобразование, только матрица точек, отобранных для повторения.
Примитивный способ - использовать R без PL / R в обычном внешнем компиляторе: только конвертировать полигоны и экспортировать как фигуру или как WKT (см.
ST_AsText
), Затем конвертировать данные с помощью awk или другого фильтра в формат R.источник
point.in.polygon
какие координаты находятся в каких полигонах. Моя проблема состоит в том, чтобы разбить оригинальный шейп-файл на эти суб-полигоны.