Bagaimana cara menggeneralisasi SpatialPolygons dan melestarikan topologi dalam R?

18

Saya ingin menggeneralisasi SpatialPolygonsDataFrame dalam R untuk membuat plot lebih efisien. Poligon saya menghasilkan plot pdf besar yang lambat dimuat dan sulit diintegrasikan ke dalam dokumen.

Saya mencoba menggunakan gSimplifyfungsi dari rgeospaket, tetapi sayangnya itu tidak menghemat topologi poligon.

Apakah ada alternatif yang bisa saya gunakan?

yellowcap
sumber
tidak benar-benar solusi, tetapi bisakah Anda merencanakan untuk raster (jpg / png) sebagai gantinya? Pertanyaan stackoverflow ini yang membahas pengurangan pdfsize mungkin berguna: stackoverflow.com/questions/8521299/…
djq
memplot peta sebagai gambar raster adalah pilihan, tetapi jika memungkinkan saya ingin menggunakan grafik vektor. Kualitas gambar lebih baik saat menggunakan grafik vektor, terutama ketika melihat versi digital dokumen.
yellowcap
gSimplify()memiliki parameter opsional topologyPreserveyang standarnya adalah FALSE. Sudahkah Anda mencoba mengaturnya TRUE?
krlmlr

Jawaban:

7

Ada diskusi tentang ini di r-sig-geo . Untuk jawaban yang pasti Anda harus bertanya di sana, karena ada orang yang tahu wawasan spasial R.

Tapi, Anda juga bisa melakukan ini di aplikasi desktop GIS (ekspor bentuk menggunakan perintah writeOGR dari rgdal atau writePolyShape () dari maptools) seperti QuantumGIS, GRASS atau SAGA.

Untuk QuantumGIS gunakan Vector / Geometry Tools / Sederhanakan geometri (Saya telah menguji dan tidak mempertahankan topologi, tetapi diterapkan ke Rumania admin1 shapefile, terlihat baik dengan 2000 node).

Untuk penggunaan GRASS v.generalisasi (baca manual untuk info tentang algoritme, ada beberapa).

Untuk SAGA, Anda harus terlebih dahulu mengubah poligon menjadi garis (Bentuk - Garis / Konversi Poligon ke Garis), kemudian menyederhanakan garis (Bentuk Garis / Penyederhanaan Garis), dan akhirnya mengubah garis menjadi poligon (Bentuk - Poligon / Mengubah Garis ke Poligon). Saya telah menguji ini dan hasilnya memiliki topologi yang dipertahankan.

Ceria dan semoga sukses,

Niculita Mihai
sumber
Sementara itu saya juga menemukan layanan online yang melakukan penyederhanaan sambil melestarikan topologi: mapshaper.org . Saya telah menggunakannya sebagai alternatif, karena tampaknya tidak mungkin di R secara langsung (QGis tidak benar-benar melestarikan topologi dan saya tidak tahu paket perangkat lunak lain)
yellowcap
1
Saya menguji pengamatan Anda dengan Saga 2.0.8, dan hasilnya tidak memiliki topologi yang dipertahankan!
Fabian Zeindl
2

Sekarang ada rmapshaperpaket luar biasa dari Andy Teucher yang mencakup fungsi penyederhanaan yang "melakukan penyederhanaan multi-poligon yang disadari secara topologi".

Dari repo github mereka, contoh penggunaan:

states_simp <- ms_simplify(states_sp)

dimana states_spsebuah spatialPolygons*benda.

Lihat paket README untuk informasi lebih lanjut: https://github.com/ateucher/rmapshaper

Phil
sumber
0

itu akan membantu:

  • gSimplify(..., topologyPreserve=T)dari GEOSpaket
petermeissner
sumber
2
Sayangnya opsi pelestarian topologi di gSimplifytidak benar-benar mempertahankan topologi selama beberapa poligon. Saya pikir ini lebih berhubungan dengan topologi single atau multipolygons. Untuk shapefile dengan banyak poligon, topologi tidak dilestarikan.
yellowcap