Создание строки 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 вызов.

Другие вопросы по тегам