Мне нужно открыть шейп-файл из ArcMap в R, чтобы использовать его для дальнейшего геостатистического анализа. Я преобразовал его в текстовый файл ASCII, но в R он распознается как data.frame. Функция координат не работает, как только x и y признаны не числовыми.
Не могли бы вы помочь с этим справиться?
Ответы:
Используйте шейп-файл напрямую. Вы можете легко сделать это с помощью пакетов
rgdal
илиsf
и прочитать форму объекта. Для обоих пакетов необходимо указатьdsn
источник данных, который в случае шейп-файла является каталогом , иlayer
- имя шейп-файла за вычетом расширения:(Для rgdal, в OSX или Linux вы не можете использовать сокращение «~» для домашнего каталога в качестве каталога источника данных (
dsn
) - в противном случае вы получите бесполезное сообщение «Не удается открыть источник данных».sf
Пакет не есть это ограничение, среди некоторых других преимуществ.)Это даст вам объект, который представляет собой пространственный * DataFrame (точки, линии или многоугольники) - тогда поля таблицы атрибутов будут доступны вам так же, как обычный фрейм данных, то есть
shape$ID
для столбца ID.Если вы хотите использовать импортированный вами ASCII-файл, вам следует просто преобразовать текстовые (символьные) поля x и y в числа, например:
Edit 2015-01-18 : обратите внимание, что rgdal немного лучше, чем maptools (который я изначально предложил здесь), главным образом потому, что он автоматически читает и записывает информацию о проекции.
Примечания:
as.numeric(as.character())
функции - если ваш текст ASCII был прочитан как фактор (вероятно), это гарантирует, что вы получите числовые значения вместо уровней фактора.rgdal
иsf
имеют запутанные способы доступа к различным типам файлов и баз данных (например, для файла GPX, dsn - это имя файла, и слои отдельных компонентов, таких как путевые точки, трекпоинты и т. д.), необходимо тщательное чтение онлайн-примеров.источник
as.character
чтобы обойти проблему.dsn="directory where the shapefile, projection file, etc are located"
layer="name of the file without .shp extention"
dsn
аргумент не должен содержать косую черту - например,dsn = "C:/Users/Downloads/"
должен бытьdsn = "C:/Users/Downloads"
. Надеюсь, это решит чье-то разочарование ...Я согласен с Симбамангу и расстроен с точки зрения сохранения шейп-файла, но хочу обратить ваше внимание именно на библиотеку rgdal. Следуйте по ссылке, предложенной gissolved для NCEAS, и следуйте инструкциям для rgdal. Это может быть сложным для установки на некоторых машинах, но это может существенно улучшить результаты, когда речь идет о проекциях.
Библиотека maptools превосходна и позволяет вам определять проекцию для шейп-файла, в котором вы читаете, но для этого вам нужно знать, как указать эту проекцию в формате proj4. пример может выглядеть примерно так:
Если вы хотите пойти по этому пути, то я рекомендую http://spatialreference.org как место, чтобы выяснить, как выглядит ваша проекция в формате proj4. Если вам это кажется хлопотным, rgdal облегчит задачу, прочитав файл .prj файла шейп-файла ESRI (файл, содержащий определение проекции ESRI для шейп-файла. Чтобы использовать rgdal для того же файла, вы просто напишите:
Скорее всего, вы можете кататься, не делая этого, если вы работаете только с одним шейп-файлом, но как только вы начинаете просматривать несколько источников данных или накладывать их на Карты Google, поддержание ваших прогнозов в хорошей форме становится необходимым.
Для некоторых полезных пошаговых руководств по пространственным данным в R, включая кучу материалов по импорту и работе с точечными шаблонами, у меня есть некоторые старые материалы курса в Интернете по адресу https://csde.washington.edu/workshop/point-patterns-and-raster. -поверхности / (больше семинаров можно найти здесь ), которые могут помочь вам увидеть, как эти методы сравниваются на практике.
источник
Я думаю, вам не следует преобразовывать шейп-файл в ASCII, а вместо этого использовать шейп-файл напрямую с одним из пространственных расширений. Здесь вы можете найти три способа чтения (и записи) шейп-файла http://www.nceas.ucsb.edu/scicomp/usecases/ReadWriteESRIShapeFiles . Проект R -atial, вероятно, также заинтересует вас http://cran.r-project.org/web/packages/sp/index.html .
источник
Вы можете использовать
sf
библиотеку, чтобы открыть Shapefiles прямо вR
. Это быстрее, чемrgdal
библиотека, проверьте здесь: Простые возможности для R - Benchmarks . Для получения дополнительной информации оsf
пакете проверьте домашнюю страницу проекта r -atial .источник
Простое решение в 2017 году -
shapefile()
функция вraster
библиотеке.ОБНОВЛЕНИЕ: Это все еще хороший вариант в 2019 году.
источник
Еще одна альтернатива - использовать библиотеку fastshp, которая предлагает:
Вот мой вопрос на SE о том, как использовать его с ggplot2:
Как я могу построить шейп-файл, загруженный через fastshp в ggplot2?
источник