29 พฤษภาคม 2553

Thep

Meet OpenStreetMapper

หลังจากได้ blog เรื่อง OpenStreetMap ไปแล้ว ก็มีโอกาสได้นัดพบกับ Willi2006 ผู้ทำแผนที่ขอนแก่นใน OSM คนเดียว ก่อนที่ผมจะเข้าไปร่วม ก็ได้รับถ่ายทอดความรู้มาพอสมควร เลยมาเขียนบันทึกไว้ (เท่าที่สมองจะจำได้)

การทำ OSM นั้น แต่ละประเทศอาจใช้หลักการต่างกันไปในบางเรื่อง เช่น การใส่แท็กลำดับชั้นของเขตการปกครอง สำหรับประเทศไทย ก็มี หน้าวิกิ สำหรับรวบรวมข้อตกลงต่าง ๆ และมี forum สำหรับพูดคุยและถาม-ตอบด้วย

การเริ่มต้นทำ OSM นั้น ไม่มีข้อกำหนดตายตัวว่าจะต้องทำอะไรก่อนหลัง ขึ้นอยู่กับความสนใจของผู้ทำเป็นหลัก บางคนอาจจะวาดถนนก่อน บางคนอาจเพิ่ม point of interest (POI) ก่อน ที่สำคัญคือ อย่าให้ตัวเองรู้สึกยุ่งยากเกินไป ไม่งั้นจะเบื่อเร็ว ขอให้ทำด้วยความสนุก

การเพิ่มข้อมูลนั้น ควรทำในส่วนพิกัด GPS ให้ถูกต้องตั้งแต่แรก อย่าคาดหวังว่าจะมีคนอื่นมาแก้ให้ (ยกเว้นเรื่องชื่อหรือการใส่แท็กต่าง ๆ ซึ่งคนอื่นที่ไม่ได้ลงพื้นที่สามารถช่วยแก้ได้)

ไม่จำเป็นต้องมีอุปกรณ์ GPS ก็สามารถร่วมได้ เช่น ถ้ารู้ชื่อถนน ชื่อสถานที่ต่าง ๆ ก็สามารถเข้าไปแก้ไขชื่อที่อาจจะผิด หรือเพิ่มชื่อที่ขาดอยู่ได้ หรืออาจจะใช้ ภาพถ่ายดาวเทียมของ Yahoo! จาก Yahoo! maps ที่เปิดให้ OSM ใช้ได้ แต่ห้ามใช้ข้อมูลแผนที่ถนนโดยตรง ให้ใช้ได้เฉพาะภาพถ่ายดาวเทียมเท่านั้น ส่วน Google map นั้น ใช้ไม่ได้เลย เพราะข้อมูลมีลิขสิทธิ์คุ้มครองอยู่ แต่โชคไม่ดีที่ภาพถ่ายดาวเทียมที่สามารถใช้ได้นี้ ส่วนของประเทศไทยมีแต่ภาพความละเอียดต่ำเท่านั้น ไม่เพียงพอสำหรับทำแผนที่ถนน ผู้ไม่มีอุปกรณ์ GPS จึงมักแก้ไขได้เฉพาะเรื่องแท็กต่าง ๆ เท่านั้นในทางปฏิบัติ

ประเภทของถนน มีรายละเอียดปลีกย่อย เช่น ถ้าเป็นถนนย่อยที่มีบ้านเรือนอยู่สองข้างทาง ควรใช้แท็ก highway=residential ถ้าเป็นถนนที่รถต้องหลีกทางให้คน ก็ใช้ highway=living_street นอกนั้นส่วนใหญ่จะเป็น highway=unclassified ถ้าเป็นทางเล็ก ๆ ที่รถเก๋งเข้าไม่ได้ ก็แยกว่า ถ้ามีการทำผิวถนน เช่น ราดยาง หรือปูคอนกรีต ก็ใช้ highway=footway แต่ถ้าเป็นทางดินจึงใช้ highway=path

