Minha pergunta é sobre a extração de valores de rasters no local dos pontos. Com a extração da função, isso é muito fácil, e a função fornece um quadro de dados com os valores de todas as variáveis nos pontos. Eu quero ter nesse quadro de dados as coordenadas de cada ponto. Como posso fazer isso acontecer? É possível dizer a R que, ao extrair os valores da varredura, adicione também as colunas do ponto de localização.
Este é o meu procedimento:
presencias=read.table("c:/SDM_R/presencias/P_lentiscus_pres.csv",header=TRUE,sep=";")
lista_variables <-list.files(path="Variables_modelizacion/solo_ascii",pattern='*.asc',full.names=TRUE)
variables <- stack(lista_variables)
variables_presencia<-extract(variables, presencias)
os resultados são algo como estes:
> bio1 bio12 bio18 bio2 bio4
> 90 875 165 95 4886
> 115 1085 158 83 4075
> 135 1153 153 67 3402
> 85 1026 137 99 5203
> 96 667 128 108 5823
> 98 531 109 113 6305
> 132 450 63 123 6598
> 132 569 104 106 5963
> 95 814 196 98 5571
> 146 474 39 114 6603
Mas eu quero mais duas colunas com os dados de coordenadas (mas podem ser outras colunas da minha tabela de localização de extração de csv).
Muito obrigada.
presencias
?cbind(coordinates(presencias), variables_presencia)
? Você pode converter para SPDF usandocoordinates(result) <- ~ X + Y
e pode usar a infinidade de métodos projetados para objetos espaciais novamente.Respostas:
Supondo que
presencias
evariables
compartilhe a mesma projeção, essa deve ser uma tarefa fácil. Eu recomendo que você adicione essas linhas de código após a suaread.table()
instrução para converter opresencias
quadro de dados em um objeto SpatialPointsDataFrame (basta refinar os nomes das colunas que contêm as coordenadas xey se diferirem do meu exemplo).Para fornecer um exemplo reproduzível, tento abrir um pouco mais o escopo da minha resposta. Primeiro, faça o download e descompacte este arquivo de forma ESRI com locais mais ou menos importantes na Alemanha. Estes servirão como dados pontuais mais tarde. Você também precisará de pacotes e
dismo
, neste pequeno exemplo, verifique se essas bibliotecas (e todas as suas dependências) estão instaladas no disco rígido local.rgdal
raster
Vamos começar carregando os pacotes necessários.
Em seguida, você deve gerar uma amostra RasterLayer. No nosso caso, usaremos a
gmap()
função dodismo
pacote para obter um mapa físico da Alemanha.Agora você pode importar seu shapefile de ponto via
readOGR
dorgdal
pacote de R. Certifique-se de ajustar o nome da fonte de dados (dsn = ...). Todo o material de projeção é obsoleto no seu caso particular. No entanto, isso deve ser feito em nosso exemplo para sobrepor com êxito nossos dados de ponto com o RasterLayer da Alemanha.Para reduzir o tamanho enorme de nossos dados de pontos, desenharemos uma amostra aleatória de dez locais na Alemanha. Isso deve ser suficiente para nossos propósitos.
Agora que o material de preparação foi concluído, poderíamos começar a extrair os valores desses pixels em particular em que nossos dez pontos amostrados aleatoriamente se encontram.
Para mesclar as coordenadas do ponto com os valores de pixel extraídos, precisamos apenas configurar um quadro de dados contendo as coordenadas do nosso SpatialPointsDataFrame. É isso aí!
fonte
Certamente você pode fazer:
variables_presencia$x <- presencias['x']
variables_presencia$y <- presencias['y']
(presumindo que seus dados de coordenadas estejam em duas colunas chamadas 'x' e 'y')
fonte