Bagaimana programmer grafis menangani render simpul yang tidak mengubah gambar?

10

Jadi, judulnya agak canggung. Saya akan memberikan latar belakang, dan kemudian mengajukan pertanyaan saya.

Latar Belakang : Saya bekerja sebagai pengembang aplikasi GIS web , tetapi di waktu luang saya telah bermain dengan rendering peta dan meningkatkan format pertukaran data. Saya hanya bekerja di ruang 2D.

Salah satu masalah menarik yang saya temui adalah bahwa ketika Anda merender poligon dalam skala kecil (diperbesar keluar), banyak dari simpul itu berlebihan. Kasus ekstrem adalah bahwa Anda memiliki poligon dengan 500.000 simpul yang hanya memakan satu piksel. Jika Anda mengirim data ini ke browser, masuk akal untuk menghilangkan ~ 499.999 dari simpul tersebut. Salah satu cara kita mencapainya adalah dengan merender gambar pada server dan mengirimkannya sebagai PNG: voila, itu intinya. Namun, kadang-kadang, kami ingin data dikirim ke browser tempat itu dapat dirender dengan SVG (atau kanvas, atau webgl) sehingga dapat bersifat interaktif.

Masalahnya : Ternyata, menggunakan set data geografis modern, sangat mudah untuk membebani kemampuan rendering SVG. Dalam upaya untuk mengatasi batasan-batasan itu, saya mencoba mencari cara untuk mengurangi secara visual lossless set data untuk skala dan luas peta tertentu (dan, jika perlu, untuk lebar dan tinggi piksel peta yang diketahui).

Saya mendapatkan pengurangan besar dalam ukuran data hanya dengan menggunakan algoritma Douglas-Peucker , dan saya percaya saya bisa mendapatkannya untuk menjaga poligon tetap benar dalam satu piksel. Sayangnya, Douglas-Peucker tidak mempertahankan topologi, jadi itu mengubah bagaimana batas antara poligon dibuat. Saya tidak dapat dengan mudah menemukan algoritma lain untuk dicoba dan beradaptasi dengan tujuan, tetapi saya tidak memiliki banyak latar belakang CS / algoritma dan mungkin tidak mengenalinya jika saya melihatnya.

canisrufus
sumber
1
Google untuk "Douglas-Peucker yang Secara Topologis Konsisten" dan Anda akan menemukan beberapa tautan ke abstrak beberapa artikel. Sayangnya, Anda harus membayar untuk artikel lengkap yang saya lihat.
Doc Brown
@DocBrown Terima kasih! Questia bahkan tampaknya memiliki uji coba gratis.
canisrufus

Jawaban:

3

Apa yang Anda cari adalah 2d level of detail algorithms.

Ada banyak yang terdokumentasi tentang ini di google jika Anda mencari istilah yang disorot.

Pertanyaan tentang stackoverflow ini memiliki informasi yang Anda cari pada rendering Level Detail 2D.

Komunitas
sumber
+1 untuk kosakata yang sangat terkait. Sepertinya saya sebenarnya menggunakan pendekatan level-of-detail, tetapi membutuhkan algoritma penyederhanaan poligon yang sesuai dengan kebutuhan saya. Ditemukan ikhtisar rapi untuk yang 3d. Saya percaya saya benar-benar berhasil menyusun strategi penyederhanaan yang cocok, meskipun saya belum punya waktu untuk kode itu.
canisrufus