กันยายน 2009
วัตถุประสงค์
บทแนะนํานี้จะแนะนําพื้นฐานในการสร้าง Superer-โฆษณาซ้อนทับ ซึ่งเป็นชุดสร้างภาพซ้อนพื้นฐานที่ใช้ NetworkLinks ตามภูมิภาค โดยใช้ยูทิลิตี ไลบรารีข้อมูลภูมิศาสตร์ แบบโอเพนซอร์ส
บทนำ
ภูมิศาสตร์ เช่น Google Earth และ Google Maps จะแสดงภาพจากดาวเทียมและแผนที่แผนที่ แต่บางครั้งคุณอาจต้องการใช้โดเมนของตนเอง ภาพหรือข้อมูลแรสเตอร์มีหลายรูปแบบและมีการใช้งานหลากหลาย
- การวางภาพจากดาวเทียมหรือภาพถ่ายทางอากาศของคุณเองลงในเบราว์เซอร์ภูมิศาสตร์
- การวางแผนที่ในอดีตไว้ด้านบนของภาพที่มีอยู่ เช่น เลเยอร์ Rumsey Maps ใน Google Earth
- การนําเข้าข้อมูล GIS ในรูปแบบแรสเตอร์
- การวาง LIDAR หรือภาพอินฟราเรดในภูมิศาสตร์ทางภูมิศาสตร์
แต่ปัญหาหนึ่งเรื่องข้อมูลแรสเตอร์ความละเอียดสูงก็คือ ต้องใช้หน่วยความจําจํานวนมากในการแสดงข้อมูลดังกล่าว และถ้าคุณพุชผ่านอินเทอร์เน็ต คุณก็มีข้อกังวลเกี่ยวกับแบนด์วิดท์ด้วย หากต้องการแก้ไขปัญหานี้ คุณจะต้องสร้างการ์ด
ไทล์แบ่งไฟล์ภาพออกเป็นรูปภาพต่างๆ ที่โหลดเมื่อเข้ามาที่มุมมอง คุณจะสร้างรูปภาพความละเอียดต่ําหนึ่งรูปสําหรับแสดงขณะที่ผู้ใช้ซูมออก ในพื้นที่เดียวกัน คุณสร้างรูปภาพที่มีความละเอียดสูงขึ้น 4 ภาพเพื่อให้เห็นได้ใกล้ขึ้น สําหรับแต่ละพื้นที่ที่วางซ้อนด้วยรูปภาพ คุณสร้างรูปภาพความละเอียดสูงขึ้นอีก 4 ภาพสําหรับการซูมเข้าที่มากขึ้น และอื่นๆ ซึ่งเรียกว่าเมธอด quadtree และวิธีที่ไทล์ภาพสําหรับ Google Earth และ Google Maps ขั้นตอนดังกล่าวมีคําอธิบายโดยละเอียดอยู่ในบทความสําหรับนักพัฒนาซอฟต์แวร์ KML เกี่ยวกับภูมิภาค
คุณโดยใช้แอปพลิเคชันแก้ไขกราฟิก เช่น Adobe Shopphoto หรือ GIMP ของ Adobe ได้ด้วยตัวเอง ซึ่งอาจมีความซับซ้อน น่าเบื่อ และเกิดข้อผิดพลาดได้ง่าย นอกจากนี้ยังมีแอปพลิเคชันดีๆ จํานวนมากให้ใช้งานสําหรับ Windows โดยเฉพาะ เช่น Superโฆษณาซ้อนทับ, Arc2Earth และ MapCruncher รวมด้วย CrunchUp2KML
หากต้องการทําให้กระบวนการทํางานโดยอัตโนมัติ หรือเพิ่มฟังก์ชันให้กับแอปพลิเคชันของคุณเอง GDAL มีเครื่องมือจํานวนมากที่จะช่วยให้คุณทํางานกับแรสเตอร์และข้อมูลเวกเตอร์ได้ บทความนี้ครอบคลุมตัวเลือกบรรทัดคําสั่ง อย่างไรก็ตาม ไลบรารียังผสานรวมกับแอปพลิเคชันของคุณเองได้อย่างง่ายดาย สําหรับบทแนะนํานี้ คุณจะใช้ยูทิลิตี gdalinfo
, gdal_translate
, gdalwarp
และ gdal2tiles
ส่วนเอาต์พุตสุดท้ายคือการวางซ้อน
ขั้นตอนของบรรทัดคําสั่ง
การใช้ GDAL ที่บรรทัดคําสั่งมี 6 ขั้นตอน
- ดาวน์โหลดและติดตั้ง GDAL
- ดาวน์โหลดรูปภาพ
- ใช้
gdalinfo
เพื่อระบุข้อมูลเกี่ยวกับรูปภาพ - ใช้
gdal_translate
เพื่ออ้างอิงรูปภาพทางภูมิศาสตร์ - ใช้
gdalwarp
เพื่อเปลี่ยนการฉายภาพของรูปภาพ - ใช้
gdal2tiles
เพื่อแบ่งรูปภาพออกเป็นชิ้นส่วนและสร้างรหัส KML ที่เกี่ยวข้อง
ขั้นตอนที่ 1: ดาวน์โหลดและติดตั้ง GDAL
เริ่มต้นโดยการดาวน์โหลดและติดตั้ง GDAL ตามรายละเอียดที่นี่
ขั้นตอนที่ 2: ดาวน์โหลดรูปภาพ
คุณใช้รูปภาพใดก็ได้ แหล่งข้อมูลทางภูมิศาสตร์บนเว็บมีอยู่หลายแห่ง คุณใช้ทุกองค์ประกอบก็ได้ แต่ควรทราบขอบเขตของรูปภาพ เช่น ละติจูดและลองจิจูดของมุมแต่ละมุมของรูปภาพ บทแนะนํานี้ใช้รูปภาพ NASA Blue Marble ซึ่งพร้อมให้ดาวน์โหลดจากเว็บไซต์ของ NASA ภาพเหล่านี้ถ่ายในปี 2004 และนําเสนอภาพโลกที่สวยงามจากอวกาศ เลือกไฟล์ใดไฟล์หนึ่งที่ด้านล่างขวาของแถบนําทางด้านขวา
หากคุณใช้รูปภาพของตัวเองและทราบว่ารูปภาพดังกล่าวผ่านการระบุตําแหน่งทางภูมิศาสตร์แล้ว ให้ข้ามไปยังขั้นตอนที่ 5 หรือดําเนินการต่อในขั้นตอนที่ 3
ขั้นตอนที่ 3: ดูข้อมูลเกี่ยวกับรูปภาพ
เมื่อติดตั้งไลบรารี GDAL และเลือกรูปภาพแล้ว คุณต้องรับข้อมูลบางอย่างเกี่ยวกับอิมเมจดังกล่าวเพื่อให้สามารถระบุภูมิศาสตร์ได้ กล่าวคือคุณต้องมีตําแหน่งพิกเซลและเส้นของแต่ละมุมของรูปภาพ ถ้าคุณคิดว่ารูปภาพเป็นตารางที่มีคอลัมน์และแถว พิกเซลจะเป็นคอลัมน์ และเส้นคือแถว
GDAL มีเครื่องมือ gdalinfo
ที่มีประโยชน์สําหรับจับภาพข้อมูลนี้ เพียงพิมพ์ gdalinfo filename
ในบรรทัดคําสั่ง แทนที่ filename
ด้วยเส้นทางไปยังไฟล์ คุณจะได้รับเอาต์พุตที่มีลักษณะดังนี้
Driver: JPEG/JPEG JFIF Files: world_200401.jpg Size is 21600, 10800 Coordinate System is `' Image Structure Metadata: SOURCE_COLOR_SPACE=YCbCr INTERLEAVE=PIXEL COMPRESSION=JPEG Corner Coordinates: Upper Left ( 0.0, 0.0) Lower Left ( 0.0,10800.0) Upper Right (21600.0, 0.0) Lower Right (21600.0,10800.0) Center (10800.0, 5400.0) Band 1 Block=21600x1 Type=Byte, ColorInterp=Red Image Structure Metadata: COMPRESSION=JPEG Band 2 Block=21600x1 Type=Byte, ColorInterp=Green Image Structure Metadata: COMPRESSION=JPEG Band 3 Block=21600x1 Type=Byte, ColorInterp=Blue Image Structure Metadata: COMPRESSION=JPEG
ข้อมูลสําคัญสําหรับบทแนะนํานี้คือบรรทัดด้านซ้ายบน ด้านซ้ายล่าง ด้านขวาบน ด้านขวาล่าง รายการเหล่านี้จะบอกค่าพิกเซลและเส้นของแต่ละมุม ในกรณีนี้ ฝั่งซ้ายบนคือ 0,0 และด้านขวาล่างคือ 21600,10800
ขั้นตอนที่ 4: อ้างอิงรูปภาพ
การอ้างอิงภูมิศาสตร์ในกรณีนี้หมายถึงการสร้างข้อมูลเมตาที่อธิบายตําแหน่งทางภูมิศาสตร์ของแต่ละมุมของรูปภาพ โดยใช้ข้อมูลที่ได้รับในขั้นตอนที่ 3 และ gdal_translate
คุณสามารถกําหนดข้อมูลการอ้างอิงทางภูมิศาสตร์ให้กับไฟล์ได้ การดําเนินการนี้จะสร้างไฟล์ VRT จากรูปภาพ world_200401.jpg
ชื่อ bluemarble1.vrt
ไฟล์ VRT เป็นไฟล์ XML ที่มีข้อมูลเกี่ยวกับการเปลี่ยนรูปแบบ ซึ่งในกรณีนี้คือขั้นตอน gdal_translate
เราจะใช้ข้อมูลนี้อีกครั้งในขั้นตอนถัดไปเพื่อสร้างชุดชิ้นส่วนสุดท้าย gdal_translate
ให้คุณสร้างเอาต์พุตไฟล์ได้หลายประเภท ซึ่งรวมถึงรูปแบบไฟล์รูปภาพหลัก การใช้เอาต์พุต VRT ช่วยให้คุณปิดไฟล์เอาต์พุตไปจนถึงขั้นตอนสุดท้ายได้ วิธีนี้จะช่วยเพิ่มประสิทธิภาพและลดเวลารอในแต่ละขั้นตอนหากคุณใช้บรรทัดคําสั่ง คุณสามารถเรียกใช้คําสั่งต่อไปนี้
gdal_translate -of VRT -a_srs EPSG:4326 -gcp 0 0 -180 90 -gcp 21600 0 180 90 -gcp 21600 10800 180 -90 world_200401.jpg bluemarble1.vrt
ข้อมูลบนเส้นนี้มีมากมาย จึงแบ่งย่อยได้ดังนี้
-of
คือรูปแบบเอาต์พุต ในกรณีนี้คือ VRT-a_srs
กําหนดระบบอ้างอิงเชิงพื้นที่ให้กับไฟล์ ซึ่งหมายความว่าแอปพลิเคชันใดก็ตามกําลังใช้ระบบพิกัดใดอยู่ ในกรณีนี้จะใช้ EPSG:4326 ซึ่งเหมือนกับ WGS84 ซึ่งเป็นระบบพิกัดที่ Google Earth ใช้-gcp
หรือจุดควบคุมพื้นดิน จะกําหนดพิกัดให้กับตําแหน่งในไฟล์ ในกรณีนี้ คุณต้องมีจุดเพียง 3 จุด เนื่องจากรูปภาพเป็นสี่เหลี่ยมผืนผ้าและสามารถระบุส่วนที่สี่ได้ง่าย สําหรับ-gcp
ให้กําหนด gcp โดยตั้งค่าพิกเซล ตามด้วยหมายเลขบรรทัด จากนั้นตามด้วยลองจิจูดและละติจูด โดยแต่ละรายการจะคั่นด้วยการเว้นวรรค- พารามิเตอร์ 2 ตัวสุดท้ายคือไฟล์ต้นฉบับและไฟล์เป้าหมาย
ขั้นตอนที่ 5: แสดงรูปภาพ
รูปภาพต้นฉบับไม่ได้สร้างขึ้นสําหรับรูปวงกลม ซึ่งสร้างขึ้นเพื่อให้ดูเหมือนอยู่ในแนวราบ ในคําศัพท์ GIS จะคาดการณ์ ซึ่งหมายความว่าเป็นการสร้างมิติข้อมูล 2 มิติของออบเจ็กต์ 3 มิติ การฉายภาพต้องบิดเบือนรูปภาพเพื่อให้เป็นไปตามที่คุณคาดไว้ว่าจะเป็นภาพแบนของโลก
เพื่อทําให้ดูถูกต้อง คุณต้องครอบตัดรูปภาพให้พอดีกับโลก โชคดีที่ GDAL มีเครื่องมือดีๆ ให้เช่นกัน เพียงพิมพ์ gdalwarp -of VRT -t_srs EPSG:4326 bluemarble1.vrt bluemarble2.vrt
การดําเนินการนี้จะสร้างไฟล์ Bluemarble2.vrt ใหม่ ซึ่งจะระบุข้อมูลเมตาเกี่ยวกับกระบวนการโค้ง
ขั้นตอนที่ 6: สร้างการ์ด
เกือบเสร็จแล้ว แต่ส่วนนี้จะใช้เวลานานที่สุด หากต้องการสร้างการ์ด ให้พิมพ์ gdal2tiles.py -p geodetic -k bluemarble2.vrt
-k
บังคับให้เอาต์พุต KML ซึ่งจะสร้างโครงสร้างไดเรกทอรีที่มีการวางซ้อนขั้นสูง เนื่องจากไฟล์รูปภาพแต่ละไฟล์ต้องสร้างแยกกัน ระบบจึงจะใช้เวลาสักครู่ในการเรียกใช้ สําหรับรูปภาพขนาดใหญ่ คุณไปดื่มกาแฟ งีบหลับ เพื่อรับอาหารมื้อเล็กๆ ได้แล้ว เมื่อทําเสร็จแล้ว ให้เปิด doc.kml
และสังเกตผลลัพธ์
บทสรุป
บทแนะนํานี้จะขูดรอยต่อสิ่งที่ GDAL ทําได้ แต่ก็มีกลไกที่สะดวกสําหรับการสร้างการ์ด ไลบรารี GDAL หลักเขียนด้วย C++ แต่จะมีการเชื่อมโยงสําหรับ Perl, Python, VB6, R, Ruby, Java และ C#/.NET ซึ่งหมายความว่าคุณจะรวม GDAL เข้ากับแอปพลิเคชันของคุณเองได้โดยง่าย นอกจากนี้ ยูทิลิตีหลายแห่ง รวมทั้ง gdal2tiles
ยังเขียนอยู่ใน Python อีกด้วย ซึ่งทําให้รวมไว้ใน Python ได้ง่าย gdal2tiles
ยังสามารถสร้างหน้า Google Maps API และ OpenLayer ได้ด้วย