ตัวเลือกสำหรับการแสดง PostGIS rasters ใน OpenLayers


12

คำถามนี้คล้ายกับคำถามก่อนหน้านี้เกี่ยวกับการแสดงข้อมูลเวกเตอร์ในแผนที่เว็บ ฉันต้องการมีเว็บอินเตอร์เฟสพื้นฐานที่ใช้ OpenLayers และสามารถแสดงข้อมูลแรสเตอร์ที่อยู่ใน PostGIS ในปัจจุบันโดยใช้แผนที่ฐานเช่น google ฉันได้ติดตั้ง PostGIS2.0 พร้อมห้องสมุดแรสเตอร์และดูจากเอกสารประกอบว่ามีหลายตัวเลือกในการส่งออกข้อมูลเช่น JPEG, GeoTIFF และ PNG เป็นรูปแบบการแนะนำให้ใช้หรือไม่

ในการแสดงข้อมูลเวกเตอร์ฉันกำลังใช้จาวาสคริปต์เพื่อส่งพิกัดจากเบราว์เซอร์ของผู้ใช้ไปยังเซิร์ฟเวอร์ของฉันจากนั้นดำเนินการสืบค้นโดยใช้ PHP / SQL บน PostGIS ผลลัพธ์จะถูกส่งคืนเป็น GeoJSON ซึ่งสามารถซ้อนทับบนแผนที่ ฉันสงสัยว่าวิธีการที่คล้ายกันสามารถนำไปใช้กับ rasters ได้หรือไม่ แต่ฉันไม่รู้ว่ารูปแบบ raster ใดที่ดีที่สุดหรือมีข้อ จำกัด อื่น ๆ ที่ฉันควรพิจารณา

ฉันเห็นการอ้างอิง GeoServer จำนวนมาก แต่ฉันไม่แน่ใจว่าจำเป็นสำหรับโครงการนี้หรือไม่ (ฉันไม่แน่ใจว่าควรใช้ GeoServer ทั้งหมดหรือไม่)

คำตอบ:


13

Rastersเป็นรูปภาพดังนั้นรูปแบบที่ดีที่สุดจะเป็นรูปแบบรูปภาพ (png / jpg / ฯลฯ ) GeoJSON เป็นรูปแบบที่ดีสำหรับเวกเตอร์ คุณจะไม่มีทางเห็นว่ารูปโปรไฟล์ Facebook ของคุณจะถูกส่งกลับมาเหมือน json บริสุทธิ์ แน่นอนว่าการคืน URL ไปยังรูปภาพเนื่องจาก json นั้นแตกต่างกันมาก :)

เท่าที่ jpeg vs png เทียบกับการอภิปรายรูปแบบภาพอื่น ๆ มีความคิดเห็นที่แตกต่างกันมากมายเกี่ยวกับเรื่องนี้ อะไรมันเดือดลงไปคือว่าบางรูปแบบภาพเป็นlosslessในขณะที่คนอื่นจะสูญเสีย การตัดสินใจของคุณขึ้นอยู่กับสิ่งที่คุณจะทำกับข้อมูล สำหรับการวิเคราะห์คุณอาจไม่ทนต่อการสูญเสีย แต่สำหรับการแสดงสิ่งต่าง ๆ บนเว็บที่คุณต้องการ

PostGIS 2.0 สามารถสร้างภาพได้หรือไม่? แน่ใจ ดูที่ส่วนเอาต์พุต Raster

นี่เป็นความคิดที่ดีหรือไม่? มันขึ้นอยู่กับสิ่งที่คุณกำลังทำจริงๆ บางครั้งการสร้างภาพอาจใช้เวลานานมากจริงๆและคุณต้องการแคชเพื่อหลีกเลี่ยงการจ่ายราคาในการสร้างภาพเหล่านั้นทุกครั้งที่คุณร้องขอผ่านสภาพแวดล้อมเว็บ "แคช" เท่านั้นที่คุณสามารถทำได้บนฝั่ง PostGIS คือการบันทึกผลลัพธ์ลงในตารางอื่นจากนั้นทำการสืบค้นตารางแทนเมื่อคุณต้องการ Geoserver มีโครงสร้างพื้นฐานทั้งหมด ( GeoWebCache ) สำหรับทำสิ่งนี้

คุณต้อง GeoServer อาจจะไม่ได้ - แต่มันทำให้ชีวิตง่ายขึ้นมากเมื่อคุณมีตัวกลางนี้ที่ exposes ข้อมูลทั้งหมดของคุณโดยใช้บริการเว็บ OGC , ไม่แคช , จัดแต่งทรงผมของเวกเตอร์และเชิงภาพ สิ่งทั้งพวงมากขึ้น


