4 votos

¿Cómo puedo leer una capa de un archivo .gpkg mientras selecciono un atributo?

Tengo un GeoPackage ( .gpkg ) con una sola capa:

ogrListLayers("data/LM_data/zipped/ay_riks.gpkg")
[1] "ay_riks"
attr(,"driver")
[1] "GPKG"
attr(,"nlayers")
[1] 1

Hay demasiados objetos y me gustaría leer sólo un subconjunto de ellos en función de un atributo:

library(sf)
library(rgdal)
library(tidyverse)    
dta<-st_read("data/LM_data/zipped/ay_riks.gpkg",
                 layer = "ay_riks",
                 EWKB = T,
                 geom_column="geom",
                 query= "SELECT * FROM ay_riks WHERE KOMMUNKOD='2480';")

Me da un error:

Reading layer `ay_riks' from data source `/Users/chihayakenji/Documents/spatial_r/data/LM_data/zipped/ay_riks.gpkg' using driver `GPKG'
Error in st_sf(x, ..., agr = agr, sf_column_name = sf_column_name) : 
  no simple features geometry column present

¿Cuál es la forma correcta de hacerlo?

7voto

Peter Kahn Puntos 1860

Aunque esto no resuelve explícitamente su problema, el siguiente ejemplo debería demostrar que el st_read puede utilizarse con éxito junto con una consulta SQL. Como se mencionó anteriormente, el primer paso es confirmar que la capa dentro del GeoPackage contiene una columna de geometría de características simples:

ogrinfo lut_data.gpkg 
...
1: lut_data (Multi Polygon)

Podemos leer el gpkg en R inicialmente sin ninguna consulta SQL para confirmar que se leen todas las características:

library(sf)
library(rgdal)
library(tidyverse)

data <- st_read('lut_data.gpkg', layer='lut_data')

Podemos confirmar que se han leído todas las características:

dim(data)
[1] 60  3

y trazar la salida

plot(data)

enter image description here

Ahora podemos repetir los pasos anteriores, pero importando sólo las características en las que el lut == 'CHF', de la siguiente manera:

 data <- st_read('lut_data.gpkg', layer='lut_data', \ 
                query='SELECT * FROM lut_data WHERE LUT ="CHF"')

Ahora deberíamos haber importado un subconjunto de características:

dim(data)
[1] 42  3

y podemos trazar los datos para confirmar la salida (y comprobar si faltan características en la figura anterior). enter image description here

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X