Band Combination

Standard

หลาย ๆ ครั้งที่ งง ๆ กับ การผสมสี วันนี้ก็เจอข้อมูลการผสมสีของภาพ สำหรับจุดประสงค์ ต่าง ๆ ก็เลยเอามาแปะไว้สะหน่อย

เพราะปกติก็ใช้แต่ 3,2,1  แล้วก็ 4,3,2 แค่นี้ละมั้ง

http://web.pdx.edu/~emch/ip1/bandcombinations.html

คำนิยามแบบได้ใจความของ Mapserver

Standard

ได้ไปอ่านเจอ “Mapserver : a completed unbiased  Overview” by Paul Ramsey แล้วได้ใจมากกับคำนิยามที่ตรงใจ เวลาคนอื่นถามว่าทำไมไม่ใช้ ArcIMS ทำไมไม่ Geoserver ก็เพราะว่า …..

Mapserver is strong like OX มันแข็งแรงเหมือน วัว

Mapserver is fast like cheetah มันเร็วเหมือนเสือชีตาท์ (อันนี้เห็นด้วยอย่างแรง เวลาบอกคนอื่นก็มักบอกแต่คนดี อันนี้)

Mapserver is kind of cheetox or an Oxtah คุณเห็นด้วยไหม ???

อีกอย่างที่น่าสนใจก็คือ

Mapserver is an rendering engine มันก็เป็นแค่เครื่องจักรที่มีหน้าที แปลงข้อมูลดิบ ให้เป็นแผนที่ที่สวยงาม

แต่ Geoserver, Mapguide  and Arc IMS นั้นเปรียบได้เหมือน รถยนต์ ที่มักรวมเบาะที่นั่งนุ่ม ๆ เครื่องเสียงเล้าใจ ไฟกระพริบสีสรร

ลองอ่านเพิ่มเติมได้จากที่นี่นะครับ

http://s3.cleverelephant.ca/geoweb-mapserver.pdf

ผลงานของ AIST มาเผยแพร่สะหน่อย

Standard

อ่านข่าวเจอ ข่าวของหน่วยงานตัวเองก็เอามา post สะหน่อย

ญี่ปุ่นอวดโฉมหุ่นยนต์นางแบบในชุดเจ้าสาว

โดย ASTVผู้จัดการออนไลน์ 22 กรกฎาคม 2552 20:09 น.

เอเจนซี – สถาบันเพื่อวิทยาศาสตร์และเทคโนโลยีอุตสาหกรรมชั้นนำแห่งชาติญี่ปุ่น(AIST) เปิดตัวหุ่นยนต์นางแบบ “Miim” อย่างเป็นทางการ โดยหุ่นยนต์เสมือนมนุษย์สวมชุดเจ้าสาวที่ออกแบบโดยยุมิ คัตซุรา ดีไซเนอร์แดนปลาดิบ ขณะที่ผู้พัฒนามันขึ้นเผยว่า หุ่นยนต์รุ่นี้มีมูลค่า 72 ล้านบาท

หุ่นยนต์เสมือนมนุษย์ HRP-4C ชื่อ “Miim” มีมอเตอร์ควบคุมการเคลื่อนไหวและเซ็นเซอร์รวม 40 ตัว เพื่อเลียนแบบการเคลื่อนไหวของนางแบบที่มีเลือดเนื้อจริงๆ โดยหุ่นยนต์ตัวนี้สามารถแสดงได้หลากหลายอารมณ์ เช่น โกรธ สนุก และประหลาดใจ ผ่านคำสั่งจากอุปกรณ์บลูทูธ

แม้จะสูงเพียง 158 เซนติเมตร ซึ่งเป็นส่วนสูงโดยเฉลี่ยของผู้หญิงญี่ปุ่นอายุระหว่าง 19-29 ปี แต่มีนำหนักเท่ากับสาวผอมบางเพียง 43 กิโลกรัม

คาซุฮิโตะ โยโกอิ นักพัฒนาของสถาบันเอไอเอสที เผยว่า ใช้งบประมาณพัฒนาหุ่นยนต์ตัวนี้ไปมากกว่า 200 ล้านเยน หรือราว 72 ล้านบาท โดยหุ่นยนต์ตัวนี้ถูกพัฒนาขึ้น เพื่อใช้ในอุตสาหกรรมด้านบันเทิงเป็นหลัก แต่ยังไม่ได้วางขายในตลาด

หุ่นยนต์ตัวนี้สามารถแสดงได้หลากหลายอารมณ์ เช่น โกรธ สนุก และประหลาดใจ

ที่มา Manager Online

สุริยุปราคา กับภาพถ่ายดาวเทียม