ฉันเข้าใจวิธีสร้างภาพโดยใช้ PostGIS - สิ่งที่ฉันพยายามทำความเข้าใจคือวิธีที่ดีที่สุดในการโหลดภาพลงใน Openlayers ตัวอย่างเช่นถ้าฉันใช้ ST_AsPNG () - ฉันจะยังต้องระบุพิกัดบนและล่างที่ตำแหน่งของภาพนี้ ฉันคิดว่าอาจมีวิธีที่เรียบร้อยในการส่งคืนรูปภาพที่มีอยู่ในตัวเองซึ่งฉันสามารถโหลดลงใน openlayers ได้โดยตรง (นอกเหนือจากการใช้ geoserver)
djq

ใช่คุณสามารถโหลดโดยตรงไปยัง openlayers จาก st_aspng แต่จะต้องใช้งานเพิ่มเติม จากนั้นคุณต้องติดตาม bbox และเจาะจงเมื่อคุณโหลดมันdev.openlayers.org/apidocs/files/OpenLayers/Layer/Image-js.htmlเชื่อฉันเป็นเส้นทางยาว คุณควรปล่อยให้ geoserver หรือ mapserver ทำสิ่งนี้ พวกเขาให้ WMS / WMTS คืนให้คุณและคุณใช้รหัสสองบรรทัดเพื่อเพิ่มลงใน openlayers
Ragi Yaser Burhum

4

Mapserverมีการสนับสนุนโพสต์แรสเตอร์และเส้นทางสำหรับการตั้งค่าพื้นฐานมีให้ที่นี่ (ข้อ 9.9)

ในกรณีของคุณคุณต้องตั้งค่า Mapserver ให้ทำงานเป็นเซิร์ฟเวอร์ WMSเพื่อให้ส่งคืน rasters ของ Postgis เป็นเลเยอร์ WMS ปกติ เกือบจะเป็นเรื่องเล็กน้อยที่จะเพิ่มเลเยอร์ในแผนที่ OpenLayers ของคุณโดยใช้วัตถุเลเยอร์ WMS

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

หากคุณต้องการแคชกระเบื้องเพื่อลดภาระของเซิร์ฟเวอร์และปรับปรุงเวลาการตอบสนองพิจารณาใช้ mapcache หรือtilecache Mapcacheเป็นโครงการน้องของ Mapserver แต่ควรมีประสิทธิภาพสูงกว่าแคชอื่น ๆ ทั้งหมดเนื่องจากทำงานเป็นโมดูล apache

สำหรับผู้ใช้ Ubuntu วิธีที่ง่ายที่สุดในการติดตั้งการพึ่งพาของ Mapserver คือการเพิ่มUbuntu GIS PPAให้กับระบบของคุณ


Mapserver เป็นทางเลือกที่ยอดเยี่ยมจาก GeoServer (ฉันใช้สำหรับโครงการอื่น ๆ ) โดยทั่วไปฉันเลือก geoserver สำหรับลูกค้าของฉันเพราะมีส่วนต่อประสานที่ใช้งานง่าย อย่างไรก็ตามฉันต้องการชี้ให้เห็นว่าการให้บริการแคชของกระเบื้องกำลังให้บริการเนื้อหาแบบคงที่และโซลูชันใด ๆ ที่อิง nginx (หรือเซิร์ฟเวอร์ที่ไม่มีการบล็อกอื่น) จะเร็วกว่าโซลูชัน apache ใด ๆ - ในการแยกตามกระบวนการหรือโหมดเธรด
Ragi Yaser Burhum

ขอบคุณ @unicoletti ฉันสามารถใช้ Mapserver ได้หรือไม่ถ้าฉันต้องการสร้าง rasters ตามแบบสอบถามของผู้ใช้ ตัวอย่างเช่นถ้าฉันอนุญาตให้ผู้ใช้ระบุพื้นที่ใด ๆ (ภายในขอบเขตที่แน่นอน) จะช่วยให้ฉันสามารถสอบถามเชิงพื้นที่ของพื้นที่นั้นได้หรือไม่
djq

@celenius Mapserver และ GeoServer จะอนุญาตให้คุณทำเช่นนั้นได้
Ragi Yaser Burhum

1
@RagiYaserBurhum ฉันเปรียบเทียบ mapcache กับแคชอื่น ไทล์สแตติกไม่ได้พูดถึงแคชอย่างเคร่งครัด
unicoletti

0

ทุกอย่างขึ้นอยู่กับ ขนาดรูปภาพแคชห้องสมุดที่มีอยู่ (ตัวอย่างไดรเวอร์ jp2k ที่เป็นกรรมสิทธิ์บางอย่าง)

นี่คือลิงค์ไปยังไฟล์ PDF ที่ยอดเยี่ยม Geoserver บนสเตอรอยด์ สิ่งนี้จะนำคุณสู่รูปแบบต่างๆข้อดีข้อเสียและการตั้งค่าพื้นฐานบางอย่าง

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.