OpenScales

________ถ้ากำลังมองหา web application สำหรับแสดงผลแผนที่ดีๆ ประเภท Flash Client วันนี้ผมมีมานำเสนอหนึ่งตัวครับ เป็น้องใหม่ที่เปิดตัวแรงชื่อว่า Open scales ปัจจุบันออกมาถึงเวอร์ชั่น 1.1 เป็น Web mapping Framework ที่รองรับการพัฒนาบนภาษา ActionScript 3 และ Flex ผมเองไม่ถนัดทาง Flash แต่ผมชอบ Openscale ตรงที่ว่ามี OpenScales API ที่ง่ายต่อการนำไปใช้ เดี่ยวนี้ผมเองเริ่มๆดูๆพวก Flex หรือ Action Script บ้างทั้งที่ยอมรับว่าแต่ก่อนนี้มาตลอด จนมาเมื่อช่วงที่ต้องพัฒนา StreetView App หนีไม่พ้นที่จะต้องใช้ความสามารถของ Flash ในการแสดงผลเลยต้องมาแกะอยู่ แต่สำหรับท่านที่จะเริ่มใหม่ ผมว่า OpenScales ไม่เลวยิ่งถ้าอยากทำ Streetview โชวภาพ panorama รายละเอียดสูง เทคโนโลยีประเภทนี้ค่อนข้างเหมาะสมครับ ทั้งด้านความสวยงามและความหยืดหยุ่นในการแสดงผล โดยเฉพาะส่วนของ interactive

________OpenScales 1.1 ออกมาด้วยความสามารถและฟีเจอร์ต่างๆมากมาย เช่นรองรับการทำงานกับ KML, GML สนับสนุน WMS-C , WFS , on the fly projection , OSM และอื่นๆ มากมายเลยทีเดียว ยังไม่พอเท่านั้น OpenScales รองรับบน platform แบบต่างๆอีก เช่น

- Mobile (ActionScript 3) : ทดสอบบน Flash 10.1 player รันบน Palm Pre

- Web (Flex) : OpenScales 1.1 ทดสอบบน Flash 9 และ Flash 10 players สนับสนุนการทำงานบน Windows, Mac และ Linux

- Desktop (AIR) : desktop mapping application บน AIR ทดสอบการเปิดข้อมูล shapfile

เท่านี้ก็ cool แล้วใช่ไหมครับ เข้าไปดาวน์โหลด sourcecode และโปรแกรมมาทดลองใช้ได้ที่ http://openscales.org/ นอกจากนี้ยังมี doc และตัวอย่าง code ในการพัฒนาเช่นที่ผมนำมาให้ดูเป็นการเพิ่มข้อมูล KML เข้าไปใน Open scale

<?xml version="1.0" encoding="utf-8"?>
<mx:Canvas xmlns="*"
         xmlns:mx="http://www.adobe.com/2006/mxml"
         xmlns:os="http://openscales.org"
         creationComplete="initMap();">

    <os:Map id="fxmap"
            width="100%"
            height="100%"
            zoom="11"
            centerLonLat="2.338345,48.871692">

        <os:TraceInfo id="traceInfo"
                      x="{width-200}"
                      y="0"
                      visible="{displayTrace}"/>

        <os:Mapnik name="Mapnik"
                   isBaseLayer="true"
                   proxy="http://openscales.org/proxy.php?url="/>

        <os:KML url="http://www.parisavelo.net/velib.kml"
                proxy="http://openscales.org/proxy.php?url="
                numZoomLevels="20"
                style="{Style.getDefaultCircleStyle()}"/>

        <os:DragHandler/>
        <os:WheelHandler/>

        <os:Spinner id="spinner"
                    x="{width / 2}"
                    y="{height / 2}"/>
        <os:MousePosition x="10"
                          y="{height-20}"
                          displayProjection="EPSG:4326"/>

    </os:Map>

    <os:ControlPanel x="10"
                     y="10"
                     width="140"
                     title="Navigation">
        <os:PanComponent map="{map}"/>
        <mx:HBox width="100%">
            <os:ZoomComponent map="{map}"/>
            <mx:VBox width="100%"
                     horizontalAlign="right"
                     verticalAlign="top">
                <os:ZoomBoxComponent map="{map}"
                                     width="32"
                                     height="32"/>
            </mx:VBox>
        </mx:HBox>
    </os:ControlPanel>

    <mx:Script>
        <![CDATA[
            import org.openscales.core.popup.Anchored;
            import org.openscales.core.popup.Popup;
            import org.openscales.core.events.FeatureEvent;
            import org.openscales.core.events.MapEvent;
            import org.openscales.core.Map;
            import org.openscales.core.Trace;
            import org.openscales.core.style.Style;

            private var popup:Anchored;

            [Bindable] private var map:Map = null;
            [Bindable] public var displayTrace:Boolean = false;    
            [Bindable] public var displayFirebugTrace:Boolean = false;

            private function initMap():void {
                Trace.useFireBugConsole = displayFirebugTrace;
                map = fxmap.map;

                map.addEventListener(FeatureEvent.FEATURE_CLICK, onFeatureClick);
            }

            private function onFeatureClick(event:FeatureEvent):void {
                if(popup) {
                    popup.destroy();
                }
                popup = null;
                popup = new Anchored();
                popup.feature = event.feature;
                map.addPopup(popup, true);
            }
        ]]>
    </mx:Script>

