______รู้สึกว่าปัจจุบันเรื่องของตำแหน่ง(location) นั้นกำลังเข้ามามีบทบาทใน Application ด้านต่างๆมากขึ้น สืบเนื่องมาจากเรื่องของอุปกรณ์บอกตำแหน่งเช่น GPS มีราคาถูกและกลายเป็น option ที่ปกติที่ติดกับอุปกรณ์สื่อสารผกพาเช่นโทรศัพท์มือถือ และที่สำคัญผู้พัฒนาโปรแกรมประยุกต์ต่างต้องการนำเอาค่าพิกัดตำแหน่งของผู้ใช้เข้าไปร่วมกับการประมวลผลต่างๆเช่นการประมวลผลสืบค้นข้อมูล ซึ่งแน่นอนว่าการสืบค้นประเภทนี้ย่อมมีการใช้ความสัมพันธ์เชิงตำแหน่งเข้ามาร่วมในการสืบค้น และรวมไปถึงการจัดเก็บข้อมูลบนฐานข้อมูลที่มีการสร้างความสัมพันธ์เชิงตำแหน่งร่วมเข้าไปด้วย ในรูปแบบ Spatial Database

______การหาค่าพิกัดตำแหน่งนั้น นอกจากจะคำนวณจาก GPS ซึ่งเป็นอุปกรณ์ระบุตำแหน่งด้วยดาวเทียมเพียงอย่างเดียวแล้วปัจจุบันเรายังมีทางเลือกในการคำนวณตำแหน่งจากเครือข่ายอินเตอร์เน็ต ทั้งแบบ wifi hotspot,Cell site  หรือจะคำนวณหาจากค่า Mac address รวมๆแล้วเรียกว่า เทคโนโลยีระบุตำแหน่งแบบ Geolocation ซึ่ง Geolocation นี้เป็นหนึ่งใน มาตรฐานของ HTML5 ที่อุปกรณ์พกพาและโปรแกรม web browser รุ่นใหม่ๆรองรับ เพื่อผนวกรวมเอาค่าพิกัด ณ ปัจจุบันของผู้ใช้ทั้งจาก GPS ,WIFI,Cellsite และจากวิธีอื่นๆมาใช้ใน Application โดยผู้พัฒนาเขียนโปรแกรมติดต่อการคำนวณหาตำแหน่งแบบมาตรฐานผ่าน Geolocation API บน layer นี้ซึ่งจะง่ายต่อการพัฒนา วันนี้ผมมีเทคนิคและวิธีการคำนวณหาค่าพิกัดด้วย Geolocation API มานำเสนอ

Geolocation API specification

______ Geolocation API specification มาตรฐานของ HTML 5 สำหรับการเขียนโปรแกรมเพื่อเรียกพิกัดของตำแหน่งปัจจุบัน โดยสามารถดูรายละเอียดได้จาก http://www.w3.org/TR/2008/WD-geolocation-API-20081222/ ซึ่งปัจจุบัน โปรแกรม Web Browser หลายตัวก็สนับสนุนการทำงานเช่น Firefox,Chrome,Safari,Opera (ยกเว้น IE อยู่ระหว่างการทดลอง) การเขียนโปรแกรมก็ไม่ยุ่งยาก สามารถเขียนในรูปแบบการ Getposition และแบบการ track position

function showMap(position) {
alert(position.coords.latitude+’,’+ position.coords.longitude).
}
// One-shot position request.
navigator.geolocation.getCurrentPosition(showMap);
กรณีที่ต้องการ track ตำแหน่งตลอดเวลา ก็ใช้
var watchId = navigator.geolocation.watchPosition(showMap);
เมื่อต้องการหยุดการ track ก็ทำลาย object โดยใช้คำสั่ง
navigator.geolocation.clearWatch(watchId);
____ ทดสอบการใช้งานได้ที่ http://html5demos.com/geo โดยท่านทำการอนุญาติให้ web browser เข้าถึงพิกัดก่อน โดยทำการ set permission เพื่อ share location การหาตำแหน่งก็จะคำนวณค่าพิกัดจากการสนับสนุนการหาตำแหน่ง ซึ่งขึ้นกับเครื่องปลายทาง ถ้ามี GPS และเปิด ตัว API ก็สามารถเข้าถึงและเรียกดูได้ หรือถ้าไมีก็อาจจะคำนวณหาจาก Cell site ของจุดจ่ายสัญญาณอินเตอร์เน็ต ซึ่งแน่นอนว่าความถูกต้องของพิกัดก็จะลดลงกว่าการหาตำแหน่งด้วยระบบ GPS  โดย Geolocation data ที่ได้ประกอบด้วยค่า พิกัด(lat,lon on WGS84) , accuracy, Speed, heading direction โดยเราสามารถสกัดค่าเหล่านี้ได้จาก javascript API
ตัวอย่างการ share location
ตัวอย่าง application
YQL Geo Library
______YQL Geo Library เป็น Javascript geolocation Lib ที่ผมชอบและใช้งานอยู่ โดยตัวนี้ทำงานได้บน Geolocation API และเพิ่มความสามารถการหาตำแหน่งจาก IP address รวมถึง Geocode Service และ Reverse Geocode service ความสามารถล้นหลายทำงานแบบ API แวะไปดาวน์โหลดมาใช้งานได้ฟรีที่ http://isithackday.com/hacks/geo/yql-geo-library/ ผมมีตัวอย่างการหาตำแหน่งแบบ Geolocation ของ lib ตัวนี้มาแนะนำ
yqlgeo.get(‘visitor’,function(o){
alert(o.place.name + ‘,’ + o.place.country.content +
‘ (‘ + o.place.centroid.latitude + ‘,’ +
o.place.centroid.longitude + ‘)’
);
});
ข้างบนเป็นตัวอย่างการหาพิกัดของ visitor ที่เข้า web ผ่าน w3c Geolocation API แบบ YQL
yqlgeo.get(‘217.12.14.240’,function(o){
alert(o.place.name + ‘,’ + o.place.country.content +
‘ (‘ + o.place.centroid.latitude + ‘,’ +
o.place.centroid.longitude + ‘)’
);
});
code ข้างบนเป็นการหาค่าพิกัดจาก IP address โดยสามารถระบุประเทศและตำแหน่งโดยประมาณได้
GeoIP API
_____Geo IP API เป็นระบบที่มี free IP database สำหรับการคำนวณค่าพิกัดจาก IP address ซึ่งเราสามารถนำมาใช้ได้กับ Web Application โดยผ่าน API ในภาษาต่างๆ เช่น PHP,Python, C# เป็นต้น สามารถไปดาวน์โหลดโปรแกรมได้ที่ http://www.maxmind.com/app/python ผมเองใช้ตัวนี้ผ่านทาง python มีตัวอย่างการใช้งานมาแนะนำดังนี้ครับ
import pygeoip
import os
os.chdir(r’C:\Users\user\Desktop\GEOIP’)
gic = pygeoip.GeoIP(‘GeoLiteCity.dat’)
print gic.record_by_addr(‘125.26.9.54’)
code ด้านบนเป็นการหาพิกัดจาก Ip address
ตัวอย่างผลลัพธ์การหาพิกัดจาก IP address
ถ้าต้องการหาพิกัด จาก Domain name ก็สามารถทำได้เช่นเดียวกันครับดังนี้
gic.record_by_name(‘google.com’)
ผลลัพธ์การหาพิกัดจาก domain name

อ้างอิงจาก