<html><body><div style="color:#000; background-color:#fff; font-family:verdana, helvetica, sans-serif;font-size:10pt"><div id="yiv5679298530" class="" style=""><div class="" style=""><div style="background-color: rgb(255, 255, 255);" class=""><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="color: rgb(0, 0, 0); font-family: verdana, helvetica, sans-serif; font-size: 10pt;">Hello</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="color: rgb(0, 0, 0); font-family: verdana, helvetica, sans-serif; font-size: 10pt;"><br clear="none" style=""></div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="font-style: normal; background-color: transparent;"><span style="color: rgb(0, 0, 0); font-family: verdana, helvetica, sans-serif; font-size: 13.333333969116211px;" class="">Yes!  I prefer to use GRASS, because  in near future if you need to extend you calculation in raster , vector and even for
 calculating complicated a various GIS model, I think GRASS can help you a lot in order to avoid, reduce and optimize</span><span style="color: rgb(0, 0, 0); font-family: verdana, helvetica, sans-serif; font-size: 13.333333969116211px; background-color: transparent;" class=""> your codes.</span></div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="font-style: normal; background-color: transparent;"><span style="color: rgb(0, 0, 0); font-family: verdana, helvetica, sans-serif; font-size: 13.333333969116211px; background-color: transparent;" class=""><br class="" style=""></span></div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="font-style: normal; background-color: transparent;"><span style="color: rgb(0, 0, 0); font-family: verdana, helvetica, sans-serif; font-size: 13.333333969116211px; background-color: transparent;" class="">I am not so sure it is necessary to enclose my code here as example or not, but
 I hope it is useful for you. This example is NOT IN a standard way, My suggestion is using the WPS-GRASS-Bridge to solve your problem.</span></div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="font-style: normal; background-color: transparent;"><span style="color: rgb(0, 0, 0); font-family: verdana, helvetica, sans-serif; font-size: 13.333333969116211px; background-color: transparent;" class=""><br class="" style=""></span></div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="font-style: normal; background-color: transparent;">Bellow is the code to get Population from landscan image, this ZOO-Project WPS based on input data=[{single polygon or t<span style="font-size: 10pt;" class="">wo polygons}</span><span style="font-size: 10pt; background-color: transparent;" class="">,  {landsacan Image}]</span></div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="font-style: normal;
 background-color: transparent;"><span style="font-size: 10pt; background-color: transparent;">In case two polygons required, it means population calculation  over a area between two polygons </span><br></div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="font-style: normal; background-color: transparent;"><br class="" style=""></div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;">#!/usr/bin/python python</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;">import sys</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;">import os </div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;">import zoo</div><div class=""
 id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;">from shapely.wkt import loads</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;">from geojson import dumps</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><br class="" style=""></div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;">def population(conf,inputs,outputs):</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">       </span>x= loads(inputs["a"]["value"])</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">    </span>Mpolygon=1</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color:
 transparent;"><span class="" style="white-space:pre">        </span>if inputs["b"]["value"]<>'NULL':</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">            </span>y=loads(inputs["b"]["value"])</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">             </span>geojson_string2=dumps(y)</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">              </span>Mpolygon=2</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">    </span>geojson_string=dumps(x)<span class="" style="white-space:pre">   </span></div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class=""
 style="white-space:pre">  </span>fdx=open('/var/www/data/tempx.geojson', 'w+')</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre"> </span>fdx.write(geojson_string)</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">     </span>fdx.close()</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">   </span>outputs["f1"]["value"]= geojson_string</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">    </span>if Mpolygon==2:</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">               
        </span>fdy=open('/var/www/data/tempy.geojson', 'w+')</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;">        <span class="" style="white-space:pre">     </span>fdy.write(geojson_string2)</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">    </span>        fdy.close()</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">                       </span>outputs["f2"]["value"]= geojson_string2</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">   </span>#outputs["f1"]["value"]= geojson_string</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class=""
 style="white-space:pre">  </span>gisbase = os.environ['GISBASE'] ="/usr/local/src/grass6_devel/dist.x86_64-unknown-linux-gnu"</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">        </span>os.environ['HOME']='/home/quang'</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">      </span>gisdbase=os.path.join(os.environ['HOME'],"grass_data")</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">      </span>location="all"</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">      </span>mapset="PERMANENT"</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span
 class="" style="white-space:pre">       </span>sys.path.append(os.path.join(os.environ['GISBASE'], "etc", "python"))</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">     </span>import grass.script as grass</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">  </span>import grass.script.setup as gsetup</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">   </span></div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">      </span>gsetup.init(gisbase, gisdbase, location, mapset)</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class=""
 style="white-space:pre">  </span>vtest='test_vector0'</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">  </span>rtest='test_raster0'</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">  </span>vtest1='test_vector1'</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre"> </span>vtest2='test_vector2'</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre"> </span>from grass.script import core as comm</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><br class="" style=""></div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4"
 style="background-color: transparent;"><span class="" style="white-space:pre">  </span></div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">      </span>comm.run_command('g.region', rast='landscan@PERMANENT', quiet= True)</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">  </span></div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">      </span>vec=''</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">        </span>if Mpolygon==2:</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">       
        </span>comm.run_command('v.in.ogr', dsn='/var/www/data/tempx.geojson', output='%s' %(vtest1), overwrite= True)#small rings</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">           </span>comm.run_command('v.in.ogr', dsn='/var/www/data/tempy.geojson', output='%s' %(vtest2), overwrite= True)# large rings</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">          </span>comm.run_command('v.overlay', ainput='%s' %(vtest2), atype='area', binput='%s' %(vtest1), output='%s' %(vtest), operator='not', overwrite= True)</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">              </span>comm.run_command('g.remove', vect='%s' %(vtest1))</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4"
 style="background-color: transparent;"><span class="" style="white-space:pre">          </span>comm.run_command('g.remove', vect='%s' %(vtest2))</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">     </span>else :</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">                </span>comm.run_command('v.in.ogr', dsn='/var/www/data/tempx.geojson', output='%s' %(vtest))</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre"> </span>comm.run_command('g.region', vect='%s' %(vtest), quiet= True)</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre"> </span>comm.run_command('v.to.rast', input= vtest, output= rtest, use
 ='val', value='1', overwrite= True)</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">       </span>comm.run_command('r.mask', flags='o', input=rtest)</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">    </span>population = comm.read_command('r.sum', rast='landscan@PERMANENT', quiet= True)</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">       </span>comm.run_command('r.mask', flags='r', quiet=True)</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">     </span>comm.run_command('g.remove', vect=vtest, rast=rtest)</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4"
 style="background-color: transparent;"><br class="" style=""></div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">      </span>outputs["Result"]["value"]="POP" + str(population)</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="background-color: transparent;"><span class="" style="white-space:pre">      </span>return 3</div><div style="font-style: normal;" class=""><br class="" style=""></div></div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="font-style: normal; background-color: transparent;">If you have any doubt about GRASS, here is the link <a href="http://grass.osgeo.org/grass65/manuals/" class="" style="">http://grass.osgeo.org/grass65/manuals/</a></div><div id="yiv5679298530yui_3_16_0_6_1406279144498_4" class="" style="">  </div> <div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="color: rgb(0,
 0, 0); font-family: verdana, helvetica, sans-serif; font-size: 13.333333969116211px; font-style: normal; background-color: transparent;"> Best regards</div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="color: rgb(0, 0, 0); font-family: verdana, helvetica, sans-serif; font-size: 13.333333969116211px; font-style: normal; background-color: transparent;"><br class="" style=""></div><div class="" id="yiv5679298530yui_3_16_0_6_1406279144498_4" style="color: rgb(0, 0, 0); font-family: verdana, helvetica, sans-serif; font-size: 13.333333969116211px; font-style: normal; background-color: transparent;">Quang</div></div></div></div></div></body></html>