ช่วงนี้กลับมาทำงานเกี่ยวกับ sensor web อีกรอบ จากปีที่แล้วเวลาส่วนใหญ่ไปกับ GPS Tracking และระบบ Fleet management ซึ่งทำให้ผมมีโอกาสเรียนรู้ เรื่อง Data Management ค่อนข้างมาก เพราะ GPS Tracking ต้องติดตามข้อมูลจากกลุ่มรถจำนวนมาก และเก็บข้อมูลทุกๆ 30 วินาที ทำให้ Database Server ค่อนข้างใหญ่ (ปัจจุบันมีกว่า 5 ล้านเรคคอร์ด) ซึ่งทำให้ต้องมีการพัฒนา script เพื่อบริหารจัดการข้อมูล บำรุงรักษา และเพิ่มประสิทธิภาพในการเข้าถึงเช่น การทำ Temporal indexing เป็นต้น
คลังเก็บหมวดหมู่: spatial database
multi-geometry generalization
มีคนโทรมาปรึกษาเรื่องการทำระบบ Spatial Database สำหรับงานการบริหารการใช้ที่ดินที่หนี้ไม่พ้นการเก็บข้อมูล landuse อันต้องสร้างจากการแปลภาพถ่ายทางอากาศหรือภาพถ่ายดาวเทียม แน่นนอนว่าถ้าท่านที่เคยทำงานด้านนี้จะพบ ว่าข้อมูล landuse เป็นข้อมูลที่มีความซับซ้อนของ polygon ที่มากในรูปแบบ muti polygon จำนวนมาหาศาล ยิ่งต้องมาใช้ทำงานหรือเปิดดูข้อมูลภาพยิ่งช้า นี้ยังไม่นับการนำมาใช้ทำระบบ map service ที่ต้องแสดงข้อมูลที่มีความละเอียดสูง วันนี้ผมมีเทคนิคการประมวลผลข้อมูลพวกนี้ผ่าน database มาแนะนำครับ
Spatial Database Replication with Slony-I
มีคนมาปรึกษาเรื่องการพัฒนาระบบ Clearing House โจทย์ยากกว่าปกติตรงที่เป็นเรื่องของ การ Synchronize ข้อมูล Spatial Database ที่ตรงการแชร์และแลกเปลี่ยนกันโดยตรงระหว่างโหนดที่ทำงานร่วมกัน ถ้าเป็นเฉพาะ Textfile หรือ XML แบบ Metadata คงไม่ยากเท่าไหร่ แต่พอมาเรื่องข้อมูลจำนวนมากๆ อันนี้เริ่มมีปัญญาแล้ว ช่องทางหนึ่งที่แนะนำและอยากให้ลองคือช่องทางของเรื่องการ Replication บน Database Server แต่ก็มีข้อจำกัดที่ต้องออกแรงไม่สามารถทำงานได้ทันทีทันใด บน Postgresql เองมี Replicate engine ที่น่าสนใจหลายตัว ผมเองเคยศึกษา Pgpool และ Slony-I แต่โดยส่วนตัวชอบ Slony มากกว่าเพราะมันค่อนข้างไม่ซับซ้อนและมีประสิทธิภาพที่ดี
Postgresql 9.0 มาพร้อม streaming replication แต่ Slony(synchronous replication) ก็ยังเป็นอีกช่องทางที่สามารถนำมาเสริมได้อีก เพราะ ยังมีข้อจำกัดที่ตัว Slave ที่ต้องอยู่บน Version เดียวกันระบบเดียวกัน รองรับแค่ 1 salve และที่สำคัญ Slave นั้นทำได้แค่ Read only ดังนั้นตอนนี้ถ้าเน้นปฏิบัติจริง Slony ก็ยังมีความจำเป็นอยู่ครับ
Spatial Raster Database
ราสเตอร์เป็นรูปแบบการจัดเก็บข้อมูลเชิงเลข ในรูปแบบกริดที่ได้จากการสำรวจจากเซนเซอร์บนดาวเทียมหรือ อุปกรณ์บันทึกภาพชนิดต่างๆ แบบสุ่มเก็บแล้วทำการจัดเก็บข้อมูลในรูปแบบของแถวและคอลัมน์ลงบนกริดแบบเป็นระเบียบและต่อเนื่อง
ข้อมูลที่จัดเก็บบนราสเตอร์ในงานภูมิสารสนเทศจะมีรูปแบบเป็นสี่มิติคือ X, Y, Z และ T โดยข้อมูลดิจิตอลจะจัดเก็บแบบไฟล์ (Files base system) บน OS ซึ่งในกรณีที่มีข้อมูลจำนวนมากๆ การบริหารจัดการข้อมูลทำได้ยาก โดยเฉพาะประเด็นเรื่องการสืบค้นข้อมูลจากเงื่อนไขที่ซับซ้อน เช่นเงื่อนไขเชิงพื้นที่ เงื่อนไขเชิงเวลา และเงื่อนไขอื่นๆ การนำแนวคิดและเทคโนโลยีของฐานข้อมูลเชิงสัมพันธ์ (Relational Database) ซึ่งเป็นรูปแบบการจัดเก็บข้อมูลที่ความสัมพันธ์กันอย่างเป็นระบบโดยใช้ทฤษฏีของเซตเป็นพื้นฐานมาช่วยในการจัดการข้อมูลราสเตอร์ โดยมีการจัดเก็บข้อมูลดิจิตอลในรูปแบบของ BLOB และจัดเก็บข้อมูลเรขาคณิตของราสเตอร์ (GeoReference data ) บนฐานข้อมูลโดยใช้แนวคิดของฐานข้อมูลเชิงพื้นที่(Spatial Database) สร้างความสัมพันธ์ระหว่างข้อมูลเรขาคณิต(Geometry) กับข้อมูลไบนารี(BLOB) บนฐานข้อมูล
การจัดเก็บข้อมูลราสเตอร์บนฐานข้อมูล อาศัยเทคนิคการจัดเก็บค่าดิจิตอลในรูปแบบ HEX WKB และเก็บข้อมูลเรขาคณิตของภาพราสเตอร์บน Geometry Object ในฐานข้อมูล ข้อมูลราสเตอร์จะถูกจัดแบ่งเป็นสี่เหลี่ยมย่อย (Tile) และจัดเก็บข้อมูลแบบ Pyramid ในรูปแบบ Overview Table เพื่อเพิ่มประสิทธิภาพในการเข้าถึงข้อมูล ซึ่งทั้ง Tile และ Pyramid จะมีการสร้างดัชนีเชิงเรขาคณิต GIST-index และมี relation key สำหรับเชื่อมโยงความสัมพันธ์ของข้อมูล รวมถึงสามารถเชื่อมโยงกับข้อมูลเวลา (Temporal data) และสร้างดัชนีความสัมพันธ์เชิงเวลาเพื่อค้นหาได้อีกด้วย
OSGeo Live GIS 4.0
_____OSGeo Live GIS 4.0 เป็นเวอร์ชั่นล่าสุดที่ออกมาให้ผู้ใช้งานโปรแกรม Opensource GIS ได้ใช้งานกัน โดยตัว OSGeo Live GIS มีแจกในงาน Foss4G 2010 ที่กำลังดำเนินอยู่ อยากจะนำ OSGeo Live GIS มาโปรโมทเพราะต้องการให้คนที่จะเริ่มต้นใช้งาน Opensorce GIS ทั้งผู้ใช้ทั่วไป และ นักพัฒนา ได้ทดลองใช้งานโปรแกรมโดยที่ไม่ต้องติดตั้งโปรแกรมเองก่อน เพื่อลดความยุ่งยากและอุปสรรค์ที่บั่นทอนกำลังใจ ที่สำคัญ OSGeo Live GIS มาในรูปแบบ Live Ubuntu 10.04 ที่ลดภาระเรื่องการติดตั้ง Linux ไปด้วย ทำให้ง่ายมากต่อการใช้งาน เพียงแค่ บูต OS จากแผ่นก็สามารถทำงานได้แล้ว โดยใน OSGeo Live GIS บรรจุโปรแกรม OSGeo Live GIS ครบทุกด้านพร้อมใช้งาน ตั้งแต่ Desktop GIS ถึง Internet GIS ผมเอารายการโปรแกรม Opensource GIS ต่างๆมาให้ดูด้วยครับ
HIGHLIGHTS
42 of the best GeoSpatial Open Source applications installed and pre-configured.
One page overviews for all projects
Overviews of key OGC standards
Many application Quick Start documentation
PACKAGES
52°North WPS 2.0.0
AtlasStyler 1.5
deegree 2.3
GeoKettle 3.2.0-20090609
Geomajas 1.6.0
GeoNetwork 2.4.3
Geopublisher 1.5
GeoServer 2.0.2
GMT 4.5.1
GpsDrive 2.11
GRASS GIS 6.4.0rc6
gvSIG 1.10
Kosmo 2.0
Mapbender 2.6.2
Mapfish 1.2
MapGuide Open Source 2.2.0
Mapnik 0.7.0
Mapserver 5.6.5
MapTiler 1.0beta2
Marble 0.9.2
MB System 5.1.2
OpenJUMP 1.3
OpenLayers 2.9.1
OpenCPN 2.1.0
OpenStreetMap editors and tools
osgEarth 1.3
Ossim/OssimPlanet 1.8.6
pgRouting 1.03svn
PostGIS 1.5
QuantumGIS 1.5.0
QGIS mapserver 0.7
R geostatistics 2.11.1
Sahana 0.6.4
SAGA GIS 2.0.4
SpatiaLite 2.4
Tilecache
uDig 1.2.0
Ushahidi 1.1.0
Viking 0.9.9
zyGrib 3.9.2
ZOO Project 1.0
Xubuntu 10.04 (Lucid)
______สามารถแวะเข้าไปดูรายละเอียดของแต่ละโปรแกรม จำแนกตามประเภทการใช้งานได้ที่ http://live.osgeo.org/overview/overview.html
ท่านที่สนใจเข้าไปดาวน์โหลดโปรแกรมได้ที่ http://live.osgeo.org/download.html
ตัวอย่างโปรแกรม WebGIS client ชื่อ Geomajas
Ushahidi โปรแกรมอีกตัวที่น่าสนใจก็มีมาให้ใน Live Opensource GIS
GeoServer 2 โปรแกรม Web GIS Server ที่มีประสิทธิภาพและใช้งานง่าย
Zoo WPS โปรแกรม Web Processing Server ตัวกลั่นก็มีมาให้นักพัฒนาลองใช้งาน
WITH on Postgresql
_____คงจะไม่มีอะไรที่จะมีความสุขเท่าการได้นอนพักผ่อนในวันหยุดยาวๆแบบนี้ จากที่ทั้งต้องทำงานหนักมาทั้งปี การได้พักผ่อนและหยุดให้เวลาบนเข็มนาฬิกาเร่งรีบเร่งรัดการดำเนินชีวิตเป็นอะไรที่ดีอย่างบอกไม่ถูก ผมใช้เวลาตอนเช้าในการพักผ่อนตื่นไปทำบุญที่วัดและทำกิจกรรมกับครอบครัว รู้สึกอิจฉาคนที่ใช้ชีวิตอยู่ต่างจังหวัดจริงๆ ไม่ต้องเจอกับควันผิดและรถติด ถึงจะไม่โก้หรูแต่ก็มีความสุขสบายบนความเรียบง่าย ตอนค่ำๆก็มานั้งอ่านเมล์และตอบกระทู้สนทนาตามเว็บบอร์ดที่เป็นสมาชิก ผมไปเจอเรื่องเกี่ยวกับ WITH ที่น่าสนใจบน Postgresql บน Blog ของ Paul Ramsey ที่เขียนไว้อย่างน่าสนใจมาก เลยอยากนำมาฝากท่านที่ใช้งาน Spatial Database หรือเป็น DBA
______ผมเองใช้งาน WITH อยู่บน Postgresql 8.4 มาตั้งแต่แรกที่ Upgrade โปรแกรมจาก 8.3 เป็น 8.4 แล้วเพราะด้วยความสะดวกในการสร้าง Subquery ขนาดใหญ่หรือแบบที่ซับซ้อมมันค่อนข้างสะดวกและมีประสิทธิภาพแบบเดิม หลายท่านที่ยังไม่เคยใช้งานผมมีตัวอย่างง่ายๆมาแนะนำเช่น
SELECT * FROM walk_network
Install PostgreSQL on Ubuntu
________วันอาทิตย์สุดสัปดาห์เลยได้โอกาสจัดการกับเครื่องโน๊ตบุคเก่าเป็นโน๊ตบุคตัวแรกยี่ห้อ Acer ที่ผมหาซื้อด้วยน้ำพักน้ำแรงจากการทำงานตั้งแต่สมันเรียน มาถึงตอนนี้ปู่ก็เฒ่าชะแรแก่ชราไปมากเหลือเกินครั้นจะทิ้ง ก็ไว้เปล่าก็เสียดายเลยจับ format และลง Linux ubuntu ซะเอาไว้ทำ server เล่นๆ Linux เป็นอะไรที่ง่ายดายกว่าอดีตเยอะมาแล้วครับใช้งานง่ายมี GUI ใช้คำสั่งไม่กี่คำสั่ง วันนี้ไหนต้องลงโปรแกรมแล้วก็ขอนำมาฝากพี่ๆน้องๆเผื่อว่าท่าใดอยากลองมาใช้ Ubuntu บ้างจะได้รู้ว่ามันไม่ได้ยากอย่างที่คิดเลย ผมนำตัวอย่างการลง Spatial Database ตัวเก่ง Postgresql + Postgis บน Ubuntu มาแนะนำครับ
Step I : Postgresql 8.3
1. เพื่อให้ง่ายก็ไม่ต้อง hardcore ไป compile เองครับเพราะจะเหนื่อยโดยใช่เหตุ ติดตั้งผ่าน apt-get ง่ายสุด
$ sudo apt-get install postgresql-8.3
2. ติดตั้งส่วนของ Database client คือ pgadmin
$ sudo apt-get install pgadmin3
3. ทำการ reset ตัว password ของ postgresql ผ่าน psql กำหนด password ใหม่ลงไป
$ sudo su postgres -c psql template1
template1=# ALTER USER postgres with PASSWORD 'password';
template1=# \q
4.แก้ password บน postgres user ของ ubuntu ให้ตรงกับ database
$ sudo passwd -d postgres $ sudo su postgres -c passwd5. set up ตัว admin package
$ sudo su postgres -c psql < /usr/share/postgresql/8.3/contrib/adminpack.sql6. เปิดตัว config ของ postgres เพื่อให้ IP อื่นจากภายนอกใช้งานได้
$ sudo gedit /etc/postgresql/8.3/main/postgresql.confแก้ ส่วนของ config
#listen_addresses = 'localhost' ไปเป็นlisten_addresses = '*'7.แก้ส่วนของ pg_hba.config ปลด comment ออกจากสองบรรทัด
$ sudo gedit /etc/postgresql/8.3/main/pg_hba.conf local all all ident sameuser local all all md58. restart ตัว postgresql database server
$ sudo /etc/init.d/postgresql-8.3 restartStep II : PostGIS
9. ลง Postgis ต่อเลย
$ sudo apt-get install postgis $ sudo apt-get install postgresql-8.3-postgis10. create postgis template
$ sudo su postgres$ createdb postgistemplate $ createlang plpgsql postgistemplate $ psql -d postgistemplate -f /usr/share/postgresql-8.3-postgis/lwpostgis.sql $ psql -d postgistemplate -f /usr/share/postgresql-8.3-postgis/spatial_ref_sys.sq11. สร้าง Permission ให้กับ postgistemplate
$ psql -d postgistemplate$ ALTER TABLE geometry_columns OWNER TO postgres; $ ALTER TABLE spatial_ref_sys OWNER TO postgres;$ CREATE SCHEMA gis_schema AUTHORIZATION postgres;12. สร้าง Database ใหม่โดย inherit จาก Postgistemplate
$ createdb -T postgistemplate -O postgres spatialdb13. โหลดไฟล์ข้อมูล GIS จาก shapefile เข้า postgresql
$ shp2pgsql -I -s 32647 Building.shp building > building.sql14. excute ตัว sql บน spatialdb
$ psql -d spatialdb -h localhost -U postgres -f building.sql15. ทดลอง query ข้อมูล building
$ psql -d spatialdb -c "select * from building;"Step III : QGIS
16. เพื่อให้สะดวก ติดตั้ง QGIS เพื่อทำการเรียกดูข้อมูลจาก database แบบ graphic
$ sudo apt-get install qgis
17. เปิด QGIS เพื่อเชื่อมต่อ ข้อมูลอาคารบน spatialdatabase
กรอกพารามิเตอร์ต่างๆเพื่อเชื่อมต่อ database
ตัวอย่างข้อมูล building จาก Spatial Database






