Memangkas peta sf di R
Saya mencoba untuk memplot semua sungai di Semenanjung Iberia seperti yang dapat dilihat pada gambar, tetapi shapefile tersebut menyertakan Kepulauan Canary dan info tentang Afrika Utara. Untuk merencanakannya saya menggunakan:
library(sf)
library(tidyverse)
rios <- st_read("/Users/JMFR/Downloads/BCN500/BCN500_0301L_HIDROGRAFIA.shp")
ggplot() +
borders("world", c("spain", "portugal"), fill = "lightsteelblue") +
geom_sf(data = rios)
File bentuk dapat diunduh dari https://www.dropbox.com/s/gqoz9xppf4bjwt2/bcn500_0301l_hidrografia.shp?dl=0

rios <- rios %>%
drop_na()
Saya sudah mencoba menggunakan
rios <- st_crop(rios, c(xmin= -9.80, ymin = 27.68933, xmax = 4.837648, ymax = 35.95))
Tapi yang saya dapatkan hanyalah beberapa sungai dari Afrika Utara, seperti yang ditunjukkan plotnya.

Tapi saya tidak tahu cara menghapus semua info dari Kepulauan Canary. Tujuan akhir saya adalah plot di utara lat. 35,95 dan hingga panjang -9,80 jadi saya bisa mendapatkan sesuatu karena gambar ini sama dengan dari kotak merah).

Ada saran?
Jawaban
Luas tanam Anda, secara spesifik ymin
dan ymax
salah. Dalam kode yang Anda tunjukkan, Anda hanya memotong ke bagian Afrika. Ini harus dipotong ke Semenanjung Iberia:
rios <- st_crop(rios, c(xmin= -9.80, ymin = 36, xmax = 4.837648, ymax = 44))
Pemotongan, seperti yang Anda lihat, memotong fitur ke kotak pembatas persegi; st_intersection
membuat klip di sepanjang batas lapisan kliping, dalam kasus Anda, saya akan menyaring pulau-pulau dan kemudian berpotongan:
library(ggplot2)
library(raster)
library(sf)
library(dplyr)
esp = getData(country = "ESP", level = 1)
esp = esp %>% st_as_sf() %>% filter(!NAME_1 %in% c("Islas Canarias", "Islas Baleares"))
rios = st_read("/Users/JMFR/Downloads/BCN500/BCN500_0301L_HIDROGRAFIA.shp")
rios = st_intersection(rios, esp)