วิธีที่ดีที่สุดในการแสดงรูปหลายเหลี่ยมหลายพันใน Openlayers คืออะไร


10

ฉันกำลังพยายามสร้างแผนที่ Openlayers ที่จะแสดงรูปหลายเหลี่ยมหลายพัน และเมื่อผู้ใช้คลิกที่แต่ละฉันต้องการให้บางส่วนของเมตาดาต้าที่จะแสดง การทำงานกับชุดข้อมูลขนาดใหญ่นี้ดูเหมือนว่าจะเป็นการท้าทาย แต่ฉันพยายามที่จะคิดออกว่ามีวิธีมาตรฐานที่จะไปเกี่ยวกับเรื่องนี้ เมื่อมาถึงจุดนี้ฉันคิดว่าฉันควรจะอย่างใดอย่างหนึ่ง

  1. แสดงรูปหลายเหลี่ยมของฉันด้วย WMS และใช้ getfeatureinfo
  2. แสดงด้วย WFS, โหลดด้วย Strategy.BBOX และใช้ GetFeature เพื่อรับข้อมูลเนื้อหา

มีวิธีตรรกะไหมที่ฉันพลาดการโหลดข้อมูลทั้งหมดนี้ลงในแผนที่และมีความเร็วที่ดี ฉันดูที่หน้านี้และพยายามหาว่าพวกเขาทำอะไร: http://protectedplanet.net/

คำตอบ:


5

ฉันไม่ชอบกลยุทธ์ BBOX เพราะฉันคิดว่ามันอาจช้าเนื่องจากจำนวนคำขอที่อาจสร้างขึ้น

ฉันจะใช้ทั้งสองอย่างรวมกันที่คุณพูดถึง

แสดงรูปหลายเหลี่ยมด้วย WMS และใช้ getfeatureinfo ... จากนั้นใช้ WFS เพื่อโหลดโครงร่างคุณลักษณะเมื่อคลิกและ / หรือรับข้อมูลเพิ่มเติมจากฐานข้อมูล

protectedplanet.net ไม่ได้ใช้ openlayers เพียงแค่ Google Maps พวกเขาอาจจะเก็บข้อมูลทั้งหมดไว้ใน KML / KMZ


ขอบคุณมาก! ฉันเดาว่าฉันถูกแล้ว แต่ฉันสงสัยว่าการป้องกันที่ต้องการใช้ KML หรือไม่ฉันควรทำอย่างนั้นเพื่อความเร็วหรือไม่ และข้อมูล KML นั้นถูกให้บริการโดย WFS หรือไม่
KyleK

ฉันไม่รู้แน่ชัดว่าเป็น KML หรือเปล่าเดาได้เลย แต่ถ้ามันไม่ได้ถูกให้บริการโดย WFS เพราะ WFS ใช้ GML สิ่งที่เกี่ยวกับการใช้ google apis และ KML คือคุณต้องมี KML นั้นใน URL สาธารณะที่ทุกคนสามารถเห็นได้ หากนั่นไม่ใช่ปัญหาคุณอาจลองดูก็ได้ เนื่องจาก Google ดูดซับ KML นี้ในเซิร์ฟเวอร์ของพวกเขาและส่งคืนกลับไปที่ API ด้วยเหตุผลสองข้อนี้ฉันไม่สามารถใช้ google maps API ได้เนื่องจากความไวของบางโครงการ
CaptDragon

คุณสามารถ จำกัด การเข้าถึง URL สาธารณะ KML ของคุณเพื่ออนุญาตเฉพาะตัวแทนผู้ใช้ที่แสดงสตริงตัวแยกวิเคราะห์ของ Google KML
Sarge

3

วิธีการหลักที่นี่คือการแยก rasterization ด้วยการโต้ตอบ วิธีการหนึ่ง (ว่าฉันบางส่วนรับผิดชอบ) เป็นUTFGridซึ่งได้ถูกนำมาใช้โดยเอ็นพีอาร์ ฯลฯและรวมอยู่ในTileMillและMapnik นอกจากนี้ยังใช้โดยCartoDBและ Google Maps ใช้วิธีการที่คล้ายกันสำหรับ Fusion Tables

ดาวเคราะห์ที่ได้รับการป้องกันก็ใช้แผ่นแรสเตอร์เช่นกัน (ตัวอย่างเช่นอันนี้:) http://184.73.201.235/blue/8/78/93และมีเซิร์ฟเวอร์สดที่อยู่ด้านหลังสำหรับการสืบค้นตามจุด (เช่นอันนี้ )

Re: CaptDragon: ไม่มี WFS หรือ KML ที่เกี่ยวข้อง

WMS และ WFS จะไม่มอบประสิทธิภาพที่ดีพอสำหรับไซต์สาธารณะ กลยุทธ์ BBOX จะไม่ทำงานหากคุณให้ผู้ใช้ซูม


FYI: คุณสามารถแคชบริการแรสเตอร์ WMS ซึ่งจะให้ไทล์คุณ
CaptDragon

1
ใช่ แต่นั่นไม่ใช่ปัญหาหลักที่นี่มันเป็นการโต้ตอบ คุณไม่สามารถแคชวิธีที่ WFS / WMS GetFeature ทำงานได้เนื่องจากมันไม่ได้ออกแบบมาเพื่อให้เป็นไทล์แคช
tmcw

ฉันแคช CSW, WFS และ WMS GetFeature, GetRecord และผลลัพธ์อื่น ๆ ตลอดเวลา นี่เป็นเพียงมาตรฐานของรูปแบบสำหรับการทำงานร่วมกันและไม่ได้กำหนดแหล่งที่มาไม่ว่าจะเก็บไว้ในแคชหรือไม่ก็ตาม
CaptDragon

คำขอ WFS GetFeature ทั่วไปคือคำขอสำหรับพิกัดเดียว แคชสำหรับคำขอนั้นเหมาะสำหรับการจับคู่ที่ตรงกันเท่านั้นซึ่งหายากในแง่ของการโต้ตอบกับผู้ใช้ ทางเลือกอื่นเช่นไพ่แคช UTFGrid ของข้อมูลและสามารถเติมแคชได้อย่างดีที่สุดซึ่งแตกต่างจากแคชสำหรับพิกัดที่อาจเกิดขึ้นหลายล้านครั้ง ด้วยวิธีนี้มาตรฐานจะกำหนดความเป็นมิตรกับแคช
tmcw

ว้าว - ขอบคุณสำหรับความช่วยเหลือทั้งหมด เนื่องจากฉันใช้ OpenLayers และแผนที่ของฉันอยู่ใน 4326 (ซึ่งไม่ได้รับการสนับสนุนโดย TileMill) คุณจะแนะนำ CartoDB ให้เป็นวิธีการจัดเก็บและเข้าถึงข้อมูลของฉันหรือไม่
KyleK
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.