Справка построение географических данных в R с помощью PBSMapping и Шейп-файлов
используя данные О'Рейли Mashups в 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
Итак, похоже, у меня есть все, что мне нужно, но это не работает. Когда я загружаю шейп-файл и график, используя
addPoints(addressEvents,col="red",cex=.5)
я остался в пустом шейп-файле. Кроме того, когда я пытаюсь запустить findPolys против моего объекта eventData, он возвращает NULL.
> findPolys(addressEvents,myShapeFile)
NULL
как я могу это сделать? Я смог завершить учебник О'Рейли без каких-либо проблем, и мне трудно понять, где я ошибаюсь здесь. Я не знаю, является ли это шейп-файл, мой фрейм данных или что-то еще.
вот команды, которые я использую для импорта моих данных и шейп-файла
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)
2 ответов
похоже, что PBSmapping использует некоторые грубые эвристики для разработки проекции из .файл prj. (см. Help(importShapefile)). Я лично не понимаю все вещи внутри файла prj, но с помощью этого веб-сайта www.spatialreference.org я считаю, что ваша карта соответствует
http://www.spatialreference.org/ref/epsg/26912/
всякий раз, когда я получаю новый файл формы, я нахожу его проекционную систему на этом веб-сайте, а затем ищу строку proj4, которая в этом дело "+прое=Тум +пояс=12 +ellps=GRS80 +базы=nad83 в +блоки=м +no_defs"
(Как я уже сказал, Я не знаю PBSmapping, но вы можете прочитать это в использовании maptools следующим образом)
library(maptools)
sf=readShapeSpatial("SGID93_DEMOGRAPHIC_CensusTracts2000.shp",proj4string=CRS("+proj=utm +zone=12 +ellps=GRS80 +datum=NAD83 +units=m +no_defs"))
а затем преобразовать в latlong с помощью
library(rgdal)
sftransformed=spTransform(sf,CRS("+proj=longlat"))
и
участок (sftransformed, axes=T)
дает график с правильными единицами на осях.
не уверен, что PBSmapping понимает строку proj4? Похоже, это не честно.