</mx:Canvas>

Streetview in MapQuest Service

_____จำได้ว่าสมัยที่ผมเรียน GIS ใหม่ๆ case study เรื่องการบริการข้อมูลแผนที่และข้อมูลเชิงพื้นที่แบบ online ตัวที่จะต้องยกมา discus ในชั้นนั้นก็คือ MapQuest ไม่ใช่ Google Map แต่อย่างใด สมัยนั้น MapQuest เป็นอะไรที่ได้รับการยอมรับมากในช่วงแรกๆที่ระบบMapservice หรือข้อมูลถนนหนทางยังไม่มีการ online แบบในปัจจุบัน ถ้าจะหาถนนหรือสถานที่ในอเมริกาสมัยนั้นต้องใช้ MapQuest แต่หลังจากการมาของ Google Map และ Google Earth บทบาทของ MapQuest ก็ลดลงไปเยอะ การแข่งขันแน่นอนว่ายังไม่สามารถเทียบได้ ตอนนี้เล่นบทผู้ตามไปก่อน

_____ในช่วงโค้งสุดท้ายของปี 2009 MapQuest ปล่อย Service ใหม่นั้นคือ Streetview ภายใต้ชื่อ 360view โดยมีมุมมอง 360° แนวราบและ 160° แนวดิ่ง ครอบคลุม 30 เมืองในอเมริกา ฟีเจอร์นี้อาจจะเป็นการขยับตัวก่อนที่จะมีการปรับเปลี่ยนภายใน MapQuest ส่วนรายละเอียดการสำรวจข้อมูล กล้องและอุปกรณ์หาไม่เจอครับ แต่ลองแอบถามไปบ้างแล้วยังไงได้เรื่องเพิ่มเติมจะมา update ครับลองเข้าไปดูและทดลองใช้ที่ http://www.mapquest.com/360

อ้างอิงจาก

http://searchengineland.com/mapquest-finally-launches-street-views-with-360-view-31854

http://blog.mapquest.com/2009/12/11/street-level-imagery-comes-to-mapquest-com-as-360-view/

http://gesterling.wordpress.com/2009/12/14/playing-catch-up-mapquest-launches-360-view/

MySQL White Paper

_____ตอนบ่ายๆนั่งเขียนโปรแกรมระบบ warning system อยู่ก็มีพี่ท่านหนึ่งเข้ามาทักทาง msn ช่วยคุยเรื่องการ implement ระบบและเรื่องอื่นๆอยู่นานสองนาน ความน่าสนใจคือผมรู้สึกว่าปัจจุบันเราเริ่มตื่นตัวเรื่องเกี่ยวกับโลกร้อนและภัยพิบัติกันมาขึ้น หน่วยงานต่างๆก็เข้ามาสนใจในเรื่องนี้ทั้งเมืองไทยและสากล ข่าวใหม่ที่ผมเพิ่งจะรู้จากพี่ท่านนี้คือ ทาง FBI หรือหน่วยงานความมั่นคงของสหรัฐและชาติมหาอำนาจเค้าก็สนใจและมีโปรเจคเกี่ยวกับโลกร้อน โดยมีแนวคิดว่าถ้าน้ำทะเลสูงขึ้น เกิดภัยพิบัติมากขึ้นจะมีผลกระทบต่อคนและเศรษฐกิจโลกเท่าไหร่ มีผู่อพยพมากแค่ไหน และจะทำให้ชาติมหาอำนาจเดือดร้อนหรือเปล่า ผลก็คงรู้ๆกันอยู่เหมือนที่เคยสรุปกันไว้ว่ายังไงก็ต้องกระทบเยอะ เพราะประเทศหมู่เกาะที่ยากจน คนอพยพก็สูงขึ้น แต่แปลกนะครับทั้งที่เรารู้ว่าเดือดร้อนก็น่าจะร่วมมือช่วยกัน หรือหาทางป้องกันไม่ใช่แค่การซื้อเวลาหรือแตะถ่วงไป ว่าด้วยเรื่องที่คุยกันกับพี่ท่านนี้ทำให้ผมอยากรู้ว่าแผ่นดินแถวอ่าวไทยหายไปเท่าไหร่แล้ว เลยลองเองภาพ landsat7 หลายช่วงเวลามาเทียบดูแค่ 5 ปีเราก็สังเกตุเห็นแล้วว่ามันหายไป เดี่ยวมีเวลาจะมาสรุปและอธิบายวิธีการให้ฟังอีกที ผมใช้ข้อมูล landsat 7 ฟรีตั้งแต่อดีต ถึง 2009 ดาวน์โหลดจาก http://glovis.usgs.gov/ อย่าบ่นว่ามันมี strip นะครับ เพราะว่ามันฟรีไง ถ้ามันสวยและดีมีหรือจะฟรี