Standard

ผ่านไปไม่นานกับปรากฏการณ์ สุริยุปราคา ที่เกิดนาน กว่าในทุก ๆ ครั้ง ครั้งนี้ก็เกิดแบบเต็มดวง ในแถบบริเวณ จีน ญี่ปุ่น อินเดีย

ใน การประชุมกันในหน่วยงาน ก็มีการพูดถึงกันถึงปรากฏการณ์นี้ว่ามีใครเห็นบ้างไหม แต่ที่หน่วยงานไม่เห็น เพราะถึงจะอยู่ในญี่ปุ่น แต่ไม่อยู่ในเขตนั้นอีกทั้ง เมฆก็หนามาก ก็รู้สึกแค่ว่า มันไม่สว่าง มาก

แต่ ก็มีความคิด ขึ้นมาได้ว่า ครั้งนี้ เกิดในช่วงเวลา 10.30-11.00 ซึ่งเป็นช่วงเวลาเดียวกันถ่ายภาพของ MODIS/Terra ซึ่งเป็นระบบสำรวจแบบ Passive ถ้าแหล่งกำหนด ถูกบังไป มันต้องมีผลแน่นอน ก็เลยถามคนที่คุมด้านนี้ว่า ภาพมันจะเป็นอย่างไร ทุกคนก็สงสัย ก็เลยมีการค้นหาข้อมูล ก็ได้ภาพตามที่ปรากฏ ซึ่งภาพจะมัว ๆ คล้ำ ๆ แล้วจะเห็น Bad pixel อยู่ด้านขวาล่าง ๆ ซึ่งบริเวณนั้นเป็น ศูนย์กลางของเงาสุริยปราคา

ก็ยังมีภาพเคลื่อนไหว จากภาพถ่ายของ MTSAT ด้วยจาก link นี้ แต่ต้องพยายามสักเกต ให้ดีจะมีดำ ๆ บริเวณแถว ๆ ทางใต้ญี่ปุ่นและตะวันออกของจีน อยู่ช่วงนึง

090722.jpg

SWIG Mapscript vs PHP Mapscript

Standard

เคยแต่ใช้ PHP Mapscript มาสะนาน คราวนี้มาลองใช้ SWIG Mapscript ดูบ้าง ก็เลยลองกลับ Python 2.6

มาเปรียบเทียนกันเลยละกัน Code ที่แสดงเป็นการเปลี่่ยนค่า PROCESSING ของ RASTER layer แล้วทำการ QueryByPoint โดยใน PHP เจอปัญหาสามารถกำหนดค่า BANDS ได้เพียง 5 bands แต่ใน python ในนั้นไม่มีปัญหา รวมถึงหากกำหนดใน mapfile เช่นกันคาดว่าจะเป็นในเรื่องของ ขนาด shape result ที่ใหญ่เกินกว่าที่กำหนดไว้

เท่าที่ลองใช้ python mapscript ก็ใช้งานได้ดี โดยเฉพาะในแบบ interactive ทำให้ง่ายต่อการ debug

Python Code

import mapscriptomap=mapscript.mapObj("test.map")

olayer=omap.getLayerByName("testdata")

olayer.status=mapscript.MS_ON

olayer.clearProcessing()

olayer.setProcessingKey("BANDS","1,2,3,4")

queryPoint = mapscript.pointObj(-179.5,89.5)

olayer.queryByPoint(omap,queryPoint,mapscript.MS_SINGLE,-1)

olayer.open()

for i in range(olayer.getNumResults()):

result=olayer.getResult(i)

s=olayer.getFeature(result.shapeindex)

for i in range(olayer.numitems):

