ค้นหาและดาวน์โหลดข้อมูลจาก OpenStreetMap

Warning

This tutorial is now obsolete. A new and updated version is available at Searching and Downloading OpenStreetMap Data (QGIS3)

ในงานใดๆ ของ GIS การมีข้อมูลที่มีคุณภาพถือเป็นสิ่งจำเป็น ซึ่งแหล่งข้อมูลคุณภาพแห่งนึงซึ่งเปิดเผยและนำไปใช้ได้ฟรีคือข้อมูลจาก OpenStreetMap(OSM) ฐานข้อมูลของ OSM จะประกอบไปด้วย ถนน, ข้อมูลพื้นที่ เช่นเดียวกับข้อมูล polygon ของตึกต่างๆ ซึ่งการนำข้อมูลจาก OSM มาผนวกใช้ใน QGIS ในรูปแบบข้อมูล GIS ถือว่าน่าสนใจมาก ซึ่งบทนี้จะอธิบายขั้นตอนการ ค้นหา, ดาวน์โหลด และ ใช้ข้อมูลของ OSM ใน QGIS

ภาพรวมของงาน

ค้นหา London ในฐานข้อมูล OSM มองหาและเลือกบางส่วนของเมือง จากนั้นเอาข้อมูลของสถานที่ๆ เป็นร้านเหล้า ออกมาในรูปแบบของ shapefile

ขั้นตอนการทำงาน

  1. เราจะใช้ plugin 2 ตัวในการทำงานี้ ตรงนี้ให้แน่ใจก่อนว่ามี plugin OSM Place Search และ OpenLayers ติดตั้งไว้แล้ว สามารถอ่านจาก การใช้งาน Plugin เพื่อดูวิธีดาวน์โหลดและติดตั้ง plugin

../_images/1174.png
  1. plugin OSM Place Search จะถูกติดตั้งเป็น Panel ใน QGIS ซึ่งคุณจะเห็นพาเนลใหม่ชื่อ OSM place search... ใน QGIS

../_images/2143.png
  1. ส่วน plugin OpenLayers จะถูกติดตั้งในเมนู Plugin ซึ่ง plugin นี้จะทำให้คุณเข้าถึง basemaps ได้จากหลายๆ provier ใน QGIS ต่อไปเราจะโหลดข้อมูล basemap OpenStreetMap ใน QGIS โดยไปที่เมนู Plugins ‣ OpenLayers plugin ‣ Add OpenStreetMap layer

../_images/379.png
  1. You will see a World map loaded in QGIS.

Note

ถ้าคุณไม่เห็นข้อมูลใดๆ - ให้ลองเช็คดูว่าคุณออนไลน์หรือยัง - เพราะ basemap จะถูกดึงมาจากอินเตอร์เน็ต คุณสามารถใช้เครื่อง Pan เพื่อเลื่อนแผนที่ ซึ่งจะทำให้ basemap อัพเดทการแสดงผล

../_images/447.png
  1. ตอนนี้เรามาลองค้นหาเมือง London กัน โดยให้พิมพ์คำค้นที่กล่อง Name contains... ในพาเนล OSM Place Search เมื่อคุณนำเมาส์เลื่อนไปที่ผลลัพธ์ที่ได้จากการค้นหา คุณจะเห็นสถานที่ที่เลือกถูกทำไฮไลท์บนแผนที่ ให้เลือกผลลัพธ์แรก - ซึ่งคือเมืองลอนดอนในสหราชอาณาจักร - จากนั้น คลิกที่ปุ่ม Zoom

../_images/545.png
  1. คุณจะเห็น base layer ถูกเคลื่อนมายังกึ่งกลาง ซึ่งเป็นพื้นที่รอบๆ เมืองลอนดอน คุณสามารถใช้เครื่องมือ Zoom เพื่อซูมและเลือกพื้นที่ๆ คุณสนใจได้ สำหรับบทนี้ เราจะซูมเข้าไปที่ใจกลางเมืองดังในรูป

../_images/643.png
  1. ตอนนี้เราสามาถดาวน์โหลดข้อมูลที่แสดงผลอยู่ขณะนี้ได้แล้ว โดยไปที่เมนู Vector ‣ OpenStreetMap ‣ Downlod data

../_images/743.png
  1. ในหน้าต่าง Download OpenStreetMap data ให้เลือก From map canvas as the Extent จากนั้นเลือกที่เก็บไฟล์โดยตั้งชื่อว่า london.osm

../_images/842.png
  1. The downloaded file with the .osm extension is an text file in the OSM XML format. We first need to convert it into a suitable format that is easy to consume in QGIS. Go to Vector ‣ OpenStreetMap ‣ Import topology from XML.

Note

ตอนนี้เราไม่ต้องใช้ OSM Place Search แล้ว สามารถคลิกปิดไปได้เลย แต่ถ้าคุณอยากใช้อีกครั้ง ก็สามารถเปิดใช้ได้จากเมนู View ‣ Panels ‣ OSM place search... (วินโดวส์) หรือ Settings ‣ Panels ‣ OSM place search... (ลินุกซ์)