______เรื่องที่จั่วหัวไว้คือ Mysql แน่นอนว่าวันนี้จะมา update หนังสือ white paper ที่เกี่ยวกับ location technology สำหรับ Mysql มาฝาก โดยสามารถดาวน์โหลดได้ฟรี สิ่งหนึ่งที่จะนำมา confirm ให้ทุกท่านได้รับทราบคือเทรน spatial database กำลังจะมาแรงในปี 2010 ฟังเค้ามาอีกที สำหรับผมใช้มาสามสี่ปีแล้วเลยไม่ได้ตื่นเต้น แต่ปีนี้ผมเห็นหนังสือ Spatial SQL Server, Spatial for Oracle ที่เขียนโดยนักเขียนและนักพัฒนาเก่งๆเลยทำให้อยากเรียนเพิ่มเติมอีก ตอนนี้ได้แต่มองไปก่อนเพราะ textbook ค่อนข้างแพง ประกอบกับผิดแนว opensource แต่ผมก็ยังอยากเรียนรู้ บ่อยครั้งที่ระบบ MIS ที่ implement ด้วย SQL Server หรือ Oracle แล้วต้องมาเก็บข้อมูล GIS ก็มักเกิดอาการงึกๆงักๆ จะเปลี่ยนยี่ห้อ Database มาเป็น postgresql ก็ยาก ครั้นจะใช้ filebase ก็ไม่ยืดหยุ่น คราวนี้มี engine ที่ ฝังใน database เองเลยคงจะเป็นทางออกที่ดีและสดใสสำหรับ ผู้พัฒนาระบบ

______Mysql ก็เป็นอีกตัวที่เหมือนจะถูกดอง เอ้ยไม่ใช่มันเป็น Opensource และมีคนใช้งานเยอะ จึงมีคนพัฒนาโมดูลทาง location เพื่อให้สนับสนุนงานด้าน LBS และ GIS ท่านที่สนใจจะทดลองนำไปใช้เข้าไปอ่าน white paper ที่เรียบเรียงจากผู้รู้จริงเรื่อง “MySQL Cluster for Presence & Location-Based Services”ได้ที่

http://www.mysql.com/why-mysql/white-papers/mysql_cluster_location_presence.php

แต่ก่อนอื่นต้องสมัครเป็นสมาชิคก่อนนะครับ

OpenSource RemoteSensing

______เมื่อคืนไม่ได้ไปฉลองคริสต์มาสที่ไหน แต่แวะไปเดินชมไฟที่กลางกรุง อยากถ่ายรูปมากแต่ เลนส์คู่ใจคู่กายดันเสียตอนที่ไปงานลอยกระทงที่สุโขทัย ประกอบกับไม่สตางค์จะซื้อใหม่  ตอนนี้เลยได้แต่ใช้ตากับใจสำหรับบันทึกภาพไปก่อน เผลอไม่นานก็จะหมดปีแล้ว รู้สึกเวลามันผ่านไปเร็วจริงๆเลยนะครับ ปีนี้ผมมีเป้าหมายที่วางแผนไว้ว่าจะทำหลายอย่างมาก จำได้ว่าจดไว้เต็มสองหน้ากระดาษดีใจที่หลายอันสำเร็จ แต่มีอีกหลายอย่างที่ยังไม่ถึงเวลาของมันไม่อยากไปเร่งรัดมา สิ่งหนึ่งที่สนุกๆและอยากทำและได้ทำแล้วก็คือ Thai Chapter of OSGeo จริงๆไม่ทำอะไรใหญ่โตแค่เพียงชวนเพื่อนๆพี่ๆมาร่วมกันเป็นสมาชิก ผมเองอยากทำ community ของ Opensource Geoinfomatic ในบ้านเราให้ active มากกว่าที่เคยเป็นอยากเกิดการแพร่หลายและแลกเปลี่ยนอย่างยั่งยืนเพราะปัจจุบัน Opensource หลายตัวใช้งานและติดตั้งง่าย ที่สำคัญสามารถทำงานบน windows ได้ด้วย จากการสนับสนุนและเห็นพ้องว่ามีแนวร่วมจึงทำให้ผมได้เริ่มไป register ลงไปใน OSGEO สมาคมที่ดูแลกลุ่ม Opensource ทาง Geoinfomatic คล้ายๆไปบอกเค้าให้รู้ว่าเมืองไทยไม่ได้มีแค่ ทุเรียน กับมังคุด แต่ตอนนี้เรามีคนใช้ Opensource ด้วยนะ สำหรับรายละเอียดเบื้องต้นแวะไปตามได้ที่ http://wiki.osgeo.org/wiki/Thai คาดว่าปีหน้าน่าจะมีความก้าวหน้ามากกว่านี้ สิ่งหนึ่งที่คิดไว้ในใจคือผมอยากทำ wherecamp คล้ายๆ BarCamp แต่เป็นเรื่องที่ focus ไปเฉพาะงานด้าน Geoinfomatic, LBS และอื่นๆ พอดีเพิ่งไปอ่านไสลด์ของงาน Where Camp EU [http://wherecamp.eu/] เลยคิดว่าอยากทำ อยากทำ conference สบายๆไม่มีประธานมาเปิด ไม่ต้องใส่สูต มาคุยกันแลกเปลี่ยนกัน

