Changes between Initial Version and Version 1 of SWIGMapScriptQuery


Ignore:
Timestamp:
2021-12-21T17:35:09-04:00 (3 years ago)
Author:
Jeff McKenna
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • SWIGMapScriptQuery

    v1 v1  
     1= MS4W Version 5.x Query From .MAP File Sample  =
     2
     3original source: https://gist.github.com/andrewteg/81b8d45948d67003f5f1170e51d66e61
     4
     5{{{
     6#!php
     7<html><head><title>query sample</title></head><body><PRE>
     8<?php
     9
     10// sample filter strings to search on... 'name' is field in Attribute Table for Layer
     11$filter_string = '("[name]" == "Canada")';              //exact (use ==) - case-sensitive
     12//$filter_string = '("[name]" ~* "^ca.*")';                     //starts Ga (^ for starting) not case-sensitive
     13//$filter_string = '("[name]" ~* ".*CA.*")';            //like Ga (.* maybe not needed?!?) not case-sensitive
     14
     15$map = new mapObj("/ms4w/apps/local-demo/local.map");
     16
     17$layer = $map->getLayer(1);                                     //second layer in mapfile
     18$layer->setFilter($filter_string);                              //filter results
     19$layer->template = true;                                        //for historical reasons, the query attribute must be non-NULL for a layer to be queryable RE: https://www.mapserver.org/mapscript/mapscript.html#layerobj-attributes
     20
     21$ext = $layer->getExtent();
     22$query = $layer->queryByRect($map, $ext);                       //must query before getting $layer numitems
     23$numResults = $layer->getNumResults();
     24
     25$layername = $layer->name;
     26$layeritems = $layer->numitems;                                 //count of items in attribute table
     27//echo 'Layer '.$layername.' has '.$layeritems.' items<br>';
     28for ($x=0;$x<$layeritems;$x++) {
     29        $layer_headers[$x] = $layer->getItem($x);               //for the layer, this gets the attribute field names
     30}
     31//print_r($layer_headers);
     32
     33if($query == MS_SUCCESS) {
     34        echo 'Query has '.$layer->getNumResults().' Results:<br>';
     35        if($layer->getNumResults()>0) {
     36                for ($i=0; $i < $layer->getNumResults(); $i++) {
     37                        $result = $layer->getResult($i); //print_r($result);
     38                        if($result === FALSE) {
     39                                error_log('No result '.$i);
     40                        } else {
     41                                $shape = $layer->getShape($result); //print_r($shape);
     42                                //echo ("#$i  OBJECTID = ".$shape->values['OBJECTID'].'<br>');  //ms4w 3.x
     43                                //echo 'vals='.$shape->numvalues;
     44                                echo ("#$i  OBJECTID = ".$shape->getValue(0));                  //ms4w 4.x
     45                                $vals = array();
     46                                echo '<blockquote>';
     47                                for ($x=0;$x<$shape->numvalues;$x++) {
     48                                        //echo $x.'='.$shape->getValue($x).'<br>';
     49                                        $vals[$layer_headers[$x]] = $shape->getValue($x);
     50                                }
     51                                print_r($vals);
     52                                //echo 'WKT='.$shape->toWKT().'<br>';
     53                                print_r($shape->values);
     54                                echo '</blockquote>';
     55                        }
     56                }
     57        }
     58} else {
     59        echo('Query Returned No Results');
     60}
     61echo '<hr>END<hr>'; ?>
     62</PRE></body></html>
     63}}}