../_images/943.png
  1. ในช่อง Input XML file ให้เลือกไฟล์ london.osm ที่ดาวน์โหลดมา ส่วนช่อง Output SpatiaLite DB ใช้บันทึกเป็นไฟล์ ``london.osm.db` และให้แน่ใจว่าได้ติ๊กที่ช่อง Create connection (SpatiaLite) after import ไว้ด้วย

../_images/1050.png
  1. ขั้นตอนสุดท้าย เราต้องสร้าง SpatialLite geometry layer ซึ่งสามารถนำมาวิเคราะห์ใน QGIS ได้ ซึ่งสามารถทำได้โดยใช้เมนู Vector ‣ OpenStreetMap ‣ Export topology to SpatialLite

../_images/1175.png
  1. ไฟล์ london.osm.db จะมีข้อมูลครบทุกประเภทในฐานข้อมูลของ OSM คือ จุด, เส้น และ Polygons ปกติแล้วชั้นข้อมูลของ GIS หนึ่งชั้น จะประกอบไปด้วยข้อมูลชนิดเดียว ตอนนี้คุณต้องเลือกมาสักชนิดหนึ่ง ซึ่งเรากำลังสนใจข้อมูลข้อมูลของตำแหน่งร้านเหล้า ตรงนี้เราต้องเลือก Point (nodes) เป็น Export type ถ้าคุณเลือก Polylines (open ways) คุณก็จะได้ข้อมูลถนน จากนั้นตั้งชื่อไฟล์ที่ช่อง Output layer name เป็น london_points ข้อมูลใน GIS จะมี 2 ส่วนคือ พิกัดตำแหน่งและ attribute และเราสนใจ name หรือชื่อของร้านเหล้าด้วยเช่นกัน ซึ่งไม่ใช่เพียงเฉพาะพิกัดตำแหน่งเท่านั้นที่เราต้องการ เรายังต้องการชื่อของร้านเหล้าด้วยเช่นกัน คลิกที่ Load from DB ที่อยู่ในหมวด Exported tags จะเป็นการดึงข้อมูล attributes ทั้งหมดมาจากไฟล์ london.osm.db ให้ติ๊กเลือกที่ name และ amenity หากคุณอยากรู้เพิ่มเติมเกี่ยวกับความหมายของ attribute ต่างๆ สามารถดูได้ที่ OSM Tags ตอนนี้ให้แน่ใจว่าให้เลือกตัวเลือก Load into canvas when finished ไว้แล้ว จากนั้นคลิกที่ปุ่ม OK

../_images/1252.png
  1. คุณจะเห็นชั้นข้อมูลที่เป็นจุดชื่อ london_points ถูกโหลดลงใน QGIS ซึ่งข้อมูลที่เป็นจุดต่างๆ นี้ เป็นข้อมูลจุด ทั้งหมด ในฐานข้อมูล OSM แต่เราสนใจเฉพาะข้อมูลของร้านเหล้า เราจึงต้องเขียนตัวกรองข้อมูลเพื่อเลือกเฉพาะที่เราต้องการ โดยคลิกขวาที่ชั้นข้อมูล london_points และเลือก Open Attribute Table

../_images/1350.png
  1. คุณจะเห็นได้ว่าในบางแถวข้อมูลจะมีค่าที่ชื่อ pubs อยู่ ซึ่งอยู่ในคอลัมน์ชื่อ amenity ให้คลิกที่ปุ่ม Select features using an expression

../_images/1447.png
  1. ให้ป้อนค่า "amenity" = 'pub' จากนั้น คลิกที่ปุ่ม Select.

../_images/1544.png
  1. กลับมายังตัวโปรแกรม QGIS คุณจะเห็นบางจุดถูกทำไฮไลท์สีเหลืองไว้ นั่นคือผลลัพธ์จากการกรองข้อมูล ให้คลิกขวาที่ชั้นข้อมูล london_points อีกครั้ง จากนั้นเลือก Save Selection As...

../_images/1641.png
  1. ในหน้าต่าง Save vector layer as... ให้ป้อนชื่อไฟล์ที่ต้องการจะบันทึกเป็น london_pubs.shp โดยไม่ต้องเลือกตัวเลือกใดๆ ยกเว้นตัวเลือก Add saved file to map จากนั้นคลิกที่ปุ่ม OK

../_images/1738.png
  1. คุณจะเห็นชั้นข้อมูลใหม่ชื่อ london_pubs ใน QGIS ให้กดปิดการแสดงผลของชั้นข้อมูล london_points ซึ่งเราไม่ได้ใช้แล้ว

../_images/1836.png
  1. ตอนนี้ข้อมูล shapefile ของร้านเหล้าก็เสร็จแล้ว คุณสามารถใช้เครื่องมือ Identify เพื่อคลิกดูแต่ละจุดว่ามีข้อมูล attribute ใดอยู่บ้าง

../_images/1928.png

If you want to report any issues with this tutorial, please comment below. (requires GitHub account)