Ich habe ein Shapefile von Polygonen und eine andere CSV-Datei, die eine Liste von Punkten als (Lat, Lng) Paare enthält.
Ich möchte für jedes (lat, lng) Paar aus der CSV-Datei überprüfen, in welches Polygon es fällt.
Das Shapefile wird projiziert und die Proj-Datei sieht folgendermaßen aus:
PROJCS["Transverse_Mercator",GEOGCS["GCS_OSGB 1936",
DATUM["D_OSGB_1936",SPHEROID["Airy_1830",6377563.396,299.3249646]],PRIMEM["Greenwich",0],UNIT["Degree",0.017453292519943295]],PROJECTION["Transverse_Mercator"],PARAMETER["latitude_of_origin",49],PARAMETER["central_meridian",-2],PARAMETER["scale_factor",0.9996012717],PARAMETER["false_easting",400000],PARAMETER["false_northing",-100000],UNIT["Meter",1]]
Mein Plan ist wie folgt:
- Lesen Sie das Shapefile mit der
readShapePoly
Funktion im R-MapTools
Paket. - Lesen Sie die Punktkoordinaten aus der CSV-Datei in einen Datenrahmen und konvertieren Sie sie in SpatialPointsDataFrame
- Verwenden Sie die
over
Funktion, um zu bestimmen, in welches Polygon es fällt.
Dazu muss ich proj4string
in Schritt 1 das Laden des Shapefiles festlegen und die Koordinaten aus der CSV-Datei mithilfe spTransform
der over
Funktion in dasselbe Projektionssystem transformieren, bevor ich die Funktion in Schritt 3 anwende, da dies für die Punkte und Polygone erforderlich ist unter dem gleichen Projektionssystem sein.
Hast du eine Idee, wie der korrekte Wert für den oben gezeigten Inhalt der proj-Datei lauten soll?
coordinate-system
shapefile
r
proj
Moustafa Alzantot
quelle
quelle
readOGR
Funktion zu laden, erhalte ich immer den Fehler Datei kann nicht geöffnet werdensummary
Funktion für dasSpatialPolygonDataFrame
Objekt habe ich den korrekten Wert für dieproj4string
Antworten:
Der proj4string ist ein gültiger PROJ4- crs-String.
Siehe Wie kann ich den proj4-String oder EPSG-Code aus einer Shapefile-PRJ-Datei abrufen? und Shapefile PRJ zur PostGIS SRID Nachschlagetabelle?
Zusamenfassend:
Oder
Das Ergebnis ist EPSG: 27700, also ist eine erste Version des PROJ4-Strings
" + Init = epsg: 27700 "
`Oder
Klicken Sie auf ProJ4 und der komplette PROJ4-String lautet:
" + Proj = tmerc + lat_0 = 49 + lon_0 = -2 + k = 0,9996012717 + x_0 = 400000 + Y_0 = -100000 + ellps = + luftiges Bezugs = OSGB36 + units = m + no_defs "
quelle
Hier ist eine sehr praktische Website zum Abrufen des EPSG-Codes für eine bestimmte Projektion. In Ihrem Fall lautet die Projektion "EPSG: 27700". Wenn für das Shapefile Projektionen definiert sind, können Sie die Projektion beim Erstellen des SpatialPointsDataFrame zuweisen und anschließend die Projektionsdefinition aus Ihrem importierten Shapefile verwenden. Mit "readOGR" aus dem rgdal-Paket werden die Projektionsdefinitionen beibehalten. Hier ist ein Beispiel für das Zuweisen und Abrufen von Koordinatenzeichenfolgen für sp-Klassendaten.
quelle