______โม้ไปก่อนเพื่อมีแนวร่วมอาจจะได้จัด แต่ที่ไม่โม้คือผมมี Opensource ทางด้าน RemoteSensing มาแนะนำ สืบเนื่องจากไปออกบูตแนะนำ Opensource และมีน้องคนหนึ่งถามหาว่ามี opensource ทาง RS ไหม? แนะ llwis กับ Biko ไปยังไม่ชอบผมเลยมีอีกหนึ่งทางเลือกนั้นคือ BEAM http://www.brockmann-consult.de/cms/web/beam ไม่ใช่บีมกวีนะ แต่นี้คือ บีม remote sensing โปรแกรม opensource ที่มีหลายคนแนะนำปากต่อปากคล้ายยาผีบอกของพระอาจารย์ธรรมโชติ แต่ตัวนี้ผมว่าของเค้าดีจริงๆ มีความสามารถตั้งแต่การแสดงผลภาพราสเตอร์ การประมวลผล การวิเคราะห์ข้อมูล สามารถทำงานกับดาวเทียมดังๆทางค่ายยุโรปได้หลายดวงเช่น MODIS, AVHRR, AVNIR, PRISM เป็นโปรแกรมที่พัฒนาจากภาษา Java มี plug-in ที่หลากหลายที่สำคัญลองรับการทำงานกับ DIMAP

______ฟีเจอร์ที่โดดเด่นได่แก่ สนับสนุน WMS Layers, statistics Analysis, Reprojection , ทำ Orthorectification ได้ด้วย ,มี band arithmetic และ band Computing , NDVI, EM and K-Means Clustering, Linear Spectral Unmixing และอื่นๆ ของฟรีทำได้แค่นี้ก็ยอดแล้ว แต่ที่เหนือสิ่งอื่นใดมันคือ Opensource งานที่ท่านที่อยากศึกษา Algorithm หรือคิดจะพัฒนาโปรแกรมก็สามารถนำ BEAM ไปต่อยอดได้ สนใจไปดาวน์โหลดที่ http://www.brockmann-consult.de/cms/web/beam/software

MapServer 5.6 New>>>

_______วันนี้นำข่าวการเปลี่ยนแปลงหนึ่งมาฝาก ท่านที่ใช้ MapServer ในการพัฒนาระบบ ตอนนี้ Umn Map Server ออกเวอร์ชั่นล่าสุดคือ MapServer 5.6 ที่มาพร้อมกับการเปลี่ยนแปลงขนานใหญ่ สิ่งหนึ่งที่เปลี่ยนแปลงคือเรื่องของ MapFile ในเวอร์ชั่น 5.6 MapServer เปลี่ยนจาก Mapfile ที่เป็น text-based ให้เป็น XML ตามคำเรียกร้องของนักพัฒนาหลายกลุ่มที่ต้องการความหยืดหยุ่นจากการใช้ XML ผสานกับเทคโนโลยี web 2.0 หลายคนยิ้มแป้น หลายคนอมทุกข์ เพราะนั้นหมายถึงการที่ต้อง Upgrade ระบบใหม่ แต่ถ้าถามผมผมกับรู้สึกชอบมากกว่า เนื่องจาก XML เป็นอะไรที่ยืดหยุ่นมากกว่า text file และสะดวกเมื่องเราต้องการทำ on the fly process

_____สำหรับการแปลง mapfile แบบเดิม *.map มาเป็น xml ก็ง่ายใช้ xslt ของ mapserver ทำได้เลย โดยดาวน์โหลด xsd สำหรับการแปลงตัวอย่าง

xmlstarlet val -e --xsd mapfile.xsd my-new-mapfile.xml

แปลงกลับจาก xml > .map
xsltproc mapfile.xsl my-new-mapfile.xml > /tmp/my-regular-mapfile.map

ตัวอย่างผลลัพธ์ครับ

