Menuju protokol untuk pengkodean data vektor sebagai gambar

16

Ini adalah tindak lanjut dari pertanyaan ini: Membuat Poligon Vektor dengan kinerja rendering seperti GISCloud?

Dalam jawabannya, Yagi menguraikan alasan untuk menyandikan informasi geografis dalam format gambar dan mendekodekannya di browser. Dia mengamati bahwa "Saat ini, untuk melakukan ini, Anda harus memutar sendiri". Dia juga mengamati bahwa saat ini tidak ada standar untuk ini.

Mengingat kinerja luar biasa yang ditunjukkan, sepertinya komunitas mungkin mendapat manfaat dari standar. Dari pemahaman saya tentang masalah ini, sepertinya cara standar untuk mengatasinya dapat diimplementasikan. Sebut saja B-WFS.

Pertanyaan saya, kemudian: seperti apa protokol yang berguna untuk menyandikan data vektor sebagai gambar? Apakah ada sesuatu yang membuatnya terlalu rumit untuk ditangani dengan bermanfaat, atau itu hanya kasus "belum ada yang melakukan ini"?

canisrufus
sumber
Saya minta maaf atas ketidaktahuan saya, mungkin saya tidak mengerti intinya, tetapi, seorang geotiff dengan meja warna tidak berhasil?
Pablo
2
Maaf atas ketidaktahuan saya juga;) Saya tidak yakin apa itu tabel warna, tapi saya rasa tidak. Tujuannya bukan untuk meneruskan gambar dengan metadata yang sesuai. Seperti yang Anda sebutkan, itu masalah yang terpecahkan. Tujuannya adalah untuk meneruskan data vektor dengan metadata dalam format yang lebih ringkas daripada UTF-8 yang dapat dibaca manusia. Mengingat bahwa JavaScript tidak diperlengkapi dengan baik untuk menangani data biner, solusinya adalah untuk menyandikan data dalam biner gambar dan mendekodekannya menggunakan HTML 5 Canvas untuk men-decode gambar dan kemudian mengubahnya menjadi objek vektor.
canisrufus
1
@Pablo Menganggap bahwa jaringan I / O (daripada parsing) adalah hambatan dalam berurusan dengan vektor di web, memiliki cara yang mapan untuk menangani vektor biner yang disandikan seharusnya membuatnya lebih mudah untuk menulis peta web yang berkinerja lebih baik.
canisrufus
Menarik, sekarang saya mengerti ... Saya mulai bekerja dengan peta web sekarang dan saya masih mempelajari dasar-dasarnya. BTW, colortable atau colormap adalah tabel yang mengikat nilai sel raster ke kelas.
Pablo
1
@monkut Ya, ini berbeda. :) Meraster satu set vektor hanya merendernya. Voila. Raster! Apa yang saya bicarakan dalam pertanyaan ini berbeda. Anda harus membaca jawaban Ragi di pertanyaan yang saya tautkan; yang seharusnya mulai menjelaskan apa yang saya maksud. Jika ternyata masih belum jelas, saya akan meluangkan waktu untuk menuliskan jawaban nyata.
canisrufus

Jawaban:

5

Ternyata ini adalah pekerjaan yang tidak perlu. XHR2, bagian dari peningkatan ke javascript, akan memungkinkan impor dan penguraian data biner tanpa memaksa apa pun.

canisrufus
sumber
4

Tidak perlu menjadi standar yang terpisah seperti itu, karena Spesifikasi Implementasi WFS 04-094, klausul 9.4 mengatakan:

Format output lain (termasuk versi GML, non-XML, binary, dan format khusus vendor) juga dimungkinkan selama nilai yang sesuai untuk atribut outputFormat diiklankan dalam dokumen kapabilitas [klausa 13]. Spesifikasi ini merekomendasikan agar naratif deskriptif dimasukkan dalam dokumen kapabilitas untuk setiap format output yang tercantum di sana.

Cara termudah untuk menambahkan dukungan biner adalah dengan hanya GZIP aliran JSON, di mana dekompresi ditangani secara otomatis oleh sebagian besar browser. Yang mengatakan, saya belum mencobanya, tetapi akan membutuhkan pekerjaan minimal di kedua sisi server dan klien, dengan asumsi keduanya sudah mendukung JSON terkompresi.

MerseyViking
sumber
+1 untuk poin tentang standar. Zip bukan pengkodean biner dalam arti yang sama. Pertanyaan tentang implikasi kinerja antara dua pendekatan, geojson zip vs geometri yang dikodekan dalam gambar, tentu perlu ditelusuri.
canisrufus
Anda benar, ini mengurangi hambatan jaringan, tetapi menempatkan beban yang lebih besar pada klien dan server. Tetapi pengkodean data vektor dalam suatu gambar adalah, IMO, suatu pendekatan sub-optimal karena variabel panjang data vektor. Ini juga mengaburkan sifat data vektor. Pendekatan yang lebih baik mungkin memiliki dua aliran data paralel, satu untuk vektor dan satu untuk raster, yang dapat ditangani oleh server dan perangkat penyimpanan yang berbeda dan kemudian digabungkan oleh klien.
MerseyViking
Masalah panjang variabel data vektor dapat ditangani pada dasarnya dengan cara yang sama jaringan menangani pengiriman paket. Saya setuju bahwa ini kurang optimal, tetapi kami sepertinya didorong oleh fakta bahwa JS tidak menangani biner dengan baik. Saya akan menulis dan mengimplementasikan sesuatu sendiri, karena saya punya waktu. Saya akan taruh di sini ketika saya membuat sesuatu bekerja ...
canisrufus
1
Saya benar-benar berpikir Ragi mendefinisikannya dengan jelas dalam jawabannya. Saya setuju bahwa saya tidak melakukannya. :) Mungkin hipotesis bahwa format biner bisa menjadi format transfer data yang lebih cepat secara keseluruhan adalah salah. Perbedaannya bisa diabaikan. Saya memang mengatakan bahwa "implikasi kinerja ... perlu ditelusuri." Jelas saya tidak bisa hanya mendefinisikan format biner dan kemudian menyatakan kemenangan. Kita lihat saja nanti!
canisrufus
1
@MerseyViking Tanpa harus mengulangi jawaban saya lagi, izinkan saya menempatkan ini dalam perspektif dalam hal siklus CPU (karena asumsi Anda adalah tentang optimasi prematur). Mengakses L1 Cache = 1 siklus CPU, L2 = 14 siklus, RAM ~ 250 siklus, Disk = 41.000.000, Jaringan (tergantung pada bandwidth, jadi mari kita berbaik hati) = 240.000.000. I / O, apakah berbasis disk atau berbasis jaringan (kasing kami) adalah urutan besarnya lebih lambat. Bagaimana memindahkan beban dari bagian terakhir spektrum ke yang pertama "prematur" dengan skala apa pun?
Ragi Yaser Burhum