ต่อโปรโตคอลสำหรับการเข้ารหัสข้อมูลเวกเตอร์เป็นรูปภาพ


16

นี่เป็นคำถามที่ตามมา: การสร้าง Vector Polygons ด้วยการเรนเดอร์ประสิทธิภาพอย่าง GISCloud?

ในคำตอบของเขายากิสรุปเหตุผลในการเข้ารหัสข้อมูลทางภูมิศาสตร์ในรูปแบบภาพและถอดรหัสในเบราว์เซอร์ เขาตั้งข้อสังเกตว่า "ในปัจจุบันการทำเช่นนี้คุณต้องหมุนตัวเอง" เขายังตั้งข้อสังเกตอีกว่าปัจจุบันไม่มีมาตรฐานสำหรับเรื่องนี้

เมื่อได้รับการแสดงที่ยอดเยี่ยมดูเหมือนว่าชุมชนอาจได้ประโยชน์จากมาตรฐาน จากความเข้าใจของฉันเกี่ยวกับปัญหาดูเหมือนว่าจะเป็นวิธีมาตรฐานในการจัดการกับปัญหา เรียกมันว่า B-WFS

คำถามของฉัน: โปรโตคอลที่มีประโยชน์สำหรับการเข้ารหัสข้อมูลเวกเตอร์เป็นภาพจะเป็นอย่างไร มีบางอย่างที่ทำให้ซับซ้อนเกินกว่าจะจัดการได้อย่างเป็นประโยชน์หรือเป็นเพียงกรณีของ "ยังไม่มีใครทำสิ่งนี้"?


ฉันขอโทษสำหรับความไม่รู้ของฉันบางทีฉันอาจไม่ได้รับจุด แต่ geotiff กับตารางสีที่แผลไม่ทำงาน?
Pablo

2
ขออภัยในความเขลาของฉันด้วย;) ฉันไม่แน่ใจว่าตารางสีคืออะไร แต่ฉันไม่คิดอย่างนั้น เป้าหมายจะไม่ส่งต่อภาพที่มีเมทาดาทาที่เกี่ยวข้อง ดังที่คุณพูดถึงนั่นเป็นปัญหาที่แก้ไขแล้ว เป้าหมายคือการส่งต่อข้อมูลเวกเตอร์ด้วยข้อมูลเมตาในรูปแบบกะทัดรัดกว่า UTF-8 ที่มนุษย์อ่านได้ เนื่องจาก JavaScript นั้นมีความพร้อมในการจัดการกับข้อมูลไบนารีการแก้ปัญหาที่เกิดขึ้นคือการเข้ารหัสข้อมูลในไบนารีภาพและถอดรหัสโดยใช้ HTML 5 Canvas เพื่อถอดรหัสภาพแล้วเปลี่ยนเป็นวัตถุเวกเตอร์
canisrufus

1
@Pablo สมมติว่า I / O เครือข่าย (แทนที่จะแยกวิเคราะห์) เป็นคอขวดในการจัดการกับเวกเตอร์บนเว็บมีวิธีที่กำหนดไว้ในการจัดการเวกเตอร์ที่เข้ารหัสแบบไบนารีควรทำให้การเขียนแผนที่เว็บที่มีประสิทธิภาพดีขึ้นง่ายขึ้น
canisrufus

น่าสนใจตอนนี้ฉันเข้าใจแล้ว ... ฉันเริ่มทำงานกับ webmaps ตอนนี้และฉันยังคงเรียนรู้พื้นฐานอยู่ BTW, colortable หรือ colormap เป็นตารางที่เชื่อมโยงค่าเซลล์แรสเตอร์กับคลาส
Pablo

1
@monkut ใช่มันแตกต่างกัน :) การแปลงชุดเวกเตอร์เป็นเพียงการเรนเดอร์มัน voila Raster! สิ่งที่ฉันกำลังพูดถึงในคำถามนี้แตกต่างกัน คุณควรอ่านคำตอบของ Ragi ในคำถามที่ฉันเชื่อมโยง ที่ควรเริ่มอธิบายสิ่งที่ฉันหมายถึง หากคุณพบว่ายังไม่ชัดเจนฉันจะใช้เวลาสักครู่เพื่อตอบคำถามจริง
canisrufus

คำตอบ:


5

ปรากฎว่านี่เป็นการทำงานที่ไม่มีความจำเป็น XHR2 ซึ่งเป็นส่วนหนึ่งของการอัพเกรดเป็นจาวาสคริปต์จะช่วยให้การนำเข้าและการแยกวิเคราะห์ข้อมูลไบนารีโดยไม่ต้องข่มขู่อะไร


4

ไม่จำเป็นต้องเป็นมาตรฐานแยกต่างหากเช่นนี้เนื่องจากข้อกำหนดการใช้งาน WFS 04-094 ข้อ 9.4 บอกว่า:

รูปแบบเอาต์พุตอื่น ๆ (รวมถึง GML รุ่นเก่าไม่ใช่ XML และรูปแบบเฉพาะของผู้จัดจำหน่าย) ก็มีความเป็นไปได้ที่ค่าที่เหมาะสมสำหรับแอตทริบิวต์outputFormatจะถูกประกาศในเอกสารความสามารถ [ข้อ 13] ข้อมูลจำเพาะนี้แนะนำให้ใช้คำบรรยายเชิงบรรยาย [sic] เพื่อรวมไว้ในเอกสารความสามารถสำหรับแต่ละรูปแบบเอาต์พุตที่แสดงไว้ที่นั่น

วิธีที่ง่ายที่สุดในการเพิ่มการรองรับแบบไบนารีคือเพียง GZIP กับสตรีม JSON ซึ่งเบราว์เซอร์ส่วนใหญ่จะถูกจัดการโดยอัตโนมัติ ที่กล่าวว่าฉันไม่ได้ลอง แต่จะต้องทำงานน้อยทั้งในฝั่งเซิร์ฟเวอร์และฝั่งไคลเอ็นต์โดยสมมติว่าทั้งคู่รองรับ JSON ที่ไม่มีการบีบอัดอยู่แล้ว


+1 สำหรับจุดเกี่ยวกับมาตรฐาน การซิปไม่ใช่การเข้ารหัสแบบไบนารีในความหมายเดียวกัน คำถามเกี่ยวกับผลกระทบของประสิทธิภาพระหว่างสองวิธีคือ geojson ซิปกับรูปเรขาคณิตที่เข้ารหัสในรูปภาพ
canisrufus

คุณพูดถูกสิ่งนี้จะช่วยลดปัญหาคอขวดของเครือข่าย แต่ทำให้ลูกค้าและเซิร์ฟเวอร์มีภาระมากขึ้น แต่การเข้ารหัสข้อมูลเวกเตอร์ในภาพคือ IMO ซึ่งเป็นวิธีการย่อยที่ดีที่สุดเนื่องจากความยาวของตัวแปรของข้อมูลเวกเตอร์ นอกจากนี้ยังทำให้ธรรมชาติของข้อมูลเวกเตอร์ยุ่งเหยิง วิธีที่ดีกว่าอาจมีสตรีมข้อมูลแบบขนานสองรายการหนึ่งรายการสำหรับเวกเตอร์และอีกหนึ่งรายการสำหรับแรสเตอร์ซึ่งสามารถจัดการได้โดยเซิร์ฟเวอร์และอุปกรณ์เก็บข้อมูลที่แตกต่างกันและรวมกันโดยไคลเอนต์
MerseyViking

ปัญหาของความยาวผันแปรของข้อมูลเวกเตอร์นั้นสามารถจัดการได้ในลักษณะเดียวกับที่เครือข่ายจัดการกับการส่งแพ็กเก็ต ฉันยอมรับว่ามันย่อยดีที่สุด แต่ดูเหมือนว่าเราจะถูกผลักดันโดยข้อเท็จจริงที่ว่า JS ไม่จัดการกับไบนารีได้ดี ฉันจะเขียนและใช้งานบางอย่างด้วยตัวเองเพราะฉันมีเวลา ฉันจะวางไว้ที่นี่เมื่อฉันทำงานบางอย่าง ...
canisrufus

1
ฉันคิดว่า Ragi กำหนดไว้อย่างชัดเจนในคำตอบของเขา ฉันเห็นด้วยว่าฉันไม่ได้ทำ :) อาจเป็นไปได้ว่าสมมติฐานที่ว่ารูปแบบไบนารีอาจเป็นรูปแบบการถ่ายโอนข้อมูลโดยรวมที่เร็วขึ้นนั้นผิด ความแตกต่างอาจเล็กน้อย ฉันบอกว่า "นัยยะของประสิทธิภาพ ... คุ้มค่ากับการสำรวจ" เห็นได้ชัดว่าฉันไม่สามารถกำหนดรูปแบบไบนารีแล้วประกาศชัยชนะ เราจะเห็น!
canisrufus

1
@MerseyViking โดยไม่ต้องทำซ้ำคำตอบของฉันอีกครั้งให้ฉันใส่มุมมองในแง่ของรอบการทำงานของ CPU (เนื่องจากสมมติฐานของคุณเกี่ยวกับการปรับให้เหมาะสมก่อนกำหนด) การเข้าถึง L1 Cache = 1 รอบ CPU, L2 = 14 รอบ, RAM ~ 250 รอบ, ดิสก์ = 41,000,000, เครือข่าย (ขึ้นอยู่กับแบนด์วิดท์, ดังนั้นขอให้ใจดี) = 240,000,000 I / O ไม่ว่าจะเป็นดิสก์หรือตามเครือข่าย (กรณีของเรา) เป็นคำสั่งที่มีขนาดช้ากว่า การเปลี่ยนภาระจากส่วนสุดท้ายของสเปกตรัมไปสู่ ​​"ก่อนกำหนด" ในช่วงแรกโดยขนาดใด?
Ragi Yaser Burhum
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.