print "%s: %s" % (olayer.getItem(i), s.getValue(i)

olayer.close()

PHP Mapscript

dl("php_mapscript.so");$oMap = ms_newMapobj("/srv/maps/modis/config.map");

$oLayer = $oMap->getLayerByName("testdata");

$oLayer->clearprocessing();

$oLayer->setprocessing("BANDS=1,2,3,4");

$oLayer->set("status","MS_ON");

$queryPoint=ms_newPointObj();

$queryPoint->setXY(-179.5,89.5);

@$oLayer->queryByPoint($queryPoint,MS_SINGLE,-1);

$oLayer->open();

for ($i=0;$i< $oLayer->getNumResults();$i++){

             $oResult = $oLayer->getResult($i);

             $oshape = $oLayer->getfeature($oResult->shapeindex);

             foreach ($oLayer->getitems() as $name){

                          echo $name.": ".$oshape->values[$name]."\n";

             }

}

Result

x: -179.5
y: 89.5
value_0 : -9999
value_1 : -9999
value_2 : 4040
value_3 : 4785
value_list : -9999,-9999-4040,4785
red : 0
green : 0
blue : 0

New release OpenLayers 2.8

Standard

OpenLayers new version 2.8 ได้ออกมาแล้ววันนี้ หลัก ๆ แล้วก็ได้เพิ่มการศักยภาพการรองรับ Vector Feature มากยิ่งขึ้น รวมทั้งการ Parsing ที่เร็วยิ่งขึ้น

ยังมีการเพิ่ม control ใหม่ ๆ และก็การเพิ่มการ support Layers ใหม่ ๆ เช่น OSM และ ArcXML

รายละเอียดการเปลี่ยนและ bugfix ก็ตาม link

ในการส่วนการรองรับ WMS 1.3.0 อย่างสมบูรณ์ก็ต้องรอต่อไป อาจจะไปถึง Version 3.0 หรือหลังจากงาน FOSS4G2009

FOSS4G2009 Sydney,Australia

Standard

อีกครั้งสำหรับ FOSS4G Conference ครั้งนี้จัดที่ Sydney,Australia ระหว่าง 20-23 Oct 2009

FOSS4G Conference

ก็หวังว่าจะได้ไปร่วมอีกครั้งหลังจากครั้งที่แล้วพลาด เพราะยุ่งกับการเตรียมตัวจบ

ครั้งนี้ก็ได้มีส่วนร่วมนิดหน่อย (เท่านั้น) กับการช่วย อจ ไพศาลแปลข้อความเป็นภาษาไทย

ครั้งนี้ถ้าใครไปร่วมแล้วมีส่วนร่วมช่วย vote ให้ด้วยแล้วกันนะครับ เพราะมีคนส่งไปเกือบ 180 abstract แต่สงสัยจะรับได้ไม่เกิน 100 เท่านั้น

อยู่แถว ๆ หน้าที่ 5-7 ได้นะ ฝากด้วยนะครับ

Validation of Satellite Image with Ground Sensor Network based on OGC Web Services Framework (Sarawut Ninsawat)

ทั้งนี้และทั้งนั้น ฝาก vote ให้ของ อจ ไพศาลและ น้องชัยภัทร ด้วยนะครับ

The Capacity Building Tools ‘FOSS4G’ (Phisan Santitamnont)

Implementation OGC Sensor Web Enablement supporting Local Participation in Water Resource Management (chaipat Nengcomma)

Coordinate Systems and Axis Orientation ใน WMS 1.3.0

Standard

ก็ได้กล่าวไปบ้างแล้วสำหรับ การเปลี่ยนแปลงของ ระบบอ้างอิง x,y ใน WMS 1.3.0

ก็มาพูดถึงโดยละเอียดอีกทีว่าเป็นอย่างไร

  • โดยทั่วไปใน WMS 1.xx ส่วนใหญ่ทุกคนจะใช้ EPSG:4326 สำหรับ WGS84 lon/lat ในลักษณะนี้กันBBOX=-180.0,-90.0,180.0,90.0&…
  • แต่ใน WMS 1.3.0 นั้น EPSG:4326 เปลี่ยนแปลงไปเป็น WGS84 lat/lon โดยกำหนดพิกัดแบบ &BBOX=-90.0,-180.0,90,180.0

นั้นจึงเป็นปัญหาที่พบกันอยู่ซึ่งส่วนใหญ่เท่าที่เจอคือ EPSG ที่ใช้พิกัดแบบ longitude latitude  ส่วนใหญ่ใน WMS 1.3.0 จะเปลี่ยนเป็นแบบ lat/lon

  • แต่ใน WMS1.3.0 ก็ได้กำหนดระบบอ้างอิงมาเป็น CRS:84 ซึ่งจริง ๆ แล้วก็คือ EPSG:4326 ใน WMS 1.x.x เพราะเป็นระบบพิกัดแบบ WGS84 lon/lat นั้นเอง

แต่ก็ไม่มั่นใจว่า ระบบ EPSG ทั้งหมดจะเปลี่ยนจาก lon/lat  เป็น lat/lon ทั้งหมดหรือไม่ก็ต้องหาข้อมูลเพิ่มเติมอีกครั้งนึง

WMS 1.3.0 กับ OpenLayers

Standard

มากันอีกแล้วกับ version ใหม่ สิ่งสำคัญในการเปลี่ยนแปลงครั้งนี้คือ

  • ระบบ North-South , East-West
  • แล้วก็ จาก SRS มาเป็น CRS

ระบบใหม่นั้นจะให้ การอ้างอิง Axis เป็นไปตามค่าที่ระบุใน GetCapabilities  ดังนั้นจะใช้อย่างไรก็ต้องทำการศึกษาให้ดี รายละเอียดเพิ่มเติมก็ลองดูจาก http://mapserver.org/ogc/wms_server.html#wms-1-3-0-support

ตัวอย่าง website ภาพถ่ายทางอากาศของญี่ปุ่นที่ support WMS 1.3.0 เท่านั้น

http://orthophoto.mlit.go.jp:8888/wms/service/wmsRasterTileMap?VERSION=1.3.0&REQUEST=GetCapabilities&Service=WMS

แล้วเราจะใช้ WMS 1.3.0 กับ OpenLayers ได้ไหม คำตอบก็คือได้ แต่ไม่สมบูรณ์ เพราะได้รับการยืนยันจาก Chris Schmidt ว่าไม่รับรองการรองรับกับ WMS 1.3.0

แต่ต้องทำการตั้งค่า option ของ layers สะนิดหน่อยให้ใช้  Version 1.3.0 และ CRS

layer = new OpenLayers.Layer.WMS(“MLIT photo”, “http://orthophoto.mlit.go.jp:8888/wms/service/wmsRasterTileMap”,

{layers:”ORTHO”,

CRS:”EPSG:4612″,

VERSION:”1.3.0″

} );

แต่ก็ไม่คิดว่าน่าจะใช่วิธีที่ถูกต้อง เพราะใน URL ที่ส่งไปก็ยังมี SRS อยู่ด้วยต้องทำการหาวิธีที่ถูกต้องต่อไป

เท่าที่ใช้ดูเวลา zoom เข้าไปบางทีก็มีปัญหา แล้วก็ cache บางทีก็ต่อกลับหัวกลับข้าง คาดว่าคงเป็นปัญหาด้าน lon/lat และ lat/lon

ก็อาจจะต้องทำการแก้ไขสร้าง Layer Class ขึ้นมาใหม่ให้สำหรับ wms 1.3.0 โดยการจำลองจาก Layer WMS เดิมแล้วก็ทำการสลับค่า coordinate สะ

WMS and WCS Time

Standard

รับรู้มาตั้งนานแล้วว่า Mapserver support WMS และ WCS Time

เช่นในกรณี MODIS data set ซึ่งจะมีภาพทุก ๆ วัน ก็จะเป็นประโยชน์มากวิธีการทำก็มีใน

http://mapserver.org/ogc/wms_time.html และ http://mapserver.org/ogc/wcs_server.html#wcs-server

มาสรุปสั้น ๆ ให้ได้ใจความ

ก่อนอื่นทำความเข้าใจก่อนว่า 1 ไฟล์ภาพ คือ ข้อมูล หนึ่งวัน หรือหนึ่งเวลา อาจจะมีหลาย band ก็ได้

ขั้นที่ 1 ก็ทำการสร้าง index file ด้วยคำสั่ง

-gdaltindex inde.shp image/*.tif

ก็จะได้ไฟล์ index มาซึ่งจะมี colume “location”  ที่มี path และ filename อยู่

ก็ทำการสร้าง colume เพิ่มมาใหม่ด้วย โปรแกรม GIS เช่น Mapwindos, Qgis etc.. ตั่งชื่ออะไรก็ได้ ให้ข้อมูลเป็นชนิด Text

จากนั้นอาจจะต้องหาวิธีใส่ข้อมูลวันที่เข้าไป ในแต่ละ records.

เสร็จไปขั้นแรก

2. ก็มาสร้าง map file โดยทำการสร้าง layer สำหรับ tile index ซึ่งก็เป็นแบบทั่วไปของ Polygon SHP

3. ทำการสร้าง Layer สำหรับภาพ Modis โดยมีข้อมูลที่สำคัญตามนี้

Layer

NAME modisa ชื่อข้อมูล

Projection

“init=epsg:4326″

End

TYPE RASTER

DUMP True

TILEINDEX “location” ชื่อ colume ที่มี path และ filename

TILEINDEX “time_idx” ชื่อ layer ของ tileindex

METADATA

“wms_timextent” “2008-09-01/2008-09-05 จากวันที่ 1 ถึง 5

“wms_timeitem” “dtime” ชื่อ colume ใน shp ที่มีข้อมูลวันที่

“wms_timedefault” “2008-09-01″

…… และอื่นที่ ๆจำเป็นสำหรับ wms implementation

“wcs_timeitem” “dtime”

“wcs_timeposition” “2008-09-01/2008-09-05″

……

END

เป็นที่น่าสังเกตว่า

wcs_timeextent สามารถกำหนดเป็น แบบ range ได้ หลังจาก Mapserver version 5.4.1