Use o shapefile diretamente. Você pode fazer isso facilmente com os pacotes rgdal
ou sf
e ler a forma em um objeto. Para ambos os pacotes, você precisa fornecer dsn
- a fonte de dados, que no caso de um shapefile é o diretório , e layer
- qual é o nome do shapefile, menos a extensão:
# Read SHAPEFILE.shp from the current working directory (".")
require(rgdal)
shape <- readOGR(dsn = ".", layer = "SHAPEFILE")
require(sf)
shape <- read_sf(dsn = ".", layer = "SHAPEFILE")
(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". O sf
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:
shape$x <- as.numeric(as.character(shape$x))
shape$y <- as.numeric(as.character(shape$y))
coordinates(shape) <- ~x + y
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:
- os aninhados
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
e sf
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.