st_intersection
mungkin cara terbaik. Temukan cara apa pun yang terbaik untuk mendapatkan sf
objek yang bersinggungan dengan input Anda. Inilah cara menggunakan kenyamanan raster::extent
dan campuran lama dan baru. nc
dibuat oleh example(st_read)
:
st_intersection(nc, st_set_crs(st_as_sf(as(raster::extent(-82, -80, 35, 36), "SpatialPolygons")), st_crs(nc)))
Saya tidak berpikir Anda bisa membujuk st_intersection
untuk tidak membutuhkan CRS yang cocok, jadi atur keduanya menjadi NA atau pastikan keduanya sama. Tidak ada alat yang mudah untuk bbox / afaik tingkat, jadi menggunakan raster adalah cara yang baik untuk membuat semuanya menjadi mudah.
st_intersection
tetapi tidak bisa menyelesaikannya sendiri.spex::spex
untuk menggantist_as_sf(as(...))
panggilan. Juga,tmaptools::crop_shape()
bisa melakukan ini.sf
sekarang termasukst_crop
, lihat jawaban saya untuk detail.Sejak hari ini , ada
st_crop
fungsi dalam versi githubsf
(devtools::install_github("r-spatial/sf")
, mungkin pada CRAN dalam waktu dekat juga).Hanya masalah:
Vektor harus dinamai dengan
xmin xmax ymin ymax
(dalam urutan apa pun).Anda juga dapat menggunakan objek apa pun yang dapat dibaca
st_bbox
sebagai batas pemangkasan, yang sangat berguna.sumber
Solusi lain, bagi saya lebih cepat untuk shapefile yang lebih besar:
sumber
st_intersection()
pendekatan adalah pengguna: 1,18, sistem: 0,05, berlalu 1,23 pada dataset Anda. (Mungkin lingkungan saya berbeda dengan lingkungan Anda ... tidak yakin.)sf
sekarang termasukst_crop
, lihat jawaban saya untuk detail.Solusi @ mdsumner sebagai fungsi. Bekerja jika
rasta
RasterBrick, luas, bbox, dll.Itu membuang informasi crs dari raster karena saya tidak tahu bagaimana mengubah raster crs () menjadi st_crs ()
Di mesin saya dan untuk sampel data saya ini memiliki kinerja setara
raster::crop
dengan versi data SpatialLinesDataFrame.Solusi @ pbaylis sekitar 2,5 kali lebih lambat:
Sunting: Komentar Somebodies menyarankan spex , yang menghasilkan SpatialPolygons dengan cr dari rasta, jika memiliki crs.
Kode ini menggunakan metode yang sama dengan spex:
sumber
st_crop
fungsi yang mungkin perlu dicoba.