Changes between Version 3 and Version 4 of PHPMapscriptAddLayerQueryReproject

Show
Ignore:
Timestamp:
02/10/09 11:40:55 (4 years ago)
Author:
jmckenna
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • PHPMapscriptAddLayerQueryReproject

    v3 v4  
    11= Add Layer, Query and Reproject = 
     2 
     3== Example#1 == 
    24 
    35Here's a small example which: 
     
    5759}}} 
    5860 
     61== Example#2 == 
     62 
     63The example below works under MapServer 5.2.1 (tested under Fedora 10).  Contributed by Tim Wood. 
     64 
     65{{{ 
     66<?PHP 
     67 
     68/** 
     69 * Code to create a map from a shapefile 
     70 * and then (optionally) reproject the whole thing 
     71 * 
     72 * If you just want to look at the reprojection stuff, start 
     73 * with the "reproject (if needed) and draw" section at the end. 
     74 * The rest 
     75 * 
     76 * Created by Tim Wood from code and input 
     77 * by Tom Kralidis [Ontario], Pietro Gianninni and Stephen Jones. 
     78 * 
     79 * No copyright restrictions 
     80 */ 
     81 
     82 
     83// --------------------------- 
     84// Configuration 
     85// aka set a bunch of variables and load the mapscript extension 
     86// 
     87 
     88// Where my key directories are located 
     89$doc_root = '/var/www/html'; 
     90$rel_path = "example1/round2"; 
     91 
     92$base_path = "$doc_root/$rel_path"; 
     93 
     94 
     95// An empty map file 
     96$base_map = "$base_path/data/empty.map";   // just the words MAP and END on dif. lines... really 
     97 
     98// The data I'm using 
     99$shape_path    = "$base_path/data/zcta/zt08_d00_shp/";    // a goofy path I'm too lazy to fix 
     100$shape_file = "gfsa000b06a_e";                            // works with or w/o the extension 
     101$shape_file_projection = "+proj=longlat +datum=NAD83"; 
     102 
     103// The Extents (area) I want in latitude, longitude 
     104list( $ex0, $ex1, $ex2, $ex3 ) = array(-140, 40, -50, 55 ); 
     105 
     106// Describe the rest of my output 
     107$output_projection = ''; 
     108$output_projection = "+proj=tcc +lon_0=90w +ellps=GRS80"; 
     109$output_file_rel = "output/index2.png"; 
     110$output_file_path = "$base_path/$output_file_rel"; 
     111list($output_width, $output_height ) = array( 600, 500 ); 
     112 
     113// Load MapScript extension 
     114if (!extension_loaded("MapScript"))  dl('php_mapscript.'.PHP_SHLIB_SUFFIX); 
     115 
     116 
     117 
     118 
     119// --------------------------- 
     120// Function(s) 
     121// 
     122 
     123/** 
     124 * Reproject a $map from $shape_file_projection to $output_projection 
     125 */ 
     126function reproject_map( &$map, $shape_file_projection, $output_projection ) { 
     127    $origProjObj = ms_newProjectionObj( $shape_file_projection ); 
     128    $newProjObj = ms_newProjectionObj( $output_projection ); 
     129 
     130    $oRect = $map->extent; 
     131    $oRect->project( $origProjObj, $newProjObj ); 
     132    $map->setExtent( $oRect->minx, $oRect->miny, $oRect->maxx, $oRect->maxy ); 
     133    $map->setProjection( $output_projection  ); 
     134} 
     135 
     136 
     137 
     138// --------------------------- 
     139// The Main Code 
     140// 
     141 
     142// add map 
     143$map = ms_newMapObj( $base_map ); 
     144$map->set( 'name', 'my_map' );    // If we're using a blank map file, give it a name 
     145 
     146// Set the extent 
     147$map->setExtent( $ex0, $ex1, $ex2, $ex3 ); 
     148 
     149// Set the shapepath 
     150$map->set( 'shapepath', $shape_path ); 
     151// Set the output format and size 
     152$map->selectOutputFormat( 'png' ); 
     153$map->setSize( $output_width, $output_height ); 
     154 
     155// add new layer to map 
     156$layer = ms_newLayerObj($map); 
     157$layer->set("name", "foo"); 
     158$layer->set("status", MS_ON); 
     159$layer->set("data", $shape_file ); 
     160$layer->set("type", MS_SHAPE_POLYGON ); 
     161$layer->setProjection( $shape_file_projection ); 
     162$layer->set("template", "ttt");    // hide errors that appear iff $output_projection is set? 
     163$layer->set("dump", "true"); 
     164 
     165// add new class to new layer 
     166$class = ms_newClassObj($layer); 
     167$class->set("name", "foo"); 
     168 
     169// add new style to new class 
     170$style = ms_newStyleObj($class); 
     171$style->color->setRGB(255, 0, 0); 
     172$style->outlinecolor->setRGB( 128,128,128 ); 
     173 
     174// reproject (if needed) and draw 
     175if( $output_projection != '' ) { 
     176    reproject_map( $map, $shape_file_projection, $output_projection ); 
     177    $image = $map->drawQuery(); 
     178} else { 
     179    // draw 
     180    $image = $map->draw(); 
     181} 
     182 
     183 
     184 
     185// --------------------------- 
     186// Output the image 
     187// 
     188 
     189$image->saveImage( $output_file_path ); 
     190 
     191?> 
     192<html> 
     193<body> 
     194    <img src="<?PHP print $output_file_rel; ?>"> 
     195</body> 
     196</html> 
     197}}} 
     198 
    59199---- 
    60200back to [wiki:PHPMapScript]