<?xml version="1.0" encoding="UTF-8"?>
<Map name="GMAP-DEMO" version="5.6.0" status="ON" xmlns="http://www.mapserver.org/mapserver" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.mapserver.org/mapserver">
<extent>-2200000 -712631 3072800 3840000</extent>
<fontSet>../etc/fonts.txt</fontSet>
<imageColor red="255" green="255" blue="255"/>
<Layer name="bathymetry" type="RASTER" status="ON">
<data>bath_mapserver.tif</data>
<Metadata>
<item name="DESCRIPTION">Elevation/Bathymetry</item>
</Metadata>
</Layer>
<Layer name="popplace" type="POINT" status="ON">
<Class name="Cities">
<color red="0" green="0" blue="0"/>
<expression>1</expression>
<Label type="TRUETYPE">
<align>LEFT</align>
<color red="255" green="0" blue="0"/>
<font>sans-italic</font>
<outlineColor red="255" green="255" blue="255"/>
<partials>FALSE</partials>
<position>AUTO</position>
<size>8</size>
</Label>
<outlineColor red="255" green="255" blue="255"/>
<size>8</size>
<symbol>2</symbol>
<template>ttt_query.html</template>
</Class>
<Class name="Cities">
<color red="110" green="0" blue="0"/>
<expression>/2|3/</expression>
<Label type="TRUETYPE">
<align>LEFT</align>
<color red="0" green="0" blue="0"/>
<font>sans</font>
<outlineColor red="255" green="255" blue="255"/>
<partials>FALSE</partials>
<position>AUTO</position>
<size>8</size>
</Label>
<outlineColor red="255" green="255" blue="255"/>
<size>6</size>
<symbol>7</symbol>
<template>ttt_query.html</template>
</Class>
<classItem>Capital</classItem>
<data>popplace</data>
<labelItem>Name</labelItem>
<Metadata>
<item name="DESCRIPTION">Cities</item>
<item name="DESCRIPTION">NAME</item>
</Metadata>
<tolerance>5</tolerance>
</Layer>
<Legend status="ON">
<keySize x="18" y="12"/>
<Label type="BITMAP">
<align>RIGHT</align>
<color red="255" green="255" blue="255"/>
<size>MEDIUM</size>
</Label>
</Legend>
<OutputFormat name="AGG/PNG">
<driver>AGG/PNG</driver>
<extension>png</extension>
<imageMode>RGB</imageMode>
<mimeType>image/png</mimeType>
<transparent>OFF</transparent>
</OutputFormat>
<QueryMap>
<color red="255" green="0" blue="0"/>
<style>HILITE</style>
</QueryMap>
<Reference status="ON">
<color red="-1" green="-1" blue="-1"/>
<extent>-2200000 -712631 3072800 3840000</extent>
<image>images/keymap.png</image>
<outlineColor red="244" green="43" blue="22"/>
<size x="120" y="90"/>
</Reference>
<ScaleBar status="ON">
<align>CENTER</align>
<backgroundColor red="0" green="0" blue="0"/>
<color red="255" green="255" blue="255"/>
<imageColor red="255" green="255" blue="255"/>
<intervals>5</intervals>
<Label type="TRUETYPE">
<align>CENTER</align>
<color red="0" green="0" blue="0"/>
<outlineColor red="244" green="43" blue="22"/>
<size>SMALL</size>
</Label>
<outlineColor red="0" green="0" blue="0"/>
<size x="150" y="5"/>
<units>KILOMETERS</units>
</ScaleBar>
<shapePath>../data</shapePath>
<size x="400" y="300"/>
<symbolSet>../etc/symbols.sym</symbolSet>
<units>METERS</units>
<Web>
<imagePath>/tmp/ms_tmp/</imagePath>
<imageUrl>/ms_tmp/</imageUrl>
<log>tmp/gmap.log</log>
<maxScaleDenom>50000000</maxScaleDenom>
<minScaleDenom>2000000</minScaleDenom>
</Web>
</Map>
_____นอกจากนี้ 5.6 ยังแก้ bug และเพิ่มประสิทธิภาพในการเข้าถึงข้อมูล เช่นการ Query แบบ ne-pass query processing เพิ่มประสิทธภาพของการกำหนดขนาด resolution รวมไปถึงการแสดง label แบบหลายบรรทัดและการเขียนทับ เป็นต้นแวะไปดาวน์โหลดมาใช้งานได้ที่ http://mapserver.org/download.html#download

2010 Geospatial tech

_____กลับมาแล้วครับ ทักทายเหมือนการได้กลับเข้ามาในบ้านใหม่อีกครั้งหลังจากห่างหายไปนาน จนหลายคนเป็นห่วงว่าจะปิด blog หรือเปล่า คำตอบคือไม่แน่นอนครับ แต่ที่หายไปเพราะว่างานมันชุกจริงๆ มีอบรมสองสัปดาห์ติดแล้วก็ตามด้วยงาน GISTDA conference ทำให้ไม่มีเวลาจะมานั่งชิวเขียน blog เมื่อสัปดาห์ที่ผ่านมา ผมค่อนข้างประทับใจนะโชคดีที่ได้ไปออกบูตทำให้โดนบังคับกลายๆว่าต้องไปงานประชุมวิชาการที่เมืองทองทุกวัน ทำให้ได้เจอพี่น้องมากมายต้องขอบคุณทุกท่านที่แวะเข้าไปทักทายด้วยครับ รู้สึกดีเวลามีคนมาบอกว่าสิ่งที่ทำแล้วมีประโยชน์ ต้องยอมรับนะครับว่าตั้งแต่ผมไปงาน GISTDA conference มาปีนี้มีบูตที่มาปล่อยของเยอะจริง ผมใช้เวลาละเลียดเดินดูแต่ละบูต สนุกดีครับถ้าถามว่า cool สุดยกให้ iwane