การทำสะพานข้ามแยก ถ้าไม่มีพิกัด GPS ของจุดตีนสะพานจริง ๆ ก็ไม่ควรทำ ปล่อยให้เป็นจุดตัดถนนธรรมดาจะดีกว่า แต่ถ้ามี ก็ให้ตัดแบ่งถนนตรงตีนสะพานทั้งสอง แล้วเชื่อมด้วยถนนที่มีแท็ก bridge=yes สำหรับสะพานที่ซ้อนกันหลายชั้น ก็ต้องใช้แท็ก layer=... กำกับแต่ละชั้นด้วย ดูตัวอย่างได้จากทางเส้นก๋วยเตี๋ยวต่าง ๆ ในกรุงเทพฯ ทางเชื่อมระหว่างถนนสองเส้น เช่น เพื่อเลี้ยวซ้ายหรือเลี้ยวขวาจากมอเตอร์เวย์ออกถนนเส้นอื่น ก็ทำทางเชื่อมเป็นถนนไม่มีชื่อ แต่ใช้แท็ก highway=motorway_link หรือ highway=primary_link ฯลฯ โดยอ้างอิงถนนเส้นที่ใหญ่กว่า

การทำแผนที่ปั๊มน้ำมัน อาจจะทำทางเข้า-ทางออกโดยใช้ highway=service และวาดเส้นล้อมรอบบริเวณปั๊มโดยใช้ highway=service เหมือนกัน แต่กำหนด area=yes ไว้ด้วย จากนั้นก็ใส่ POI พวกร้านกาแฟ ร้านสะดวกซื้อ อู่ซ่อมรถ ตามแต่จะมี แล้วสุดท้ายอย่าลืมใส่ POI ของปั๊มน้ำมันไว้ตรงกลางพื้นที่ด้วย (ดูตัวอย่าง)

การทำแผนที่สวนสาธารณะที่มีบึงหรือสระตรงกลาง ก็ทำพื้นที่รอบสวนกับพื้นที่ที่เป็นสระ แล้วกำหนด Relation:multipolygon แล้วกำหนด role ให้พื้นที่รอบสวนเป็น outer และตัวสระเป็น inner เพื่อแยกพื้นที่น้ำกับบกออกจากกัน

เทคนิคการทำแผนที่ส่วนที่เป็นแม่น้ำลำคลอง มีเทคนิคหลากหลายแล้วแต่แต่ละบุคคล ถ้าเป็นคลองที่มีถนนขนาบข้าง ก็ track ถนนก่อน แล้ววัดระยะระหว่างถนนหาจุดกึ่งกลาง แล้วใช้ potlatch (โปรแกรมแก้ไขที่เป็น flash อยู่บนเว็บ OSM) สั่งสร้างคลองน้ำขนานกับถนนในระยะที่กำหนดเอา ส่วนถ้าเป็นบึงหรือสระ ก็พยายามเดินเลาะให้ใกล้ฝั่งน้ำให้มากที่สุด จุดไหนที่เดินเข้าใกล้น้ำไม่ได้ ก็ใส่ POI กำหนดจุดที่เริ่มออกห่างจากฝั่งน้ำ กับจุดที่กลับเข้าหาฝั่งน้ำเอาไว้ แล้วใช้วิธีลากเส้นกะประมาณระหว่างสองจุดเอา วิธีนี้จะได้ฝั่งโดยประมาณในช่วงที่ขาด แต่ก็ถือว่าแม่นยำกว่าใช้ภาพถ่ายดาวเทียม

แม่น้ำนั้น การลงไปนั่งเรือ track ออกจะเป็นเรื่องลำบาก ถ้าเป็นแม่น้ำที่เห็นชัดในภาพถ่ายดาวเทียม ก็ลากเส้นตามภาพถ่ายดาวเทียมจะดีกว่า โดยใช้ WMS plugin ใน JOSM เพื่อซ้อนภาพได้ แต่ถ้าไม่มีภาพถ่ายดาวเทียม ก็อาจใช้วิธี track สองฝั่งน้ำแล้วลากเส้นกึ่งกลางเอา

วิธีเก็บข้อมูลถนนอย่างเร็วในกรณีที่มีเวลาน้อย: ไปตามถนนแล้วถ่ายป้ายชื่อถนนหรือป้ายสถานที่ไปตามทาง จากนั้นเมื่อกลับเข้า JOSM ก็โหลด GPS track พร้อมโหลดรูปเข้ามา ซึ่ง JOSM จะ sync เวลาที่ถ่ายรูปกับเวลาที่เก็บ track แต่ละจุดให้ ทำให้คลิกดูรูปที่ถ่ายตามจุดต่าง ๆ ใน track ได้

