การวางแผนเชิงพื้น ผมเลือกใช้ Google Maps และ Google Earth บ่อยมาก โดยเเฉพาะ Google Earth ที่มีแผนที่เส้นทาง แผนที่ดาวเทียม ภาพถ่ายที่ผู้ใช้ร่วมกันเติมเข้ามา และยังมี map content มากมาย หากต้องเขียนแผนที่ ของเราไปก็สามารถทำได้ เพราะมีเครื่องมือ edit แทบเรียกได้ว่าเป็น GIS Editor ที่ดีทีเดียว KML/KMZ ที่ได้ยังเป็นมาตรฐาน สามารถแปลงเป็นรูปแบบอืนๆภายหลัง
แต่สิ่งหนึ่งที่ GE ฟรีขาดหายไปคือ ความสามารถในการคำนวน ระยะทางและพื้นที่! เข้าใจว่าหากเสียตังส์ซื้อ Google Earth Pro จะมีฟังก์ชันนี้ให้ อืม..แต่ว่ามีซอฟต์แวร์ on-line แก้ขัดช่วยได้ครับ เชน GE Tools โดย Znum Solutions เพียงเราเปิดดู KML ที่มี object Line Polygon ทำการ copy และ paste เข้าไป หรือจะเรียกเปิดแฟ้ม KML ก็ได้ ในตัวเลือกผู้ใช้สามารถเลือกให้คำนวนระยะทางหรือพื้นที่หรือทั้งสองอย่าง เลือกหน่วยระยะทาง และเลือกหน่วยพื้นที่ได้ ดังตัวอย่าง
จากนั้นให้กด Process Data >>>>>>
จะได้ผลดังนี้
===================================================
NAME,PERIMETER/LENGTH (km),AREA (sq. km)
ChannelHwy9,67.79946717103557
ค.สำโรง-ตะวันออก,11.357562703347
ค.สำโรง-ตะวันตก,12.116103241428199
ทล.305 รังสิต นครนายก,2.136323832384587
บึงพระราม9 (11 ตร.กม.),11.876656333037921,NaN
==================================================
เวปไซต์สำหรับเผยแพร่ ผลงานวิจัยด้านภูมิสารสนเทศ โดยกลุ่มนักวิจัย ดร.ไพศาล สันติธรรมนท์ คณะวิศวกรรมศาสตร์ จุฬาลงกรณ์มหาวิทยาลัย ยินดีต้อนรับทุกท่านที่เยี่ยมชมและแลกเปลี่ยนความคิดเห็น Research and Development in geo-spatial science and technology for Thailand
วันพุธที่ 28 ธันวาคม พ.ศ. 2554
วันอาทิตย์ที่ 9 ตุลาคม พ.ศ. 2554
การวางแผนเพื่อเตรียมโครงการ
การวางแผนเพื่อเตรียมโครงการใดๆ มักจะเริ่มต้นด้วยการรวบรวมข้อมูล และทำแผนที่ภูมิประเทศ (topographic map) ในปัจจุบันแผนที่ฟรีออนไล์ ที่มีทั้งแผนที่ภาพถ่ายดาวเทียมรายละเอียดสูงและแผนที่ถนน ผมสรุปได้ดังนี้
1) แผนที่ภาพดาวเทียมรายละเอียดสูง (high-resolution satellite) หรือแผนที่ภาพถ่ายออร์โทสี สำหรับพื้นที่ในประเทศไทย และพื้นที่อื่นๆ ทั่วโลกสามารถหาดูได้จาก
1.1 Google Maps/Google Earth http://maps.google.com (สดวก มีภาพอดีต)
1.2 Nokia Map http://maps.nokia.com (ภาพใหม่ 2010-2011)
1.3 Microsoft B-Ing Map http://www.microsoft.com
1.4 แผนที่ภาพออร์โทสีมาตราส่วน 1:4,000 http://www.lddservices.org (พ.ศ. 2544-2545)
2) คุณลักษณะของแผนที่ฟรีบนอินเตอร์
2.1 แผนที่ภาพถ่ายดาวเทียมรายละเอียดสูง มีการดัดแก้ออร์โท ความละเอียดถูกต้องทางตำแหน่ง +/-50 เมตร
2.2 แผนที่ถนนได้จากการสำรวจเส้นทางด้วยรถติดจีพีเอส มีความละเอียดถูกต้องทางตำแหน่ง +/-2 ถึง 15 เมตร
ตัวอย่างการเตรียมข้อมูลแผนที่ภาพที่ลิ้งนี้
1) แผนที่ภาพดาวเทียมรายละเอียดสูง (high-resolution satellite) หรือแผนที่ภาพถ่ายออร์โทสี สำหรับพื้นที่ในประเทศไทย และพื้นที่อื่นๆ ทั่วโลกสามารถหาดูได้จาก
1.1 Google Maps/Google Earth http://maps.google.com (สดวก มีภาพอดีต)
1.2 Nokia Map http://maps.nokia.com (ภาพใหม่ 2010-2011)
1.3 Microsoft B-Ing Map http://www.microsoft.com
1.4 แผนที่ภาพออร์โทสีมาตราส่วน 1:4,000 http://www.lddservices.org (พ.ศ. 2544-2545)
2) คุณลักษณะของแผนที่ฟรีบนอินเตอร์
2.1 แผนที่ภาพถ่ายดาวเทียมรายละเอียดสูง มีการดัดแก้ออร์โท ความละเอียดถูกต้องทางตำแหน่ง +/-50 เมตร
2.2 แผนที่ถนนได้จากการสำรวจเส้นทางด้วยรถติดจีพีเอส มีความละเอียดถูกต้องทางตำแหน่ง +/-2 ถึง 15 เมตร
ตัวอย่างการเตรียมข้อมูลแผนที่ภาพที่ลิ้งนี้
วันพฤหัสบดีที่ 29 กันยายน พ.ศ. 2554
Python ขั้นเทพ Generator / Coroutine
ผมเรียนไพธอน ผมใช้ไพธอน ผมประยุกต์ใช้ไหธอน หลายๆเรื่อง หลายๆมุม พลิกอ่านคู่มือหลายเล่น หลายพันหน้า กูเกิ้ลหาก็ประจำ บ่อยครั้งผมพบว่าไพธอนยังมีเรื่องใหม่ น่าสนใจ ซ่อนอยู่เสมอ วันนี้อีกแล้ว 'Generator' เป็น programming model แบบหนึ่ง ที่ใครเข้าใจแล้ว จะเขียนโปรแกรม ได้สง่างามยิ่งขึ้นไป ระบบมีประสิทธิภาพเพิ่มขึ้น
ในภาพ เทพไพธอน กำลังแสดงให้เห็น learing curver ของวิชานี้ ( thank to David Beazley, http://www.dabeaz.com from PyCon'2009, Chicago, Illinois)
ลองดูกันเองนะครับ
กูเกิลแมพ (Google Maps) ฟรีหรือเปล่า
การใช้งานกูเกิลแมพหรือเราพัฒนาโปรแกรมประยุกต์บนกูเกิ้ลแมพฟรีครับ หากใช้ไม่มาก รวมถึงเวปธุรกิจด้วย
หากใช้มากต้องเสียเงินครับ
กฏเกณฑ์ล่าสุด ตั้งแต่ 1 ตุลาคม 2011 เป็น ไปตามนี้ครับ
From October 1st 2011 commercial web sites and applications using the Maps API may at no cost generate:
up to 2,500 map transactions per day that have been modified using the Styled Maps feature
up to 25,000 map transactions per day in total
If your application qualifies for and exceeds these transaction limits after October 1st 2011 you will need to respond in one of the following ways in order to continue using the Maps API in your application:
Modify your Maps API application such that the number of map transactions generated per day is reduced to below the usage limit; Enroll for automated billing of excess map transactions (pay as you go); or
Purchase a Maps API Premier license
ต้องเตรียมตัวซะหน่อย อีกสักระยะประเทศไทยก็จะมี streetview ให้ดูชม และให้พัฒนาต่อยอดไปใช้งาน ต้องเตรียมตัวซะหน่อย
From October 1st 2011 commercial web sites and applications using the Maps API may at no cost generate:
up to 2,500 map transactions per day that have been modified using the Styled Maps feature
up to 25,000 map transactions per day in total
If your application qualifies for and exceeds these transaction limits after October 1st 2011 you will need to respond in one of the following ways in order to continue using the Maps API in your application:
Modify your Maps API application such that the number of map transactions generated per day is reduced to below the usage limit; Enroll for automated billing of excess map transactions (pay as you go); or
Purchase a Maps API Premier license
ต้องเตรียมตัวซะหน่อย อีกสักระยะประเทศไทยก็จะมี streetview ให้ดูชม และให้พัฒนาต่อยอดไปใช้งาน ต้องเตรียมตัวซะหน่อย
wxGIS คล้ายๆกับ ArcCatalogue
___wxGISCatalog เป็นซอฟต์แวร์อำนวยความสะดวกในการใช้งานชุดซอฟต์แวร์ภูมิสารสนเทศอเนกประสงค์ GDAL/OGR ที่คุณ Frank Warmerdam ชาวแคนาดา เป็นผู้พัฒนา GDAL/OGR ถือได้ว่าเป็นเสาหลักของการพัฒนาซอฟต์แวร์ภูมิสารสนเทศทั้งที่เป็นซื้อขายเชิงพาณิชย์และใช้ฟรีแบบโอเพ่นซอร์ส
ชุดคำสั่ง GDAL/OGR ที่เป็นประโยชน์มากในวงกว้างและอาจถูกเรียกใช้งานบ่อยคือ ogr2ogr และ gdalwarp ogr2ogr ใช้จัดการข้อมูลเวกเตอร์และฐานข้อมูลปริภูมิที่มีข้อมูลฟีเจอร์ให้บริการ ส่วน gdalwarp ใช้จัดการและประมวลทางเรขาคณิตของข้อมูลแรสเตอร์และแผนที่ภาพทั้งหลาย ข้อจำกัดคือต้องพิมพ์คำสั่งต่างๆด้วยมือ อ้างถึงชื่อไฟล์ยาวตามโฟลเดอร์ข้อมูล ต้องพิมพ์ออฟชั้นจำนวนมาก
Dmitry Barishnikov (Bishop) ได้พัฒนาส่วนเชื่อมต่อผู้ใช้ในลักษณะลอกเลียน ArcCatalogue ทำให้เราเข้าถึงไฟล์ข้อมูลง่าย ตรวจสอบดูเบื้องต้น และจัดการด้วย gdalwarp หรือ ogr2ogr ได้สะดวกพอสมควร แม้นว่าตัวเลือกที่มีเป็นจำนวนมากนั้นจะไม่สามารถถ่ายทอดออกมาอยู่ในส่วนเชื่อมต่อผู้ใช้ได้ทั้งหมด
วันจันทร์ที่ 26 กันยายน พ.ศ. 2554
ทำไม Obama ต้องไปเยียม Marc Benioff ถึงบ้าน
ผมบังเอิญไปเจอวิดีโอสองชิ้นที่น่าสนใจว่าเกี่ยวข้องกันอย่างไร หากต้องการอธิบายว่า ทำไม Obama ต้องไปเยียม Marc Benioff CEO of Saleforces ถึงบ้าน
แล้วมาดูกันว่า Saleforces นำ 'social' internet ไปบูรณาการผลิตภัณฑ์ CRM ของเขาอย่างไร
ซึ่งก็มีพัฒนาการตามลำดับตามที่ปรากฏในสื่อ และผลผลิตล่าสุดคือปรากฏในงาน DreamForce
...largest technical conference in the (IT) industry
15,000 attendee in the keynote halls
45,000 registee in the conference.
วีดีโอมีหลายชิ้นนะครับ มีปาหี่ ขายยานิด หน่อย อดทนนะครับ มันของคู่กัน
หรืออ่านย่อแถลงข่าว DreamForce 2011 ทีนี่
แล้วมาดูกันว่า Saleforces นำ 'social' internet ไปบูรณาการผลิตภัณฑ์ CRM ของเขาอย่างไร
ซึ่งก็มีพัฒนาการตามลำดับตามที่ปรากฏในสื่อ และผลผลิตล่าสุดคือปรากฏในงาน DreamForce
...largest technical conference in the (IT) industry
15,000 attendee in the keynote halls
45,000 registee in the conference.
วีดีโอมีหลายชิ้นนะครับ มีปาหี่ ขายยานิด หน่อย อดทนนะครับ มันของคู่กัน
หรืออ่านย่อแถลงข่าว DreamForce 2011 ทีนี่
ป้ายกำกับ:
Social Enterprise,
Social Informatic,
Social Network
วันอาทิตย์ที่ 25 กันยายน พ.ศ. 2554
ไลดาร์ เวอร์ชั่น 2.0
มาตรฐานในการจัดเก็บข้อมูลจากระบบเลเซอร์สแกนทั้งทางอากาศและระบบเลเซอร์ใช้งานบนพื้นดินคือ ASPRS LAS format ปัจจุบันเป็นเวอร์ชั้น 1.3 แต่ก็มีการพัฒนาต่อเป็นเวอร์ชั่น 2.0 แล้ว แต่ว่าเวอร์ชั้น 2.0 ยังมีสถานะ pending อยู่จึงทำให้หาซอฟต์แวร์อ่านข้อมูลไม่ได้ แต่อย่างไรก็ตามมีผู้ผลิตเครื่องบางเจ้าเลือกใช้ LAS เวอร์ชั้น 2.0 แล้ว ซอฟต์แวร์ฟรีต่างๆเช่น LasTools, LibLas, PyLas ก็ยังไม่รองรับ ผู้เขียนจึงใช้ Python เขียนขึ้นมาอย่างรวดเร็ว สิ่งที่น่าสนใจในการใช้ python อ่านไบนารี่คือ python มีไลบรารี่ที่เรียกว่า python struct ช่วยได้มาก เทียบกับภาษา C/C++ ที่มี sturct {...}
การใช้งานก็ประมาณนี้ครับ
D:\Phisan\Projects\METROE~1\2554-M~1\ReadLas>ReadLas20.bat
**** Program read LAS version 2.0 ***
**** Santitamnont (phisan.chula@gmail.com ***
usage: LAS20Lib.py [-h] [--lasfile LASFILE] [--xyzfile XYZFILE] [-d]
Read LAS 2.0 file and write into XYZ file
optional arguments:
-h, --help show this help message and exit
--lasfile LASFILE name of LAS 2.0 file to read
--xyzfile XYZFILE name of ASCII spc-separated xyz file to write
-d turn on debug info
ลองดาวโหลดไปใช้ดูนะครับ
การใช้งานก็ประมาณนี้ครับ
D:\Phisan\Projects\METROE~1\2554-M~1\ReadLas>ReadLas20.bat
**** Program read LAS version 2.0 ***
**** Santitamnont (phisan.chula@gmail.com ***
usage: LAS20Lib.py [-h] [--lasfile LASFILE] [--xyzfile XYZFILE] [-d]
Read LAS 2.0 file and write into XYZ file
optional arguments:
-h, --help show this help message and exit
--lasfile LASFILE name of LAS 2.0 file to read
--xyzfile XYZFILE name of ASCII spc-separated xyz file to write
-d turn on debug info
ลองดาวโหลดไปใช้ดูนะครับ
ทิศทางไอทีปี 2011-2012
ถ้าถามว่า อะไรคือการประชุมวิชาการทางเทคโนโลยีสื่อสารที่ใหญ่ที่สุด Google IO 2011 หรือเปล่า ที่สุดจะอลังการ มีการพูดเปิดตัว Android 4.0 Ice Cream Sanwich อะไรประมาณนี้ ??
ไม่ใช้ครับ คงเข้าใจได้ต้องเป็นไอทีรองรับธุรกิจประมาณนี้ Dreamforce 2011 ธุรกิจโฉมใหม่ของ saleforce น่าจะเป็นอะไรที่ต้องจับตามองมาก หัวข้อก็คือ Social Enterprise ดังตัวอย่างวิดีโอต่อไปนี้
ไม่ใช้ครับ คงเข้าใจได้ต้องเป็นไอทีรองรับธุรกิจประมาณนี้ Dreamforce 2011 ธุรกิจโฉมใหม่ของ saleforce น่าจะเป็นอะไรที่ต้องจับตามองมาก หัวข้อก็คือ Social Enterprise ดังตัวอย่างวิดีโอต่อไปนี้
วันพฤหัสบดีที่ 22 กันยายน พ.ศ. 2554
แก้ใขคำผิดในหนังสือ การรังวัดด้วยภาพดิจิทัล
ท่านที่อ่านหนังสือ การรังวัดด้วยภาพดิจิทัล เขียนโดยผม
ผมต้องขออภัยเป็นอย่างสูงที่มีคำผิด และผมได้ตรวจทานในเบื้องต้นแล้ว
พบว่ามีที่ผิดต้องแก้ใขตามใบแทรกนี้
แก้ใขคำผิดในหนังสือ การรังวัดด้วยภาพดิจิทัล
สำหรับท่านที่ไปซื้อตามร้านในเครือข่ายศูนย์หนังสือจุฬาฯ แล้วหมด โปรดรอสักระยะหนึ่งขณะนี้กำลังจัดพิมพ์ใหม่และคงจะวางตลาดเร็วๆนี้ครับ ขอบคุณครับ
ผมต้องขออภัยเป็นอย่างสูงที่มีคำผิด และผมได้ตรวจทานในเบื้องต้นแล้ว
พบว่ามีที่ผิดต้องแก้ใขตามใบแทรกนี้
แก้ใขคำผิดในหนังสือ การรังวัดด้วยภาพดิจิทัล
สำหรับท่านที่ไปซื้อตามร้านในเครือข่ายศูนย์หนังสือจุฬาฯ แล้วหมด โปรดรอสักระยะหนึ่งขณะนี้กำลังจัดพิมพ์ใหม่และคงจะวางตลาดเร็วๆนี้ครับ ขอบคุณครับ
วันอังคารที่ 6 กันยายน พ.ศ. 2554
เทคโนโลยีไลดาร์หรือเลเซอร์สแกนเนอร์
เทคโนโลยีไลดาร์หรือเลเซอร์สแกนเนอร์เป็นการสำรวจรังวัดภูมิประเทศด้วยอากาศยานติดตั้งระบบกำหนดตำแหน่ง GPS/IMU ความละเอียดถูกต้องสูงพร้อมกับระบบเลเซอร์สแกนเนอร์ชนิดกวาด ทำให้ได้ข้อมูลแบบจำลองภูมิประเทศทั้ง Digital Elevation Model :DEM และ Digital Surface Model:DSM
ตัวอย่างภาพของ DEM และ DSM บริเวณสถาบันพระจอมเกล้าเจ้าคุณทหารลาดกระบัง
ข้อมูลจากไลดาร์เป็นข้อมูลสำคัญมากสำหรับการวางแผนป้องกันภัยน้ำท่วม การระบายน้ำ การบรรเทาสาธารณภัย ดังจะเห็นได้จากหน่วยงานบรรเทาภัยพิบัติ FEMA ของสหรัฐอเมริกา กำหนดให้เป็นวิธีหลักในการศึกษา จัดทำ แผนที่ขอบเขตเสียงภัยน้ำท่วม Flood Hazard Boundary Maps (FHBMs) และแผนทีอัตราค่าประกันภัยน้ำท่วม (Flood Insurance Rate Maps : FIRMs)
รายละเอียดด้านเทคนิคและการประประมวลอ่านได้จากเอกสารคำสอนนี้
ตัวอย่างภาพของ DEM และ DSM บริเวณสถาบันพระจอมเกล้าเจ้าคุณทหารลาดกระบัง
ข้อมูลจากไลดาร์เป็นข้อมูลสำคัญมากสำหรับการวางแผนป้องกันภัยน้ำท่วม การระบายน้ำ การบรรเทาสาธารณภัย ดังจะเห็นได้จากหน่วยงานบรรเทาภัยพิบัติ FEMA ของสหรัฐอเมริกา กำหนดให้เป็นวิธีหลักในการศึกษา จัดทำ แผนที่ขอบเขตเสียงภัยน้ำท่วม Flood Hazard Boundary Maps (FHBMs) และแผนทีอัตราค่าประกันภัยน้ำท่วม (Flood Insurance Rate Maps : FIRMs)
รายละเอียดด้านเทคนิคและการประประมวลอ่านได้จากเอกสารคำสอนนี้
เบื้องหลังการถ่ายทำ steetview ของกูเกิ้ล
มาดูกันชัดๆว่ารถเก็บข้อมูล google streetview ทำงานอย่างไร พนักงานที่กูเกิ้ลประกาศรับสมัครงาน ที่ว่าต้องสามารถปีนขึ้นหลังคารถและติดตั้งเครื่องมือประจำวันได้ทำงานหนักอย่างไร
วันพฤหัสบดีที่ 1 กันยายน พ.ศ. 2554
Google Street View บุกประเทศไทย
แล้วข่าวที่คาดเดาก็เปิดเผยออกมาแล้ว เมื่อกูเกิ้ลแถลงข่าวร่วมพันธมิตรคือ การท่องเที่ยวแห่งประเทศไทย (ททท.) เริ่มโครงการสตรีทวิวที่ทั่วประเทศไทย "เพื่อสนับสนุนแคมเปญใหม่ในการรณรงค์การท่องเที่ยวไทย" ยินดีด้วยครับ
-------------------------------------------------------
---------------------กำหนดการแถลงข่าว----------------
--------“ส่งเสริมการท่องเที่ยวไทย ด้วย Google แผนที่กับสตรีทวิว”-----------
-------เพื่อประกาศเริ่มโครงการ Google แผนที่กับสตรีทวิว ทั่วประเทศ-----------
------------วันพฤหัสบดีที่ ๑ กันยายน ๒๕๕๔ ------------------------
----------ณ ร้านกาแฟดอยตุง พระที่นั่งอนันตสมาคม-------------------
------------------------------------------------------
ฝูงของรถกูเกิ้ลสตรีทวิว นับได้ 15 คัน
-------------------------------------------------------
---------------------กำหนดการแถลงข่าว----------------
--------“ส่งเสริมการท่องเที่ยวไทย ด้วย Google แผนที่กับสตรีทวิว”-----------
-------เพื่อประกาศเริ่มโครงการ Google แผนที่กับสตรีทวิว ทั่วประเทศ-----------
------------วันพฤหัสบดีที่ ๑ กันยายน ๒๕๕๔ ------------------------
----------ณ ร้านกาแฟดอยตุง พระที่นั่งอนันตสมาคม-------------------
------------------------------------------------------
ฝูงของรถกูเกิ้ลสตรีทวิว นับได้ 15 คัน
วันจันทร์ที่ 27 มิถุนายน พ.ศ. 2554
GPU กับงานประมวลผลภูมิสารสนเทศ
ขอบคุณดร.ฮอนด้า(AIT) ดร.ภุชงค์ (KU) และ ศาสตราจารย์ อาโอกิ (Tokyo Univ.) จัดฝึกอบรม
Joint International Workshop on HPC for Natural Disaster Simulation and GPU computing
Dr. Putchong Uthayopas, Head of computer engineering, Kasetsart University
Prof. Aoki Takayuki, GSIC, Tokyo Institute of Technology
Prof. Honda Kiyoshi, IDEAS Chubu University
27 June 2011: Presentation Session
28 June 2011: GPU Tutorial Session
Joint International Workshop on HPC for Natural Disaster Simulation and GPU computing
Dr. Putchong Uthayopas, Head of computer engineering, Kasetsart University
Prof. Aoki Takayuki, GSIC, Tokyo Institute of Technology
Prof. Honda Kiyoshi, IDEAS Chubu University
27 June 2011: Presentation Session
28 June 2011: GPU Tutorial Session
วันจันทร์ที่ 20 มิถุนายน พ.ศ. 2554
วันอาทิตย์ที่ 5 มิถุนายน พ.ศ. 2554
รหัสมาตรฐานการแปลงพื้นหลักฐานและการฉายแผนที่
ในบ้านเรา รหัสมาตรฐานการแปลงพื้นหลักฐานและการฉายแผนที่ ที่ต้องใช้บ่อย ผมทบทวนให้ดูดังนี้
มาตรฐานรหัสพื้นหลักฐานแผนที่ (map datum) และการฉายแผนที่ (map projection) ตามมาตรฐาน European Petroleum Survey Group (EPSG) ปัจจุบันชื่อว่าThe OGP Surveying and Positioning Committee มาตรฐานนี้เป็นที่ยอมรับมาตรฐานานาชาติ ISO และมาตรฐานวิชาชีพ OGC
*** ข้อสังเกตและข้อควรระวัง พืนหลักฐาน IndianDatum1975 กำหนดขนาดของทรงรีโลกและพารามิเตอร์ต่างๆชัดเจน แต่!!!ไม่รวมถึงพารามิเตอร์การแปลงพื้นหลักฐาน ผู้ใช้จะต้องเลือกใช้เอง , สรุปสั้นๆ ไม่มี "ตัวเลข" มาตรฐานพารามิเตอร์การแปลงพื้นหลักฐานะครับ แต่มีชื่อฟิลด์ให้ใช้ครับ เช่น มักจะเรียกว่า TOWGS84 ครับ ***
กรณีพื้นที่ศึกษาของท่านอยู่ในพื้นที่อื่นๆนอกเหนือจากประเทศไทย ท่านสามารถตรวจสอบรหัส CRS ได้ที่ http://www.epsg.org/ or http://spatialreference.org/?
มาตรฐานรหัสพื้นหลักฐานแผนที่ (map datum) และการฉายแผนที่ (map projection) ตามมาตรฐาน European Petroleum Survey Group (EPSG) ปัจจุบันชื่อว่าThe OGP Surveying and Positioning Committee มาตรฐานนี้เป็นที่ยอมรับมาตรฐานานาชาติ ISO และมาตรฐานวิชาชีพ OGC
พื้นหลักฐาน | ระบบพิกัดและการฉายแผนที่ | รหัสมาตรฐาน |
---|---|---|
WGS84 | Geographic Coord.Sys. | EPSG:4326 |
WGS84 | UTM Zone 47N | EPSG:32647 |
WGS84 | UTM Zone 48N | EPSG:32648 |
IndianDatum1975 | Geographic Coord.Sys. | EPSG:4240 |
IndianDatum1975 | UTM Zone 47N | EPSG:24047 |
IndianDatum1975 | UTM Zone 48N | EPSG:24048 |
*** ข้อสังเกตและข้อควรระวัง พืนหลักฐาน IndianDatum1975 กำหนดขนาดของทรงรีโลกและพารามิเตอร์ต่างๆชัดเจน แต่!!!ไม่รวมถึงพารามิเตอร์การแปลงพื้นหลักฐาน ผู้ใช้จะต้องเลือกใช้เอง , สรุปสั้นๆ ไม่มี "ตัวเลข" มาตรฐานพารามิเตอร์การแปลงพื้นหลักฐานะครับ แต่มีชื่อฟิลด์ให้ใช้ครับ เช่น มักจะเรียกว่า TOWGS84 ครับ ***
กรณีพื้นที่ศึกษาของท่านอยู่ในพื้นที่อื่นๆนอกเหนือจากประเทศไทย ท่านสามารถตรวจสอบรหัส CRS ได้ที่ http://www.epsg.org/ or http://spatialreference.org/?
การแปลงพื้นหลักฐานและการฉายแผนที่ด้วย FOSS4G
มาตรฐานการแปลงพื้นหลักฐานและการฉายแผนที่ เป็นเรื่องสำคัญและยังสร้างความสับสนกับวงการแผนที่ไทย โดยเฉพาะซอฟต์แวร์ที่โดยธรรมชาติไม่ได้บรรจุพารามิเตอร์การแปลงที่ประเทศต้องใช้ΔX= -206 m., ΔY=-837 m., ΔZ=-295 m.
โชดดีที่ซอฟต์แวร์ไลบรารี่ proj4 มีความสดวกนี้รองรับ ซึ่งมีการเรียกใช้ในซอฟต์แวร์ gdalwarp สำหรับการแปลงแผนที่ภาพ และ ogr2ogr สำหรับการแปลงเวกเตอร์
ก่อนทำการแปลงพื้นหลักฐานและการฉาย ผู้ใช้ต้องเตรียมไฟล์สั้นที่เป็นนิยามพื้นหลักฐานและการฉายดังตารางนี้
----------------------------------------------------------------------
ชื่อไฟล์ - พื้นหลักฐาน - นิยามของพื้นหลักฐานและการฉาย
----------------------------------------------------------------------
ThaiInd1975.pj4
พื้นหลักฐานอินเดียน 1975และระบบพิกัดยีออเดติกส์
+proj=lonlat +ellps=evrst30 +towgs84=206,837,295
----------------------------------------------------------------------
ThaiInd1975_utm47.pj4
พื้นหลักฐานอินเดียน 1975และการฉายระบบพิกัดยูทีเอ็มโซน47
+proj=tmerc +ellps=evrst30 +lon_0=99 +x_0=500000 +k=0.9996 +towgs84=206,837,295
----------------------------------------------------------------------
ThaiInd1975_utm48.pj4
พื้นหลักฐานอินเดียน 1975 และการฉายระบบพิกัดยูทีเอ็มโซน48
+proj=tmerc +ellps=evrst30 +lon_0=105 +x_0=500000 +k=0.9996 +towgs84=206,837,295
----------------------------------------------------------------------
+++ตัวอย่างสำหรับการฉายแผนที่ภาพแรสเตอร์ ด้วยยูทิลิตี้ gdalwarp ในการแปลงภาพจากพื้นหลักฐานอินเดียน 1975 ระบพิกัดยูทีเอ็มโซน 47 ให้เป็นแผนที่ภาพใหม่ที่ระบบพิกัดอ้างอิงบนพื้นหลักฐาน WGS84 และให้ระบบพิกัดเป็นค่าพิกัดยีออเดติกส์ (ระบบพิกัดภูมิศาสตร์) เพื่อเตรียมไปซ้อนทับบน Google Earth
gdalwarp -s_srs “ThaiInd75_utm47.pj4” -t_srs epsg:4326 ortho_id75utm47.tif ortho_geo_wgs84.tif
+++ มีข้อมูลเวกเตอร์ในระบบพื้นหลักฐานอินเดียน 1975 ฉายด้วยระบบพิกัดยูทีเอ็มโซน 47 ต้องการแปลงให้เป็นพื้นหลักฐาน WGS84 และให้ระบบค่าพิกัดเป็นค่าพิกัดยีออเดติกส์ (ภูมิศาสตร์) สำหรับนำไปใช้งานบน Google Earth
ogr2ogr –f “KML” -t_srs EPSG:4326 -s_srs “ThaiInd1975_utm47.pj4” province_geo_wgs84.kml province_id75utm47.shp
โชดดีที่ซอฟต์แวร์ไลบรารี่ proj4 มีความสดวกนี้รองรับ ซึ่งมีการเรียกใช้ในซอฟต์แวร์ gdalwarp สำหรับการแปลงแผนที่ภาพ และ ogr2ogr สำหรับการแปลงเวกเตอร์
ก่อนทำการแปลงพื้นหลักฐานและการฉาย ผู้ใช้ต้องเตรียมไฟล์สั้นที่เป็นนิยามพื้นหลักฐานและการฉายดังตารางนี้
----------------------------------------------------------------------
ชื่อไฟล์ - พื้นหลักฐาน - นิยามของพื้นหลักฐานและการฉาย
----------------------------------------------------------------------
ThaiInd1975.pj4
พื้นหลักฐานอินเดียน 1975และระบบพิกัดยีออเดติกส์
+proj=lonlat +ellps=evrst30 +towgs84=206,837,295
----------------------------------------------------------------------
ThaiInd1975_utm47.pj4
พื้นหลักฐานอินเดียน 1975และการฉายระบบพิกัดยูทีเอ็มโซน47
+proj=tmerc +ellps=evrst30 +lon_0=99 +x_0=500000 +k=0.9996 +towgs84=206,837,295
----------------------------------------------------------------------
ThaiInd1975_utm48.pj4
พื้นหลักฐานอินเดียน 1975 และการฉายระบบพิกัดยูทีเอ็มโซน48
+proj=tmerc +ellps=evrst30 +lon_0=105 +x_0=500000 +k=0.9996 +towgs84=206,837,295
----------------------------------------------------------------------
+++ตัวอย่างสำหรับการฉายแผนที่ภาพแรสเตอร์ ด้วยยูทิลิตี้ gdalwarp ในการแปลงภาพจากพื้นหลักฐานอินเดียน 1975 ระบพิกัดยูทีเอ็มโซน 47 ให้เป็นแผนที่ภาพใหม่ที่ระบบพิกัดอ้างอิงบนพื้นหลักฐาน WGS84 และให้ระบบพิกัดเป็นค่าพิกัดยีออเดติกส์ (ระบบพิกัดภูมิศาสตร์) เพื่อเตรียมไปซ้อนทับบน Google Earth
gdalwarp -s_srs “ThaiInd75_utm47.pj4” -t_srs epsg:4326 ortho_id75utm47.tif ortho_geo_wgs84.tif
+++ มีข้อมูลเวกเตอร์ในระบบพื้นหลักฐานอินเดียน 1975 ฉายด้วยระบบพิกัดยูทีเอ็มโซน 47 ต้องการแปลงให้เป็นพื้นหลักฐาน WGS84 และให้ระบบค่าพิกัดเป็นค่าพิกัดยีออเดติกส์ (ภูมิศาสตร์) สำหรับนำไปใช้งานบน Google Earth
ogr2ogr –f “KML” -t_srs EPSG:4326 -s_srs “ThaiInd1975_utm47.pj4” province_geo_wgs84.kml province_id75utm47.shp
วันอังคารที่ 24 พฤษภาคม พ.ศ. 2554
PL/PgSQL สำหรับสร้าง 'ช่วงเวลาของวัน'
นานมาแล้ว ได้เขียน PL/PgSQL สำหรับสร้าง 'ช่วงเวลาของวัน' สำหรับการวิเคราะห์ช่วงเวลาของการเกิดเหตุการณ์ โดยผู้ใช้กำหนดว่า
-6โมงเช้าถึง 7โมงเช้าเรียกว่า สล็อต1
-7โมงเช้าถึง 8โมงเช้าเรียกว่า สล็อต2
.....
และเพื่อใช้ในการ query ก็เลยเขียน PL ไว้ แต่กลัวหาย และอาจเป็นประโยชน์ ก็นำมาฝากไว้ที่นี่
ตัวอย่างการใช้งาน
FUNCTION "PS_Hour_6Slot24"(datetime timestamp with time zone, slot_number boolean)
==================== โค้ดตามนี้ครับ ===========================
-- Function: "PS_Hour_6Slot24"(timestamp with time zone, boolean)
-- DROP FUNCTION "PS_Hour_6Slot24"(timestamp with time zone, boolean);
CREATE OR REPLACE FUNCTION "PS_Hour_6Slot24"(datetime timestamp with time zone, slot_number boolean)
RETURNS text AS
$BODY$
DECLARE
hour_int integer;
hour_int_1 integer;
hour_int_2 integer;
slot_text text;
BEGIN
IF slot_number = TRUE THEN
hour_int := (to_char( datetime, 'HH24' )::integer);
hour_int := hour_int - 5;
IF hour_int < 0 THEN
hour_int := hour_int + 24;
ELSEIF hour_int = 0 THEN
hour_int := 24;
END IF;
RETURN hour_int;
ELSE
hour_int_1 := (to_char( datetime, 'HH24' )::integer);
hour_int_2 := hour_int_1 + 1;
IF hour_int_2 = 24 THEN
hour_int_2 := 0;
END IF;
slot_text := (to_char(hour_int_1, 'FM00')) || '-' || (to_char(hour_int_2, 'FM00' )) ;
RETURN slot_text;
END IF;
END;$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION "PS_Hour_6Slot24"(timestamp with time zone, boolean) OWNER TO postgres;
COMMENT ON FUNCTION "PS_Hour_6Slot24"(timestamp with time zone, boolean) IS 'return either hour-slot 1 to 24 starting from 6 o''clock or hour-slot text';
==================================================================================
-6โมงเช้าถึง 7โมงเช้าเรียกว่า สล็อต1
-7โมงเช้าถึง 8โมงเช้าเรียกว่า สล็อต2
.....
และเพื่อใช้ในการ query ก็เลยเขียน PL ไว้ แต่กลัวหาย และอาจเป็นประโยชน์ ก็นำมาฝากไว้ที่นี่
ตัวอย่างการใช้งาน
FUNCTION "PS_Hour_6Slot24"(datetime timestamp with time zone, slot_number boolean)
==================== โค้ดตามนี้ครับ ===========================
-- Function: "PS_Hour_6Slot24"(timestamp with time zone, boolean)
-- DROP FUNCTION "PS_Hour_6Slot24"(timestamp with time zone, boolean);
CREATE OR REPLACE FUNCTION "PS_Hour_6Slot24"(datetime timestamp with time zone, slot_number boolean)
RETURNS text AS
$BODY$
DECLARE
hour_int integer;
hour_int_1 integer;
hour_int_2 integer;
slot_text text;
BEGIN
IF slot_number = TRUE THEN
hour_int := (to_char( datetime, 'HH24' )::integer);
hour_int := hour_int - 5;
IF hour_int < 0 THEN
hour_int := hour_int + 24;
ELSEIF hour_int = 0 THEN
hour_int := 24;
END IF;
RETURN hour_int;
ELSE
hour_int_1 := (to_char( datetime, 'HH24' )::integer);
hour_int_2 := hour_int_1 + 1;
IF hour_int_2 = 24 THEN
hour_int_2 := 0;
END IF;
slot_text := (to_char(hour_int_1, 'FM00')) || '-' || (to_char(hour_int_2, 'FM00' )) ;
RETURN slot_text;
END IF;
END;$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION "PS_Hour_6Slot24"(timestamp with time zone, boolean) OWNER TO postgres;
COMMENT ON FUNCTION "PS_Hour_6Slot24"(timestamp with time zone, boolean) IS 'return either hour-slot 1 to 24 starting from 6 o''clock or hour-slot text';
==================================================================================
วันเสาร์ที่ 26 กุมภาพันธ์ พ.ศ. 2554
สร้างเลเซอร์สแกนเนอร์สำหรับการรังวัด จากเลเซอร์ในงานอุตสาหกรรม
เลเซอร์สำหรับการรังวัดเพื่อการรังวัดทำแผนที่ สร้างแบบจำลองอาคาร สร้างแบบจลองโรงงานสามมิติ จะเป็นชนิดตั้งพื้นที่เรียกว่า Terrestrial Laser Scanner (TLS) ระยะรังวัดไปได้ไกลสัก 25-600 เมตร ความถี่สัก 50,000-400,000 เฮิร์ต
สำหรับระบบที่ติดรถได้ที่เรียกว่า Vehicular Laser Scanner (VLS) ก็จะมีคุณสมบัติเพิ่มคือกันน้ำ กันสะเทือน
ในอีกแนวคิด low-cost คือสร้างเลเซอร์สแกนเนอร์สำหรับการรังวัด จากเลเซอร์ในงานอุตสาหกรรม นักวิจัยสร้างหุ่นยนตร์ หรือ รถยนตร์ไร้ค้นบังคับ นิยมใช้ไลดาร์ราคาถูก ระยะสั้น 10-80 เมตร ความถี่ <10,000 เฮิร์ต ระบบพวกนี้ได้ Hokuyo UTM-30LX, Sick LMS-291 และล่าสุด Sick มีโปรดักส์ใหม่ LMS 100 Series ที่เล็กน้ำหนักเบา 1.1 กิโล ระยะ 10-50 เมตร ราคา 3059 ปอนด์ ได้มั้ง หรือ 1/10 เครื่องระบบใหญ่เป็นอย่างน้อย
ดังนั้นจึงมีนักวิจัยสนใจที่จะนำมาประกอบกัน1, 2 หรือ 3 เครื่อง หรืออาจจะมากว่า แล้วทำการ calibrate หา intrinsic parameter ซะแล้วให้หมุนได้ 1-2 เฮิร์ต การนำเครื่องมือมาตั้งบนแทนให้หมุนได้ต้องการอุปกรณ์มาตราฐานทางไฟฟ้าเครื่องกลชิ้นหนึ่งที่เรียกว่า "slip-ring" เพื่อให้สายไฟและสัญญาณ ผ่านจากแท่นตั้งพื่้นหรือติดรถไปสู่แกนหมุนทีติดกับเลเซอร์ได้
ลองดูผลงานของ Fraunhofer Institute จากประเทศเยอรมัน ชนิด 2 เครื่อง http://www.3d-scanner.net/
ระบบที่ 1 ประกอบขึ้นจาก Hokuyo UTM-30LX เพียงตัวเดียว
ระบบที่ 2 ประกอบด้วย Sick LMS_291 จำนวน 2 ตัว ภาพจาก www.3d-scanner.net
และล่าสุด ระบบที่ 3 ประกอบด้วย Sick LMS-151 จำนวน 3 ตัว ทำให้ด้วยความถี่ 80,000 เฮิร์ต ใกล้ 100 kHZ!
เข้าใจว่าเป็นความร่วมมือ Informatik Institut , University of Friburg, Germany กับ Robot Group ของ Oxford Univerisyt, UK
http://europa.informatik.uni-freiburg.de/files/SheehanHarrisonNewman_ISER2010.pdf
สำหรับระบบที่ติดรถได้ที่เรียกว่า Vehicular Laser Scanner (VLS) ก็จะมีคุณสมบัติเพิ่มคือกันน้ำ กันสะเทือน
ในอีกแนวคิด low-cost คือสร้างเลเซอร์สแกนเนอร์สำหรับการรังวัด จากเลเซอร์ในงานอุตสาหกรรม นักวิจัยสร้างหุ่นยนตร์ หรือ รถยนตร์ไร้ค้นบังคับ นิยมใช้ไลดาร์ราคาถูก ระยะสั้น 10-80 เมตร ความถี่ <10,000 เฮิร์ต ระบบพวกนี้ได้ Hokuyo UTM-30LX, Sick LMS-291 และล่าสุด Sick มีโปรดักส์ใหม่ LMS 100 Series ที่เล็กน้ำหนักเบา 1.1 กิโล ระยะ 10-50 เมตร ราคา 3059 ปอนด์ ได้มั้ง หรือ 1/10 เครื่องระบบใหญ่เป็นอย่างน้อย
ดังนั้นจึงมีนักวิจัยสนใจที่จะนำมาประกอบกัน1, 2 หรือ 3 เครื่อง หรืออาจจะมากว่า แล้วทำการ calibrate หา intrinsic parameter ซะแล้วให้หมุนได้ 1-2 เฮิร์ต การนำเครื่องมือมาตั้งบนแทนให้หมุนได้ต้องการอุปกรณ์มาตราฐานทางไฟฟ้าเครื่องกลชิ้นหนึ่งที่เรียกว่า "slip-ring" เพื่อให้สายไฟและสัญญาณ ผ่านจากแท่นตั้งพื่้นหรือติดรถไปสู่แกนหมุนทีติดกับเลเซอร์ได้
ลองดูผลงานของ Fraunhofer Institute จากประเทศเยอรมัน ชนิด 2 เครื่อง http://www.3d-scanner.net/
ระบบที่ 1 ประกอบขึ้นจาก Hokuyo UTM-30LX เพียงตัวเดียว
ระบบที่ 2 ประกอบด้วย Sick LMS_291 จำนวน 2 ตัว ภาพจาก www.3d-scanner.net
และล่าสุด ระบบที่ 3 ประกอบด้วย Sick LMS-151 จำนวน 3 ตัว ทำให้ด้วยความถี่ 80,000 เฮิร์ต ใกล้ 100 kHZ!
เข้าใจว่าเป็นความร่วมมือ Informatik Institut , University of Friburg, Germany กับ Robot Group ของ Oxford Univerisyt, UK
http://europa.informatik.uni-freiburg.de/files/SheehanHarrisonNewman_ISER2010.pdf
PostgreSQL กับ วันเดือนปี ของไทย ( Date Time and Thai Localization for PostgreSQL/PostGIS)
ในการพัฒนาฐานข้อมูล เช่น PostgreSQL/PostGIS หากต้องการจัดเก็บวันเวลา ควรใช้เวลาสากล เช่น timestamp with time zone แต่เวลาแสดงผล ต้องเป็นแบบไทยๆ ผมมีฟังก์ชันช่วยงานดังนี้
ชื่อวันของสัปดาห์ ชื่อเดือน ปีพศ ให้ใช้ฟังก์ชัน PS_Day(), PS_Month(), PS_Year()
----------------------------------------------------------------------
-- Function: "PS_Day"(timestamp with time zone, boolean)
-- DROP FUNCTION "PS_Day"(timestamp with time zone, boolean);
CREATE OR REPLACE FUNCTION "PS_Day"(datetime timestamp with time zone, thai_lang boolean)
RETURNS text AS
$BODY$
DECLARE
a_text text;
BEGIN
IF thai_lang = TRUE THEN
a_text := to_char( datetime , 'TMDay' ); -- TM Translation Mode
ELSE
a_text := to_char( datetime , 'Day' );
END IF;
RETURN a_text;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION "PS_Day"(timestamp with time zone, boolean) OWNER TO postgres;
COMMENT ON FUNCTION "PS_Day"(timestamp with time zone, boolean) IS 'return THAI or english day of week';
------------------------------------------------------------------------
-- Function: "PS_Month"(timestamp with time zone, boolean)
-- DROP FUNCTION "PS_Month"(timestamp with time zone, boolean);
CREATE OR REPLACE FUNCTION "PS_Month"(datetime timestamp with time zone, thai_lang boolean)
RETURNS text AS
$BODY$
DECLARE
a_text text;
BEGIN
IF thai_lang = TRUE THEN
a_text := to_char( datetime , 'TMMonth' ); -- TM Translation Mode
ELSE
a_text := to_char( datetime , 'Month' );
END IF;
RETURN a_text;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION "PS_Month"(timestamp with time zone, boolean) OWNER TO postgres;
COMMENT ON FUNCTION "PS_Month"(timestamp with time zone, boolean) IS 'return THAI or english month';
-----------------------------------------------------------------------------
-- Function: "PS_Year"(timestamp with time zone, boolean)
-- DROP FUNCTION "PS_Year"(timestamp with time zone, boolean);
CREATE OR REPLACE FUNCTION "PS_Year"(datetime timestamp with time zone, thai_lang boolean)
RETURNS text AS
$BODY$DECLARE
year_int integer;
BEGIN
IF thai_lang = TRUE THEN
year_int := (EXTRACT(YEAR FROM datetime))::int+543 ;
ELSE
year_int := (EXTRACT(YEAR FROM datetime))::int ;
END IF;
RETURN CAST(year_int AS text);
END;$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION "PS_Year"(timestamp with time zone, boolean) OWNER TO postgres;
COMMENT ON FUNCTION "PS_Year"(timestamp with time zone, boolean) IS 'return BE or AD from ''timesptamp''';
------------------------------------------------------------------------
ปล. ผม copy & paste รู้สึกว่ามัน indent ไม่ค่อยดี แต่โปรแกรมสั้น ไปเคาะเอาเองแล้วกันนะครับ
ลองดูนะครับ หากมีปัญหา เมลย์ถึงแล้วกันจะส่ง dump ไฟล์ไปให้
อ้อ อีกอย่าง ตอน CREATE DATABASE อย่าลืมระบุ
CREATE DATABASE "Your_DB_Name"
WITH OWNER = postgres
ENCODING = 'UTF8'
....
LC_COLLATE = 'Thai_Thailand.874'
LC_CTYPE = 'Thai_Thailand.874'
...
ครับ
ชื่อวันของสัปดาห์ ชื่อเดือน ปีพศ ให้ใช้ฟังก์ชัน PS_Day(), PS_Month(), PS_Year()
----------------------------------------------------------------------
-- Function: "PS_Day"(timestamp with time zone, boolean)
-- DROP FUNCTION "PS_Day"(timestamp with time zone, boolean);
CREATE OR REPLACE FUNCTION "PS_Day"(datetime timestamp with time zone, thai_lang boolean)
RETURNS text AS
$BODY$
DECLARE
a_text text;
BEGIN
IF thai_lang = TRUE THEN
a_text := to_char( datetime , 'TMDay' ); -- TM Translation Mode
ELSE
a_text := to_char( datetime , 'Day' );
END IF;
RETURN a_text;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION "PS_Day"(timestamp with time zone, boolean) OWNER TO postgres;
COMMENT ON FUNCTION "PS_Day"(timestamp with time zone, boolean) IS 'return THAI or english day of week';
------------------------------------------------------------------------
-- Function: "PS_Month"(timestamp with time zone, boolean)
-- DROP FUNCTION "PS_Month"(timestamp with time zone, boolean);
CREATE OR REPLACE FUNCTION "PS_Month"(datetime timestamp with time zone, thai_lang boolean)
RETURNS text AS
$BODY$
DECLARE
a_text text;
BEGIN
IF thai_lang = TRUE THEN
a_text := to_char( datetime , 'TMMonth' ); -- TM Translation Mode
ELSE
a_text := to_char( datetime , 'Month' );
END IF;
RETURN a_text;
END;
$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION "PS_Month"(timestamp with time zone, boolean) OWNER TO postgres;
COMMENT ON FUNCTION "PS_Month"(timestamp with time zone, boolean) IS 'return THAI or english month';
-----------------------------------------------------------------------------
-- Function: "PS_Year"(timestamp with time zone, boolean)
-- DROP FUNCTION "PS_Year"(timestamp with time zone, boolean);
CREATE OR REPLACE FUNCTION "PS_Year"(datetime timestamp with time zone, thai_lang boolean)
RETURNS text AS
$BODY$DECLARE
year_int integer;
BEGIN
IF thai_lang = TRUE THEN
year_int := (EXTRACT(YEAR FROM datetime))::int+543 ;
ELSE
year_int := (EXTRACT(YEAR FROM datetime))::int ;
END IF;
RETURN CAST(year_int AS text);
END;$BODY$
LANGUAGE plpgsql VOLATILE
COST 100;
ALTER FUNCTION "PS_Year"(timestamp with time zone, boolean) OWNER TO postgres;
COMMENT ON FUNCTION "PS_Year"(timestamp with time zone, boolean) IS 'return BE or AD from ''timesptamp''';
------------------------------------------------------------------------
ปล. ผม copy & paste รู้สึกว่ามัน indent ไม่ค่อยดี แต่โปรแกรมสั้น ไปเคาะเอาเองแล้วกันนะครับ
ลองดูนะครับ หากมีปัญหา เมลย์ถึงแล้วกันจะส่ง dump ไฟล์ไปให้
อ้อ อีกอย่าง ตอน CREATE DATABASE อย่าลืมระบุ
CREATE DATABASE "Your_DB_Name"
WITH OWNER = postgres
ENCODING = 'UTF8'
....
LC_COLLATE = 'Thai_Thailand.874'
LC_CTYPE = 'Thai_Thailand.874'
...
ครับ
วันพุธที่ 23 กุมภาพันธ์ พ.ศ. 2554
VGI หัวข้อใหม่ วิชาใหม่ ในวงการศึกษา
Volunteer Geographic Information (VGI) ภูมิสารสารสนเทศด้วยอาสาสมัคร หรือ ภูมิสารสนเทศแบบร่วมด้วยช่วยกัน เป็นแนวทางการยกระดับเครื่องมือในการสร้าง ประกอบ และเผยแพร่ภูมิสารสนเทศโดยอาสาสมัครปัจเจกบุคคล
Professor Goodchild ศาสตราจารย์ด้วย GIS ได้เขียนบทความเป็นเรื่องราว เป็นเชื้อให้วงการศึกษา กำลังมองว่าจะเป็นวิชาใหม่อีกหนึ่งวิชา เป็นหัวขอวิจัย หรือแม้กระทั่ง Loughborough ในอังกฤษคิดเป็นหัวข้อวิทยานิพนธ์ ป เอก แล้วด้วย
รู้จักกับ Professor Goodchild ได้ที่
http://www.geog.ucsb.edu/~good/Goodchild-CV.html
Goodchild 2007
M.F. Goodchild (2007) Citizens as sensors: the world of volunteered geography. GeoJournal 69(4): 211-221. [441]
Professor Goodchild ศาสตราจารย์ด้วย GIS ได้เขียนบทความเป็นเรื่องราว เป็นเชื้อให้วงการศึกษา กำลังมองว่าจะเป็นวิชาใหม่อีกหนึ่งวิชา เป็นหัวขอวิจัย หรือแม้กระทั่ง Loughborough ในอังกฤษคิดเป็นหัวข้อวิทยานิพนธ์ ป เอก แล้วด้วย
รู้จักกับ Professor Goodchild ได้ที่
http://www.geog.ucsb.edu/~good/Goodchild-CV.html
Goodchild 2007
M.F. Goodchild (2007) Citizens as sensors: the world of volunteered geography. GeoJournal 69(4): 211-221. [441]
จัดเก็บไฟล์ภาพ "ปิรามิดภายนอก" หรือ "ปิรามิดภายใน" ดี
ในกลุ่มวิจัยผม หลายปีก่อนมีนักวิจัยทำงาน mapserver / map service ปัญหาที่พบบ่อย คือตัดสินใจว่า จะนำไฟล์แผนที่ภาพขนาดใหญ่ในรูปแบบ GeoTIFF ติดตั้งเข้าในระบบเซอฟร์แวอร์ อย่างไรดี เพื่อให้เรียกดู การย่อขยายทำได้เร็ว
ปกติเรามี 2 แนวทาง
1) "ปิรามิดภายใน" นำ GeoTIFF มาสร้าง image pyramid ด้วย gdal_addo "gdal add overlay" ข้อดีคือจัดการง่าย มีไฟล์ GeoTIFF หนึ่งไฟล์เช่นเดิม แม้ว่าขนาดไฟล์จะเพิ่ม 33% ก็ยินดีรับไปใช้อย่างยิ่ง
2) "ปิรามิดภายนอก" นำ GeoTIFF มาสร้างปิรามิดหลายชั้น แต่ละชั้นคือไฟล์ GeoTIFF ใหม่ วิธีนี้จะได้ไฟล์ geotiff เล็ก แล้วจัดโครงสร้างใน mapfile (UMN Mapserver) คุมด้วย scale min/max
ที่คาใจคือแบบใหนเร็วกว่า และโปรแกรมประยุกต์ผ่านเวปประเภทให้บริการแผนที่ภาพ เราให้ความสำคัญกับความเร็วเป็นเรื่องแรก
แล้วคำถามนี้ประทุขึ้น ผมเชื่อสะสมหลายๆค่ายทั่วโลก จนร้อนถึงศาสดา Frank Warmerdam ได้รับการเรียกร้องจากผู้ใช้และการสนับสนุนจาก MapGears และ USACE ให้ตรวจสอบและปรับปรุง ซึ่ง Frank อธิบายให้พวกเราฟังว่า โดยโลจิก เราน่าจะเห็นการอ่าน "ปิรามิดภายใน" น่าจะเร็วกว่า การอ่าน "ปิรามิดภายนอก" ที่ต้องวิ่งไปเปิดภายหลายไฟล์ อีกทั้งตัดสิ้นใจเงื่อนใขสเกล แต่ในความเป็นจริงปัจจุบัน "ปิรามิดภายใน" กลับประสิทธิภาพต่ำกว่าถึง 3 เท่า ตามกราฟ
หลังจากนี้น่าจะสบายใจได้ Frank ได้แก้ใข และสร้างกลับเข้าไปที่ไลบรารี่พื้นฐานคือ libtiff ในเร็ววัน
สรุป หลังจาก libtiff ใหม่ ซอฟต์แวร์ ทุกตัวที่ใช้ ความสามารถทั้งสองแบบนี้ได้ ก็จะทำงานได้เร็วพอๆกัน
อ่านกูรู ว่าเขาค้นหาปัญหาและแก้ใขอย่างไร เต็มๆได้ที่
http://fwarmerdam.blogspot.com/2011/02/mapserver-tiff-overview-performance.html
อนี่งจะเห็นว่ากรณี Super Overlay ของ GoogleEarth ใช้ ปิรามิดภายนอก + ไทล ร่วมกัน เช่น gdal2tiles ทำให้
ปกติเรามี 2 แนวทาง
1) "ปิรามิดภายใน" นำ GeoTIFF มาสร้าง image pyramid ด้วย gdal_addo "gdal add overlay" ข้อดีคือจัดการง่าย มีไฟล์ GeoTIFF หนึ่งไฟล์เช่นเดิม แม้ว่าขนาดไฟล์จะเพิ่ม 33% ก็ยินดีรับไปใช้อย่างยิ่ง
2) "ปิรามิดภายนอก" นำ GeoTIFF มาสร้างปิรามิดหลายชั้น แต่ละชั้นคือไฟล์ GeoTIFF ใหม่ วิธีนี้จะได้ไฟล์ geotiff เล็ก แล้วจัดโครงสร้างใน mapfile (UMN Mapserver) คุมด้วย scale min/max
ที่คาใจคือแบบใหนเร็วกว่า และโปรแกรมประยุกต์ผ่านเวปประเภทให้บริการแผนที่ภาพ เราให้ความสำคัญกับความเร็วเป็นเรื่องแรก
แล้วคำถามนี้ประทุขึ้น ผมเชื่อสะสมหลายๆค่ายทั่วโลก จนร้อนถึงศาสดา Frank Warmerdam ได้รับการเรียกร้องจากผู้ใช้และการสนับสนุนจาก MapGears และ USACE ให้ตรวจสอบและปรับปรุง ซึ่ง Frank อธิบายให้พวกเราฟังว่า โดยโลจิก เราน่าจะเห็นการอ่าน "ปิรามิดภายใน" น่าจะเร็วกว่า การอ่าน "ปิรามิดภายนอก" ที่ต้องวิ่งไปเปิดภายหลายไฟล์ อีกทั้งตัดสิ้นใจเงื่อนใขสเกล แต่ในความเป็นจริงปัจจุบัน "ปิรามิดภายใน" กลับประสิทธิภาพต่ำกว่าถึง 3 เท่า ตามกราฟ
หลังจากนี้น่าจะสบายใจได้ Frank ได้แก้ใข และสร้างกลับเข้าไปที่ไลบรารี่พื้นฐานคือ libtiff ในเร็ววัน
สรุป หลังจาก libtiff ใหม่ ซอฟต์แวร์ ทุกตัวที่ใช้ ความสามารถทั้งสองแบบนี้ได้ ก็จะทำงานได้เร็วพอๆกัน
อ่านกูรู ว่าเขาค้นหาปัญหาและแก้ใขอย่างไร เต็มๆได้ที่
http://fwarmerdam.blogspot.com/2011/02/mapserver-tiff-overview-performance.html
อนี่งจะเห็นว่ากรณี Super Overlay ของ GoogleEarth ใช้ ปิรามิดภายนอก + ไทล ร่วมกัน เช่น gdal2tiles ทำให้
วันจันทร์ที่ 21 กุมภาพันธ์ พ.ศ. 2554
ตัวอย่าง PL/SQL แปลงพื้นที่ให้เป็น ไร่-งาน-วา
มาหัดเขียน Procudure Language สำหรับไว้แปลงพื้นที่ จากมาตราเมตริก ตารางเมตร ให้แสดงผลเป็น มาตราไทย
อย่างง่าย ผู้ใช้ป้อนค่าพื้นที่ใน หน่วยไร่ เช่น ISO/SF SQL ST_Area( the_geom ) สำหรับ geometry object ที่มี SRID ยูทีเอ็ม โซน 47/47 ที่มีรหัส epsg:32647, 32648 หรือจะใช้ geography object ก็สดวกมาก จัดเป็นเป็นพิกัดภูมิศาสตร์ (ยีออเดติกส์) แต่ให้ผลพื้นที่จาก ST_Area ( geography_type) หน่วยเป็นตารางเมตร โดยตรง
---------------------------------------------------------------------------
CREATE OR REPLACE FUNCTION "PS_Area_Thai"(area float) RETURNS text AS $$
DECLARE
rai int;
ngan int;
wa float;
str_area text;
BEGIN
-- !!!For sake of floating point round-up --
-- !!!THIS PROGRAM IS NOT PERFECT! --
-- !!! THIS IS NOT A PRODUCTION CODE --
rai := floor( area/1600. );
ngan := floor( area/400. - 4.*(rai::float) );
wa := (area/4.) - (rai::float)*400. - (ngan::float)*100.;
RAISE NOTICE 'area % ->rai % ngan % wa %', area, rai,ngan,wa;
str_area := to_char(rai,'999999999') || '-' || to_char(ngan,'9') || '-' || to_char(wa::real,'999D9') ;
return str_area;
END;
$$ LANGUAGE plpgsql;
---------------------------------------------------------------------------
ตัวโครงสร้างโปรแกรมโอเคนะครับ แต่ให้ระวังเรื่องการปัดเศษ เช่น ท่านอาจพบกรณี
ตัวอย่างเช่น พื้นที่ 1.99999969 ไร่
เมื่อคำนวนเป็น ไร่ งาน วา จะได้ 1 ไร่ 3 งาน 99.99987654 ตารางวา
แต่หากต้องการให้ หน่วยวา แสดงผลทศนิยมสัก 1 ตำแหน่ง
อัลกอริธึมในฟังก์ชันข้างต้นจะแสดง "1-3-100.0" หรือ 1 ไร่ 3 งาน 100.0 ตร.ว
ซึ่งคงนำไปแสดงผลใช้งานยังไม่ได้ มนุษย์ก็จะโทษว่าคอมพิวเตอร์ทำงานผิดแน่ๆ
ซึ่งจะต้องแก้ใขต่อไป ไว้จะเล่าให้ฟังต่อครับ
อย่างง่าย ผู้ใช้ป้อนค่าพื้นที่ใน หน่วยไร่ เช่น ISO/SF SQL ST_Area( the_geom ) สำหรับ geometry object ที่มี SRID ยูทีเอ็ม โซน 47/47 ที่มีรหัส epsg:32647, 32648 หรือจะใช้ geography object ก็สดวกมาก จัดเป็นเป็นพิกัดภูมิศาสตร์ (ยีออเดติกส์) แต่ให้ผลพื้นที่จาก ST_Area ( geography_type) หน่วยเป็นตารางเมตร โดยตรง
---------------------------------------------------------------------------
CREATE OR REPLACE FUNCTION "PS_Area_Thai"(area float) RETURNS text AS $$
DECLARE
rai int;
ngan int;
wa float;
str_area text;
BEGIN
-- !!!For sake of floating point round-up --
-- !!!THIS PROGRAM IS NOT PERFECT! --
-- !!! THIS IS NOT A PRODUCTION CODE --
rai := floor( area/1600. );
ngan := floor( area/400. - 4.*(rai::float) );
wa := (area/4.) - (rai::float)*400. - (ngan::float)*100.;
RAISE NOTICE 'area % ->rai % ngan % wa %', area, rai,ngan,wa;
str_area := to_char(rai,'999999999') || '-' || to_char(ngan,'9') || '-' || to_char(wa::real,'999D9') ;
return str_area;
END;
$$ LANGUAGE plpgsql;
---------------------------------------------------------------------------
ตัวโครงสร้างโปรแกรมโอเคนะครับ แต่ให้ระวังเรื่องการปัดเศษ เช่น ท่านอาจพบกรณี
ตัวอย่างเช่น พื้นที่ 1.99999969 ไร่
เมื่อคำนวนเป็น ไร่ งาน วา จะได้ 1 ไร่ 3 งาน 99.99987654 ตารางวา
แต่หากต้องการให้ หน่วยวา แสดงผลทศนิยมสัก 1 ตำแหน่ง
อัลกอริธึมในฟังก์ชันข้างต้นจะแสดง "1-3-100.0" หรือ 1 ไร่ 3 งาน 100.0 ตร.ว
ซึ่งคงนำไปแสดงผลใช้งานยังไม่ได้ มนุษย์ก็จะโทษว่าคอมพิวเตอร์ทำงานผิดแน่ๆ
ซึ่งจะต้องแก้ใขต่อไป ไว้จะเล่าให้ฟังต่อครับ
วันเสาร์ที่ 19 กุมภาพันธ์ พ.ศ. 2554
สรุป 2010 Android โตขึ้น 888.8% เทียบจากปีที่แล้ว
บริษัทวิเคราะห์ตลาดระดับโลก Gartner สรุปการตลาดของสมาร์ทโฟน สรุปยอดเมื่อ กุมภาพันธ์ 2011 ปรากฏว่า Android โตขึ้น 888.8% เทียบจากปีที่แล้ว และเขยิบขึ้นเป็นอันดับ 2 ซะแล้ว
จาก PressRelease: Gartner Says Worldwide Mobile Device Sales to End Users Reached 1.6 Billion Units in 2010; Smartphone Sales Grew 72 Percent in 2010
โดยภาพรวมแล้วยอดขาย Mobile Device เพิ่มทุกเจ้าสูงถึง 31.8% แต่คิดเฉพาะ smart phone ปรากฏว่าโตซะ 72.1% แต่สัดส่วนการตลาดปรับตัวไปมาระหว่างค่ายและเทคโนโลยีค่อนข้าง ผมมองว่าปี สองปีหน้าจะเป็นช่วงรอยต่อ วัดดวงระหว่าง IOS กับ Android
อ้อ อีกอย่าง ปีนี้ต้นไป Android tablet 7 นิ้ว และ 10 นิ้ว ยังเปิดตัวแข่งกันไม่หยุด ส่วน Apple ก็กินบุญเก่า ปั้มและข่าย IPhone4 และ IPAD ด้วยต้นทุนต่ำสุดโดยการขุดดินมาแปรเป็นทางคำ ผลิตรุ่นเดียว โมเดลเดียว สองสีขาว ดำ ก็พอแล้ว แล้วยังโกร่งราคมได้อีกหลายพันบาทในตลาดมือถือบ้านเรา...
ถ้าอยากดูยอดขายรายยี่ห้อ Gartner ก็มีให้ดูตามนี้ครับ
จาก PressRelease: Gartner Says Worldwide Mobile Device Sales to End Users Reached 1.6 Billion Units in 2010; Smartphone Sales Grew 72 Percent in 2010
โดยภาพรวมแล้วยอดขาย Mobile Device เพิ่มทุกเจ้าสูงถึง 31.8% แต่คิดเฉพาะ smart phone ปรากฏว่าโตซะ 72.1% แต่สัดส่วนการตลาดปรับตัวไปมาระหว่างค่ายและเทคโนโลยีค่อนข้าง ผมมองว่าปี สองปีหน้าจะเป็นช่วงรอยต่อ วัดดวงระหว่าง IOS กับ Android
อ้อ อีกอย่าง ปีนี้ต้นไป Android tablet 7 นิ้ว และ 10 นิ้ว ยังเปิดตัวแข่งกันไม่หยุด ส่วน Apple ก็กินบุญเก่า ปั้มและข่าย IPhone4 และ IPAD ด้วยต้นทุนต่ำสุดโดยการขุดดินมาแปรเป็นทางคำ ผลิตรุ่นเดียว โมเดลเดียว สองสีขาว ดำ ก็พอแล้ว แล้วยังโกร่งราคมได้อีกหลายพันบาทในตลาดมือถือบ้านเรา...
ถ้าอยากดูยอดขายรายยี่ห้อ Gartner ก็มีให้ดูตามนี้ครับ
วันจันทร์ที่ 14 กุมภาพันธ์ พ.ศ. 2554
การฝังลายน้ำลงในไฟล์ภาพขนาดใหญ่
การฝังลายน้ำ (watermark) ลงในเนื้อภาพเพื่อวัตถุประสงค์ต่างๆ เช่นการแสดงสิทธิการใช้งาน การให้ข้อมูลข่าวสารที่แน่ใจว่าผู้ใช้งานภาพจะต้องอ่านเป็นต้น หากภาพเล็กก็สามารถใช้ซอฟต์แวร์ image editor เปิดภาพแล้วพิมพ์ข้อความลงไปแล้วสั่งจัดเก็บ แต่หากเป็นภาพขนาดใหญ่เช่น ภาพจากกล้องถ่ายภาพทางอากาศ ภาพจากดาวเทียมสำรวจทรัพยากร เราสามารถใช้ชุดซอฟต์แวร์ฟรี เช่น FWTool/GDAL/OGR และ ImageMagick(convert,composite) ทำไดัดังตัวอย่างนี้
ตัวอย่างข้างต้นทำได้โดยใช้ Batch File ต่อไปนี้
=================================================
@echo on
::
:: to pre-process RTSD-DMC
:: D:\GeoData\Chula-DMC>gdalenhance -ot Byte -equalize test_dmc.tif dmc_0682.tif
::
SET "DMC_IMAGE_NAME=dmc_0682"
::SET "DMC_IMAGE_NAME=dmc_0683"
::SET "DMC_IMAGE_NAME=dmc_0684"
SET "DMC_EXT=.tif"
SET "DMC_LIC_SUFFIX=_SV_LIC.tif"
::
::SET DEBUG=True
SET DEBUG=False
if "%DEBUG%" == "false" (
SET "DMC_IMAGE=dmc_small.tif"
SET "IMAGE_SIZE=768x1382"
SET "DMC_LIC_IMG=dmc_small_SV_LIC.tif"
) ELSE (
SET "DMC_IMAGE=%DMC_IMAGE_NAME%%DMC_EXT%"
SET "IMAGE_SIZE=7680x13824"
SET "DMC_LIC_IMG=%DMC_IMAGE_NAME%%DMC_LIC_SUFFIX%"
)
echo License-embedded Image named %DMC_LIC_IMG%
::
::
SET IM_CONVERT=d:\Programs\ImageMagick-6.6.5-10\convert.exe
SET IM_COMPOSITE=d:\Programs\ImageMagick-6.6.5-10\composite.exe
SET LICENSE_IMAGE=license.tif
::
::
echo Starting processing at:
time /T
::
%IM_CONVERT% -font C:\Windows\Fonts\angsa.ttf -size %IMAGE_SIZE% -gravity center label:@license_dmc_utf8.txt %LICENSE_IMAGE%
::openev %LICENSE_IMAGE%
::
%IM_COMPOSITE% -dissolve 50 -gravity center %LICENSE_IMAGE% %DMC_IMAGE% %DMC_LIC_IMG%
::openev %DMC_LIC_IMG%
::
ECHO End of processing at
time /T
::
===================================================
สำหรับข้อความที่จะฝังลงไป โดยเฉพาะหากเป็นภาษาไทย อาจจัดเก็บไว้ใน
text file ก่อน โดย encoding ต้องเป็น UTF-8 จึงจะใช้ได้ ใน
ตัวอย่างข้างต้น ผู้เขียนจัดเตรียมข้อความที่ยืดยาวไว้ในไฟล์ชื่อ license_dmc_utf8.txt
ตัวอย่างข้างต้นทำได้โดยใช้ Batch File ต่อไปนี้
=================================================
@echo on
::
:: to pre-process RTSD-DMC
:: D:\GeoData\Chula-DMC>gdalenhance -ot Byte -equalize test_dmc.tif dmc_0682.tif
::
SET "DMC_IMAGE_NAME=dmc_0682"
::SET "DMC_IMAGE_NAME=dmc_0683"
::SET "DMC_IMAGE_NAME=dmc_0684"
SET "DMC_EXT=.tif"
SET "DMC_LIC_SUFFIX=_SV_LIC.tif"
::
::SET DEBUG=True
SET DEBUG=False
if "%DEBUG%" == "false" (
SET "DMC_IMAGE=dmc_small.tif"
SET "IMAGE_SIZE=768x1382"
SET "DMC_LIC_IMG=dmc_small_SV_LIC.tif"
) ELSE (
SET "DMC_IMAGE=%DMC_IMAGE_NAME%%DMC_EXT%"
SET "IMAGE_SIZE=7680x13824"
SET "DMC_LIC_IMG=%DMC_IMAGE_NAME%%DMC_LIC_SUFFIX%"
)
echo License-embedded Image named %DMC_LIC_IMG%
::
::
SET IM_CONVERT=d:\Programs\ImageMagick-6.6.5-10\convert.exe
SET IM_COMPOSITE=d:\Programs\ImageMagick-6.6.5-10\composite.exe
SET LICENSE_IMAGE=license.tif
::
::
echo Starting processing at:
time /T
::
%IM_CONVERT% -font C:\Windows\Fonts\angsa.ttf -size %IMAGE_SIZE% -gravity center label:@license_dmc_utf8.txt %LICENSE_IMAGE%
::openev %LICENSE_IMAGE%
::
%IM_COMPOSITE% -dissolve 50 -gravity center %LICENSE_IMAGE% %DMC_IMAGE% %DMC_LIC_IMG%
::openev %DMC_LIC_IMG%
::
ECHO End of processing at
time /T
::
===================================================
สำหรับข้อความที่จะฝังลงไป โดยเฉพาะหากเป็นภาษาไทย อาจจัดเก็บไว้ใน
text file ก่อน โดย encoding ต้องเป็น UTF-8 จึงจะใช้ได้ ใน
ตัวอย่างข้างต้น ผู้เขียนจัดเตรียมข้อความที่ยืดยาวไว้ในไฟล์ชื่อ license_dmc_utf8.txt
ซอฟต์แวร์คำนวนงานรังวัดยีออเดติกส์
การรังวัดยีออเดติกส์สามารถนำเข้ามูลการรังวัดผสมผสานได้หลากหลาย เช่น จากการรังวัดเส้นฐานในสามมิติในการรับสัญญาณจีพีเอส (GPS baseline measurement) การวัดทิศทางและระยะทางด้วยกล้องโทตอลสเตชั่น (Totalstation) การรังวัดค่าต่างระด้บด้วยกล้องระดับและสต๊าฟอินวาร์(Level with Invar staff) อีกทั้งการรังวัดที่ซับซ้อนที่ต้องการติดตามตรวจสอบสิ่งก่อสร้างขนาดใหญ่ เช่น สะพาน เขื่อน ในกรณีนี้ต้องการซอฟต์แวร์คำนวนงานรังวัดยีออเดติกส์ ที่รองรับข้อมูลรังวัดที่เป็น "ค่าสังเกตุ" หลายหลายคุณภาพ อีกทั้งสามารถเลือกจำลองแบบ เพื่อเปรียบเทียบค่าพิกัดเมื่อเวลาเปลี่ยนไปเช่น การรังวัดตรวจสอบการบิดเบี้ยวของสิ่งปลูกสร้าง (deformation analysis for large structure)
ในการนี้จำเป็นต้องมีซอฟต์วแวร์ช่วยคำนวน ซอฟต์แวร์ที่เป็นเปิดรหัสได้แก่
Gama - Geodesy and Mapping ,
เป็น OpenSource , พัฒนาด้วย GNU-gcc-g++, ข้อมูลนำเข้าเป็น XML ทันสมัย สดวก
JAG3D - Java Graticule 3D
พัฒนาด้วย JAVA , มี GUI และ graphic visualization ครบ, ข้อมูลนำเข้าเป็น Text ง่ายๆ
Xdesy (freeware!)
เป็น freeware แต่แจกมานาน ดูเหมือนได้รับความนิยมพอสมควร
ในภาพเป็นต้วอย่างการประมวลผลการรังวัดตรวจสอบการบิดเบี้ยวของเขื่อน
ท่านมีตัวเลือกถึง 3 ตัวครับ
ในการนี้จำเป็นต้องมีซอฟต์วแวร์ช่วยคำนวน ซอฟต์แวร์ที่เป็นเปิดรหัสได้แก่
Gama - Geodesy and Mapping ,
เป็น OpenSource , พัฒนาด้วย GNU-gcc-g++, ข้อมูลนำเข้าเป็น XML ทันสมัย สดวก
JAG3D - Java Graticule 3D
พัฒนาด้วย JAVA , มี GUI และ graphic visualization ครบ, ข้อมูลนำเข้าเป็น Text ง่ายๆ
Xdesy (freeware!)
เป็น freeware แต่แจกมานาน ดูเหมือนได้รับความนิยมพอสมควร
ในภาพเป็นต้วอย่างการประมวลผลการรังวัดตรวจสอบการบิดเบี้ยวของเขื่อน
ท่านมีตัวเลือกถึง 3 ตัวครับ
วันศุกร์ที่ 11 กุมภาพันธ์ พ.ศ. 2554
เมือต้องอ่าน EXIF จาก Geotagged Photo
กล้องที่มี GPS ในตัวก็เติบโตตามลำดับ อีกทั้งยังเข็มทิศแม่เหล็กชนิดอิเล็คทรอนิกส์สำหรับบอกทิศทางด้วย เช่น SONY DSC-HX5V
การมีพิกัดและทิศทาง อาจนำไปใช้ในการแสดงตำแหน่งภาพและทิศทางในแผนที่ หรือ แทรกภาพเฟรม ไปอยู่บนภาพพาโนรามา
Exif จะบรรจุข้อมูลพิกัดและทิศทาง ดิบๆดังนี้
-----------------Exif Tags------------------------
0 (2, 2, 0, 0)
1 N
2 ((13, 1), (43, 1), (2154, 1000))
3 E
4 ((100, 1), (30, 1), (49889, 1000))
5 0
6 (123, 10)
7 ((9, 1), (40, 1), (16000, 1000))
9 A
10 3
12 K
13 (2, 10)
14 T
15 (32118, 100)
16 M
17 (27925, 100)
18 WGS-84
29 2010:11:18
30 0
----------------------------------------
ค่าสำคัญๆ คำนวนได้จาก
2) Latitude =13+43/60+2154/1000/3600. องศา
หรือ 13-43-02.154 องศา ลิปดา ฟิลิปดา
4)Longitude = 100/1.+30/60 + 16000/1000/3600. องศา
หรือ 100-30-16.000 องศา ลิปดา ฟิลิปดา
6) Altitude = 123/10. เมตร
หรือ 1.23 เมตร
17) ImgDirection = 27925/100.
หรือ 279.25 องศา
การมีพิกัดและทิศทาง อาจนำไปใช้ในการแสดงตำแหน่งภาพและทิศทางในแผนที่ หรือ แทรกภาพเฟรม ไปอยู่บนภาพพาโนรามา
Exif จะบรรจุข้อมูลพิกัดและทิศทาง ดิบๆดังนี้
-----------------Exif Tags------------------------
0
1
2
3
4
5
6
7
9
10
12
13
14
15
16
17
18
29
30
----------------------------------------
ค่าสำคัญๆ คำนวนได้จาก
2) Latitude =13+43/60+2154/1000/3600. องศา
หรือ 13-43-02.154 องศา ลิปดา ฟิลิปดา
4)Longitude = 100/1.+30/60 + 16000/1000/3600. องศา
หรือ 100-30-16.000 องศา ลิปดา ฟิลิปดา
6) Altitude = 123/10. เมตร
หรือ 1.23 เมตร
17) ImgDirection = 27925/100.
หรือ 279.25 องศา
วันอาทิตย์ที่ 23 มกราคม พ.ศ. 2554
Android แซงหน้า iOS
ผมชอบ Android มากกว่า iOS ด้วยเห็นว่าระบบเป็นระบบเปิด มีแพลตฟอร์มให้เลือกมาก การพัฒนาทำได้หลากลาย ที่น่าสนใจมากที่สุดน่าจะเป็นโปรแกรมประยุกต์ด้านภูมิสารสนเทศ ล่าสุด Gartner บริษัทที่ปรึกษาด้านการตลาด แสดงผลการสำรวจล่าสุดปลายปี 2011 ควอเตอร์ที่ 3 Android แซง iOS (iPhone/iPAD) อย่างเห็นได้ชัด และมีการเติบโตแบบก้าวกระโดด เกือบสิบเท่าแนะ และเป็นที่ประจักษ์ว่าตลาดในบ้านเราก็ยังประทุเป็นระยะ ในกราฟ หน่วยเป็นล้านเครื่องนะครับ
และมีความแรงไม่สุดด้วยการเปิดตัว Android 3.0 บนแพลตฟอร์ม Motorolla XOOM ที่ครบอคลุมโปรแกรมประยุกต์ Google Map 3 D
และมีความแรงไม่สุดด้วยการเปิดตัว Android 3.0 บนแพลตฟอร์ม Motorolla XOOM ที่ครบอคลุมโปรแกรมประยุกต์ Google Map 3 D
วันพฤหัสบดีที่ 13 มกราคม พ.ศ. 2554
Openlayers บน IPad/IPhone
Openlayers เป็น web map application ฝั่ง client ทีรองรับมาตราฐานแผนที่ทั้ง de Jura (WMS,WMTS) และ de Facto (Tile Service, Google Maps, Microsoft Bing Maps, Long Maps ?) ตอนนี้มีการพัฒนาให้รองรับ IPad / IPhone ลองดูได้ที่ http://andyet.github.com/OpenLayers-Multitouch/
วันอาทิตย์ที่ 9 มกราคม พ.ศ. 2554
วิทยาการใหม่ในการรังวัดด้วยภาพ
ในทศวรรษใหม่นี้ผมคิดว่าศาสตร์การรังวัดด้วยภาพ Photogrammetry คงจะไปต่อ โดยเฉพาะ
1) Oblique Photogramemtry การรังวัดด้วยภาพถ่ายเฉียง เช่น Pictometry ที่ http://www.pictometry.com/home/home.shtml
2) UAV Photogrammetry การรังว้ดด้วยภาพจากอากาศยานไร้คนขับขนาดเล็ก Unmanned Aerial Vehical ที่ ETH Zurich ของ Prof.Gruen
3) Spherical Photogrammetry การรังวัดจากภาพที่ถ่ายด้วยกล้องรอบทิศ ตัวอย่างเช่น http://cipa.icomos.org/text%20files/KYOTO/58-1.pdf
1) Oblique Photogramemtry การรังวัดด้วยภาพถ่ายเฉียง เช่น Pictometry ที่ http://www.pictometry.com/home/home.shtml
2) UAV Photogrammetry การรังว้ดด้วยภาพจากอากาศยานไร้คนขับขนาดเล็ก Unmanned Aerial Vehical ที่ ETH Zurich ของ Prof.Gruen
3) Spherical Photogrammetry การรังวัดจากภาพที่ถ่ายด้วยกล้องรอบทิศ ตัวอย่างเช่น http://cipa.icomos.org/text%20files/KYOTO/58-1.pdf
Quadcopter นำมาทำแผนที่
กระแส iPhone/iPAD มาแรงมาก แทรกซึมไปถึง QuadCopter เดิมผมชอบ MicroDrone เพราะมีซอฟแวร์ OrbitGISช่วยทำแผนที่ได้จริงๆจังๆ แต่ Microdrone ก็แพงมากเป็นล้านหรือหลายล้านบาท แสดงในภาพ
แต่ภายหลังพบว่า Parrot AR.Drone นิยมกันมาก ยิ่งเอามาบูรณาการกับ iPhone/iPAD ยิ่งไปกันใหญ่
นอกจากนี้ Parrot AR.Drone ยังมี API เปิดให้นักพัฒนาเกมส์ด้วย น่าสนใจมากแล้วจะเอามาทำเป็นเครื่องมือทำแผนที่ได้ ตามแนวคิด UAV Photogrammetry ได้ดีเพียงใด
บรรทัดสุดท้ายในที่นี้ เห็นราคาเปิดตัวที่ TOY-R-US ฮ่องกง 2,299 HKD คิดเป็นเงินไทยต่ำกว่าหมื่นครับ แต่เอไม่แน่ใจราคาดังกล่าวรวมกล้องดิ่งและกล้องหน้ารึยัง น่าจะรวมนะ เห็นว่าเป็นมาตรฐาน
แต่ภายหลังพบว่า Parrot AR.Drone นิยมกันมาก ยิ่งเอามาบูรณาการกับ iPhone/iPAD ยิ่งไปกันใหญ่
นอกจากนี้ Parrot AR.Drone ยังมี API เปิดให้นักพัฒนาเกมส์ด้วย น่าสนใจมากแล้วจะเอามาทำเป็นเครื่องมือทำแผนที่ได้ ตามแนวคิด UAV Photogrammetry ได้ดีเพียงใด
บรรทัดสุดท้ายในที่นี้ เห็นราคาเปิดตัวที่ TOY-R-US ฮ่องกง 2,299 HKD คิดเป็นเงินไทยต่ำกว่าหมื่นครับ แต่เอไม่แน่ใจราคาดังกล่าวรวมกล้องดิ่งและกล้องหน้ารึยัง น่าจะรวมนะ เห็นว่าเป็นมาตรฐาน
Immersive Video System โดย iMove
iMove เป็นบริษัททีให้ความสำคัญของการใช้งาน Video GIS ปัจจุบันได้พัฒนาโซลูชั่นต่างๆ ใช้ประโยชน์จากกล้อง NTSC กล้องรักษาความปลอดภัยที่ใช้กันอย่างแพร่หลาย ก็จะมีราคาถูกหน่อย หากใช้กล้อง IEEE/USB3 ก็จะได้คุณภาพสูงขึ้น ผลิตภัณฑ์จาก iMove แสดงในภาพ Brochure GeoView Immersive Video Systems
สมัครสมาชิก:
บทความ (Atom)