Создание строки proj4 для readShapePoly в R
Я прочитал в шейп-файле единиц планирования семян сосны ложной в R с readShapePoly
, вот так
spu <- readShapePoly("spus.shp")
Когда я сопоставляю спус один, они появляются.
plot(spu, border=TRUE)
Когда я пытаюсь добавить шейп-файл на карту Канады, где я знаю, что спус должен идти, они не отображаются.
map("worldHires","Canada", xlim=c(-141,-110), ylim=c(45,65), col="gray90", fill=TRUE)
plot(spu, add=TRUE, border=TRUE)
Я думаю, это потому, что в шейп-файле отсутствует информация о проекции, содержащаяся в файле.prj:
PROJCS["NAD_1983_Albers",GEOGCS["GCS_North_American_1983",DATUM["D_North_American_1983",SPHEROID["GRS_1980",6378137.0,298.257222101]],
PRIMEM["Greenwich",0.0],UNIT["Degree",0.0174532925199433]],PROJECTION["Albers"],PARAMETER["False_Easting",1000000.0],
PARAMETER["False_Northing",0.0],PARAMETER["Central_Meridian",-126.0],PARAMETER["Standard_Parallel_1",50.0],
PARAMETER["Standard_Parallel_2",58.5],PARAMETER["Latitude_Of_Origin",45.0],UNIT["Meter",1.0]]
Частичный вывод
summary(spu)
Object of class SpatialPolygonsDataFrame
Coordinates:
min max
x 642162.8 1870556
y 457057.2 1421478
Is projected: NA
proj4string : [NA]
Data attributes:
показывает, что никакая проекционная информация не связана с объектом spu в R. Я думаю, что я могу это исправить, используя правильный proj4string
с readShapePoly,
но не смог найти, как перевести информацию из файла.prj в строку proj4. Как я могу сделать это / это правильный подход?
1 ответ
Чтобы преобразовать.prj в proj4, вы можете использовать инструмент командной строки gdalsrsinfo
, как описано здесь.
Чтобы запустить его из R, вы можете сделать:
system('gdalsrsinfo "spus.prj"')
где spus.prj
полный (или относительный к wd) путь к файлу.prj.
В возвращаемую информацию включена строка proj4.
Обратите внимание, что для того, чтобы это работало, как указано здесь, путь, содержащий gdalsrsinfo.exe, должен быть включен в системную переменную среды PATH. В противном случае вы можете указать полный путь к gdalsrsinfo в system
вызов.