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