Baca hanya sebagian dari bentuk ESRI ke dalam R

10

Saya memiliki shapefile ESRI yang sangat besar (> 8000 poligon, file .shp> 32MB), yang ingin saya baca di R pada Windows 7.

Saya kenal dengan rgdal dan readOGR (). Namun, dengan ukuran shapefile ini, membaca seluruh shapefile ke dalam memori adalah proses yang sangat lambat. Selain itu, saya hanya tertarik pada beberapa poligon berkerumun (<100) dari 8.000 yang terkandung dalam shapefile. Proses yang perlu saya lakukan ini sangat berulang, yaitu shapefile perlu dimuat berkali-kali, sehingga saat ini sangat lambat.

Oleh karena itu, saya bertanya-tanya apakah mungkin hanya membaca di bagian shapefile untuk mempercepat proses. Tampaknya tidak praktis untuk memuat data sebanyak itu dan kemudian membuang sebagian besar data itu.

bmz
sumber
Platform apa yang Anda gunakan? Jika Anda memiliki akses ke ArcGIS, saya kira Anda bisa membuat skrip sesuatu di ArcPy yang membuat pilihan subset dan kemudian menjalankan proses R dari skrip python. Ini sangat mungkin ... Jalankan pencarian Google untuk mengeksekusi kode R dari python.
GeoJohn
3
Mungkin coba ekspor ke shapefile baru yang merupakan bagian dari data Anda yang penting bagi Anda, dan kemudian kerjakan di R.
ami
mungkin akan bekerja dengan sf. Tapi simpan ke format ruang kerja R dengan saveRDS. Ada cara untuk menyimpan secara umum dalam SQLite atau serupa, tapi saya ragu itu diperlukan
mdsumner

Jawaban:

8

Satu-satunya hal yang terlintas dalam pikiran adalah untuk memanfaatkan perpustakaan "sfr" baru dan kelas fitur sederhana yang terkait untuk berlangganan. The Perpustakaan sfr saat ini tersedia di GitHub dan di sini adalah tutorial untuk Anda mulai.

Saya tidak percaya bahwa Anda dapat melakukan streaming data berdasarkan query bagian Namun, ini akan di kecepatan sewa up kali membaca jauh dan diduga masa depan R kelas spasial .

Pilihan lain adalah menyimpan data spasial Anda dalam database (mis., PostGIS) dan permintaan dari database. Ini bisa menjadi cara yang sangat efisien untuk menangani data besar.

Jeffrey Evans
sumber
2
The sfpaket tersedia di CRAN sejak versi 0.2 (2016/10/26): cran.r-project.org/web/packages/sf/index.html
rcs
1

Saya pikir menggunakan GIS seperti QGIS dan memilih fitur yang Anda butuhkan akan menjadi pendekatan yang baik.
Jika Anda perlu menggabungkan kembali hasil, Anda bisa membuat satu file dengan 7900 poligon yang tidak ingin Anda proses, kemudian memproses 100 poligon, dan bergabung kembali setelah pemrosesan.

MichaelStoner
sumber
0

Anda dapat membuat subset dari shapefile menggunakan org2ogrperintah, seperti yang dicontohkan di sini:

ogr2ogr memilih fitur berdasarkan atribut

Anda harus mengetahui kondisi untuk memilih fitur yang Anda inginkan.

Spacedman
sumber