Wie kann man R verwenden, um
- Teilen eines Shapefiles in 200-Meter-Quadrate / Unterpolygone,
- Zeichnen Sie dieses Raster (inkl. ID-Nummern für jedes Quadrat) über die Originalkarte unten und
- Auswerten, in welchem Quadrat sich bestimmte geografische Koordinaten befinden .
Ich bin ein Anfänger in GIS und dies ist vielleicht eine grundlegende Frage, aber ich habe kein Tutorial dazu in R gefunden.
Bisher habe ich ein Shapefile von NYC geladen und einige beispielhafte geografische Koordinaten aufgezeichnet.
Ich suche ein Beispiel (R-Code), wie das mit den Daten unten geht.
# 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
quelle
quelle
Antworten:
Hier ist ein Beispiel mit einem
SpatialGrid
Objekt:Jetzt können Sie die implementierte
over
Methode -method verwenden, um die Zellen-IDs abzurufen:So zeichnen Sie das Shapefile und das Raster mit den Zellen-IDs:
oder ohne Farbe / Farbschlüssel:
quelle
proj4string (DK_reg1) [1] "+proj=longlat +datum=WGS84 +no_defs +ellps=WGS84 +towgs84=0,0,0"
Hat jemand Vorschläge, wie man diese Shapefiles dieser Projektion in 1000 gleich große Gitterzellen aufteilt? und dann zufällig 100 davon auswählen und hervorheben?Der in der Frage angegebene New York-Datensatz steht nicht mehr zum Download zur Verfügung. Ich verwende den nc-Datensatz aus dem sf-Paket, um eine Lösung mit dem sf-Paket zu demonstrieren:
quelle
sf
Paket zu benutzen . Das ist fantastisch!Wenn Sie sich das R-Rasterpaket nicht angesehen haben, verfügt es über Tools zum Konvertieren in / aus Vektor-GIS-Objekten, sodass Sie a) ein Raster (Raster) mit 200 x 200 m Zellen erstellen und b) es in eine Gruppe von Polygonen mit konvertieren können eine logische ID irgendeiner Art. Von dort aus würde ich mir das sp-Paket ansehen, um beim Schneiden der Punkte und des Polygonrasters zu helfen. Diese http://cran.r-project.org/web/packages/sp/vignettes/over.pdf Seite könnte ein guter Anfang sein. Wenn Sie durch die sp-Paketdokumente wandern, können Sie möglicherweise mit der SpatialGrid-Klasse beginnen und den Raster-Teil einfach vollständig überspringen.
quelle
Das "GIS-Universum" ist komplex und hat viele Standards, denen Ihre Daten entsprechen müssen. Alle "GIS-Tools" arbeiten nach GIS-Standards zusammen . Alle "seriösen GIS-Daten" von heute (2014) werden in einer Datenbank gespeichert .
Die beste Möglichkeit, R in einem GIS-Kontext mit anderen FOSS- Tools zu verwenden, ist die Einbettung in SQL. Die besten Tools sind PostgreSQL 9.X (siehe PL / R ) und PostGIS .
Du antwortest:
shp2pgsql
undpgsql2shp
.ST_SnapToGrid()
,ST_AsRaster()
etc. Wir müssen besser verstehen , Ihre Bedürfnisse in ein „Rezept“ zum Ausdruck bringen.ST_Centroid()
von den Quadraten (?) ... Sie können "mehr mathematisch" ausdrücken, damit ich verstehe.... Möglicherweise benötigen Sie keine Rasterkonvertierung, sondern nur eine Matrix von Punkten mit Regurlar-Abtastung.
Ein primitiver Weg ist die Verwendung von R ohne PL / R in einem üblichen externen Compiler: Konvertieren Sie nur Ihre Polygone und exportieren Sie sie als Form oder als WKT (siehe
ST_AsText
). Konvertieren Sie dann Daten mit awk oder einem anderen Filter in das R-Format.quelle
point.in.polygon
welchen Koordinaten sich welche Polygone befinden. Mein Problem ist, das ursprüngliche Shapefile in diese Unterpolygone aufzuteilen.