______ช่วงที่ผ่่านมาไม่กี่สัปดาห์ที่ไม่ได้เขียน blog แต่มีเรื่องราวและข่าวการปล่อย service ใหม่ๆที่เกี่ยวข้องกับเทคโนโลยีทางภูมิสารสนเทศออกมาหลายเจ้า แน่นอนว่าคล้ายกับเป็นการดวลของสองค่ายยักษ์ทั้งด้าน Google และ Microsoft ผมขออนุญาติสรุปรายละเอียดคราวๆให้ฟังเพื่อให้เห็นภาพและร่วมรับรู้ถึงกระแสการแข่งขันของสองค่ายครับ

______เริ่มต้นดอกแรกคงเป็น Bing ของ Microsoft ที่ปล่อย  streetside ออกมาเขย่า google โดย streetside เป็นระบบแสดงภาพสองข้างทางที่อยู่บน Bing Map ความน่าสนใจคือความสามารถในการแสดงผลที่ค่อนข้างเร็วและเนียนบนเทคโนโลยีการแสดงผล silver light ของ Microsoft ที่สำคัญคือ integrate เข้ากับ photo synch   อีกด้วยพร้อมทั้งการเพิ่มพื้นที่บริการภาพแบบ bird eye view หรือ urban view หรือภาพถ่ายจากเครื่องบินแบบ oblique เข้าไปอีก

Street side

ภาพ urban view

______เมื่อถูกท้าทายจากคู่แข่ง Google เองก็เริ่มที่จะปล่อยของออกมาให้เราได้ดูกันบ้าง นั้นคือการให้บริการข้อมูลภาพ aerial imagery ที่แสดงมุมมองแบบเฉียงที่กำลัง ออกมาชิมลางใน Map API 2 จุดที่ SanDiego ในอเมริกาก่อนที่จะดำเนินการปล่อยอีกชุดใหญ่หลายหมื่นภาพ เพื่อให้บริการผู้ใช้ โดยเน้นที่การให้บริการมุมมองอาคาร และภาพรายละเอียดสูงเพื่อสนับสนุนการแสดงแผนที่มาตรส่วนใหญ่ เช่นร่วมกับ model3D เป็นต้นแน่นอนว่าต้องออกมาแข่งกับ urban view ของ Bing อย่างนี้ไม่พ้น อีกไม้เด็ดที่หลายคนพูดถึงคือ ใน 2010 GOogle คงพยายามสร้าง 3D model หรือ virtual city ออกมาให้เราได้ทดลองใช้งานกัน เพราะแน่นอนว่าเทคโนโลยี steetview ที่ google เก็บข้อมูลน่าจะสามารถนำมาสร้าง แบบจำลอง สามมิติได้จริง ผมสังเกตุจาก mouse ที่เราใช้ click บนระนาบ จะมีการรับรู้ระยะและขอบของมิติหรือระนาบแนวตั้งได้ นั้นหมายความว่าการนำข้อมูลจากเลเซอร์ ที่ติดกับกล้อง ladybug น่าจะสามารถนำมาใช้งานได้จริงแล้ว ประกอบกับระยะหลัง Google เปิดตัว 3D Model ของเมืองต่างๆออกมาหลายเมืองซึ่งเป็นที่น่าสังเกตว่านี้อาจจะเป็นอีกหนึ่งไม้เด็ดที่กำลังจะออกมา

______ส่วนเรื่อง 3D ทาง Bing ของค่าย Microsoft ก็ใช่จะนิ่งนอนใจ Bing ได้ออกมาประกาศสู้ในการบริการข้อมูลแผนที่ โดยมี Navteq พันธมิตรสนับสนุนข้อมูล 3D map งานนี้คงจะไม่มีใครยอมใครง่ายๆปีหน้า 2010 น่าจะได้เห็นการพัฒนาเรื่องของ Online Map Service มาไปยิ่งกว่านี้ สุดท้ายแล้วการแข่งขันทั้งทางด้านเทคโนโลยีและราคา ผมดีก็น่าจะตกกับผู้ใช้เพราะอนาคตการใช้งานข้อมูลแผนที่หรือข้อมูลภาพถ่ายดาวเทียมรายละเอียดสูงคงจะไม่ใช้เรื่องยากที่ไกลตัวอีกต่อไปครับ

ภาพมุมสูงของ Bing จาก cnet

อ้างอิงจาก

http://news.cnet.com/8301-17939_109-10410320-2.html

http://www.digitalearthblog.com/200706/why-did-google-create-street-view/