เท่าที่ระลึกได้ก็มีแค่นี้ครับ Willi เขาบอกว่ายินดีมากที่มีคนในท้องถิ่นเข้ามาทำ เพราะคนในพื้นที่จะมีความรู้เรื่องตรอกซอกซอยต่าง ๆ ดีกว่าคนต่างประเทศอย่างเขา โดยเฉพาะเรื่องชื่อภาษาไทย และยินดีให้คำแนะนำกับคนอื่น ๆ ที่สนใจ ถ้ามีคนไทยสนใจร่วมกันทำ OSM เรานัดมาเจอกันแล้วมาให้เขาติวให้ฟังเขาก็ยินดีครับ โดยเฉพาะถ้าอยู่แถวขอนแก่น เพราะเขาก็ตั้งใจจะปักหลักอาศัยที่ขอนแก่นไปให้นานที่สุดครับ และตอนนี้ หลังจากทำแผนที่ขอนแก่นไปเยอะแล้ว เขาก็เริ่มทำแผนที่อุดรฯ ต่ออยู่ครับ แต่ก็ทำได้ทีละนิดเพราะไม่ได้อยู่ประจำที่นั่น

โดย noreply@blogger.com (Thep) ณ 29 พฤษภาคม 2553 21:45 +0700

24 พฤษภาคม 2553

Thep

OpenStreetMap

กิจกรรมหนึ่งที่ DD ชวนกันทำระหว่างงาน Mini-DebCamp 2010 ก็คือ การช่วยกัน edit OpenStreetMap เวลาที่ออกไปข้างนอกกัน แหม.. มีกิจกรรมให้ contribute กันไม่เว้นแม้แต่เวลาเที่ยวเลยนะครับ

OpenStreetMap เป็นโครงการร่วมกันสร้างแผนที่ถนนในเมืองต่าง ๆ ทั่วโลก แล้วเผยแพร่ภายใต้ license Creative Commons Attribution-ShareAlike 2.0 (CC-BY-SA 2.0) โดยมีแนวคิดคล้ายกับ Wikipedia เพียงแต่เครื่องมือที่ใช้จะต่างไปจากการเขียนข้อความเท่านั้น

ผมคิดว่าเป็นแนวคิดที่ดี แผนที่ต่าง ๆ ที่มีอยู่นั้น ไม่ว่าจะเปิดแค่ไหน ก็ไม่อันไหนเปิดเท่าโครงการนี้ คือให้ความสะดวกในการแก้ไขตรวจสอบกันเอง และข้อมูลที่ได้ ก็ยังเปิดกว้างให้นำไปต่อยอดได้อย่างอิสระอีกด้วย แต่แน่นอนว่าความครบถ้วนของข้อมูลย่อมขึ้นอยู่กับจำนวนผู้ร่วมทำ

ผมเอง หลังจากที่ใช้โทรศัพท์มือถือจอขาวดำที่ได้รับบริจาคมาเป็นเวลาถึง 5 ปี จนแบตเสื่อม เสาอากาศหลุด สมุดโทรศัพท์พังกลายเป็นข้อมูลขยะไปแล้ว ก็ตัดสินใจก้าวกระโดดมาซื้อโทรศัพท์แอนดรอยด์ (hTC Tattoo) ในราคา 9,900 (โดยไม่ต้องเป็นนักศึกษา) ซึ่งยังถือว่าแพงสำหรับผม แต่มันก็ลดราคามามากแล้ว จาก 14,000 เลยหยวน ๆ โดยซื้อไปเมื่อก่อนงาน Mini-DebCamp จะเริ่มเล็กน้อย เครื่องนี้มี GPS แต่ก็ยังไม่พร้อมจะเริ่มทำ OpenStreetMap กับเขา เพราะเพิ่งจะหัดใช้ smart phone ได้ไม่กี่วัน แค่รับสาย-โทรออกเป็นก็บุญโขแล้ว

หลังจากหาข้อมูลสักพัก ลองเล่น Google Map ที่มากับ Android มันก็ต้องเชื่อมต่ออินเทอร์เน็ต พอออกไปนอกเมืองที่ไม่มีสัญญาณ EDGE/GPRS มันก็ไร้ประโยชน์โดยสิ้นเชิง จนมาเจอ MapDroyd จาก Android Market ที่สามารถดาวน์โหลดข้อมูล OpenStreetMap มาไว้ใช้แบบออฟไลน์ได้ ดูแล้วตัวนี้น่าจะมีประโยชน์กว่า ติดแต่ว่า ข้อมูลของ OpenStreetMap มันไม่ค่อยครบถ้วน แต่นั่นไม่ใช่ปัญหา เพราะเราสามารถช่วยกันเพิ่มได้ ผมสบายใจกับอิสระเสรีในการใช้ข้อมูลมากกว่า

