Guest User

mapscript_wms

a guest
Sep 8th, 2011
111
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Perl 2.45 KB | None | 0 0
  1. use DBI;
  2. use mapscript;
  3.  
  4. my $map = new mapscript::mapObj() or warn "error: $mapscript::ms_error->{message}\n";
  5.  
  6. $map->{name} = 'mymap';
  7. $map->{status} = $mapscript::MS_ON;
  8. $map->{units} = $mapscript::MS_DD;
  9. $map->setImageType('png');
  10.  
  11. my $imageColor = new mapscript::colorObj;
  12. $imageColor->setHex('#FFFFFF');
  13. $map->{imagecolor} = $imageColor;
  14.  
  15. $map->setSize(1200, 600);
  16. $map->setExtent(-180, -90, 180, 90);
  17. $map->selectOutputFormat('png');
  18. $map->setProjection("proj=latlong");
  19.  
  20. my $outputFormatObj = new mapscript::outputFormatObj('AGG/PNG');
  21. $outputFormatObj->setExtension('png');
  22. $outputFormatObj->setMimetype('image/png');
  23. $outputFormatObj->{imagemode} = $mapscript::MS_IMAGEMODE_RGB;
  24. $map->setOutputFormat( $outputFormatObj );
  25.  
  26. my $layerOne = new mapscript::layerObj($map);
  27. $layerOne->{name} = "layer one";
  28. $layerOne->{status} = $mapscript::MS_ON;
  29. $layerOne->{type} = $mapscript::MS_LAYER_POLYGON;
  30. $layerOne->{opacity} = 100;
  31. $layerOne->{connection} = 'host=localhost port=5432 dbname=mydb user=dbuser password=dbpasswd';
  32. $layerOne->setConnectionType($mapscript::MS_POSTGIS, '');
  33. $layerOne->{data} = 'the_geom FROM (SELECT class_name, the_geom FROM t1) a_view USING UNIQUE gid USING srid=-1';
  34. $layerOne->{classitem} = 'class_name';
  35. $layerOne->setProjection("proj=latlong");
  36.  
  37. my $classOutlineColor = new mapscript::colorObj;
  38. $classOutlineColor->setHex('#444444');
  39.  
  40. my $sth = database->prepare('SELECT class_name, class_color FROM t2');
  41. $sth->execute;
  42. while (my ($class_name, $class_color) = $sth->fetchrow_array) {
  43.     my $classObj = new mapscript::classObj($layerOne);
  44.     $classObj->{name} = $class_name;
  45.     $classObj->setExpression("$class_name");
  46.  
  47.     my $classFillColor = new mapscript::colorObj;
  48.     $classFillColor->setHex($class_color);
  49.    
  50.     my $styleObj = new mapscript::styleObj($classObj);
  51.     $styleObj->{color} = $classFillColor;
  52.     $styleObj->{outlinecolor} = $classOutlineColor;
  53. }
  54. $sth->finish;
  55.  
  56. my $req = new mapscript::OWSRequest();
  57. $req->setParameter( "SERVICE", "WMS" );
  58. $req->setParameter( "VERSION", "1.1.0" );
  59. $req->setParameter( "REQUEST", "GetMap" );
  60. $req->setParameter( "BBOX", "-173.537,35.8775,-11.9603,83.8009" );
  61. $req->setParameter( "LAYERS", "layer one");
  62. $req->setParameter( "SRS", "-1");
  63. $req->setParameter( "WIDTH", "1200");
  64. $req->setParameter( "HEIGHT", "600");
  65.  
  66. my $io = mapscript::msIO_installStdoutToBuffer();
  67. my $dispatch_out = $map->OWSDispatch( $req );
  68. printf "%s\n", mapscript::msIO_getStdoutBufferString();
Advertisement
Add Comment
Please, Sign In to add comment