Yani, başlık biraz garip. Biraz arka plan vereceğim ve sonra sorumu soracağım.
Arka plan : Bir web CBS uygulama geliştiricisi olarak çalışıyorum, ancak boş zamanlarımda harita oluşturma ve veri değişim formatlarını iyileştirme ile oynuyorum. Sadece 2B alanda çalışıyorum.
Karşılaştığım ilginç bir sorun, çokgenleri küçük bir ölçekte (yakınlaştırılmış çıkış yolu) oluşturduğunuzda, köşelerin çoğunun gereksiz olduğu. Aşırı bir durum, sadece tek bir pikseli kaplayan 500.000 köşeye sahip bir çokgene sahip olmanızdır. Bu verileri tarayıcıya gönderiyorsanız, bu köşelerin ~ 499,999'unu atlamak mantıklı olacaktır. Bunu başarabilmemizin bir yolu, bir sunucuda görüntü oluşturmak ve onu PNG: voila olarak göndermektir. Bununla birlikte, bazen, etkileşimli olabilmesi için tarayıcıya SVG (veya canvas veya webgl) ile oluşturulabilecek verilerin gönderilmesini istiyoruz.
Sorun : Modern coğrafi veri kümelerini kullanarak SVG'nin oluşturma yeteneklerini aşırı yüklemenin çok kolay olduğu ortaya çıkıyor. Bu sınırlamalarla başa çıkmak için, belirli bir ölçek ve harita kapsamı (ve gerekirse bilinen bir harita piksel genişliği ve yüksekliği için) için bir veri kümesini görsel olarak kayıpsız olarak nasıl azaltacağımı anlamaya çalışıyorum .
Sadece Douglas-Peucker algoritmasını kullanarak veri boyutunda büyük bir azalma elde ettim ve çokgenleri tek bir piksel içinde doğru tutmayı başarabildiğime inanıyorum. Ne yazık ki, Douglas-Peucker topolojiyi korumaz, bu nedenle çokgenler arasındaki sınırların nasıl işlendiğini değiştirdi. Denemek ve amaca uyum sağlamak için diğer algoritmaları kolayca bulamadım, ancak çok fazla CS / algoritma arka planım yok ve onları görürsem onları tanımayabilir.