http://googlegeodevelopers.blogspot.com/2009/12/getting-better-view-with-maps-api-v2.html?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed:+GoogleGeoDevelopersBlog+(Google+Geo+Developers+Blog)&utm_content=Google+Reader

http://news.cnet.com/8301-10784_3-9945448-7.html

http://news.cnet.com/8301-30684_3-10408140-265.html?tag=mncol;txt

http://google-latlong.blogspot.com/2009/12/changing-your-perspective.html

PostGIS 1.5

______เริ่มเปิดให้ทำการดาวน์โหลดมาใช้งานแล้วครับกับ Postgis 1.5 แต่รู้สึกว่ายังจะไม่เป็น stable version ไปฟังคุณ paul พูดที่งาน foss4g ที่แนะนำการมาถึงของ Geography data type ใหม่ใน 1.5 ซึ่งทำมาเพื่อเน้นการคำนวณเชิงเรขาคณิตที่นำเอาทฤษฏีของการสร้างแบบจำลองโลกและการฉายแผนที่ในแบบทรงรีมาใช้ด้วย เพื่อความแม่นยำในการคำนวณระยะและเรื่องของมุม โดย geography คำนวณบน Geodatic Model (ผมเข้าใจว่ามัยใช้ทรงรีนะ ) แน่นอนว่าคอ GIS คงชอบแต่เป็นปัญหาไม่น้อยกับนัก IT เพราะต้องไปศึกษาเรื่อง spatial reference systems, spheroids และ geoids เรื่องนี้ในอนาคตคงจำเป็นครับเพราะ paul และทีมพัฒนาตั้งใจจะทำ postgis ไปสู่ PostGIS 2.0 ที่เป็น 3D Database ตาม trend ของพวกนักพัฒนาอีกกลุ่มที่กำลังจะปรับให้อนาคตเป็น 3D GIS แบบเต็มรูปแบบ แต่ใช่ว่าจะมีคนเห็นด้วยนะครับ เพราะมันค่อนข้างสร้างความสับสนในการใช้งานระหว่าง Geometry กับ Geography โดยในงาน ที่ paul ไปพูดก็มีการแสดงความเห็นอย่างรุนแรงและหลากหลาย แต่ผมชอบนะผมว่าฟังพวกนี้โต้เถียงแล้วมันสร้างสรรค์ เพราะปัญหาคือฟังก์ชั่น geoprocessing และ spatial relation หลายตัวยังไม่สนับสนุน geograpy นี้ เอาแค่ ST_Buffer ยังเถียงกันหัวแตกใน mail ling list เลยอยากร่วม discuss เข้าไปอ่านที่

http://www.postgis.org/pipermail/postgis-devel/2009-October/007176.html

