Preciso abrir um shapefile do ArcMap no R para usá-lo para análises geoestatísticas adicionais. Eu o converti em arquivo de texto ASCII, mas em R é reconhecido como data.frame. A função de coordenadas não funciona assim que xey são reconhecidos como não numéricos.
Você poderia ajudar a lidar com isso?
Respostas:
Use o shapefile diretamente. Você pode fazer isso facilmente com os pacotes
rgdal
ousf
e ler a forma em um objeto. Para ambos os pacotes, você precisa fornecerdsn
- a fonte de dados, que no caso de um shapefile é o diretório , elayer
- qual é o nome do shapefile, menos a extensão:(Para rgdal, no OSX ou Linux, você não pode usar a abreviação '~' para o diretório inicial como o diretório da fonte de dados (
dsn
) - caso contrário, receberá uma mensagem inútil "Não é possível abrir a fonte de dados". Osf
pacote não tenha essa limitação, entre outras vantagens.)Isso fornecerá um objeto que é um DataFrame * espacial (pontos, linhas ou polígonos) - os campos da tabela de atributos são acessíveis a você da mesma maneira que um quadro de dados comum, ou seja,
shape$ID
para a coluna ID.Se você deseja usar o arquivo ASCII importado, basta converter os campos x e y de texto (caractere) em números, por exemplo:
Editar 18/01/2015 : observe que o rgdal é um pouco melhor que o maptools (o que sugeri aqui inicialmente), principalmente porque ele lê e grava informações de projeção automaticamente.
Notas:
as.numeric(as.character())
funções - se o seu texto ASCII foi lido como um fator (provável), isso garante que você obtenha os valores numéricos, em vez dos níveis de fator.rgdal
esf
possui maneiras confusas de acessar diferentes tipos de arquivos e bancos de dados (por exemplo, para um arquivo GPX, o dsn é o nome do arquivo e coloca em camadas os componentes individuais, como waypoints, trackpoints, etc.), e é necessária uma leitura cuidadosa dos exemplos on-line.fonte
as.character
para contornar o problema.dsn="directory where the shapefile, projection file, etc are located"
layer="name of the file without .shp extention"
dsn
argumento não deve conter barras finais - por exemplo,dsn = "C:/Users/Downloads/"
deveria serdsn = "C:/Users/Downloads"
. Espero que isso resolva a frustração de alguém ...Concordo com o Simbamangu e resolvi em termos de manter o shapefile, mas quero direcionar sua atenção especificamente para a biblioteca rgdal. Siga o link sugerido por gissolved para o NCEAS e siga as instruções para rgdal. Pode ser um desafio instalar em algumas máquinas, mas pode melhorar substancialmente os resultados quando se trata de projeções.
A biblioteca maptools é excelente e permite definir a projeção para o shapefile em que você está lendo, mas para isso, é necessário saber como especificar essa projeção no formato proj4. um exemplo pode ser algo como:
Se você quiser seguir esse caminho, recomendo http://spatialreference.org como o local para descobrir a aparência da sua projeção no formato proj4. Se isso lhe parecer um aborrecimento, o rgdal facilitará a leitura do arquivo .prj do shapefile da ESRI (o arquivo que contém a definição de projeção da ESRI para o shapefile. Para usar o rgdal no mesmo arquivo, basta escrever:
Você provavelmente pode andar de skate sem fazer isso se estiver apenas trabalhando com um único arquivo de forma, mas assim que começar a olhar para várias fontes de dados ou sobrepor o Google Maps, será essencial manter suas projeções em boa forma.
Para algumas orientações úteis sobre dados espaciais no R, incluindo várias coisas sobre importação e trabalho com padrões de pontos, tenho alguns materiais antigos do curso on-line em https://csde.washington.edu/workshop/point-patterns-and-raster -superfícies / (mais workshops podem ser encontrados aqui ) que podem ajudá-lo a ver como esses métodos se comparam na prática.
fonte
Eu acho que você não deve converter o shapefile em um ASCII, mas sim usá-lo diretamente com uma das extensões espaciais. Aqui você encontra três maneiras de ler (e escrever) um arquivo shapefile http://www.nceas.ucsb.edu/scicomp/usecases/ReadWriteESRIShapeFiles . O projeto R-space provavelmente também lhe interessará http://cran.r-project.org/web/packages/sp/index.html .
fonte
Você pode usar a
sf
biblioteca para abrir Shapefiles diretamente noR
. É mais rápido que argdal
biblioteca, confira aqui: Recursos simples para R - Benchmarks . Para mais informações sobre osf
pacote, consulte a página inicial do projeto r-spatial .fonte
Uma solução fácil em 2017 é a
shapefile()
função naraster
biblioteca.ATUALIZAÇÃO: Essa ainda é uma boa opção em 2019.
fonte
Mais uma alternativa é usar a biblioteca fastshp , que oferece:
Aqui está minha pergunta no SE sobre como usá-lo com o ggplot2:
Como plotar o shapefile carregado através do fastshp no ggplot2?
fonte