แล้วจะแก้ไขข้อมูลอย่างไร? หน้าแรกที่จะเริ่มศึกษาข้อมูลก็คือ OpenStreetMap Wiki โดยเริ่มที่ Beginners' Guide โดยขั้นตอนหลัก ๆ คือ: เก็บ GPS track เป็น GPX, อัปโหลด GPX, แก้ไขแผนที่, เติมข้อมูล, สั่งวาดแผนที่

ซอฟต์แวร์ที่ใช้ในแต่ละขั้นตอนนั้น มีรวบรวมรายชื่อไว้ในหน้า Software โดยสำหรับอุปกรณ์ติดตามตัวก็มีให้ทั้ง Windows Mobile, iPhone และ Android แล้วก็มีเครื่องมือแก้ไขบนเดสก์ท็อปที่น่าสนใจสองตัว คือ JOSM และ Merkaartor (มีบน Debian ทั้งสองตัว)

ในที่นี้ขอเล่าเฉพาะตัวที่ผมได้ลองใช้มา

การเก็บข้อมูลด้วยโทรศัพท์ Android มีตัวเลือกหลายตัว แต่ที่ผมใช้เป็นประจำคือ OSM Tracker for Android เพราะสามารถเก็บ track พร้อมทั้งเพิ่ม POI (point of interest) ได้อย่างสะดวก ส่วนตัวอื่น ๆ เช่น GPS Logger for Android นั้น เก็บแต่ track อย่างเดียว เพิ่ม POI ไม่ได้

การแก้ไขแผนที่ เริ่มแรกผมใช้ Merkaartor ก่อน เป็นโปรแกรมที่ใช้ Qt เป็นฐาน หน้าจอสวยงามน่าใช้ แต่ต่อมาก็ได้รับคำแนะนำจาก Paul Wise ว่า ผู้เริ่มต้นควรเริ่มจาก JOSM จะดีกว่า ตัวนี้เป็นโปรแกรม Java อาจจะกินทรัพยากรมากกว่าก็จริง แต่มีฟีเจอร์ที่เป็น killer คือ preset ที่กำหนดเป็น template ไว้สำหรับเพิ่มข้อมูลประเภทต่าง ๆ พร้อมลิงก์ไปยังเอกสารประกอบบนเว็บอย่างครบครัน ในขณะที่ Merkaartor นั้น ผู้ใช้ต้องรู้จัก tag ต่าง ๆ พอสมควร เพราะมันให้เพิ่มเองหมด ได้ฟังอย่างนี้ก็เลยลอง แรก ๆ ก็สลับไปมาระหว่างสองตัว เพราะรู้สึกว่า Merkaartor มันให้ความรู้สึกเหมือนแก้แผนที่โดยตรงมากกว่า แต่พอใช้ JOSM ไปไม่นานก็คุ้นเคย แล้วก็เลยใช้แต่ JOSM อย่างเดียวมาตลอด

ช่วงกว่าอาทิตย์ที่ผ่านมา ผมเลยกำหนดเป็นกิจวัตรประจำวัน ที่จะออกไปสำรวจและเก็บ GPS track ทุกเย็นในละแวกบ้าน ถือเป็นการบังคับให้ตัวเองออกกำลังกายไปในตัว หรือบางทีออกไปธุระที่ไหนก็จะเก็บ GPS track ไปพร้อมกันด้วย แล้วก็กลับมา edit บนเครื่องที่บ้าน (ความจริงพอมีเครื่องมือแก้ไขแบบออนไลน์บนมือถืออยู่เหมือนกัน แต่ผมมันมนุษย์ออฟไลน์ครับ ไว้ให้มีคนออกค่า EDGE ให้ก่อนค่อยทำออนไลน์ เหอ ๆ)

แผนที่ในขอนแก่น พบว่าถนนหลัก ๆ นั้นครบถ้วนพอสมควร แต่ยังขาดถนนเล็กและซอยต่า