______ boston GIS นำมาเปรียบเทียบเรื่องการสนับสนุน Geometry และ geodetic spatial ของ SQL Server, Oracle และ Postgis พบว่าใกล้กัน แต่ native geodetic function ของ SQL server 2008 มากกว่าแต่ตัวอื่นใช้เทคนิคการ transform ก่อนคำนวณ เรื่องนี้ของต๊ะไว้ก่อนพอดีผมยังไม่ได้เล่น 1.5 เพราะว่ายังไม่มีเวลา migrate ของเดิมที่เป็น 1.4 เนื่องจากยังติดงานโปรเจคเก่าอยู่กลัวว่าถ้าย้ายไปโดยไม่ดูให้รอบคอบเดี่ยวงานจะเข้าเอา เลยไม่อยากด่วนสรุปเนื่องจากยังไม่มีโอกาสเข้าไปทดลองใช้ วันนี้ผมมีตัวอย่างฟีเจอร์ของ postgis 1.5 มาเรียกน้ำย่อยเพื่อว่าท่านใดกำลังจะลงโปรแกรมใหม่จะได้เก็บไว้พิจารณา

  • PostGIS_LibXML_Version – Availability: 1.5 Returns the version number of the libxml2 library.
  • ST_AsBinary – Availability: 1.5.0 geography support was introduced. Return the Well-Known Binary (WKB) representation of the geometry/geography without SRID meta data.
  • ST_AsGeoJSON – Availability: 1.5.0 geography support was introduced. Return the geometry as a GeoJSON element.
  • ST_AsText – Availability: 1.5 – support for geography was introduced. Return the Well-Known Text (WKT) representation of the geometry/geography without SRID metadata.
  • ST_Buffer – Availability: 1.5 – ST_Buffer was enhanced to support different endcaps and join types. These are useful for example to convert road linestrings into polygon roads with flat or square edges instead of rounded edges. Thin wrapper for geography was added. – requires GEOS >= 3.2 to take advantage of advanced geometry functionality. (T) For geometry: Returns a geometry that represents all points whose distance from this Geometry is less than or equal to distance. Calculations are in the Spatial Reference System of this Geometry. For geography: Uses a planar transform wrapper. Introduced in 1.5 support for different end cap and mitre settings to control shape. buffer_style options: quad_segs=#,endcap=round|flat|square,join=round|mitre|bevel,mitre_limit=#.#
  • ST_ClosestPoint – Availability: 1.5.0 Returns the 2-dimensional point on g1 that is closest to g2. This is the first point of the shortest line.
  • ST_CollectionExtract – Availability: 1.5.0 Given a GEOMETRYCOLLECTION, returns a MULTI* geometry consisting only of the specified type. Sub-geometries that are not the specified type are ignored. If there are no sub-geometries of the right type, an EMPTY collection will be returned. Only points, lines and polygons are supported. Type numbers are 1 == POINT, 2 == LINESTRING, 3 == POLYGON.
  • ST_Covers – Availability: 1.5 – support for geography was introduced. Returns 1 (TRUE) if no point in Geometry B is outside Geometry A
  • ST_DFullyWithin – Availability: 1.5.0 Returns true if all of the geometries are within the specified distance of one another
  • ST_DWithin – Availability: 1.5.0 support for geography was introduced Returns true if the geometries are within the specified distance of one another. For geometry units are in those of spatial reference and For geography units are in meters and measurement is defaulted to use_spheroid=true (measure around spheroid), for faster check, use_spheroid=false to measure along sphere.
  • ST_Distance – Availability: 1.5.0 geography support was introduced in 1.5. Speed improvements for planar to better handle large or many vertex geometries For geometry type Returns the 2-dimensional cartesian minimum distance (based on spatial ref) between two geometries in projected units. For geography type defaults to return spheroidal minimum distance between two geographies in meters.
  • ST_Distance_Sphere – Availability: 1.5 – support for other geometry types besides points was introduced. Prior versions only work with points. Returns minimum distance in meters between two lon/lat geometries. Uses a spherical earth and radius of 6370986 meters. Faster than ST_Distance_Spheroid, but less accurate. PostGIS versions prior to 1.5 only implemented for points.
  • ST_Distance_Spheroid – Availability: 1.5 – support for other geometry types besides points was introduced. Prior versions only work with points. Returns the minimum distance between two lon/lat geometries given a particular spheroid. PostGIS versions prior to 1.5 only support points.
  • ST_DumpPoints – Availability: 1.5.0 Returns a set of geometry_dump (geom,path) rows of all points that make up a geometry.
  • ST_GMLToSQL – Availability: 1.5 – requires libxml2 >= 2.5+ Return a specified ST_Geometry value from GML representation. This is an alias name for ST_GeomFromGML
  • ST_GeomFromGML – Availability: 1.5 – requires libxml2 >= 2.5+ Takes as input GML representation of geometry and outputs a PostGIS geometry object
  • ST_GeomFromKML – Availability: 1.5 – requires libxml2 >= 2.5+ Takes as input KML representation of geometry and outputs a PostGIS geometry object
  • ST_Geometry_Overlap – Availability: 1.5.0 support for geography was introduced. Returns TRUE if A’s bounding box overlaps B’s.
  • ST_Geometry_Same – Availability: 1.5.0 support for geography was introduced. Returns TRUE if the geometry A is the same as B.
  • ST_HausdorffDistance – Availability: 1.5.0 – requires GEOS >= 3.2.0 Returns the Hausdorff distance between two geometries. Basically a measure of how similar or dissimilar 2 geometries are. Units are in the units of the spatial reference system of the geometries.
  • ST_Intersection – Availability: 1.5 support for geography data type was introduced. (T) Returns a geometry that represents the shared portion of geomA and geomB. The geography implementation does a transform to geometry to do the intersection and then transform back to WGS84.
  • ST_Intersects – Availability: 1.5 support for geography was introduced. Returns TRUE if the Geometries/Geography “spatially intersect” – (share any portion of space) and FALSE if they don’t (they are Disjoint). For geography — tolerance is 0.00001 meters (so any points that close are considered to intersect)
  • ST_Length – Availability: 1.5.0 geography support was introduced in 1.5. Returns the 2d length of the geometry if it is a linestring or multilinestring. geometry are in units of spatial reference and geography are in meters (default spheroid)
  • ST_LongestLine – Availability: 1.5.0 Returns the 2-dimensional longest line points of two geometries. The function will only return the first longest line if more than one, that the function finds. The line returned will always start in g1 and end in g2. The length of the line this function returns will always be the same as st_maxdistance returns for g1 and g2.
  • ST_MakeEnvelope – Availability: 1.5 Creates a rectangular Polygon formed from the given minimums and maximums. Input values must be in SRS specified by the SRID.
  • ST_MaxDistance – Availability: 1.5.0 Returns the 2-dimensional largest distance between two geometries in projected units.
  • ST_ShortestLine – Availability: 1.5.0 Returns the 2-dimensional shortest line between two geometries

อ้างอิงจาก

http://www.postgis.org/documentation/manual-svn/ch08.html#NewFunctions_1_5

image from http://www.oneonta.edu