วันศุกร์ที่ 26 ธันวาคม พ.ศ. 2557

การติดตั้งและเริ่มต้นการใช้งานโปรแกรม QGIS 2.6.1

 1. ดาวน์โหลดโปรแกรมที่เว็บไซต์ http://www.qgis.org แล้วคลิกที่ปุ่ม Download Now


2. คลิกเลือกในส่วนของระบบปฏิบัติการแบบ Windows และจากนั้นให้เลือกดาวน์โหลดเป็นแบบ 32 bit (ท่านไหนที่ต้องการจะเลือกแบบ 64 bit ก็สามารถเลือกได้เช่นกัน)


3. เมื่อดาวน์โหลดโปรแกรมเสร็จแล้ว ให้ดับเบิ้ลคลิกเพื่อทำการติดตั้งโปรแกรม QGIS จากนั้นให้คลิกปุ่ม Next

4. ในส่วน License Agreement เป็นการยอมรับลิขสิทธิ์ของโปรแกรม แล้วคลิก I Agree


5. กำหนดโฟลเดอร์ที่ต้องการจะติดตั้ง ซึ่งตามค่าเริ่มต้นของโปรแกรมส่วนใหญ่แล้ว จะทำการติดตั้งไว้ที่ไดร์ C:\Program Files\QGIS Brighton ให้คลิกปุ่ม Next


6. โปรแกรมจะถามว่า คุณต้องการที่จะเลือกติดตั้งข้อมูลตัวอย่างอะไรบ้าง ในส่วนนี้ไม่ต้องเลือกให้คลิกปุ่ม Install

7. จากนั้นเริ่มการติดตั้งโปรแกรม QGIS กรุณารอสักครู่

8. เมื่อทำการติดตั้งโปรแกรมเสร็จแล้วให้เลือก I want to manually reboot later และคลิกที่ปุ่ม Finish


9. ทดลองเปิดโปรแกรม QGIS โดยไปที่ Start>>All Program >> QGIS Brighton >> QGIS Brighton (2.6.1) หรือดับเบิลคลิกไอคอนที่ หน้าจอ Desktop ก็ได้

10. มีส่วนที่เพิ่มเติมขึ้นมาอีกไอคอนหนึ่งมีชื่อว่า QGIS Browser (2.6.1) ซึ่งการใช้งานก็จะมีลักษณะคล้ายๆ กับ ArcCatalog แต่ฟังก์ชันการใช้งานจะไม่เท่ากับ ArcCatalog ครับ โดยส่วนใหญ่เอาไว้เรียกดูข้อมูลและสร้างข้อมูล


ศึกษาเพิ่มเติมได้ที่ --> http://docs.qgis.org/2.6/en/docs/user_manual/index.html

วันจันทร์ที่ 15 ธันวาคม พ.ศ. 2557

สร้าง Mapfile ด้วย RT MapServer Exporter ด้วยโปรแกรม QGIS 2.0

_______ปลั๊กอิน RT MapServer Exporter เป็นอีกตัวช่วยหนึ่งในการสร้าง Mapfile เพื่อเอาไปสร้าง Web Map Service ด้วย MapServer ท่านสามารถศึกษารายละเอียดเพิ่มเติมได้ที่ http://www.mapserver.org/documentation.html


1. ติดตั้งปลั๊กอิน RT MapServer Exporter

2. ติดตั้งปลั๊กอิน RT MapServer Exporter เรียบร้อยแล้ว

3. ปลั๊กอินนี้จะอยู่ที่เมนู Web > RT MapServer Exporter > Export project to mapfile

4. เกี่ยวกับนักพัฒนาปลั๊กอินนี้

5. ก่อนที่จะ Export project to mapfile ก็จะต้อง Save Project ก่อน

6. ตั้งชื่อโปรเจค mapserv_export

7. เปิดปลั๊กอิน RT MapServer Exporter ขึ้นมาแล้วคลิกปุ่ม Browse เพื่อบันทึก mapfile

8. เลือก path และตั้งชื่อ mapfile เป็น thailand.map

9. เมื่อเสร็จแล้วคลิกปุ่ม OK

10. Mapfile ที่ได้

11. จากนั้นลองนำไปทดสอบกับ MapServer

