Comment peut-on utiliser R pour
- diviser un fichier de formes en carrés / sous-polygones de 200 mètres,
- tracer cette grille (y compris les numéros d’identification pour chaque carré) sur la carte originale ci-dessous, et
- Évaluer dans quel carré se trouvent les coordonnées géographiques spécifiques .
Je suis un débutant en système d’information géographique et c’est peut-être une question fondamentale, mais je n’ai pas trouvé de didacticiel expliquant comment procéder dans R.
Jusqu'à présent, j'ai chargé un fichier de formes de NYC et tracé des coordonnées géographiques exemplaires.
Je cherche un exemple (code R) comment procéder avec les données ci-dessous.
# 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éponses:
Voici un exemple utilisant un
SpatialGrid
objet:Vous pouvez maintenant utiliser la
over
méthode implémentée pour obtenir les identifiants de cellule:Pour tracer le fichier de formes et la grille avec les ID de cellule:
ou sans couleur / clé de couleur:
la source
proj4string (DK_reg1) [1] "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"
quelqu'un a-t-il des suggestions sur la manière de fractionner ces fichiers de formes de cette projection en 1000 cellules de grille de taille égale? puis sélectionnez au hasard 100 d'entre eux et mettez-les en surbrillance?L'ensemble de données de New York fourni dans la question n'est plus disponible au téléchargement. J'utilise l'ensemble de données nc du paquet sf pour illustrer une solution utilisant le paquet sf:
la source
sf
paquet. C'est génial!Si vous n'avez pas examiné le package raster R, celui-ci dispose d'outils permettant de convertir en objets SIG vectoriels. Vous devez donc être en mesure de: a) créer un raster (grille) avec des cellules de 200x200m et b) le convertir en un ensemble de un identifiant logique quelconque. À partir de là, je regarderais le paquet sp pour aider à intersecter les points et la grille de polygones. Cette page http://cran.r-project.org/web/packages/sp/vignettes/over.pdf pourrait être un bon début. En parcourant la documentation du paquet sp, vous pourrez peut-être commencer par la classe SpatialGrid et simplement ignorer la partie raster.
la source
L '"univers SIG" est complexe et comporte de nombreuses normes selon lesquelles vos données doivent être conformes. Tous les "outils SIG" interopèrent selon les normes SIG . Toutes les "données SIG sérieuses" aujourd'hui (2014) sont stockées dans une base de données .
La meilleure façon "d'utiliser R" dans un contexte SIG, avec d'autres outils FOSS , est intégrée à SQL. Les meilleurs outils sont PostgreSQL 9.X (voir PL / R ) et PostGIS .
Vous répondez:
shp2pgsql
etpgsql2shp
.ST_SnapToGrid()
,ST_AsRaster()
etc. Nous avons besoin de mieux comprendre vos besoins d'exprimer dans une « recette ».ST_Centroid()
des carrés (?) ... Vous pouvez exprimer "plus mathématiquement" pour que je comprenne.... Peut-être n'avez-vous pas besoin d'une conversion de trame, mais seulement d'une matrice de points échantillonnés régulièrement.
Une méthode primitive consiste à utiliser R sans PL / R , dans un compilateur externe habituel: convertissez uniquement vos polygones et exportez-les sous forme ou sous forme de WKT (voir
ST_AsText
), puis convertissez les données avec awk ou un autre filtre au format R.la source
point.in.polygon
sous-polygones de 200 m * 200 m, je peux vérifier avec quelles coordonnées se trouvent quels polygones. Mon problème est de scinder le fichier de formes original en ces sous-polygones.