Vektör verilerini resim olarak kodlamak için bir protokole doğru


16

Bu şu soruyu takip eder: GISCloud gibi oluşturma performansıyla Vektör Çokgenler mi oluşturuyorsunuz?

Cevabında Yagi, coğrafi bilgileri bir görüntü formatında kodlamak ve tarayıcıda kodunu çözmek için bir gerekçe ortaya koyuyor. "Şu anda bunu yapmak için kendinkini yuvarlaman gerektiğini" gözlemliyor. Ayrıca şu anda bunun için bir standart olmadığını gözlemlemektedir.

Gösterilen muhteşem performans göz önüne alındığında, topluluk bir standarttan yararlanabilir gibi görünüyor. Problemi anladığımdan, bununla başa çıkmanın standart bir yolu gibi görünüyor. Buna B-WFS deyin.

Benim sorum, öyleyse: vektör verilerini görüntüler gibi kodlamak için yararlı bir protokol ne olurdu? Yararlı bir şekilde mücadele etmeyi çok karmaşık hale getiren bir şey var mı, yoksa sadece "henüz kimse bunu yapmadı" mı?


Cehaletim için özür dilerim, belki anlayamadım, ama renk tablosu olan bir geotiff işi yapamadı mı?
Pablo

2
Cehaletim için de özür dilerim;) Bir renk tablosunun ne olduğundan emin değilim, ama öyle düşünmüyorum. Amaç, karşılık gelen meta verilere sahip bir görüntüyü aktarmak değildir. Bahsettiğiniz gibi, bu çözülmüş bir problem. Amaç, vektör verilerini metadata ile insan tarafından okunabilen UTF-8'den daha kompakt bir formatta iletmektir. JavaScript'in ikili verilerle başa çıkmak için yetersiz olduğu göz önüne alındığında, ortaya çıkan geçici çözüm bir görüntü ikili dosyasındaki verileri kodlamak ve görüntünün kodunu çözmek ve daha sonra vektör nesnelerine dönüştürmek için HTML 5 Canvas kullanarak kodunu çözmek.
canisrufus

1
@Pablo Ağ G / Ç'sinin (ayrıştırmak yerine) web üzerindeki vektörlerle uğraşmanın bir darboğaz olduğunu varsayarsak, daha iyi performans gösteren web haritaları yazmayı kolaylaştırmak için ikili kodlanmış vektörlerle başa çıkmak için belirlenmiş bir yol vardır.
canisrufus

İlginç, şimdi anlıyorum ... Şimdi web haritalarıyla çalışmaya başladım ve hala temel bilgileri öğreniyorum. BTW, bir colortable veya colormap, raster hücre değerini bir sınıfa bağlayan bir tablodur.
Pablo

1
@monkut Evet, farklı. :) Bir vektör kümesini rasterleştirmek sadece onu oluşturmaktır. Voila. Raster! Bu soruda bahsettiğim şey farklı. Bağlantı kurduğum soruda Ragi'nin cevabını okumalısınız; ne demek istediğimi açıklamaya başlamalı. Hala net olmadığını fark ederseniz, gerçek bir cevap bulmak için biraz zaman alacağım.
canisrufus

Yanıtlar:


5

Bunun gereksiz bir çözüm olduğu ortaya çıkıyor. Javascript yükseltmelerinin bir parçası olan XHR2, herhangi bir şeyi zorlamadan ikili verilerin içe aktarılmasına ve ayrıştırılmasına izin verecektir.


4

Bunun gibi ayrı bir standart olması gerekmez, çünkü WFS Uygulama Spesifikasyonu 04-094, madde 9.4:

OutputFormat özniteliği için uygun değerlerin yetenek belgesinde bildirildiği sürece, diğer çıktı biçimleri (GML'nin eski sürümleri, XML olmayan, ikili ve satıcıya özgü biçimler de dahil) mümkündür [madde 13]. Bu şartname, burada listelenen her bir çıktı biçimi için özellikler belgesine açıklayıcı bir narative [sic] eklenmesini önerir.

İkili destek eklemenin en kolay yolu, dekompresyonun çoğu tarayıcı tarafından otomatik olarak yapıldığı bir JSON akışı GZIP'dir. Bununla birlikte, denemedim, ancak her ikisinin de sıkıştırılmamış JSON'u desteklediğini varsayarak, hem sunucu hem de istemci tarafında çok az çalışma gerektireceğini söyledi.


Standart hakkında puan için +1. Sıkıştırma aynı anlamda ikili kodlama değildir. Bir görüntüde kodlanmış geometrilere karşı sıkıştırılmış bir geojson ile iki yaklaşım arasındaki performans sonuçları hakkındaki sorular kesinlikle araştırmaya değer.
canisrufus

Haklısınız, bu ağ darboğazını azaltır, ancak istemci ve sunucuya daha fazla yük getirir. Ancak bir görüntüdeki vektör verilerinin kodlanması, vektör verilerinin değişken uzunluğu nedeniyle IMO'dur. Aynı zamanda vektör verilerinin doğasını da şaşırtıyor. Daha iyi bir yaklaşım, biri vektör ve diğeri raster için olmak üzere, farklı sunucular ve depolama aygıtları tarafından işlenebilen ve daha sonra istemci tarafından birleştirilebilen iki paralel veri akışına sahip olmak olabilir.
MerseyViking

Vektör verilerinin değişken uzunluğu sorunu, ağların gönderme paketleriyle aynı şekilde ele alınabilir. Ben onun alt-optimal olduğunu kabul ediyorum, ama biz JS ikili ile iyi ilgilenmemesi gerçeği içine itilmiş gibi görünüyor. Zamanım olduğu için sadece kendim bir şeyler yazıp uygulayacağım.
Çalıştığım bir

1
Ragi'nin cevabında bunu açıkça tanımladığını düşünüyorum. Kabul etmediğime katılıyorum. :) İkili formatın genel olarak daha hızlı bir veri aktarım formatı olabileceği hipotezi yanlış olabilir. Fark ihmal edilebilir. Ben de "performans sonuçları ... keşfetmeye değer" dedim. Açıkçası ben sadece bir ikili biçim tanımlayamam ve sonra zafer ilan edemem. Göreceğiz!
canisrufus

1
@MerseyViking Cevabımı tekrarlamak zorunda kalmadan, bunu CPU döngüleri açısından perspektife koymama izin verin (varsayımınız erken optimizasyonla ilgili olduğu için). L1 Önbelleğine Erişim = 1 CPU döngüsü, L2 = 14 döngü, RAM ~ 250 döngü, Disk = 41.000.000, Ağ (bant genişliğine bağlıdır, bu yüzden nazik olalım) = 240.000.000. G / Ç, ister disk tabanlı ister ağ tabanlı (bizim durumumuz) büyüklük sırası daha yavaş olsun. Yükün spektrumun son kısmından herhangi bir ölçekte birinci "erken" değerine kaydırılması nasıl olur?
Ragi Yaser Burhum
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.