Saya baru mengenal R dan menggunakan paket raster. Saya memiliki masalah dalam mengekstraksi poligon dari file raster yang ada. Jika saya gunakan
extract(raster, poly_shape)
fungsi pada raster itu selalu membuat daftar dengan data. Yang saya inginkan adalah mengekstrak file raster lain yang dapat saya muat dengan ArcGIS lagi. Setelah membaca sedikit lebih lanjut saya pikir fungsi krop adalah yang benar-benar saya butuhkan. Tetapi ketika saya mencoba menggunakan fungsi ini
crop(raster, poly_shape)
Saya mendapatkan Galat ini:
Error in .local(x, y, ...) : extents do not overlap
In addition: Warning message:
In intersect(extent(x), extent(y)) : Objects do not overlap
File raster dan poly_shape sama untuk kedua fungsi. Bisakah Anda memberi tahu saya apa yang salah di sini? Apakah benar bahwa fungsi memotong membuat raster lain dan bukan daftar?
EDIT : Fungsi Sejauh () tidak bekerja untuk saya. Saya tetap mengalami masalah yang sama. Tapi saya yakin 2 dataset tumpang tindih! Dengan
extract(raster, poly_shape)
Saya mendapatkan data yang benar dari itu. Sama seperti daftar dan bukan sebagai raster seperti saya ingin memilikinya. Saya baru saja memuat dataset di ArcGIS sebelumnya dan mereka sangat cocok jadi saya tidak memeriksa proyeksi. Sekarang saya mencoba
projection(raster) # "+proj=laea +lat_0=52 +lon_0=10 +x_0=4321000 +y_0=3210000 +ellps=GRS80 +units=m +no_defs"
projection(poly_shape) # "+proj=utm +zone=32 +ellps=GRS80 +units=m +no_defs"
dan Anda dapat melihat bahwa proyeksi tidak sesuai. Fungsi ekstrak tampaknya dapat secara otomatis mengubah file dengan cara yang benar. Saya tahu itu karena saya melakukan yang berikut:
- Saya memotong bagian yang pasti dari poligon yang saya ekstrak di R juga di ArcGIS
- Saya menghitung jumlah semua nilai poligon R yang diekstraksi (daftar)
- Saya menghitung jumlah semua sel raster yang saya potong di ArcGIS
2 memiliki hasil yang sama persis, jadi saya kira kesimpulannya adalah bahwa fungsi ekstrak tidak berfungsi dengan benar. Sekarang saya punya 2 pilihan, saya kira:
- Saya perlu cara untuk mengeluarkan Raster dari daftar yang diekstraksi lagi atau
- 2 set data (raster + poly_shape) harus menggunakan prjection yang sama dan fungsi crop seharusnya bekerja
Apa yang akan Anda lakukan di sini?
Jawaban:
Fungsi ekstrak berperilaku tepat seperti seharusnya. Anda bisa memaksa fungsi krop untuk menggunakan tingkat poligon dan kemudian menutupi objek untuk mengembalikan raster tepat yang mewakili area poligon. Jika Anda terus menerima kesalahan itu berarti bahwa data Anda, pada kenyataannya, tidak tumpang tindih.
Harap diingat bahwa R tidak melakukan proyeksi "on the fly" jadi, periksa proyeksi Anda. Anda dapat memeriksa apakah ekstensi Anda tumpang tindih menggunakan fungsi "Sejauh ()".
Berikut adalah contoh tanam menggunakan luas poligon kemudian menutupi raster yang dihasilkan menggunakan poligon "raster".
sumber
spTransform
darisp
paket (yang kadang-kadang secara otomatis dimuat dengan paket R spasial lainnya) memungkinkan untuk memproyeksi ulang sehingga kedua file dalam proyeksi yang sama misalnya.good_poly=spTransform(spolygon, CRSobj=crs(raster_file))
Apa yang sebenarnya saya cari adalah
mask()
fungsinya.mask(raster, poly_shape)
berfungsi tanpa kesalahan dan mengembalikan apa yang saya cari.
sumber
projection(raster) = projection(poly_shape)
dan sebaliknyaprojection(poly_shape) = projection(raster)
tetapi kedua cara menghasilkan kesalahan yang sama:Error in .local(x, y, ...) : extents do not overlap In addition: Warning message: In intersect(extent(x), extent(y)) : Objects do not overlap
. Apakah ada cara bagaimana saya bisa melihat proyeksi mana yang digunakan dengan cepat menggunakan fungsi ekstrak () (karena itu jelas bekerja)?mask(raster, poly_shape)
berfungsi tanpa kesalahan dan mengembalikan apa yang saya cari.Extent berfungsi dengan baik ... Saya pikir Xmin, Xmax, Ymin, dan Ymax sejauh Anda berbeda dari X dan Y raster Anda - yaitu mereka diatur berlawanan
sumber