2009-09-26 24 views
6

使用O'Reilly's Data Mashups in R作爲靈感,我試圖在Salt Lake County的一個shapefile上繪製少量地址,猶他州發現here幫助使用PBSMapping和Shapefiles繪製R中的地理數據

我有數據幀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 

而且我強迫它變成一個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 

所以看起來我有我需要的一切陰謀,但它不工作。當我加載shapefile和繪圖使用

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

我留着看着一個空的shapefile。另外,當我嘗試對我的eventData對象運行findPolys時,它將返回NULL。

> findPolys(addressEvents,myShapeFile) 
NULL 

我該如何做這項工作?我能夠完成O'Reilly教程而沒有任何問題,並且很難弄清楚我在哪裏出錯。我不知道它的shapefile,我的數據框架還是whateverelse。

這裏有

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

我的直覺告訴我,它不是我的數據,而其我的shapefile 。我對shapefile的概念非常陌生。當我使用O'Reilly的shapefile文件製作plotPolys時,X和Y軸看起來像是long和lat。當我使用猶他形狀文件plotPolys時,X和Y軸看起來像一個不同的編號系統。 – 2009-09-26 12:23:35

+0

我從來沒有使用PBSmapping包。我已經與maptools輕微混淆。 – 2009-09-28 15:01:04

回答

4

好像PBSmapping使用一些啓發式原油從.prj文件制定出投射我用我的導入數據的命令和shape文件。 (請參閱幫助(importShapefile))。我個人不明白PRJ文件裏面的所有東西,但在使用本網站www.spatialreference.org我看你的地圖匹配

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

每當我得到一個新的形狀文件,我覺得這是投影系統在這然後尋找proj4字符串,在這種情況下,這是 「+ proj = utm + zone = 12 + ellps = GRS80 + datum = NAD83 + units = m + no_defs」

(就像我說過的, t知道PBSmapping,但您可以在使用maptools中閱讀以下內容)

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

,然後轉換爲使用

library(rgdal) 

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

情節經緯度(sftransformed,軸= T)

給出了在軸右側單元的曲線圖。

不確定PBSmapping是否理解proj4字符串?看起來不誠實。