Download Plugin: https://plugins.qgis.org/plugins/rt_mapserver_exporter/

ติดตั้ง QGIS 2.7.0-Master Version

______สืบเนื่องจากบทความ OSGeo4W Shell ครับ ก็เลยมาแนะนำการติดตั้ง QGIS 2.7.0-Master ครับ

1. วิธีการติดตั้งก็เลือก qgis-dev

2. Splash QGIS 2.7.0-Master

3. ทดสอบการใช้งาน QGIS 2.7.0-Master

Reference: http://qgis.org

อัพเดพ OSGeo4W แบบ Weekly ด้วย OSGeo4W Shell

_______ห่างหายจากการเขียนบล็อกไปนานครับครั้งนี้ แต่ผมยังไม่ได้เลิกเขียนน่ะครับและก็ยังคงอัพเดพข่าวสารทางด้านนี้เป็นประจำโดยผมก็จะแชร์ผ่านบล็อกนี้เหมื่อนเดิมครับ วันนี้ผมมาแนะนำการใช้งาน OSGeo4W Shell เมื่อเราติดตั้ง OSGeo4W แบบ Advanced มันก็จะมีไอคอน OSGeo4W Shell ปรากฏอยู่ซึ่งมันก็เอาไว้ทำงานสำหรับคนที่ชอบแบบ Command Prompt เหมือนๆ กับ FWTools ที่เรียกเอาไลบรารี่ของ GDAL/OGR เข้ามา แต่ OSGeo4W Shell นั่นมีไลบรารี่เยอะมากๆ แต่ก็ขึ้นอยู่ที่เราจะเรียกใช้งานเองครับ ซึ่งผมจะแนะนำวิธีการอัพเดพเวอร์ชั่นของโปรแกรมที่อยู่ในโครงการของ OSGeo Project เพราะว่าแต่ละโปรแกรมนั้นก็มีเวอร์ชั่นในการอัพเดพบ่อยมากเพื่อให้เราได้ลองเวอร์ชั่นใหม่ๆ ผมก็เลยได้ใช้วิธีในการอัพเดพครับ

1. เปิด OSGeo4W Shell แล้วพิมพ์ setup

2. เลือก Advanced install

3. เลือก Install from Internet

4. เลือก Root Install Directory

5. เลือกที่เก็บ Package สำหรับไปดาวน์โหลดที่จะเก็บไว้

6. เลือก Direct Connection

7. เลือก URL ดังภาพ แล้วคลิก Next

8. จากนั้นก็จะเห็นแต่ละโปรแกรมนั้นจะมีการอัพเดพเวอร์ชั่นใหม่ๆ

9. รอจนกว่าจะดาวน์โหลดเสร็จ และกำลังติดตั้ง

10. ติดตั้งสำเร็จ

วันศุกร์ที่ 8 สิงหาคม พ.ศ. 2557

ทดสอบการใช้งาน pgRouting เบื้องต้น

1. pgRouting คืออะไร ทำงานยังไง
        pgRouting is a free, open-source project maintained by PostLBS, which provides core tools for Location Based Services (LBS) as Open Source Software (OSS). pgRouting adds routing and other network analysis functionality. A predecessor of pgRouting – pgDijkstra, written by Sylvain Pasche from Camptocamp, was later extended by Orkney and renamed to pgRouting. The project is now supported and maintained by Georepublic, iMaptools and a broad user community.
 

