Cara terbaik untuk menghidupkan data radar di openlayers

9

Saya punya proyek menggunakan OpenLayers yang menampilkan data radar di peta. Data radar itu sendiri hanya sekelompok poligon yang masing-masing diisi dengan salah satu dari 6 warna yang mungkin. Tujuannya adalah untuk menghidupkan radar di peta. Setiap file berisi data radar untuk waktu tertentu dan file-file dipisahkan oleh sekitar 5 menit sehingga pendekatan saya saat ini adalah untuk loop melalui semua file dan memuatnya satu per satu ke dalam layer baru yang terpisah. Setelah setiap lapisan dibuat, visibilitasnya diatur ke false dan ditambahkan ke peta. Saya kemudian menghidupkan lapisan menggunakan timer yang menyalakan visibilitas satu lapisan dan mematikan visibilitas lapisan sebelumnya. Saat ini semua layer adalah layer vektor dan data dimuat dari file KML meskipun file data dapat berupa hampir semua format yang akan bekerja paling baik untuk proyek ini.

Masalah dengan pendekatan ini adalah bahwa begitu saya mencapai rentang waktu yang cukup besar (sekitar 3 jam atau lebih) dari data (setara dengan sekitar 36 lapisan) konsumsi memori menjadi cukup tinggi (sekitar 250mb). Produk akhir seharusnya mampu menangani hingga 18 jam data dalam satu loop yang berdasarkan angka di atas akan membutuhkan lebih dari 1GB memori hanya untuk animasi dan kemungkinan akan crash browser atau setidaknya membuatnya sangat lamban.

Saya mencoba hal yang sama menggunakan lapisan WMS untuk setiap lapisan tetapi menggambar ulang terlalu lambat (animasi mengubah lapisan setiap 100ms) dan konsumsi memori tidak jauh lebih baik daripada versi vektor.

Saya telah menjelajahi jaring mencoba menemukan beberapa contoh bagaimana melakukan ini tetapi sejauh ini datang dengan tangan kosong. Apakah ada orang di luar sana yang punya saran tentang cara melakukan ini? Saya akan mengambil ide apa pun yang Anda miliki saat ini karena saya sudah terjebak dalam hal ini selama berminggu-minggu sekarang tanpa jawaban yang terlihat.

TheOx
sumber

Jawaban:

9

Coba semacam jendela geser. Anda dapat buffer 10 lapisan sekaligus. Mulai menghancurkan lapisan dan menghapusnya dari DOM dan memori setelah Anda mencapai 10 lapisan. Jadi, sekali Anda menekan lapisan 10, lapisan 0-9 dihancurkan dan lapisan 20-30 dimuat dengan visibilitas ke false. Ini akan memberi Anda buffer sekitar 10 layer tetapi Anda dapat memodifikasi toleransi Anda sesuai keinginan untuk kinerja. Jika Anda merasa 20 layer berfungsi lebih baik, lanjutkan dengan 20.

          {Destroy Layers} |10|11...19|20| {Start Loading Layers}
|---------------------------------------------------------------------------|
                           
        Timespan           Current Possition
CaptDragon
sumber
Anda tuan adalah seorang jenius! Saya belum benar-benar mempraktikkannya, tetapi saya tidak melihat alasan mengapa itu tidak berfungsi, dan buffer yang dapat disesuaikan berarti kita dapat menyesuaikan ini lebih lanjut untuk berbagai lingkungan. Saya tidak bisa cukup berterima kasih atas saran ini!
TheOx
Terima kasih, saya harap ini berhasil dalam praktiknya. Beri tahu kami cara kerjanya.
CaptDragon
Baru saja menyelesaikan pengujian awal dan berfungsi dengan baik! Masih ada beberapa ruang untuk optimasi dalam kode tetapi metode ini menjaga jejak memori turun dan dapat dikonfigurasi berdasarkan memori mesin dan bandwidth klien. Sekali lagi terima kasih atas saran yang sangat baik!
TheOx
Luar biasa, senang mendengarnya.
CaptDragon
@CaptDragon: (atau TheOx) Apakah mungkin memposting ke contoh yang berfungsi? Saya mengerti solusinya tetapi melihat contoh sederhana dan kode akan sangat membantu karena saya memiliki masalah yang hampir sama. Terima kasih!
teknocreator
1

Sudahkah Anda mempertimbangkan untuk menyederhanakan lapisan vektor untuk mengurangi ukuran file mereka. Jika poligon berisi lebih banyak simpul daripada yang diperlukan untuk keperluan tampilan Anda maka menyederhanakan (menghaluskan) mereka akan mengurangi ukuran file dengan biaya detail yang dikurangi. Saya tidak yakin perangkat lunak apa yang Anda miliki, tetapi beberapa aplikasi desktop SIG mengandung fungsi geoproses untuk menyederhanakan fitur.

Wawrzonek yang kaya
sumber
Itu ide yang bagus tetapi sayangnya proyek ini membutuhkan menampilkan data dalam resolusi penuh. Namun saya akan mengingatnya untuk beberapa lapisan data lain di mana kita mungkin bisa menggunakan trik itu.
TheOx
1

Selain menyederhanakan data (bahkan sedikit dapat menghemat banyak ruang) pernahkah Anda mencoba MapServer atau cara lain untuk mengubah data Anda menjadi ubin dengan transparansi dan membuat lapisan peta untuk diletakkan di atas lapisan latar belakang. Saya telah melihat pendekatan ini dengan peta choropleth yang memiliki ratusan hingga ratusan ribu poligon (atau spidol), tetapi belum dapat mencobanya sendiri (karena persyaratan sisi server).

Gary
sumber