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.