2009-09-26 5 views
6

En utilisant O'Reilly's Data Mashups in R comme source d'inspiration, j'essaie de tracer une poignée d'adresses sur un fichier de formes de Salt Lake County, Utah trouvé here.Aide au traçage de données géographiques dans R en utilisant PBSMapping et Shapefiles

J'ai données cadre geoTable:

> 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 

et je l'ai dans un contraints objet EventData:

> 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 

Il semble donc que j'ai tout ce que je besoin de tracer, mais ça ne fonctionne pas. Lorsque je charge le fichier de formes et le tracé à l'aide de

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

Je regarde un fichier de forme vide. En outre, lorsque j'essaie d'exécuter findPolys sur mon objet eventData, il renvoie NULL.

> findPolys(addressEvents,myShapeFile) 
NULL 

Comment est-ce que je peux faire ce travail? J'ai réussi à compléter le tutoriel O'Reilly sans aucun problème et j'ai du mal à comprendre où je me trompe ici. Je ne sais pas si c'est le shapefile, mon frame de données, ou whatelse.

Voici les commandes que j'utilise pour importer mes données et shapefile

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

Mon instinct me dit que ses pas mes données, plutôt son mon shapefile .Je suis vraiment nouveau dans le concept des shapefiles. Quand je tracePolys en utilisant l'exemple de shapefile d'O'Reilly, les axes X et Y sont longs et lat. Lorsque je tracerPolys en utilisant les fichiers de formes Utah, les axes X et Y ressemblent à un système de numérotation différent. –

+0

Je n'avais jamais utilisé le paquetage PBSmapping. J'ai légèrement joué avec maptools. –

Répondre

4

On dirait que PBSmapping utilise des heuristiques brut pour travailler la projection à partir du fichier .prj. (voir l'aide (importShapefile)). Je ne comprends pas personnellement tous les trucs dans un fichier PRJ mais en utilisant ce site www.spatialreference.org Je pense votre carte correspond

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

Chaque fois que je reçois un nouveau fichier de forme que je trouve son système de projection sur ce site Web, puis recherchez la chaîne proj4, qui dans ce cas est "+ proj = utm + zone = 12 + ellps = GRS80 + référence = NAD83 + unités = m + no_defs"

(Comme je l'ai dit je ne sais pas Je ne connais pas PBSmapping, mais vous pouvez le lire en utilisant maptools comme suit)

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

puis convertir à l'aide LatLong

library(rgdal) 

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

et

terrain (sftransformed, axes = T)

donne un terrain avec les bonnes unités sur les axes.

Vous ne savez pas si PBSmapping comprend une chaîne proj4? On dirait que ce ne soit pas honnête.

Questions connexes