2009-09-26 10 views
6

Usando O'Reilly's Data Mashups in R como inspiración, estoy tratando de trazar un puñado de direcciones en un shapefile del condado de Salt Lake, Utah encontró here.Ayuda para trazar datos geográficos en R usando PBSMapping y Shapefiles

que tienen datos de tramas 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 

Y he coaccionado en un objeto 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 

Así que parece que tengo todo lo que necesito para trazar, pero no funciona. Cuando cargo el shapefile y trazo usando

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

Me queda mirando un shapefile vacío. Además, cuando intento ejecutar findPolys contra mi objeto eventData, devuelve NULL.

> findPolys(addressEvents,myShapeFile) 
NULL 

¿Cómo puedo hacer esto? Pude completar el tutorial de O'Reilly sin ningún problema y tengo dificultades para descubrir dónde me estoy equivocando aquí. No sé si es el shapefile, my data frame o whateverelse.

Éstos son los comandos que utilizo para importar los datos y archivo de forma

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

Mi instinto me dice que no es mi datos, en lugar de su mi archivo de formas .Soy realmente nuevo en el concepto de shapefiles. Cuando trazo los patrones usando el shapefile de ejemplo de O'Reilly, los ejes X e Y parecen long y lat. Cuando trazo los patrones usando los shapefiles de Utah, los ejes X e Y parecen un sistema de numeración diferente. –

+0

Nunca había usado el paquete PBSmapping. Me he equivocado un poco con las herramientas de mapa. –

Respuesta

4

parece que PBSmapping utiliza algunas heurísticas de crudo a trabajar a cabo la proyección del archivo .prj. (ver ayuda (importShapefile)). Yo personalmente no entiendo todas las cosas dentro de un archivo PRJ pero el uso de este sitio web www.spatialreference.org Calculo su mapa coincide con

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

En cuanto tenga un nuevo archivo de forma que parece que es el sistema de proyección en este página web y luego busque la cadena proj4, que en este caso es "+ proj = UTM zona + = 12 + ellps = GRS80 + dato = NAD83 + unidades = m + no_defs"

(Como he dicho yo no' t conoce PBSmapping, pero puedes leer esto usando maptools de la siguiente manera)

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

y luego convertir a LatLong usando

library(rgdal) 

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

y

parcela (sftransformed, ejes = T)

da una parcela con las unidades correctas en los ejes.

¿No está seguro si PBSmapping entiende una cadena proj4? Parece que no es para ser honesto.

Cuestiones relacionadas