¿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
SpatialGridobjeto:Ahora puede usar el
overmé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
sfpaquete. ¡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:
shp2pgsqlypgsql2shp.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.polygonqué coordenadas están los polígonos. Mi problema es dividir el archivo de forma original en esos subpolígonos.