¿Cómo se puede usar R para
- dividir un archivo de forma en cuadrados de 200 metros / subpolígonos,
- trace esta cuadrícula (incluidos los números de identificación para cada cuadrado) sobre el mapa original a continuación, y
- evaluar en qué cuadrado se ubican las coordenadas geográficas específicas .
Soy un principiante en SIG y esta es quizás una pregunta básica, pero no he encontrado un tutorial sobre cómo hacer esto en R.
Lo que he hecho hasta ahora es cargar un archivo de forma de Nueva York y trazar algunas coordenadas geográficas ejemplares.
Estoy buscando un ejemplo (código R) de cómo hacerlo con los datos a continuación.
# 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
fuente
fuente
Respuestas:
Aquí hay un ejemplo usando un
SpatialGrid
objeto:Ahora puede usar el
over
método implementado para obtener las ID de celda:Para trazar el archivo de forma y la cuadrícula con las ID de celda:
o sin color / clave de color:
fuente
proj4string (DK_reg1) [1] "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"
¿alguien tiene alguna sugerencia sobre cómo dividir estos archivos de forma de esta proyección en 1000 celdas de cuadrícula de igual tamaño? y luego selecciona al azar 100 de ellos y los resalta?El conjunto de datos de Nueva York proporcionado en la pregunta ya no está disponible para descargar. Utilizo el conjunto de datos nc del paquete sf para demostrar una solución usando el paquete sf:
fuente
sf
paquete. ¡Esto es asombroso!Si no ha mirado el paquete ráster R, tiene herramientas para convertir a / desde objetos SIG vectoriales, por lo que debería ser capaz de a) crear un ráster (cuadrícula) con celdas de 200x200m y b) convertirlo en un conjunto de polígonos con Una identificación lógica de algún tipo. A partir de ahí, miraría el paquete sp para ayudar con la intersección de los puntos y la cuadrícula de polígonos. Esta http://cran.r-project.org/web/packages/sp/vignettes/over.pdf podría ser un buen comienzo. Paseando por los documentos del paquete sp, puede comenzar con la clase SpatialGrid y simplemente omitir la parte ráster por completo.
fuente
El "universo SIG" es complejo y tiene muchos estándares que sus datos deben cumplir. Todas las "herramientas SIG" interoperan con los estándares SIG . Todos los "datos SIG serios" de hoy (2014) se almacenan en una base de datos .
La mejor manera de "usar R" en un contexto SIG, con otras herramientas FOSS , está integrada en SQL. Las mejores herramientas son PostgreSQL 9.X (ver PL / R ) y PostGIS .
Contestas:
shp2pgsql
ypgsql2shp
.ST_SnapToGrid()
,ST_AsRaster()
etc. Necesitamos comprender mejor sus necesidades de expresar en una "receta".ST_Centroid()
de los cuadrados (?) ... Puedes expresar "más matemáticamente" así que entiendo.... Tal vez no necesite ninguna conversión de trama, solo una matriz de puntos regurlar muestreados.
Una forma primitiva es usar R sin PL / R , en su compilador externo habitual: solo convierta sus polígonos y exporte como forma o como WKT (ver
ST_AsText
), luego convierta los datos con awk u otro filtro al formato R.fuente
point.in.polygon
qué coordenadas están los polígonos. Mi problema es dividir el archivo de forma original en esos subpolígonos.