วัตถุ ประสงค์หลักของ pgRouting คือ จัดหาฟังก์ชั่นสำหรับการใช้งานใน PostgreSQL/PostGIS. เพื่อสร้างเครื่องมือในการคำนวนหาระยะทาง ซึ่งจะคล้าย ๆ กับ ชุดคำสั่งในโปรแกรมบางโปรแกรมเช่น คำสั่งการค้นหาระยะทางที่ใกล้ที่สุดในโปรแกรม ArcGIS หรือใน PostGIS และไม่เฉพาะในเรื่องของระยะทางบนถนนเท่านั้น แต่สามารถใช้ได้กับข้อมูลอะไรก็ได้ที่เกี่ยวกับ ระยะทาง การสิ้นเปลืองเวลา น้ำมัน เงิน เช่น เส้นทางเกี่ยวกับการเิดินเรือ และระบบเน็ตเวิร์คแม่ข่ายบนอินเตอร์เน็ต เป็นต้น

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

  ปัจจุบัน pgRouting ได้พัฒนามาเป็น version 2.0 จากเดิม 1.5 และมีฟังก์ชั่นต่างๆเพิ่มขึ้นมามากมาย ดังที่แสดงอยู่ข้างล่าง
  • All Pairs Shortest Path, Johnson’s Algorithm [1]
  • All Pairs Shortest Path, Floyd-Warshall Algorithm [1]
  • Shortest Path A*
  • Bi-directional Dijkstra Shortest Path [1]
  • Bi-directional A* Shortest Path [1]
  • Shortest Path Dijkstra
  • Driving Distance
  • K-Shortest Path, Multiple Alternative Paths [1]
  • K-Dijkstra, One to Many Shortest Path [1]
  • Traveling Sales Person
  • Turn Restriction Shortest Path (TRSP) [1]
  • Shortest Path Shooting Star [2


[1] ฟังก์ชั่นใหม่ที่เพิ่มขึ้นมาใน pgRouting 2.0.0
[2] ฟังก์ชั่นเก่าที่เลิกใช้แล้วใน pgRouting 2.0.0
ข้อดีของวิธีการหาเส้นทางจากระบบฐานข้อมูลคือ
  • สามารถทำการแก้ไขข้อมูลและรายละเอียดข้อมูลได้หลายวิธี, เช่น QGIS” และ uDig ผ่านทาง JDBC, ODBC, หรือแก้ไขโดยตรงจากโปรแกรม Pl/pgSQL. อีกทั้งยังสามารถแก้ไขผ่านไม่ว่าจะทางคอมพิมเตอร์หรือโทรศัพท์ก็ได้
  • Data changes can be reflected instantaneously through the routing engine. There is no need for precalculation.
    ข้อมูลที่ถูกแก้ไขจะสามารถแสดงผลลัพธ์ใหม่ได้ทันทีผ่านโปรแกรมการเส้นทาง โดยไม่ต้องทำการคำนวนใหม่อีกครั้ง
  •  ตัวแปลค่าน้ำหนัก “cost” สามารถคำนวนผ่าน SQL และค่าเหล่านั้นสามารถเรียกมาคำนวนได้จากหลายๆตาราง หลายๆคอลัมในเวลาเดียวกัน
pgRouting website: http://www.pgrouting.org


2. สร้างฐานข้อมูลและเพิ่ม pgRouting ฟังก์ชั่นเข้าไปในฐานข้อมูล 



ตั้งแต่พัฒนาจาก pgRouting version 1.x มาเป็น 2.0 เราสามารถเพิ่มฟังก์ชั่นเข้าไปใน PostGIS Extension ได้ง่ายขึ้น แต่มีข้อกำหนดคือ ต้องใช้ 
  • PostgreSQL 9.1 or สูงกว่า
  • PostGIS 2.x installed as extension
หากลงโปรแกรม PostgreSQL/PostGIS ตาม Version ที่กำหนดแล้ว
ขั้นตอนต่อไปเริ่มจาก เปิดโปรแกรม pgAdmin 3: และใช้คำสั่งต่อไปนี้

# login as user "postgres"
psql -U postgres

# create routing database
CREATE DATABASE routing;
\c routing

# add PostGIS functions
CREATE EXTENSION postgis;

# add pgRouting core functions
CREATE EXTENSION pgrouting;

2.1 เอาข้อมูล Shapefile ใส่ในฐานข้อมูลที่ชื่อ routing
 

2.2 จากนั้นก็ Create a Network Topology

 -- Add "source" and "target" column
ALTER TABLE road ADD COLUMN "source" integer;
ALTER TABLE road ADD COLUMN "target" integer;

-- Run topology function

pgr_createTopology('<table>', float tolerance, '<geometry column', '<gid>')
 
SELECT pgr_createTopology('road', 0.00001, 'the_geom', 'gid');

Note: ค่า float tolerance สามารถเปลี่ยนไปได้ขึ้นอยู่กับจำนวนความถี่ของโครงข่ายถนน ค่าพิกัดของข้อมูล
หลังจาก created topology แล้ว สามารถเช็คค่าเพื่อตรวจสอบความถูกต้องได้จากคำสั่งSELECT * from road where source=target;

คำตอบที่ได้จะต้องเป็น 0 หรือ ไม่มีข้อมูล หากยังมีข้อมูลที่ซ้ำกันให้ทำการปรับค่า float tolerance ให้เล้กลงไปเรื่อยๆ จนกว่าข้อมูลจะไม่ซ้ำ


2.3 --Add indices เพื่อช่วยให้ทำการ query ข้อมูลได้เร็วขึ้น

CREATE INDEX source_idx ON road("source");
CREATE INDEX target_idx ON road("target");



 3.ทดสอบการหาเส้นทางจากฟังก์ชั่นแรก Shortest Path Dijkstra

Dijkstra algorithm นั้นจะทำการ query จาก attributes (column)  source and target ID, id attribute and cost (ระยะทาง หรือ column length)เท่านั้น. อีกทั้ง ยังสามารถกำหนดการคำนวนเส้นทางแบบ  directed (คิดในเรื่องของเส้นทางที่เป็น One way) and undirected (ไปได้ทุกเส้นทาง) ได้อีกด้วย. ขึ้นอยุ่กับว่าเราต้องกาำที่จะกำหนดค่า reverse cost ให้กำข้อมูลถนนหรือไม่

3.1หากรายละเอียดข้อมูลถนนของเรายังไม่มี column ที่ชื่อ length ให้สร้างจากคำสั่งดังนี้

ALTER TABLE road ADD COLUMN lenght double precision;
UPDATE road SET length = ST_length(the_geom); --คำนวนระยะทางของถนนแต่ละเส้น


ในกรณีที่มีการใช้คำสั่งในการคำนวนในเรื่องของถนนที่เดินรถได้ทางเดียว (One way) จะต้องเพิ่ม column 'reverse_cost' เข้าไปและจะให้ค่าเริ่มต้นของ reverse_cost=length 

ALTER TABLE road ADD COLUMN reverse_cost double precision;
UPDATE road SET reverse_cost = length;

ส่วนถนนเส้นไหนที่เป็นถนน One way นั้น ค่าของ reverse_cost จะใส่เป็น infinity หรือ 1,000,000

3.2 Query
--undirected

SELECT seq, id1 AS node, id2 AS edge, cost FROM pgr_dijkstra('
                SELECT gid AS id,
                         source::integer,
                         target::integer,
                         length::double precision AS cost
                        FROM road',
                105, 209, false, false);

--directed
SELECT seq, id1 AS node, id2 AS edge, cost FROM pgr_dijkstra('
                SELECT gid AS id,
                         source::integer,
                         target::integer,
                         length::double precision AS cost,
                         reverse_cost::double precision AS reverse_cost,
                       FROM road',
                105, 209, true, true);
 
 
 
 ศึกษาเพิ่มเติมได้ที่ http://workshop.pgrouting.org/
 
undirected

directed

วันพุธที่ 7 พฤษภาคม พ.ศ. 2557

QGIS ก็สามารถดู Google Street View ได้เหมือนกัน

______Google Street View เป็นอีกหนึ่งบริการของ Google ที่ติดมาพร้อมกับ Google Maps และ Google Earth ซึ่งเป็นมุมมองการถ่ายภาพแบบพาโนรามา 360 องศา ตามเส้นถนนต่างๆ ทั่วโลก โดยวิธีการใช้ก็เพียงแค่เราลาก "pegman" (ตุ๊กตาสีแหลือง)ลงไปยังสถานที่ในแผนที่ที่เราต้องการ เพียงเท่านี้ท่านก้จะได้สัมผัสกับ Google Street View ได้แล้วครับ แต่ในโปรแกรม QGIS นั่นก็สามารถดู Google Street View ผ่านโปรแกรมได้เลยเช่นกัน แต่ท่านต้องติดตั้งปลั๊กอินที่ชื่อว่า "go2streetview" ก่อนถึงจะใช้ได้ครับ

1. ติดตั้งปลั๊กอิน "go2streetview"

2. เริ่มต้นใช้งานไปที่เมนู Plugin > go2streetview > Click to open Google Street View

3. คลิกไปยังตำแหน่งที่ต้องการในแผนที่ จากนั้นก็จะปรากฏหน้าต่าง Street View มาให้เราดังภาพ



ศึกษารายละเอียดเพิ่มเติมได้ที่ https://maps.google.co.th/intl/th/maps/about/behind-the-scenes/streetview/

วันอังคารที่ 29 เมษายน พ.ศ. 2557

สร้างแผนที่ออนไลน์ (Webmap) ง่ายๆ ด้วย qgis2leaf

______เมื่อก่อนนั้นการที่จะสร้างแผนที่ออน์ไลน์(Webmap)นั้นเป็นเรื่องที่ยากมากๆ สำหรับคนที่ไม่มีพื้นฐานทางด้านการเขียนโปรแกรม แต่ปัจจุบันนี้ได้มีเครื่องมือหลายๆอย่างที่อำนวยความสะดวกในการที่จะสร้างแผนที่ออน์ไลน์ให้เรานั้นง่ายมากๆ ครับ ผมขอยกตัวอย่างแค่ของ QGIS ตัวเดียวล่ะกันมีปลั๊กอยู่ตัวนึงชื่อว่า "qgis2leaf" เป็นปลั๊กอินที่ดีสำหรับการสร้างแผนที่ออน์ไลน์(WebMap) ทีมพัฒนาคือ "Riccardo Klinger, Geolicious" ทำให้เราสามารถสร้างแผนที่ออน์ไลน์ได้ภายในไม่ถึง 5 นาที ก็ถือว่าสะดวกและก็ง่ายสำหรับมือใหม่ที่หัดทำ

Leaflet นั้นเป็น JavaScript library สำหรับสร้างแผนที่ออน์ไลน์ และเป็น Open-Source JavaScript Library for Mobile-Friendly Interactive Maps ซึ่งออกแบบมาให้ดูดี เรียบง่าย และมีประสิทธิภาพในการใช้งานทั้งใน desktop และ mobile platforms โดยอาศัย HTML5 และ CSS3 ก่อนหน้านี้ก็จะมี OpenLayers ก็ถือว่าเป็นอีกตัวนึงที่นิยมใช้กันมาก ท่านไหนที่สนใจก็ลองเข้าไปอ่าน API ดูครับ http://leafletjs.com

1. ก่อนเราต้องติดตั้งปลํ้กอิน qgis2leaf

2. เลือกชั้นข้อมูลที่ต้องการแสดงผลบนเว็บ

3.ไปที่เมนู Web > qgis2leaf > Export a QGIS Project to a working leaflet webmap เพื่อทำการสร้างแผนที่ออนไลน์

4. เราสามารถกำหนดขนาดของ frame ได้ สามารถเลือก basemap ได้ จากนั้นก็เลือก output เพื่อเก็บไฟล์ แล้วคลิก OK

5. ไฟล์ที่เราได้ หลังจากที่ปลั๊กอินนี้สร้างให้

6. ผลที่ได้ ดังภาพ http://www2.cgistln.nu.ac.th/chai/leafletjs/nu/index.html


https://plugins.qgis.org/plugins/qgis2leaf/

วันจันทร์ที่ 28 เมษายน พ.ศ. 2557

เปิดข้อมูล GIS จาก ESRI File Geodatabase (*.gdb) โดยใช้โปรแกรม QGIS

1. ลักษณะของ Geodatabase ที่เปิดด้วย ArcCatalog

2. เปิดโปรแกรม QGIS แล้วไปที่เมนู Layer > Add Vector Layer...
- กำหนด Source type เป็น Directory
- กำหนด Type เป็น ESRI FileGDB

3. คลิกปุ่ม Browse เพื่อเลือกตำแหน่งไฟล์ Geodatabase

4. เมื่อเปิดได้แล้วก็จะเห็นว่ามีหลายๆ ชั้นข้อมูล อันนี้ขึ้นอยู่ที่เราเองว่าจะเปิดทั้งหมดหรือเลือกบางชั้นข้อมูล

5. ผลที่ได้จากการเปิด ESRI File Geodatabase

6. เปิดข้อมูลตารางดูว่า สามารถรองรับภาษาไทยได้ด้วย

chingchai byfamous