2009-09-26 7 views
6

Mit O'Reilly's Data Mashups in R als Inspiration, ich versuche, eine Handvoll Adressen auf einem Shapefile von Salt Lake County, Utah here gefunden zu plotten.Hilfe Plotten geographischer Daten in R mit PBSMapping und Shapefiles

I-Datenrahmen geoTable haben:

> geoTable 
     address  Y   X EID 
1 130 E 300 S 40.76271 -111.8872 1 
2 875 E 900 S 40.74992 -111.8660 2 
3 2200 S 700 E 40.72298 -111.8714 3 
4 702 E 100 S 40.76705 -111.8707 4 
5 177 East 200 S 40.76518 -111.8859 5 
6 702 3rd ave 40.77264 -111.8683 6 
7 2175 S 900 E 40.72372 -111.8652 7 
8 803 E 2100 S 40.72556 -111.8680 8 

Und ich habe es in ein Objekt eventdata dazu gezwungen:

> addressEvents<-as.EventData(geoTable,projection=NA) 
> addressEvents 
     address  Y   X EID 
1 130 E 300 S 40.76271 -111.8872 1 
2 875 E 900 S 40.74992 -111.8660 2 
3 2200 S 700 E 40.72298 -111.8714 3 
4 702 E 100 S 40.76705 -111.8707 4 
5 177 East 200 S 40.76518 -111.8859 5 
6 702 3rd ave 40.77264 -111.8683 6 
7 2175 S 900 E 40.72372 -111.8652 7 
8 803 E 2100 S 40.72556 -111.8680 8 

So sieht es aus wie ich alles habe ich brauche zu plotten, aber es funktioniert nicht. Wenn ich das Shapefile und den Plot unter Verwendung

addPoints(addressEvents,col="red",cex=.5) 

lade, schaue ich auf ein leeres Shapefile. Wenn ich versuche, findPolys für mein eventData-Objekt auszuführen, wird NULL zurückgegeben.

> findPolys(addressEvents,myShapeFile) 
NULL 

Wie kann ich das schaffen? Ich konnte das O'Reilly-Tutorial problemlos abschließen und habe Schwierigkeiten herauszufinden, wo ich hier falsch liege. Ich weiß nicht, ob es das Shapefile, mein Datenrahmen oder whateverelse ist.

Hier sind die Befehle, die ich nutzen, um meine Daten und Shape-Datei zu importieren

slc<-read.table('~/utah.txt',sep=',',header=TRUE,strip.white=TRUE,stringsAsFactors=FALSE) 

myShapeFile<-importShapefile("/Users/neil/Downloads/SGID93_DEMOGRAPHIC_CensusTracts2000/SGID93_DEMOGRAPHIC_CensusTracts2000",readDBF=TRUE) 
+0

Mein Bauchgefühl sagt mir, dass es nicht meine Daten, sondern seine meine Shape-Datei .Ich bin wirklich neu im Konzept der Shapefiles. Wenn ichPolys mit O'Reillys Beispiel-Shapefile zeichne, sehen die X- und Y-Achsen wie lang und lat aus. Wenn ich Plots mit den Utah-Shapefiles zeichne, sehen die X- und Y-Achsen wie ein anderes Nummerierungssystem aus. –

+0

Ich hatte nie das PBSmapping-Paket verwendet. Ich habe etwas mit Maktools vermasselt. –

Antwort

4

Scheint, wie PBSmapping einige grobe Heuristik verwendet die Projektion von der .prj Datei zu erarbeiten. (siehe Hilfe (importShapefile)). Ich persönlich verstehe nicht all die Dinge in einer prj-Datei, aber die Nutzung dieser Website www.spatialreference.org ich Ihre Karte rechnen Spiele

http://www.spatialreference.org/ref/epsg/26912/

Jedes Mal, wenn ich eine neue Form Datei erhalte ich finde es Projektionssystem ist auf diesem website und dann nach der proj4-string suchen, die in diesem fall ist "+ proj = utm + zone = 12 + ellps = GRS80 + daten = NAD83 + einheiten = m + no_defs"

(Wie ich schon sagte ich don ' t kennen PBSmapping, aber Sie können dies lesen, indem Sie maptools wie folgt verwenden)

library(maptools) 
sf=readShapeSpatial("SGID93_DEMOGRAPHIC_CensusTracts2000.shp",proj4string=CRS("+proj=utm +zone=12 +ellps=GRS80 +datum=NAD83 +units=m +no_defs")) 

und dann

library(rgdal) 

sftransformed=spTransform(sf,CRS("+proj=longlat")) 

und

Grundstück mit LatLong konvertieren (sftransformed, Achsen = T)

gibt einen Plot mit den richtigen Einheiten auf den Achsen.

Nicht sicher, ob PBSmapping eine proj4-Zeichenfolge versteht? Sieht so aus, als sei es nicht ehrlich.