SWIG Mapscript vs PHP Mapscript
Posted by admin on June 25, 2009 in mapserver, mapserver WxS, php, python
เคยแต่ใช้ 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

Subscribe
Follow comments by subscribing to the SWIG Mapscript vs PHP Mapscript Comments RSS feed.