如何使用PHP调用ArcGIS Server的Soap接口

       前一阵子,简单的学习了一下ArcGIS Server,在开发层次上ArcGIS Server支持两种协议,一个是老的Soap协议,也就是webservice,另外一种是REST协议,其中REST协议是从ArcGIS Server9.3开始支持的协议,也是ESRI今后只要支持的协议,但是老的Soap协议还继续支持。该章得内容主要介绍如何使用PHP来调用ArcGIS Server的WebService。

       查看ArcGIS Server的SOAP SDK的帮助的时候,会发现所提供的示例代码只有c#,vb.net和java的,并没有PHP语言的示例,实际上并不是不支持PHP语言,从PHP toolkits include PHP-SOAP and NuSOAP上可以看出PHP是支持Soap协议的,只不过使用PHP并没有提供现成的工具可以将WSDL转换成本地化的类,而.NET SDK提供了Wsdl.exe工具,java提供了Apache Axis工具可以将WSDL中的类型转换成本地化类。

        当使用PHP调用WebService的时候,当输入的参数是简单数据类型的时候是没有任何问题的,返回值类型是类得时候也没有任何的问题,但是当输入参数的值类型为某个类得时候,就无法调用了,这些类太多了,自己手写这些类几乎是不可能,因此找到一个类似于Wsdl.exe和Apache Axis的工具还是很有必要的,在网上终于搜到一个工具,名字为wsdl2php.php可以实现该功能,其代码如下所示:


  
  // +------------------------------------------------------------------------+
// | wsdl2php                                                               |
// +------------------------------------------------------------------------+
// | Copyright (C) 2005 Knut Urdalen 
   
   
    
                   |
   
   
// +------------------------------------------------------------------------+
// | THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS    |
// | "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT      |
// | LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR  |
// | A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT   |
// | OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,  |
// | SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT       | 
// | LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,  |
// | DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY  |
// | THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT    |
// | (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE  |
// | OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.   |
// +------------------------------------------------------------------------+
// | This software is licensed under the LGPL license. For more information |
// | see http://wsdl2php.sf.net                                             |
// +------------------------------------------------------------------------+

ini_set('soap.wsdl_cache_enabled', 0); // disable WSDL cache

//if( $_SERVER['argc'] != 2 ) {
//  die("usage: wsdl2php 
   
   
    
    /n");
   
   
//}

$wsdl = "http://liuf:8399/arcgis/services/catchment/MapServer?wsdl";

print "Analyzing WSDL";

try {
  $client = new SoapClient($wsdl);
} catch(SoapFault $e) {
  die($e);
}
print ".";
$dom = DOMDocument::load($wsdl);
print ".";

// get documentation
$nodes = $dom->getElementsByTagName('documentation');
$doc = array('service' => '',
         'operations' => array());
foreach($nodes as $node) {
  if( $node->parentNode->localName == 'service' ) {
    $doc['service'] = trim($node->parentNode->nodeValue);
  } else if( $node->parentNode->localName == 'operation' ) {
    $operation = $node->parentNode->getAttribute('name');
    //$parameterOrder = $node->parentNode->getAttribute('parameterOrder');
    $doc['operations'][$operation] = trim($node->nodeValue);
  }
}
print ".";

// get targetNamespace
$targetNamespace = '';
$nodes = $dom->getElementsByTagName('definitions');
foreach($nodes as $node) {
  $targetNamespace = $node->getAttribute('targetNamespace');
}
print ".";

// declare service
$service = array('class' => $dom->getElementsByTagNameNS('*', 'service')->item(0)->getAttribute('name'),
         'wsdl' => $wsdl,
         'doc' => $doc['service'],
         'functions' => array());
print ".";

// PHP keywords - can not be used as constants, class names or function names!
$reserved_keywords = array('and', 'or', 'xor', 'as', 'break', 'case', 'cfunction', 'class', 'continue', 'declare', 'const', 'default', 'do', 'else', 'elseif', 'enddeclare', 'endfor', 'endforeach', 'endif', 'endswitch', 'endwhile', 'eval', 'extends', 'for', 'foreach', 'function', 'global', 'if', 'new', 'old_function', 'static', 'switch', 'use', 'var', 'while', 'array', 'die', 'echo', 'empty', 'exit', 'include', 'include_once', 'isset', 'list', 'print', 'require', 'require_once', 'return', 'unset', '__file__', '__line__', '__function__', '__class__', 'abstract', 'private', 'public', 'protected', 'throw', 'try');

// ensure legal class name (I don't think using . and whitespaces is allowed in terms of the SOAP standard, should check this out and may throw and exception instead...)
$service['class'] = str_replace(' ', '_', $service['class']);
$service['class'] = str_replace('.', '_', $service['class']);
$service['class'] = str_replace('-', '_', $service['class']);

if(in_array(strtolower($service['class']), $reserved_keywords)) {
  $service['class'] .= 'Service';
}

// verify that the name of the service is named as a defined class
if(class_exists($service['class'])) {
  throw new Exception("Class '".$service['class']."' already exists");
}

/*if(function_exists($service['class'])) {
  throw new Exception("Class '".$service['class']."' can't be used, a function with that name already exists");
}*/

// get operations
$operations = $client->__getFunctions();
foreach($operations as $operation) {

  /*
   This is broken, need to handle
   GetAllByBGName_Response_t GetAllByBGName(string $Name)
   list(int $pcode, string $city, string $area, string $adm_center) GetByBGName(string $Name)

   finding the last '(' should be ok
   */
  //list($call, $params) = explode('(', $operation); // broken
  
  //if($call == 'list') { // a list is returned
  //}
  
  /*$call = array();
  preg_match('/^(list/(.*/)) (.*)/((.*)/)$/', $operation, $call);
  if(sizeof($call) == 3) { // found list()
    
  } else {
    preg_match('/^(.*) (.*)/((.*)/)$/', $operation, $call);
    if(sizeof($call) == 3) {
      
    }
  }*/

  $matches = array();
  if(preg_match('/^(/w[/w/d_]*) (/w[/w/d_]*)/(([/w/$/d,_ ]*)/)$/', $operation, $matches)) {
    $returns = $matches[1];
    $call = $matches[2];
    $params = $matches[3];
  } else if(preg_match('/^(list/([/w/$/d,_ ]*/)) (/w[/w/d_]*)/(([/w/$/d,_ ]*)/)$/', $operation, $matches)) {
    $returns = $matches[1];
    $call = $matches[2];
    $params = $matches[3];
  } else { // invalid function call
    throw new Exception('Invalid function call: '.$function);
  }

  $params = explode(', ', $params);

  $paramsArr = array();
  foreach($params as $param) {
    $paramsArr[] = explode(' ', $param);
  }
  //  $call = explode(' ', $call);
  $function = array('name' => $call,
            'method' => $call,
            'return' => $returns,
            'doc' => isset($doc['operations'][$call])?$doc['operations'][$call]:'',
            'params' => $paramsArr);

  // ensure legal function name
  if(in_array(strtolower($function['method']), $reserved_keywords)) {
    $function['name'] = '_'.$function['method'];
  }

  // ensure that the method we are adding has not the same name as the constructor
  if(strtolower($service['class']) == strtolower($function['method'])) {
    $function['name'] = '_'.$function['method'];
  }

  // ensure that there's no method that already exists with this name
  // this is most likely a Soap vs HttpGet vs HttpPost problem in WSDL
  // I assume for now that Soap is the one listed first and just skip the rest
  // this should be improved by actually verifying that it's a Soap operation that's in the WSDL file
  // QUICK FIX: just skip function if it already exists
  $add = true;
  foreach($service['functions'] as $func) {
    if($func['name'] == $function['name']) {
      $add = false;
    }
  }
  if($add) {
    $service['functions'][] = $function;
  }
  print ".";
}

$types = $client->__getTypes();

$primitive_types = array('string', 'int', 'long', 'float', 'boolean', 'dateTime', 'double', 'short', 'UNKNOWN', 'base64Binary', 'decimal', 'ArrayOfInt', 'ArrayOfFloat', 'ArrayOfString', 'decimal', 'hexBinary'); // TODO: dateTime is special, maybe use PEAR::Date or similar
$service['types'] = array();
foreach($types as $type) {
  $parts = explode("/n", $type);
  $class = explode(" ", $parts[0]);
  $class = $class[1];
  
  if( substr($class, -2, 2) == '[]' ) { // array skipping
    continue;
  }

  if( substr($class, 0, 7) == 'ArrayOf' ) { // skip 'ArrayOf*' types (from MS.NET, Axis etc.)
    continue;
  }


  $members = array();
  for($i=1; $i
  
  
   
   " ", substr($parts[$i], 0, strlen($parts[$i])-1) );

    
   
   // check syntax
    
   
   if(preg_match(
   
   '/^$/w[/w/d_]*$/', $member)) {
      
   
   throw 
   
   new Exception(
   
   'illegal syntax for member variable: '.$member);
      
   
   continue;
    }

    
   
   // IMPORTANT: Need to filter out namespace on member if presented
    
   
   if(strpos($member, 
   
   ':')) { 
   
   // keep the last part
      list($tmp, $member) = explode(
   
   ':', $member);
    }

    
   
   // OBS: Skip member if already presented (this shouldn't happen, but I've actually seen it in a WSDL-file)
    
   
   // "It's better to be safe than sorry" (ref Morten Harket) 
    $add = 
   
   true;
    
   
   foreach($members 
   
   as $mem) {
      
   
   if($mem[
   
   'member'] == $member) {
    $add = 
   
   false;
      }
    }
    
   
   if($add) {
      $members[] = array(
   
   'member' => $member, 
   
   'type' => $type);
    }
  }

  
   
   // gather enumeration values
  $values = array();
  
   
   if(count($members) == 0) {
    $values = checkForEnum($dom, $
   
   class);
  }

  $service[
   
   'types'][] = array(
   
   'class' => $
   
   class, 
   
   'members' => $members, 
   
   'values' => $values);
  print 
   
   ".";
}
print 
   
   "done/n";

print 
   
   "Generating code...";
$code = 
   
   "";


   
   // add types

   
   foreach($service[
   
   'types'] 
   
   as $type) {
  
   
   //  $code .= "/**/n";
  
   
   //  $code .= " * ".(isset($type['doc'])?$type['doc']:'')."/n";
  
   
   //  $code .= " * /n";
  
   
   //  $code .= " * @package/n";
  
   
   //  $code .= " * @copyright/n";
  
   
   //  $code .= " *//n";

  
   
   // add enumeration values
  $code .= 
   
   "class ".$type[
   
   'class'].
   
   " {/n";
  
   
   foreach($type[
   
   'values'] 
   
   as $
   
   value) {
    $code .= 
   
   "  const ".generatePHPSymbol($
   
   value).
   
   " = '$value';/n";
  }
  
  
   
   // add member variables
  
   
   foreach($type[
   
   'members'] 
   
   as $member) {
    
   
   //$code .= "  /* ".$member['type']." *//n";
    $code .= 
   
   "  public /$".$member[
   
   'member'].
   
   "; // ".$member[
   
   'type'].
   
   "/n";
  }
  $code .= 
   
   "}/n/n";

  
   
   /*  print "Writing ".$type['class'].".php...";

   
     $filename = $type['class'].".php";

   
     $fp = fopen($filename, 'w');

   
     fwrite($fp, "
    
    /n");

   
     fclose($fp);

   
     print "ok/n";*/
}


   
   // add service


   
   // page level docblock

   
   //$code .= "/**/n";

   
   //$code .= " * ".$service['class']." class file/n";

   
   //$code .= " * /n";

   
   //$code .= " * @author    {author}/n";

   
   //$code .= " * @copyright {copyright}/n";

   
   //$code .= " * @package   {package}/n";

   
   //$code .= " *//n/n";



   
   // require types

   
   //foreach($service['types'] as $type) {

   
   //  $code .= "/**/n";

   
   //  $code .= " * ".$type['class']." class/n";

   
   //  $code .= " *//n";

   
   //  $code .= "require_once '".$type['class'].".php';/n";

   
   //}

$code .= 
   
   "/n";


   
   // class level docblock
$code .= 
   
   "/**/n";
$code .= 
   
   " * ".$service[
   
   'class'].
   
   " class/n";
$code .= 
   
   " * /n";
$code .= parse_doc(
   
   " * ", $service[
   
   'doc']);
$code .= 
   
   " * /n";
$code .= 
   
   " * @author    {author}/n";
$code .= 
   
   " * @copyright {copyright}/n";
$code .= 
   
   " * @package   {package}/n";
$code .= 
   
   " *//n";
$code .= 
   
   "class ".$service[
   
   'class'].
   
   " extends SoapClient {/n/n";


   
   // add classmap
$code .= 
   
   "  private static /$classmap = array(/n";

   
   foreach($service[
   
   'types'] 
   
   as $type) {
  $code .= 
   
   "                                    '".$type[
   
   'class'].
   
   "' => '".$type[
   
   'class'].
   
   "',/n";
}
$code .= 
   
   "                                   );/n/n";
$code .= 
   
   "  public function ".$service[
   
   'class'].
   
   "(/$wsdl = /"".$service[
   
   'wsdl'].
   
   "/", /$options = array()) {/n";


   
   // initialize classmap (merge)
$code .= 
   
   "    foreach(self::/$classmap as /$key => /$value) {/n";
$code .= 
   
   "      if(!isset(/$options['classmap'][/$key])) {/n";
$code .= 
   
   "        /$options['classmap'][/$key] = /$value;/n";
$code .= 
   
   "      }/n";
$code .= 
   
   "    }/n";
$code .= 
   
   "    parent::__construct(/$wsdl, /$options);/n";
$code .= 
   
   "  }/n/n";


   
   foreach($service[
   
   'functions'] 
   
   as $function) {
  $code .= 
   
   "  /**/n";
  $code .= parse_doc(
   
   "   * ", $function[
   
   'doc']);
  $code .= 
   
   "   */n";

  $signature = array(); 
   
   // used for function signature
  $para = array(); 
   
   // just variable names
  
   
   if(count($function[
   
   'params']) > 0) {
    
   
   foreach($function[
   
   'params'] 
   
   as $param) {
      $code .= 
   
   "   * @param ".(isset($param[0])?$param[0]:
   
   '').
   
   " ".(isset($param[1])?$param[1]:
   
   '').
   
   "/n";
      
   
   /*$typehint = false;

   
         foreach($service['types'] as $type) {

   
       if($type['class'] == $param[0]) {

   
         $typehint = true;

   
       }

   
         }

   
         $signature[] = ($typehint) ? implode(' ', $param) : $param[1];*/
      $signature[] = (in_array($param[0], $primitive_types) or substr($param[0], 0, 7) == 
   
   'ArrayOf') ? $param[1] : implode(
   
   ' ', $param);
      $para[] = $param[1];
    }
  }
  $code .= 
   
   "   * @return ".$function[
   
   'return'].
   
   "/n";
  $code .= 
   
   "   *//n";
  $code .= 
   
   "  public function ".$function[
   
   'name'].
   
   "(".implode(
   
   ', ', $signature).
   
   ") {/n";
  
   
   //  $code .= "    return /$this->client->".$function['name']."(".implode(', ', $para).");/n";
  $code .= 
   
   "    return /$this->__soapCall('".$function[
   
   'method'].
   
   "', array(";
  $
   
   params = array();
  
   
   if(count($signature) > 0) { 
   
   // add arguments
    
   
   foreach($signature 
   
   as $param) {
      
   
   if(strpos($param, 
   
   ' ')) { 
   
   // slice 
    $param = array_pop(explode(
   
   ' ', $param));
      }
      $
   
   params[] = $param;
    }
    
   
   //$code .= "/n      ";
    $code .= implode(
   
   ", ", $
   
   params);
    
   
   //$code .= "/n      ),/n";
  }
  $code .= 
   
   "), ";
  
   
   //$code .= implode(', ', $signature)."),/n";
  $code .= 
   
   "      array(/n";
  $code .= 
   
   "            'uri' => '".$targetNamespace.
   
   "',/n";
  $code .= 
   
   "            'soapaction' => ''/n";
  $code .= 
   
   "           )/n";
  $code .= 
   
   "      );/n";
  $code .= 
   
   "  }/n/n";
}
$code .= 
   
   "}/n/n";
print 
   
   "done/n";

print 
   
   "Writing ".$service[
   
   'class'].
   
   ".php...";
$fp = fopen($service[
   
   'class'].
   
   ".php", 
   
   'w');
fwrite($fp, 
   
   "
    
    .$code."?>/n");
fclose($fp);
print "done/n";

function parse_doc($prefix, $doc) {
  $code = "";
  $words = split(' ', $doc);
  $line = $prefix;
  foreach($words as $word) {
    $line .= $word.' ';
    if( strlen($line) > 90 ) { // new line
      $code .= $line."/n";
      $line = $prefix;
    }
  }
  $code .= $line."/n";
  return $code;
}

/**
 * Look for enumeration
 * 
 * @param DOM $dom
 * @param string $class
 * @return array
 */
function checkForEnum(&$dom, $class) {
  $values = array();
  
  $node = findType($dom, $class);
  if(!$node) {
    return $values;
  }
  
  $value_list = $node->getElementsByTagName('enumeration');
  if($value_list->length == 0) {
    return $values;
  }

  for($i=0; $i<$value_list->length; $i++) {
    $values[] = $value_list->item($i)->attributes->getNamedItem('value')->nodeValue;
  }
  return $values;
}

/**
 * Look for a type
 * 
 * @param DOM $dom
 * @param string $class
 * @return DOMNode
 */
function findType(&$dom, $class) {
  $types_node  = $dom->getElementsByTagName('types')->item(0);
  $schema_list = $types_node->getElementsByTagName('schema');
  
  for ($i=0; $i<$schema_list->length; $i++) {
    $children = $schema_list->item($i)->childNodes;
    for ($j=0; $j<$children->length; $j++) {
      $node = $children->item($j);
      if ($node instanceof DOMElement &&
      $node->hasAttributes() &&
      $node->attributes->getNamedItem('name')->nodeValue == $class) {
    return $node;
      }
    }
  }
  return null;
}

function generatePHPSymbol($s) {
  global $reserved_keywords;
  
  if(!preg_match('/^[A-Za-z_]/', $s)) {
    $s = 'value_'.$s;
  }
  if(in_array(strtolower($s), $reserved_keywords)) {
    $s = '_'.$s;
  }
  return preg_replace('/[-./s]/', '_', $s);
}


?>
  
  

只需要将$wsdl变量上填上相应的wsdl即可,调用该php会生成相应的本地类,以下是我使用该工具生成的mapservice的本地类。

 


  
  class GetDocumentInfo {
}

class GetDocumentInfoResponse {
  public $Result; // PropertySet
}

class GetMapCount {
}

class GetMapCountResponse {
  public $Result; // int
}

class GetMapName {
  public $Index; // int
}

class GetMapNameResponse {
  public $Result; // string
}

class GetDefaultMapName {
}

class GetDefaultMapNameResponse {
  public $Result; // string
}

class GetServerInfo {
  public $MapName; // string
}

class GetServerInfoResponse {
  public $Result; // MapServerInfo
}

class ExportMapImage {
  public $MapDescription; // MapDescription
  public $ImageDescription; // ImageDescription
}

class ExportMapImageResponse {
  public $Result; // MapImage
}

class ExportScaleBar {
  public $ScaleBar; // ScaleBar
  public $MapDescription; // MapDescription
  public $MapDisplay; // ImageDisplay
  public $BackGroundColor; // Color
  public $ImageDescription; // ImageDescription
}

class ExportScaleBarResponse {
  public $Result; // ImageResult
}

class Find {
  public $MapDescription; // MapDescription
  public $MapImageDisplay; // ImageDisplay
  public $SearchString; // string
  public $Contains; // boolean
  public $SearchFields; // string
  public $FindOption; // esriFindOption
  public $LayerIDs; // ArrayOfInt
}

class FindResponse {
  public $Result; // ArrayOfMapServerFindResult
}

class Identify {
  public $MapDescription; // MapDescription
  public $MapImageDisplay; // ImageDisplay
  public $SearchShape; // Geometry
  public $Tolerance; // int
  public $IdentifyOption; // esriIdentifyOption
  public $LayerIDs; // ArrayOfInt
}

class IdentifyResponse {
  public $Result; // ArrayOfMapServerIdentifyResult
}

class QueryFeatureCount {
  public $MapName; // string
  public $LayerID; // int
  public $QueryFilter; // QueryFilter
}

class QueryFeatureCountResponse {
  public $Result; // int
}

class QueryFeatureIDs {
  public $MapName; // string
  public $LayerID; // int
  public $QueryFilter; // QueryFilter
}

class QueryFeatureIDsResponse {
  public $Result; // FIDSet
}

class QueryFeatureData {
  public $MapName; // string
  public $LayerID; // int
  public $QueryFilter; // QueryFilter
}

class QueryFeatureDataResponse {
  public $Result; // RecordSet
}

class QueryFeatureCount2 {
  public $MapName; // string
  public $LayerDescription; // LayerDescription
  public $QueryFilter; // QueryFilter
}

class QueryFeatureCount2Response {
  public $Result; // int
}

class QueryFeatureIDs2 {
  public $MapName; // string
  public $LayerDescription; // LayerDescription
  public $QueryFilter; // QueryFilter
}

class QueryFeatureIDs2Response {
  public $Result; // FIDSet
}

class QueryFeatureData2 {
  public $MapName; // string
  public $LayerDescription; // LayerDescription
  public $QueryFilter; // QueryFilter
  public $QueryResultOptions; // QueryResultOptions
}

class QueryFeatureData2Response {
  public $Result; // QueryResult
}

class QueryHyperlinks {
  public $MapDescription; // MapDescription
  public $MapImageDisplay; // ImageDisplay
  public $LayerIDs; // ArrayOfInt
}

class QueryHyperlinksResponse {
  public $Result; // ArrayOfMapServerHyperlink
}

class ComputeScale {
  public $MapDescription; // MapDescription
  public $MapImageDisplay; // ImageDisplay
}

class ComputeScaleResponse {
  public $Result; // double
}

class ComputeDistance {
  public $MapName; // string
  public $FromPoint; // Point
  public $ToPoint; // Point
  public $Units; // esriUnits
}

class ComputeDistanceResponse {
  public $Result; // double
}

class ToMapPoints {
  public $MapDescription; // MapDescription
  public $MapImageDisplay; // ImageDisplay
  public $ScreenXValues; // ArrayOfInt
  public $ScreenYValues; // ArrayOfInt
}

class ToMapPointsResponse {
  public $Result; // Multipoint
}

class FromMapPoints {
  public $MapDescription; // MapDescription
  public $MapImageDisplay; // ImageDisplay
  public $MapPoints; // Multipoint
}

class FromMapPointsResponse {
  public $ScreenXValues; // ArrayOfInt
  public $ScreenYValues; // ArrayOfInt
}

class GetLegendInfo {
  public $MapName; // string
  public $LayerIDs; // ArrayOfInt
  public $LegendPatch; // MapServerLegendPatch
  public $ImageType; // ImageType
}

class GetLegendInfoResponse {
  public $Result; // ArrayOfMapServerLegendInfo
}

class GetSQLSyntaxInfo {
  public $MapName; // string
  public $LayerID; // int
}

class GetSQLSyntaxInfoResponse {
  public $Result; // SQLSyntaxInfo
}

class GetSupportedImageReturnTypes {
}

class GetSupportedImageReturnTypesResponse {
  public $Result; // esriImageReturnType
}

class IsFixedScaleMap {
  public $MapName; // string
}

class IsFixedScaleMapResponse {
  public $Result; // boolean
}

class HasSingleFusedMapCache {
  public $MapName; // string
}

class HasSingleFusedMapCacheResponse {
  public $Result; // boolean
}

class GetTileCacheInfo {
  public $MapName; // string
}

class GetTileCacheInfoResponse {
  public $Result; // TileCacheInfo
}

class GetMapTile {
  public $MapName; // string
  public $Level; // int
  public $Row; // int
  public $Column; // int
  public $Format; // string
}

class GetMapTileResponse {
  public $Result; // base64Binary
}

class HasLayerCache {
  public $MapName; // string
  public $LayerID; // int
}

class HasLayerCacheResponse {
  public $Result; // boolean
}

class GetLayerTile {
  public $MapName; // string
  public $LayerID; // int
  public $Level; // int
  public $Row; // int
  public $Column; // int
  public $Format; // string
}

class GetLayerTileResponse {
  public $Result; // base64Binary
}

class GetVirtualCacheDirectory {
  public $MapName; // string
  public $LayerID; // int
}

class GetVirtualCacheDirectoryResponse {
  public $Result; // string
}

class GetCacheName {
  public $MapName; // string
  public $LayerID; // int
}

class GetCacheNameResponse {
  public $Result; // string
}

class GetTileImageInfo {
  public $MapName; // string
}

class GetTileImageInfoResponse {
  public $Result; // TileImageInfo
}

class GetCacheControlInfo {
  public $MapName; // string
}

class GetCacheControlInfoResponse {
  public $Result; // CacheControlInfo
}

class GetServiceConfigurationInfo {
}

class GetServiceConfigurationInfoResponse {
  public $Result; // PropertySet
}

class GetCacheDescriptionInfo {
  public $MapName; // string
}

class GetCacheDescriptionInfoResponse {
  public $Result; // CacheDescriptionInfo
}

class QueryRowCount {
  public $MapName; // string
  public $MapTableDescription; // MapTableDescription
  public $QueryFilter; // QueryFilter
}

class QueryRowCountResponse {
  public $Result; // int
}

class QueryRowIDs {
  public $MapName; // string
  public $MapTableDescription; // MapTableDescription
  public $QueryFilter; // QueryFilter
}

class QueryRowIDsResponse {
  public $Result; // ArrayOfInt
}

class QueryData {
  public $MapName; // string
  public $MapTableDescription; // MapTableDescription
  public $QueryFilter; // QueryFilter
  public $QueryResultOptions; // QueryResultOptions
}

class QueryDataResponse {
  public $Result; // QueryResult
}

class QueryRelatedRecords {
  public $MapName; // string
  public $SourceTableID; // int
  public $SourceFIDSet; // FIDSet
  public $RelateDescription; // RelateDescription
}

class QueryRelatedRecordsResponse {
  public $Result; // QueryResult
}

class GetCacheStorageInfo {
  public $MapName; // string
}

class GetCacheStorageInfoResponse {
  public $Result; // CacheStorageInfo
}

class QueryRasterValue {
  public $MapName; // string
  public $SourceTableID; // int
  public $RowIDs; // ArrayOfInt
  public $FieldName; // string
  public $ImageType; // ImageType
}

class QueryRasterValueResponse {
  public $Result; // ArrayOfImageResult
}

class QueryAttachmentInfos {
  public $MapName; // string
  public $TableID; // int
  public $RowIDs; // ArrayOfInt
}

class QueryAttachmentInfosResponse {
  public $Result; // ArrayOfAttachmentInfo
}

class QueryAttachmentData {
  public $MapName; // string
  public $TableID; // int
  public $AttachmentIDs; // ArrayOfInt
  public $TransportType; // esriTransportType
}

class QueryAttachmentDataResponse {
  public $Result; // ArrayOfAttachmentData
}

class QueryHTMLPopups {
  public $MapName; // string
  public $TableID; // int
  public $RowIDs; // ArrayOfInt
}

class QueryHTMLPopupsResponse {
  public $Result; // ArrayOfString
}

class GetDefaultLayerDrawingDescriptions {
  public $MapName; // string
  public $LayerIDs; // ArrayOfInt
  public $SymbolOutputOptions; // ServerSymbolOutputOptions
}

class GetDefaultLayerDrawingDescriptionsResponse {
  public $Result; // ArrayOfLayerDrawingDescription
}

class GetMapTableSubtypeInfos {
  public $MapName; // string
  public $TableIDs; // ArrayOfInt
}

class GetMapTableSubtypeInfosResponse {
  public $Result; // ArrayOfMapTableSubtypeInfo
}

class esriIdentifyOption {
  const esriIdentifyTopmost = 'esriIdentifyTopmost';
  const esriIdentifyAllLayers = 'esriIdentifyAllLayers';
  const esriIdentifyVisibleLayers = 'esriIdentifyVisibleLayers';
  const esriIdentifyTopOneWithHTMLPopup = 'esriIdentifyTopOneWithHTMLPopup';
  const esriIdentifyVisibleWithHTMLPopup = 'esriIdentifyVisibleWithHTMLPopup';
}

class esriServerHTMLPopupType {
  const esriServerHTMLPopupTypeNone = 'esriServerHTMLPopupTypeNone';
  const esriServerHTMLPopupTypeAsURL = 'esriServerHTMLPopupTypeAsURL';
  const esriServerHTMLPopupTypeAsHTMLText = 'esriServerHTMLPopupTypeAsHTMLText';
}

class esriMapCacheStorageFormat {
  const esriMapCacheStorageModeCompact = 'esriMapCacheStorageModeCompact';
  const esriMapCacheStorageModeExploded = 'esriMapCacheStorageModeExploded';
}

class esriFindOption {
  const esriFindVisibleLayers = 'esriFindVisibleLayers';
  const esriFindAllLayers = 'esriFindAllLayers';
}

class TileCacheInfo {
  public $SpatialReference; // SpatialReference
  public $TileOrigin; // Point
  public $TileCols; // int
  public $TileRows; // int
  public $DPI; // int
  public $LODInfos; // ArrayOfLODInfo
}

class LODInfo {
  public $LevelID; // int
  public $Scale; // double
  public $Resolution; // double
}
class AreaPatch {
}

class CenterAndScale {
  public $Center; // Point
  public $Scale; // double
  public $DPI; // double
  public $DevBottom; // int
  public $DevLeft; // int
  public $DevTop; // int
  public $DevRight; // int
}

class CenterAndSize {
  public $Center; // Point
  public $Height; // double
  public $Width; // double
  public $Units; // string
}

class FeatureExtent {
  public $DefaultScale; // double
  public $ExpandRatio; // double
  public $FeatureIDs; // ArrayOfInt
  public $LayerID; // int
  public $MapName; // string
}

class ImageDescription {
  public $ImageType; // ImageType
  public $ImageDisplay; // ImageDisplay
}

class ImageDisplay {
  public $ImageHeight; // int
  public $ImageWidth; // int
  public $ImageDPI; // double
  public $TransparentColor; // Color
}

class ImageResult {
  public $ImageData; // base64Binary
  public $ImageURL; // string
  public $ImageHeight; // int
  public $ImageWidth; // int
  public $ImageDPI; // double
  public $ImageType; // string
}

class esriImageFormat {
  const esriImageNone = 'esriImageNone';
  const esriImageBMP = 'esriImageBMP';
  const esriImageJPG = 'esriImageJPG';
  const esriImageDIB = 'esriImageDIB';
  const esriImageTIFF = 'esriImageTIFF';
  const esriImagePNG = 'esriImagePNG';
  const esriImagePNG24 = 'esriImagePNG24';
  const esriImageEMF = 'esriImageEMF';
  const esriImagePS = 'esriImagePS';
  const esriImagePDF = 'esriImagePDF';
  const esriImageAI = 'esriImageAI';
  const esriImageGIF = 'esriImageGIF';
  const esriImageSVG = 'esriImageSVG';
  const esriImagePNG32 = 'esriImagePNG32';
  const esriImageJPGPNG = 'esriImageJPGPNG';
}

class esriScaleBarPos {
  const esriScaleBarAbove = 'esriScaleBarAbove';
  const esriScaleBarBeforeLabels = 'esriScaleBarBeforeLabels';
  const esriScaleBarAfterLabels = 'esriScaleBarAfterLabels';
  const esriScaleBarBeforeBar = 'esriScaleBarBeforeBar';
  const esriScaleBarAfterBar = 'esriScaleBarAfterBar';
  const esriScaleBarBelow = 'esriScaleBarBelow';
}

class esriVertPosEnum {
  const esriAbove = 'esriAbove';
  const esriTop = 'esriTop';
  const esriOn = 'esriOn';
  const esriBottom = 'esriBottom';
  const esriBelow = 'esriBelow';
}

class esriScaleBarFrequency {
  const esriScaleBarNone = 'esriScaleBarNone';
  const esriScaleBarOne = 'esriScaleBarOne';
  const esriScaleBarMajorDivisions = 'esriScaleBarMajorDivisions';
  const esriScaleBarDivisions = 'esriScaleBarDivisions';
  const esriScaleBarDivisionsAndFirstMidpoint = 'esriScaleBarDivisionsAndFirstMidpoint';
  const esriScaleBarDivisionsAndFirstSubdivisions = 'esriScaleBarDivisionsAndFirstSubdivisions';
  const esriScaleBarDivisionsAndSubdivisions = 'esriScaleBarDivisionsAndSubdivisions';
}

class esriScaleBarResizeHint {
  const esriScaleBarFixed = 'esriScaleBarFixed';
  const esriScaleBarAutoDivision = 'esriScaleBarAutoDivision';
  const esriScaleBarAutoDivisions = 'esriScaleBarAutoDivisions';
}

class esriImageReturnType {
  const esriImageReturnURL = 'esriImageReturnURL';
  const esriImageReturnMimeData = 'esriImageReturnMimeData';
}

class ImageType {
  public $ImageFormat; // esriImageFormat
  public $ImageReturnType; // esriImageReturnType
}

class LayerDescription {
  public $LayerID; // int
  public $Visible; // boolean
  public $ShowLabels; // boolean
  public $ScaleSymbols; // boolean
  public $SelectionFeatures; // ArrayOfInt
  public $SelectionColor; // Color
  public $SelectionSymbol; // Symbol
  public $SetSelectionSymbol; // boolean
  public $SelectionBufferDistance; // double
  public $ShowSelectionBuffer; // boolean
  public $DefinitionExpression; // string
  public $SourceID; // string
  public $SelectionBufferSymbol; // FillSymbol
  public $LayerResultOptions; // LayerResultOptions
  public $UseTime; // boolean
  public $TimeDataCumulative; // boolean
  public $TimeOffset; // double
  public $TimeOffsetUnits; // esriTimeUnits
}

class LayerResultOptions {
  public $IncludeGeometry; // boolean
  public $GeometryResultOptions; // GeometryResultOptions
  public $ReturnFieldNamesInResults; // boolean
  public $FormatValuesInResults; // boolean
}

class LegendClass {
  public $Symbol; // Symbol
  public $Label; // string
  public $Description; // string
  public $LegendClassFormat; // LegendClassFormat
}

class LegendClassFormat {
  public $LabelSymbol; // Symbol
  public $DescriptionSymbol; // Symbol
  public $LinePatch; // LinePatch
  public $AreaPatch; // AreaPatch
  public $PatchWidth; // double
  public $PatchHeight; // double
}

class LinePatch {
}

class MapArea {
  public $Extent; // Envelope
}

class MapDescription {
  public $Name; // string
  public $MapArea; // MapArea
  public $LayerDescriptions; // ArrayOfLayerDescription
  public $Rotation; // double
  public $SpatialReference; // SpatialReference
  public $TransparentColor; // Color
  public $SelectionColor; // Color
  public $BackgroundSymbol; // FillSymbol
  public $CustomGraphics; // ArrayOfGraphicElement
  public $GeoTransformation; // GeoTransformation
  public $TimeReference; // TimeReference
  public $TimeValue; // TimeValue
}

class MapExtent {
}

class MapImage {
  public $ImageData; // base64Binary
  public $ImageURL; // string
  public $Extent; // Envelope
  public $VisibleLayerIDs; // ArrayOfInt
  public $MapScale; // double
  public $ImageHeight; // int
  public $ImageWidth; // int
  public $ImageDPI; // double
  public $ImageType; // string
}

class MapLayerInfo {
  public $LayerID; // int
  public $Name; // string
  public $Description; // string
  public $LayerType; // string
  public $SourceDescription; // string
  public $HasLabels; // boolean
  public $CanSelect; // boolean
  public $CanScaleSymbols; // boolean
  public $MinScale; // double
  public $MaxScale; // double
  public $Extent; // Envelope
  public $HasHyperlinks; // boolean
  public $HasAttributes; // boolean
  public $CanIdentify; // boolean
  public $CanFind; // boolean
  public $IsFeatureLayer; // boolean
  public $Fields; // Fields
  public $DisplayField; // string
  public $IDField; // string
  public $IsComposite; // boolean
  public $SubLayerIDs; // ArrayOfInt
  public $ParentLayerID; // int
  public $FieldAliases; // ArrayOfString
  public $CopyrightText; // string
  public $RelateInfos; // ArrayOfRelateInfo
  public $SupportsTime; // boolean
  public $StartTimeFieldName; // string
  public $EndTimeFieldName; // string
  public $TimeValueFormat; // string
  public $TrackIDFieldName; // string
  public $TimeReference; // TimeReference
  public $FullTimeExtent; // TimeExtent
  public $TimeInterval; // double
  public $TimeIntervalUnits; // esriTimeUnits
  public $HasAttachments; // boolean
  public $HTMLPopupType; // esriServerHTMLPopupType
  public $HasLayerDrawingDescription; // boolean
  public $HasSubtype; // boolean
}

class MapServerBookmark {
  public $Name; // string
}

class MapServerFindResult {
  public $Value; // string
  public $LayerID; // int
  public $FeatureID; // int
  public $FieldName; // string
  public $Shape; // Geometry
  public $Properties; // PropertySet
}

class MapServerHyperlink {
  public $Location; // Geometry
  public $URL; // string
}

class MapServerIdentifyResult {
  public $LayerID; // int
  public $Name; // string
  public $Properties; // PropertySet
  public $Shape; // Geometry
  public $Relationships; // ArrayOfMapServerRelationship
  public $HTMLPopup; // string
  public $FeatureID; // int
}

class MapServerInfo {
  public $Name; // string
  public $Description; // string
  public $FullExtent; // Envelope
  public $Extent; // Envelope
  public $SpatialReference; // SpatialReference
  public $MapLayerInfos; // ArrayOfMapLayerInfo
  public $BackgroundColor; // Color
  public $Bookmarks; // ArrayOfMapServerBookmark
  public $DefaultMapDescription; // MapDescription
  public $Units; // esriUnits
  public $SupportedImageReturnTypes; // esriImageReturnType
  public $BackgroundSymbol; // FillSymbol
  public $CopyrightText; // string
  public $StandaloneTableInfos; // ArrayOfStandaloneTableInfo
  public $StandaloneTableDescriptions; // ArrayOfStandaloneTableDescription
  public $FullTimeExtent; // TimeExtent
  public $DefaultTimeStepInterval; // double
  public $DefaultTimeStepIntervalUnits; // esriTimeUnits
  public $DefaultTimeWindow; // double
}

class MapServerLegendClass {
  public $Label; // string
  public $Description; // string
  public $SymbolImage; // ImageResult
  public $TransparentColor; // Color
}

class MapServerLegendGroup {
  public $Heading; // string
  public $LegendClasses; // ArrayOfMapServerLegendClass
}

class MapServerLegendInfo {
  public $LayerID; // int
  public $Name; // string
  public $LegendGroups; // ArrayOfMapServerLegendGroup
}

class MapServerLegendPatch {
  public $Width; // double
  public $Height; // double
  public $ImageDPI; // double
  public $LinePatch; // LinePatch
  public $AreaPatch; // AreaPatch
}

class MapServerRelationship {
  public $Name; // string
  public $Rows; // ArrayOfMapServerRow
}

class MapServerRow {
  public $Name; // string
  public $Properties; // PropertySet
  public $Relationships; // ArrayOfMapServerRelationship
  public $FeatureID; // int
}

class ScaleBar {
  public $BarHeight; // double
  public $Division; // double
  public $Divisions; // short
  public $DivisionsBeforeZero; // short
  public $Subdivisions; // short
  public $Units; // esriUnits
  public $UnitLabel; // string
  public $UnitLabelPosition; // esriScaleBarPos
  public $UnitLabelGap; // double
  public $UnitLabelSymbol; // TextSymbol
  public $LabelFrequency; // esriScaleBarFrequency
  public $LabelPosition; // esriVertPosEnum
  public $LabelGap; // double
  public $LabelSymbol; // TextSymbol
  public $NumberFormat; // NumericFormat
  public $ResizeHint; // esriScaleBarResizeHint
}

class AlternatingScaleBar {
  public $FillSymbol1; // FillSymbol
  public $FillSymbol2; // FillSymbol
  public $DivisionMarkSymbol; // LineSymbol
  public $SubdivisionMarkSymbol; // LineSymbol
  public $DivisionMarkHeight; // double
  public $SubdivisionMarkHeight; // double
  public $MarkPosition; // esriVertPosEnum
  public $MarkFrequency; // esriScaleBarFrequency
}

class SingleDivisionScaleBar {
  public $FillSymbol; // FillSymbol
  public $DivisionMarkSymbol; // LineSymbol
  public $SubdivisionMarkSymbol; // LineSymbol
  public $DivisionMarkHeight; // double
  public $SubdivisionMarkHeight; // double
  public $MarkPosition; // esriVertPosEnum
  public $MarkFrequency; // esriScaleBarFrequency
}

class SQLSyntaxInfo {
  public $FunctionNames; // PropertySet
  public $SpecialCharacters; // PropertySet
  public $SupportedPredicates; // ArrayOfString
  public $SupportedClauses; // ArrayOfString
  public $IdentifierCase; // boolean
  public $DelimitedIdentifierCase; // boolean
  public $StringComparisonCase; // boolean
  public $Keywords; // ArrayOfString
  public $InvalidCharacters; // string
  public $InvalidStartingCharacters; // string
}

class Shadow {
}

class Background {
}

class SymbolBackground {
  public $HorizontalGap; // double
  public $CornerRounding; // short
  public $VerticalGap; // double
  public $Symbol; // FillSymbol
}

class Border {
}

class SymbolBorder {
  public $HorizontalGap; // double
  public $CornerRounding; // short
  public $VerticalGap; // double
  public $Symbol; // LineSymbol
}

class SymbolShadow {
  public $Symbol; // LineSymbol
  public $CornerRounding; // short
  public $HorizontalOffset; // double
  public $VerticalOffset; // double
}

class Element {
}

class GraphicElement {
}

class LineElement {
  public $Name; // string
  public $Type; // string
  public $AutoTransform; // boolean
  public $ReferenceScale; // double
  public $Symbol; // Symbol
  public $Line; // Geometry
  public $Locked; // boolean
  public $FixedAspectRatio; // boolean
}

class CircleElement {
  public $Rectangle; // Geometry
  public $Locked; // boolean
  public $FixedAspectRatio; // boolean
  public $Name; // string
  public $Type; // string
  public $AutoTransform; // boolean
  public $ReferenceScale; // double
  public $Symbol; // Symbol
}

class EllipseElement {
  public $Rectangle; // Geometry
  public $Locked; // boolean
  public $FixedAspectRatio; // boolean
  public $Name; // string
  public $Type; // string
  public $AutoTransform; // boolean
  public $ReferenceScale; // double
  public $Symbol; // Symbol
}

class GroupElement {
  public $Name; // string
  public $Type; // string
  public $AutoTransform; // boolean
  public $ReferenceScale; // double
  public $Elements; // ArrayOfGraphicElement
  public $Rectangle; // Geometry
  public $Locked; // boolean
  public $FixedAspectRatio; // boolean
  public $Border; // Border
  public $Background; // Background
  public $DraftMode; // boolean
  public $Shadow; // Shadow
}
class MarkerElement {
  public $Name; // string
  public $Type; // string
  public $AutoTransform; // boolean
  public $ReferenceScale; // double
  public $Symbol; // Symbol
  public $Point; // Point
  public $Locked; // boolean
}

class ParagraphTextElement {
  public $Name; // string
  public $Type; // string
  public $AutoTransform; // boolean
  public $ReferenceScale; // double
  public $Text; // string
  public $Scale; // double
  public $Symbol; // Symbol
  public $TextGeometry; // Geometry
  public $Locked; // boolean
  public $FrameBorder; // Border
  public $FrameBackground; // Background
  public $FrameShadow; // Shadow
  public $ColumnGap; // double
  public $ColumnCount; // int
  public $Margin; // double
}

class PolygonElement {
  public $Name; // string
  public $Type; // string
  public $AutoTransform; // boolean
  public $ReferenceScale; // double
  public $Symbol; // Symbol
  public $Polygon; // Geometry
  public $Locked; // boolean
  public $FixedAspectRatio; // boolean
}

class RectangleElement {
  public $Rectangle; // Geometry
  public $Locked; // boolean
  public $FixedAspectRatio; // boolean
  public $Name; // string
  public $Type; // string
  public $AutoTransform; // boolean
  public $ReferenceScale; // double
  public $Symbol; // Symbol
}

class TextElement {
  public $Name; // string
  public $Type; // string
  public $AutoTransform; // boolean
  public $ReferenceScale; // double
  public $Text; // string
  public $Scale; // boolean
  public $Symbol; // Symbol
  public $TextGeometry; // Geometry
  public $Locked; // boolean
}

class Patch {
  public $Name; // string
  public $PreserveAspectRatio; // boolean
  public $Geometry; // Geometry
}

class esriRotationType {
  const esriRotateSymbolGeographic = 'esriRotateSymbolGeographic';
  const esriRotateSymbolArithmetic = 'esriRotateSymbolArithmetic';
}

class esriNormalizationType {
  const esriNormalizeByField = 'esriNormalizeByField';
  const esriNormalizeByLog = 'esriNormalizeByLog';
  const esriNormalizeByPercentOfTotal = 'esriNormalizeByPercentOfTotal';
  const esriNormalizeByArea = 'esriNormalizeByArea';
  const esriNormalizeByNothing = 'esriNormalizeByNothing';
}

class FeatureRenderer {
}

class UniqueValueInfo {
  public $Value; // string
  public $Label; // string
  public $Description; // string
  public $Symbol; // Symbol
}

class ClassBreakInfo {
  public $ClassMaximumValue; // double
  public $Label; // string
  public $Description; // string
  public $Symbol; // Symbol
}

class SimpleRenderer {
  public $Symbol; // Symbol
  public $Label; // string
  public $Description; // string
  public $RotationField; // string
  public $RotationType; // esriRotationType
  public $TransparencyField; // string
}

class UniqueValueRenderer {
  public $Field1; // string
  public $Field2; // string
  public $Field3; // string
  public $FieldDelimiter; // string
  public $DefaultSymbol; // Symbol
  public $DefaultLabel; // string
  public $UniqueValueInfos; // ArrayOfUniqueValueInfo
  public $RotationField; // string
  public $RotationType; // esriRotationType
  public $TransparencyField; // string
}

class ClassBreaksRenderer {
  public $Field; // string
  public $MinimumValue; // double
  public $ClassBreakInfos; // ArrayOfClassBreakInfo
  public $BackgroundSymbol; // FillSymbol
  public $NormalizationField; // string
  public $NormalizationType; // esriNormalizationType
  public $NormalizationTotal; // double
  public $RotationField; // string
  public $RotationType; // esriRotationType
}

class LabelingDescription {
  public $LabelClassDescriptions; // ArrayOfLabelClassDescription
}

class esriServerPointLabelPlacementType {
  const esriServerPointLabelPlacementAboveCenter = 'esriServerPointLabelPlacementAboveCenter';
  const esriServerPointLabelPlacementAboveLeft = 'esriServerPointLabelPlacementAboveLeft';
  const esriServerPointLabelPlacementAboveRight = 'esriServerPointLabelPlacementAboveRight';
  const esriServerPointLabelPlacementBelowCenter = 'esriServerPointLabelPlacementBelowCenter';
  const esriServerPointLabelPlacementBelowLeft = 'esriServerPointLabelPlacementBelowLeft';
  const esriServerPointLabelPlacementBelowRight = 'esriServerPointLabelPlacementBelowRight';
  const esriServerPointLabelPlacementCenterCenter = 'esriServerPointLabelPlacementCenterCenter';
  const esriServerPointLabelPlacementCenterLeft = 'esriServerPointLabelPlacementCenterLeft';
  const esriServerPointLabelPlacementCenterRight = 'esriServerPointLabelPlacementCenterRight';
}

class esriServerLineLabelPlacementType {
  const esriServerLinePlacementAboveAfter = 'esriServerLinePlacementAboveAfter';
  const esriServerLinePlacementAboveAlong = 'esriServerLinePlacementAboveAlong';
  const esriServerLinePlacementAboveBefore = 'esriServerLinePlacementAboveBefore';
  const esriServerLinePlacementAboveStart = 'esriServerLinePlacementAboveStart';
  const esriServerLinePlacementAboveEnd = 'esriServerLinePlacementAboveEnd';
  const esriServerLinePlacementBelowAfter = 'esriServerLinePlacementBelowAfter';
  const esriServerLinePlacementBelowAlong = 'esriServerLinePlacementBelowAlong';
  const esriServerLinePlacementBelowBefore = 'esriServerLinePlacementBelowBefore';
  const esriServerLinePlacementBelowStart = 'esriServerLinePlacementBelowStart';
  const esriServerLinePlacementBelowEnd = 'esriServerLinePlacementBelowEnd';
  const esriServerLinePlacementCenterAfter = 'esriServerLinePlacementCenterAfter';
  const esriServerLinePlacementCenterAlong = 'esriServerLinePlacementCenterAlong';
  const esriServerLinePlacementCenterBefore = 'esriServerLinePlacementCenterBefore';
  const esriServerLinePlacementCenterStart = 'esriServerLinePlacementCenterStart';
  const esriServerLinePlacementCenterEnd = 'esriServerLinePlacementCenterEnd';
}

class esriServerPolygonLabelPlacementType {
  const esriServerPolygonPlacementAlwaysHorizontal = 'esriServerPolygonPlacementAlwaysHorizontal';
}

class LabelPlacementDescription {
}

class PointLabelPlacementDescription {
  public $Type; // esriServerPointLabelPlacementType
}

class LineLabelPlacementDescription {
  public $Type; // esriServerLineLabelPlacementType
}

class PolygonLabelPlacementDescription {
  public $Type; // esriServerPolygonLabelPlacementType
}

class LabelClassDescription {
  public $LabelPlacementDescription; // LabelPlacementDescription
  public $LabelExpression; // string
  public $Symbol; // SimpleTextSymbol
  public $UseCodedValue; // boolean
  public $MaximumScale; // double
  public $MinimumScale; // double
}

class LayerDrawingDescription {
}

class FeatureLayerDrawingDescription {
  public $FeatureRenderer; // FeatureRenderer
  public $ScaleSymbols; // boolean
  public $Transparency; // short
  public $Brightness; // short
  public $Contrast; // short
  public $LabelingDescription; // LabelingDescription
  public $SourceLayerID; // int
}

class LegendGroup {
  public $Visible; // boolean
  public $Editable; // boolean
  public $Heading; // string
  public $LegendClasses; // ArrayOfLegendClass
}

class TileImageInfo {
  public $CacheTileFormat; // string
  public $CompressionQuality; // int
  public $Antialiasing; // string
}

class CacheStorageInfo {
  public $StorageFormat; // esriMapCacheStorageFormat
  public $PacketSize; // int
}

class ImageQueryFilter {
  public $PixelSize; // Point
}

class RasterLayerDrawingDescription {
  public $RasterRenderer; // RasterRenderer
  public $Transparency; // short
  public $Brightness; // short
  public $Contrast; // short
}

class RasterRenderer {
  public $Indexed; // boolean
  public $Brightness; // int
  public $Contrast; // int
  public $ResamplingType; // string
  public $NoDataColor; // Color
  public $NoDataValue; // ArrayOfDouble
  public $AlphaBandIndex; // int
  public $UseAlphaBand; // boolean
}

class RasterUniqueValueRenderer {
  public $ValueField; // string
  public $ClassField; // string
  public $ColorSchema; // string
  public $UseDefaultSymbol; // boolean
  public $DefaultSymbol; // Symbol
  public $DefaultLabel; // string
  public $LegendGroupsCount; // int
  public $LegendGroups; // ArrayOfLegendGroup
  public $ClassValuesCount; // int
  public $ClassesInLegend; // ArrayOfInt
  public $ClassesInLegendSize; // ArrayOfInt
  public $UniqueValueVariants; // ArrayOfValue
  public $Global; // boolean
  public $UniqueValues; // RasterUniqueValues
  public $ColorRamp; // ColorRamp
}

class RasterRGBRenderer {
  public $LayerIndex1; // int
  public $LayerIndex2; // int
  public $LayerIndex3; // int
  public $UseRGBBand; // unsignedByte
  public $StretchType; // string
  public $StandardDeviations; // double
  public $IsInvert; // boolean
  public $DisplayBkValue; // boolean
  public $BlackValue; // ArrayOfDouble
  public $IsLegendExpand; // boolean
  public $BkColor; // Color
}

class RasterStretchRenderer {
  public $ColorSchema; // string
  public $LayerIndex1; // int
  public $StretchType; // string
  public $StandardDeviations; // double
  public $IsInvert; // boolean
  public $BlackValue; // double
  public $ColorRamp; // ColorRamp
  public $BkColor; // Color
  public $LegendGroup; // LegendGroup
  public $DisplayBkValue; // boolean
  public $InitCustomMinMax; // boolean
  public $UseCustomMinMax; // boolean
  public $CustomMin; // double
  public $CustomMax; // double
}

class RasterClassifyRenderer {
  public $ClassField; // string
  public $NormField; // string
  public $ClassificationComponent; // boolean
  public $Guid; // string
  public $ColorSchema; // string
  public $LegendGroupsCount; // int
  public $LegendGroups; // ArrayOfLegendGroup
  public $BreakSize; // int
  public $ArrayOfBreak; // ArrayOfDouble
  public $Ascending; // boolean
  public $NumberFormat; // NumericFormat
  public $ShowClassGaps; // boolean
  public $DeviationInterval; // double
  public $ExlusionValues; // anyType
  public $ExclusionRanges; // anyType
  public $ExclusionShowClass; // boolean
  public $ExclusionLegendClass; // LegendClass
  public $UniqueValues; // RasterUniqueValues
  public $UseHillShader; // boolean
  public $ZScale; // double
}

class LayerCacheInfo {
  public $LayerID; // int
  public $HasCache; // boolean
}

class CacheDescriptionInfo {
  public $TileCacheInfo; // TileCacheInfo
  public $TileImageInfo; // TileImageInfo
  public $LayerCacheInfos; // ArrayOfLayerCacheInfo
  public $CacheControlInfo; // CacheControlInfo
  public $ServiceType; // esriCachedMapServiceType
}

class CacheControlInfo {
  public $ClientCachingAllowed; // boolean
}

class esriCachedMapServiceType {
  const esriSingleFusedMapCache = 'esriSingleFusedMapCache';
  const esriIndividualLayerCaches = 'esriIndividualLayerCaches';
}

class esriQueryResultFormat {
  const esriQueryResultRecordSetAsObject = 'esriQueryResultRecordSetAsObject';
  const esriQueryResultJsonAsMime = 'esriQueryResultJsonAsMime';
  const esriQueryResultJsonAsURL = 'esriQueryResultJsonAsURL';
  const esriQueryResultAmfAsMime = 'esriQueryResultAmfAsMime';
  const esriQueryResultAmfAsURL = 'esriQueryResultAmfAsURL';
  const esriQueryResultKMLAsMime = 'esriQueryResultKMLAsMime';
  const esriQueryResultKMLAsURL = 'esriQueryResultKMLAsURL';
}

class QueryResultOptions {
  public $Format; // esriQueryResultFormat
  public $FormatProperties; // PropertySet
  public $GeoTransformation; // GeoTransformation
}

class QueryResult {
  public $MimeData; // base64Binary
  public $URL; // string
  public $Object; // anyType
}

class MapTableInfo {
}

class MapTableDescription {
}

class StandaloneTableInfo {
  public $ID; // int
  public $Name; // string
  public $Fields; // Fields
  public $RelateInfos; // ArrayOfRelateInfo
  public $SupportsTime; // boolean
  public $StartTimeFieldName; // string
  public $EndTimeFieldName; // string
  public $TimeValueFormat; // string
  public $TrackIDFieldName; // string
  public $TimeReference; // TimeReference
  public $FullTimeExtent; // TimeExtent
  public $TimeInterval; // double
  public $TimeIntervalUnits; // esriTimeUnits
  public $HasAttachments; // boolean
  public $DisplayField; // string
  public $Description; // string
  public $IDField; // string
  public $HasSubtype; // boolean
}

class StandaloneTableDescription {
  public $ID; // int
  public $DefinitionExpression; // string
  public $SourceID; // string
  public $UseTime; // boolean
  public $TimeDataCumulative; // boolean
  public $TimeOffset; // double
  public $TimeOffsetUnits; // esriTimeUnits
}

class RelateInfo {
  public $Name; // string
  public $RelationshipID; // int
  public $RelatedTableID; // int
}

class esriRelateResultFormat {
  const esriRelateResultRelatedRecordSetAsObject = 'esriRelateResultRelatedRecordSetAsObject';
  const esriRelateResultJsonAsMime = 'esriRelateResultJsonAsMime';
  const esriRelateResultJsonAsURL = 'esriRelateResultJsonAsURL';
  const esriRelateResultAmfAsMime = 'esriRelateResultAmfAsMime';
  const esriRelateResultAmfAsURL = 'esriRelateResultAmfAsURL';
}

class RelateDescription {
  public $RelationshipID; // int
  public $RelatedTableDefinitionExpression; // string
  public $RelatedTableFields; // string
  public $OutputSpatialReference; // SpatialReference
  public $GeoTransformation; // GeoTransformation
  public $IncludeGeometry; // boolean
  public $GeometryResultOptions; // GeometryResultOptions
  public $ResultFormat; // esriRelateResultFormat
  public $OutputTimeReference; // TimeReference
}

class MapServerForceDeriveFromAnyType {
  public $RelatedRecordSet; // RelatedRecordSet
  public $FieldDomainInfo; // FieldDomainInfo
}

class RelatedRecordSet {
  public $RelatedRecordFields; // Fields
  public $RelatedRecordGroups; // ArrayOfRelatedRecordGroup
}

class RelatedRecordGroup {
  public $SourceRowID; // int
  public $Records; // ArrayOfRecord
}

class MapTableSubtypeInfo {
  public $TableID; // int
  public $SubtypeFieldName; // string
  public $SubtypeInfos; // ArrayOfSubtypeInfo
}

class SubtypeInfo {
  public $SubtypeCode; // int
  public $SubtypeName; // string
  public $FieldDomainInfos; // ArrayOfFieldDomainInfo
}

class FieldDomainInfo {
  public $FieldName; // string
  public $Domain; // Domain
  public $IsInherited; // boolean
}

class esriTimeRelation {
  const esriTimeRelationOverlaps = 'esriTimeRelationOverlaps';
}

class TimeQueryFilter {
  public $TimeValue; // TimeValue
  public $OutputTimeReference; // TimeReference
  public $TimeRelation; // esriTimeRelation
}

class esriServerPictureOutputType {
  const esriServerPictureOutputAsPNG = 'esriServerPictureOutputAsPNG';
  const esriServerPictureOutputAsPNGInMime = 'esriServerPictureOutputAsPNGInMime';
  const esriServerPictureOutputAsIPicture = 'esriServerPictureOutputAsIPicture';
}

class ServerSymbolOutputOptions {
  public $PictureOutputType; // esriServerPictureOutputType
  public $ConvertLabelExpressions; // boolean
}

class Color {
  public $UseWindowsDithering; // boolean
  public $AlphaValue; // unsignedByte
}

class GrayColor {
  public $GrayLevel; // unsignedByte
}

class RgbColor {
  public $Red; // unsignedByte
  public $Green; // unsignedByte
  public $Blue; // unsignedByte
}

class CmykColor {
  public $Cyan; // unsignedByte
  public $Magenta; // unsignedByte
  public $Yellow; // unsignedByte
  public $Black; // unsignedByte
  public $Overprint; // boolean
  public $IsSpot; // boolean
  public $SpotDescription; // string
  public $SpotPercent; // short
}

class HlsColor {
  public $Hue; // short
  public $Lightness; // unsignedByte
  public $Saturation; // unsignedByte
}

class HsvColor {
  public $Hue; // short
  public $Saturation; // unsignedByte
  public $Value; // unsignedByte
}

class Symbol {
}

class esriSimpleFillStyle {
  const esriSFSSolid = 'esriSFSSolid';
  const esriSFSNull = 'esriSFSNull';
  const esriSFSHorizontal = 'esriSFSHorizontal';
  const esriSFSVertical = 'esriSFSVertical';
  const esriSFSForwardDiagonal = 'esriSFSForwardDiagonal';
  const esriSFSBackwardDiagonal = 'esriSFSBackwardDiagonal';
  const esriSFSCross = 'esriSFSCross';
  const esriSFSDiagonalCross = 'esriSFSDiagonalCross';
}

class esriSimpleLineStyle {
  const esriSLSSolid = 'esriSLSSolid';
  const esriSLSDash = 'esriSLSDash';
  const esriSLSDot = 'esriSLSDot';
  const esriSLSDashDot = 'esriSLSDashDot';
  const esriSLSDashDotDot = 'esriSLSDashDotDot';
  const esriSLSNull = 'esriSLSNull';
  const esriSLSInsideFrame = 'esriSLSInsideFrame';
}

class esriSimpleMarkerStyle {
  const esriSMSCircle = 'esriSMSCircle';
  const esriSMSSquare = 'esriSMSSquare';
  const esriSMSCross = 'esriSMSCross';
  const esriSMSX = 'esriSMSX';
  const esriSMSDiamond = 'esriSMSDiamond';
}

class esriTextHorizontalAlignment {
  const esriTHALeft = 'esriTHALeft';
  const esriTHACenter = 'esriTHACenter';
  const esriTHARight = 'esriTHARight';
  const esriTHAFull = 'esriTHAFull';
}

class esriTextVerticalAlignment {
  const esriTVATop = 'esriTVATop';
  const esriTVACenter = 'esriTVACenter';
  const esriTVABaseline = 'esriTVABaseline';
  const esriTVABottom = 'esriTVABottom';
}

class esriTextPosition {
  const esriTPNormal = 'esriTPNormal';
  const esriTPSuperscript = 'esriTPSuperscript';
  const esriTPSubscript = 'esriTPSubscript';
}

class esriTextCase {
  const esriTCNormal = 'esriTCNormal';
  const esriTCLowercase = 'esriTCLowercase';
  const esriTCAllCaps = 'esriTCAllCaps';
  const esriTCSmallCaps = 'esriTCSmallCaps';
}

class esriTextDirection {
  const esriTDHorizontal = 'esriTDHorizontal';
  const esriTDAngle = 'esriTDAngle';
  const esriTDVertical = 'esriTDVertical';
}

class esriMaskStyle {
  const esriMSNone = 'esriMSNone';
  const esriMSHalo = 'esriMSHalo';
}

class SimpleFillSymbol {
  public $Style; // esriSimpleFillStyle
}

class SimpleLineSymbol {
  public $Style; // esriSimpleLineStyle
}

class SimpleMarkerSymbol {
  public $Outline; // boolean
  public $OutlineSize; // double
  public $OutlineColor; // Color
  public $Style; // esriSimpleMarkerStyle
}

class esriFontStyle {
  const normal = 'normal';
  const italic = 'italic';
  const oblique = 'oblique';
}

class esriFontWeight {
  const normal = 'normal';
  const bold = 'bold';
  const bolder = 'bolder';
  const lighter = 'lighter';
}

class esriFontDecoration {
  const none = 'none';
  const underline = 'underline';
  const line_through = 'line-through';
}

class esriSimpleTextVerticalAlignment {
  const top = 'top';
  const middle = 'middle';
  const baseline = 'baseline';
  const bottom = 'bottom';
}
class esriSimpleTextHorizontalAlignment {
  const left = 'left';
  const center = 'center';
  const right = 'right';
  const justified = 'justified';
}

class SimpleTextSymbol {
  public $Color; // Color
  public $BackgroundColor; // Color
  public $OutlineColor; // Color
  public $VerticalAlignment; // esriSimpleTextVerticalAlignment
  public $HorizontalAlignment; // esriSimpleTextHorizontalAlignment
  public $RightToLeft; // boolean
  public $Angle; // double
  public $XOffset; // double
  public $YOffset; // double
  public $Size; // double
  public $FontFamilyName; // string
  public $FontStyle; // esriFontStyle
  public $FontWeight; // esriFontWeight
  public $FontDecoration; // esriFontDecoration
}

class TextSymbol {
  public $Color; // Color
  public $BreakCharIndex; // int
  public $VerticalAlignment; // esriTextVerticalAlignment
  public $HorizontalAlignment; // esriTextHorizontalAlignment
  public $Clip; // boolean
  public $RightToLeft; // boolean
  public $Angle; // double
  public $XOffset; // double
  public $YOffset; // double
  public $ShadowColor; // Color
  public $ShadowXOffset; // double
  public $ShadowYOffset; // double
  public $TextPosition; // esriTextPosition
  public $TextCase; // esriTextCase
  public $CharacterSpacing; // double
  public $CharacterWidth; // double
  public $WordSpacing; // double
  public $Kerning; // boolean
  public $Leading; // double
  public $TextDirection; // esriTextDirection
  public $FlipAngle; // double
  public $TypeSetting; // boolean
  public $TextPathClass; // string
  public $FillSymbol; // Symbol
  public $Text; // string
  public $Size; // double
  public $MaskStyle; // esriMaskStyle
  public $MaskSize; // double
  public $MaskSymbol; // Symbol
  public $FontName; // string
  public $FontItalic; // boolean
  public $FontUnderline; // boolean
  public $FontStrikethrough; // boolean
  public $FontWeight; // int
  public $FontCharset; // int
  public $FontSizeHi; // int
  public $FontSizeLo; // int
  public $TextParserClass; // string
}

class CharacterMarkerSymbol {
  public $CharacterIndex; // int
  public $FontName; // string
  public $FontItalic; // boolean
  public $FontUnderline; // boolean
  public $FontStrikethrough; // boolean
  public $FontWeight; // int
  public $FontCharset; // int
  public $FontSizeHi; // int
  public $FontSizeLo; // int
}

class PictureMarkerSymbol {
  public $BgColor; // Color
  public $BitmapTransColor; // Color
  public $Picture; // base64Binary
  public $PictureUri; // string
  public $Width; // double
  public $FgColor; // Color
  public $Swap1BitColor; // boolean
}

class PictureFillSymbol {
  public $Picture; // base64Binary
  public $PictureUri; // string
  public $Width; // double
  public $Height; // double
  public $BgColor; // Color
  public $FgColor; // Color
  public $BitmapTransColor; // Color
  public $XSeparation; // double
  public $YSeparation; // double
  public $Swap1BitColor; // boolean
  public $Angle; // double
  public $XOffset; // double
  public $YOffset; // double
  public $XScale; // double
  public $YScale; // double
}

class FillSymbol {
  public $Color; // Color
  public $Outline; // LineSymbol
}

class LineSymbol {
  public $Color; // Color
  public $Width; // double
}

class MarkerSymbol {
  public $Angle; // double
  public $Color; // Color
  public $Size; // double
  public $XOffset; // double
  public $YOffset; // double
}

class CartographicMarkerSymbol {
  public $XScale; // double
  public $YScale; // double
}

class XMLBinarySymbol {
  public $Data; // XMLPersistedObject
}

class XMLBinaryFillSymbol {
  public $Data; // XMLPersistedObject
}

class ColorRamp {
  public $Name; // string
}

class AlgorithmicColorRamp {
  public $Algorithm; // string
  public $FromColor; // HsvColor
  public $ToColor; // HsvColor
}

class RandomColorRamp {
  public $NumColors; // int
  public $UseSeed; // boolean
  public $Seed; // int
  public $MinValue; // short
  public $MaxValue; // short
  public $MinSaturation; // short
  public $MaxSaturation; // short
  public $StartHue; // short
  public $EndHue; // short
}

class PresetColorRamp {
  public $NumColors; // int
  public $PresetSize; // int
  public $Colors; // ArrayOfColor
}

class MultiPartColorRamp {
  public $NumColorRamps; // int
  public $ColorRamps; // ArrayOfColorRamp
}

class RasterUniqueValues {
  public $UniqueValuesSize; // int
  public $Values; // ArrayOfValue
  public $Counts; // ArrayOfInt
}

class PropertySetProperty {
  public $Key; // string
  public $Value; // anyType
}

class PropertySet {
  public $PropertyArray; // ArrayOfPropertySetProperty
}

class XMLPersistedObject {
  public $Bytes; // base64Binary
}

class NumericFormat {
  public $RoundingOption; // esriRoundingOptionEnum
  public $RoundingValue; // int
  public $AlignmentOption; // esriNumericAlignmentEnum
  public $AlignmentWidth; // int
  public $UseSeparator; // boolean
  public $ZeroPad; // boolean
  public $ShowPlus; // boolean
}

class esriUnits {
  const esriUnknownUnits = 'esriUnknownUnits';
  const esriInches = 'esriInches';
  const esriPoints = 'esriPoints';
  const esriFeet = 'esriFeet';
  const esriYards = 'esriYards';
  const esriMiles = 'esriMiles';
  const esriNauticalMiles = 'esriNauticalMiles';
  const esriMillimeters = 'esriMillimeters';
  const esriCentimeters = 'esriCentimeters';
  const esriMeters = 'esriMeters';
  const esriKilometers = 'esriKilometers';
  const esriDecimalDegrees = 'esriDecimalDegrees';
  const esriDecimeters = 'esriDecimeters';
}

class esriRoundingOptionEnum {
  const esriRoundNumberOfDecimals = 'esriRoundNumberOfDecimals';
  const esriRoundNumberOfSignificantDigits = 'esriRoundNumberOfSignificantDigits';
}

class esriNumericAlignmentEnum {
  const esriAlignRight = 'esriAlignRight';
  const esriAlignLeft = 'esriAlignLeft';
}

class esriTimeUnits {
  const esriTimeUnitsUnknown = 'esriTimeUnitsUnknown';
  const esriTimeUnitsMilliseconds = 'esriTimeUnitsMilliseconds';
  const esriTimeUnitsSeconds = 'esriTimeUnitsSeconds';
  const esriTimeUnitsMinutes = 'esriTimeUnitsMinutes';
  const esriTimeUnitsHours = 'esriTimeUnitsHours';
  const esriTimeUnitsDays = 'esriTimeUnitsDays';
  const esriTimeUnitsWeeks = 'esriTimeUnitsWeeks';
  const esriTimeUnitsMonths = 'esriTimeUnitsMonths';
  const esriTimeUnitsYears = 'esriTimeUnitsYears';
  const esriTimeUnitsDecades = 'esriTimeUnitsDecades';
  const esriTimeUnitsCenturies = 'esriTimeUnitsCenturies';
}

class esriTransportType {
  const esriTransportTypeEmbedded = 'esriTransportTypeEmbedded';
  const esriTransportTypeUrl = 'esriTransportTypeUrl';
}

class TimeReference {
  public $TimeZoneNameID; // string
  public $RespectsDaylightSavingTime; // boolean
}

class TimeValue {
  public $TimeReference; // TimeReference
}

class TimeInstant {
  public $Time; // dateTime
}

class TimeExtent {
  public $StartTime; // dateTime
  public $EndTime; // dateTime
  public $Empty; // boolean
}

class esriGeometryType {
  const esriGeometryPoint = 'esriGeometryPoint';
  const esriGeometryMultipoint = 'esriGeometryMultipoint';
  const esriGeometryPolyline = 'esriGeometryPolyline';
  const esriGeometryPolygon = 'esriGeometryPolygon';
  const esriGeometryMultiPatch = 'esriGeometryMultiPatch';
}

class GeoTransformation {
  public $WKT; // string
  public $WKID; // int
}

class SpatialReference {
  public $WKT; // string
  public $XOrigin; // double
  public $YOrigin; // double
  public $XYScale; // double
  public $ZOrigin; // double
  public $ZScale; // double
  public $MOrigin; // double
  public $MScale; // double
  public $XYTolerance; // double
  public $ZTolerance; // double
  public $MTolerance; // double
  public $HighPrecision; // boolean
  public $LeftLongitude; // double
  public $WKID; // int
  public $VCSWKID; // int
}

class ProjectedCoordinateSystem {
}

class GeographicCoordinateSystem {
}

class UnknownCoordinateSystem {
}

class Geometry {
}

class Curve {
}

class Segment {
  public $FromPoint; // Point
  public $ToPoint; // Point
}

class Polycurve {
}

class Envelope {
}

class EnvelopeN {
  public $XMin; // double
  public $YMin; // double
  public $XMax; // double
  public $YMax; // double
  public $ZMin; // double
  public $ZMax; // double
  public $MMin; // double
  public $MMax; // double
  public $SpatialReference; // SpatialReference
}

class EnvelopeB {
  public $Bytes; // base64Binary
}

class Point {
}

class PointN {
  public $X; // double
  public $Y; // double
  public $M; // double
  public $Z; // double
  public $ID; // int
  public $SpatialReference; // SpatialReference
}

class PointB {
  public $Bytes; // base64Binary
}

class Multipoint {
}

class MultipointB {
  public $Bytes; // base64Binary
}

class MultipointN {
  public $HasID; // boolean
  public $HasZ; // boolean
  public $HasM; // boolean
  public $Extent; // Envelope
  public $PointArray; // ArrayOfPoint
  public $SpatialReference; // SpatialReference
}

class Line {
}

class EllipticArc {
  public $EllipseStd; // boolean
  public $CenterPoint; // Point
  public $Rotation; // double
  public $MinorMajorRatio; // double
  public $IsCounterClockwise; // boolean
  public $IsMinor; // boolean
}

class CircularArc {
  public $CenterPoint; // Point
  public $FromAngle; // double
  public $ToAngle; // double
  public $IsCounterClockwise; // boolean
  public $IsMinor; // boolean
  public $IsLine; // boolean
}

class BezierCurve {
  public $Degree; // int
  public $ControlPointArray; // ArrayOfPoint
}

class Path {
  public $PointArray; // ArrayOfPoint
  public $SegmentArray; // ArrayOfSegment
}

class Ring {
}

class Polygon {
}

class PolygonN {
  public $HasID; // boolean
  public $HasZ; // boolean
  public $HasM; // boolean
  public $Extent; // Envelope
  public $RingArray; // ArrayOfRing
  public $SpatialReference; // SpatialReference
}

class PolygonB {
  public $Bytes; // base64Binary
}

class Polyline {
}

class PolylineN {
  public $HasID; // boolean
  public $HasZ; // boolean
  public $HasM; // boolean
  public $Extent; // Envelope
  public $PathArray; // ArrayOfPath
  public $SpatialReference; // SpatialReference
}

class PolylineB {
  public $Bytes; // base64Binary
}

class MultiPatch {
}

class MultiPatchB {
  public $Bytes; // base64Binary
}

class MultiPatchN {
  public $HasID; // boolean
  public $HasZ; // boolean
  public $HasM; // boolean
  public $Extent; // Envelope
  public $SurfacePatchArray; // ArrayOfSurfacePatch
}

class TriangleFan {
  public $PointArray; // ArrayOfPoint
}

class TriangleStrip {
  public $PointArray; // ArrayOfPoint
}

class esriFieldType {
  const esriFieldTypeInteger = 'esriFieldTypeInteger';
  const esriFieldTypeSmallInteger = 'esriFieldTypeSmallInteger';
  const esriFieldTypeDouble = 'esriFieldTypeDouble';
  const esriFieldTypeSingle = 'esriFieldTypeSingle';
  const esriFieldTypeString = 'esriFieldTypeString';
  const esriFieldTypeDate = 'esriFieldTypeDate';
  const esriFieldTypeGeometry = 'esriFieldTypeGeometry';
  const esriFieldTypeOID = 'esriFieldTypeOID';
  const esriFieldTypeBlob = 'esriFieldTypeBlob';
  const esriFieldTypeGlobalID = 'esriFieldTypeGlobalID';
  const esriFieldTypeRaster = 'esriFieldTypeRaster';
  const esriFieldTypeGUID = 'esriFieldTypeGUID';
  const esriFieldTypeXML = 'esriFieldTypeXML';
}

class GeometryDef {
  public $AvgNumPoints; // int
  public $GeometryType; // esriGeometryType
  public $HasM; // boolean
  public $HasZ; // boolean
  public $SpatialReference; // SpatialReference
  public $GridSize0; // double
  public $GridSize1; // double
  public $GridSize2; // double
}

class esriMergePolicyType {
  const esriMPTSumValues = 'esriMPTSumValues';
  const esriMPTAreaWeighted = 'esriMPTAreaWeighted';
  const esriMPTDefaultValue = 'esriMPTDefaultValue';
}

class esriSplitPolicyType {
  const esriSPTGeometryRatio = 'esriSPTGeometryRatio';
  const esriSPTDuplicate = 'esriSPTDuplicate';
  const esriSPTDefaultValue = 'esriSPTDefaultValue';
}

class Domain {
  public $DomainName; // string
  public $FieldType; // esriFieldType
  public $MergePolicy; // esriMergePolicyType
  public $SplitPolicy; // esriSplitPolicyType
  public $Description; // string
  public $Owner; // string
}

class Field {
  public $Name; // string
  public $Type; // esriFieldType
  public $IsNullable; // boolean
  public $Length; // int
  public $Precision; // int
  public $Scale; // int
  public $Required; // boolean
  public $Editable; // boolean
  public $DomainFixed; // boolean
  public $GeometryDef; // GeometryDef
  public $AliasName; // string
  public $ModelName; // string
  public $DefaultValue; // anyType
  public $Domain; // Domain
  public $RasterDef; // RasterDef
}

class Fields {
  public $FieldArray; // ArrayOfField
}

class Record {
  public $Values; // ArrayOfValue
}

class RecordSet {
  public $Fields; // Fields
  public $Records; // ArrayOfRecord
}

class esriSearchOrder {
  const esriSearchOrderSpatial = 'esriSearchOrderSpatial';
  const esriSearchOrderAttribute = 'esriSearchOrderAttribute';
}

class esriSpatialRelEnum {
  const esriSpatialRelUndefined = 'esriSpatialRelUndefined';
  const esriSpatialRelIntersects = 'esriSpatialRelIntersects';
  const esriSpatialRelEnvelopeIntersects = 'esriSpatialRelEnvelopeIntersects';
  const esriSpatialRelIndexIntersects = 'esriSpatialRelIndexIntersects';
  const esriSpatialRelTouches = 'esriSpatialRelTouches';
  const esriSpatialRelOverlaps = 'esriSpatialRelOverlaps';
  const esriSpatialRelCrosses = 'esriSpatialRelCrosses';
  const esriSpatialRelWithin = 'esriSpatialRelWithin';
  const esriSpatialRelContains = 'esriSpatialRelContains';
  const esriSpatialRelRelation = 'esriSpatialRelRelation';
}

class FIDSet {
  public $FIDArray; // ArrayOfInt
}

class QueryFilter {
  public $SubFields; // string
  public $WhereClause; // string
  public $SpatialReferenceFieldName; // string
  public $Resolution; // double
  public $OutputSpatialReference; // SpatialReference
  public $FIDSet; // FIDSet
  public $PostfixClause; // string
  public $FilterDefs; // ArrayOfFilterDef
  public $PrefixClause; // string
}
class SpatialFilter {
  public $SearchOrder; // esriSearchOrder
  public $SpatialRel; // esriSpatialRelEnum
  public $SpatialRelDescription; // string
  public $FilterGeometry; // Geometry
  public $GeometryFieldName; // string
  public $FilterOwnsGeometry; // boolean
}

class FilterDef {
}

class XMLFilterDef {
  public $FieldName; // string
  public $Expression; // string
}

class RangeDomain {
  public $MaxValue; // anyType
  public $MinValue; // anyType
}

class CodedValue {
  public $Name; // string
  public $Code; // anyType
}

class CodedValueDomain {
  public $CodedValues; // ArrayOfCodedValue
}

class BitMaskCodedValueDomain {
}

class RasterDef {
  public $Description; // string
  public $IsByRef; // boolean
  public $SpatialReference; // SpatialReference
  public $IsByFunction; // boolean
}

class GeometryResultOptions {
  public $DensifyGeometries; // boolean
  public $MaximumSegmentLength; // double
  public $MaximumDeviation; // double
  public $GeneralizeGeometries; // boolean
  public $MaximumAllowableOffset; // double
}

class AttachmentInfo {
  public $AttachmentID; // int
  public $ParentID; // int
  public $Name; // string
  public $ContentType; // string
  public $Size; // int
}

class AttachmentData {
  public $Data; // base64Binary
  public $AttachmentInfo; // AttachmentInfo
  public $URL; // string
  public $TransportType; // esriTransportType
}


/**
 * dltb_MapServer class
 * 
 *  
 * 
 * @author    {author}
 * @copyright {copyright}
 * @package   {package}
 */
class dltb_MapServer extends SoapClient {

  private static $classmap = array(
                                    'GetDocumentInfo' => 'GetDocumentInfo',
                                    'GetDocumentInfoResponse' => 'GetDocumentInfoResponse',
                                    'GetMapCount' => 'GetMapCount',
                                    'GetMapCountResponse' => 'GetMapCountResponse',
                                    'GetMapName' => 'GetMapName',
                                    'GetMapNameResponse' => 'GetMapNameResponse',
                                    'GetDefaultMapName' => 'GetDefaultMapName',
                                    'GetDefaultMapNameResponse' => 'GetDefaultMapNameResponse',
                                    'GetServerInfo' => 'GetServerInfo',
                                    'GetServerInfoResponse' => 'GetServerInfoResponse',
                                    'ExportMapImage' => 'ExportMapImage',
                                    'ExportMapImageResponse' => 'ExportMapImageResponse',
                                    'ExportScaleBar' => 'ExportScaleBar',
                                    'ExportScaleBarResponse' => 'ExportScaleBarResponse',
                                    'Find' => 'Find',
                                    'FindResponse' => 'FindResponse',
                                    'Identify' => 'Identify',
                                    'IdentifyResponse' => 'IdentifyResponse',
                                    'QueryFeatureCount' => 'QueryFeatureCount',
                                    'QueryFeatureCountResponse' => 'QueryFeatureCountResponse',
                                    'QueryFeatureIDs' => 'QueryFeatureIDs',
                                    'QueryFeatureIDsResponse' => 'QueryFeatureIDsResponse',
                                    'QueryFeatureData' => 'QueryFeatureData',
                                    'QueryFeatureDataResponse' => 'QueryFeatureDataResponse',
                                    'QueryFeatureCount2' => 'QueryFeatureCount2',
                                    'QueryFeatureCount2Response' => 'QueryFeatureCount2Response',
                                    'QueryFeatureIDs2' => 'QueryFeatureIDs2',
                                    'QueryFeatureIDs2Response' => 'QueryFeatureIDs2Response',
                                    'QueryFeatureData2' => 'QueryFeatureData2',
                                    'QueryFeatureData2Response' => 'QueryFeatureData2Response',
                                    'QueryHyperlinks' => 'QueryHyperlinks',
                                    'QueryHyperlinksResponse' => 'QueryHyperlinksResponse',
                                    'ComputeScale' => 'ComputeScale',
                                    'ComputeScaleResponse' => 'ComputeScaleResponse',
                                    'ComputeDistance' => 'ComputeDistance',
                                    'ComputeDistanceResponse' => 'ComputeDistanceResponse',
                                    'ToMapPoints' => 'ToMapPoints',
                                    'ToMapPointsResponse' => 'ToMapPointsResponse',
                                    'FromMapPoints' => 'FromMapPoints',
                                    'FromMapPointsResponse' => 'FromMapPointsResponse',
                                    'GetLegendInfo' => 'GetLegendInfo',
                                    'GetLegendInfoResponse' => 'GetLegendInfoResponse',
                                    'GetSQLSyntaxInfo' => 'GetSQLSyntaxInfo',
                                    'GetSQLSyntaxInfoResponse' => 'GetSQLSyntaxInfoResponse',
                                    'GetSupportedImageReturnTypes' => 'GetSupportedImageReturnTypes',
                                    'GetSupportedImageReturnTypesResponse' => 'GetSupportedImageReturnTypesResponse',
                                    'IsFixedScaleMap' => 'IsFixedScaleMap',
                                    'IsFixedScaleMapResponse' => 'IsFixedScaleMapResponse',
                                    'HasSingleFusedMapCache' => 'HasSingleFusedMapCache',
                                    'HasSingleFusedMapCacheResponse' => 'HasSingleFusedMapCacheResponse',
                                    'GetTileCacheInfo' => 'GetTileCacheInfo',
                                    'GetTileCacheInfoResponse' => 'GetTileCacheInfoResponse',
                                    'GetMapTile' => 'GetMapTile',
                                    'GetMapTileResponse' => 'GetMapTileResponse',
                                    'HasLayerCache' => 'HasLayerCache',
                                    'HasLayerCacheResponse' => 'HasLayerCacheResponse',
                                    'GetLayerTile' => 'GetLayerTile',
                                    'GetLayerTileResponse' => 'GetLayerTileResponse',
                                    'GetVirtualCacheDirectory' => 'GetVirtualCacheDirectory',
                                    'GetVirtualCacheDirectoryResponse' => 'GetVirtualCacheDirectoryResponse',
                                    'GetCacheName' => 'GetCacheName',
                                    'GetCacheNameResponse' => 'GetCacheNameResponse',
                                    'GetTileImageInfo' => 'GetTileImageInfo',
                                    'GetTileImageInfoResponse' => 'GetTileImageInfoResponse',
                                    'GetCacheControlInfo' => 'GetCacheControlInfo',
                                    'GetCacheControlInfoResponse' => 'GetCacheControlInfoResponse',
                                    'GetServiceConfigurationInfo' => 'GetServiceConfigurationInfo',
                                    'GetServiceConfigurationInfoResponse' => 'GetServiceConfigurationInfoResponse',
                                    'GetCacheDescriptionInfo' => 'GetCacheDescriptionInfo',
                                    'GetCacheDescriptionInfoResponse' => 'GetCacheDescriptionInfoResponse',
                                    'QueryRowCount' => 'QueryRowCount',
                                    'QueryRowCountResponse' => 'QueryRowCountResponse',
                                    'QueryRowIDs' => 'QueryRowIDs',
                                    'QueryRowIDsResponse' => 'QueryRowIDsResponse',
                                    'QueryData' => 'QueryData',
                                    'QueryDataResponse' => 'QueryDataResponse',
                                    'QueryRelatedRecords' => 'QueryRelatedRecords',
                                    'QueryRelatedRecordsResponse' => 'QueryRelatedRecordsResponse',
                                    'GetCacheStorageInfo' => 'GetCacheStorageInfo',
                                    'GetCacheStorageInfoResponse' => 'GetCacheStorageInfoResponse',
                                    'QueryRasterValue' => 'QueryRasterValue',
                                    'QueryRasterValueResponse' => 'QueryRasterValueResponse',
                                    'QueryAttachmentInfos' => 'QueryAttachmentInfos',
                                    'QueryAttachmentInfosResponse' => 'QueryAttachmentInfosResponse',
                                    'QueryAttachmentData' => 'QueryAttachmentData',
                                    'QueryAttachmentDataResponse' => 'QueryAttachmentDataResponse',
                                    'QueryHTMLPopups' => 'QueryHTMLPopups',
                                    'QueryHTMLPopupsResponse' => 'QueryHTMLPopupsResponse',
                                    'GetDefaultLayerDrawingDescriptions' => 'GetDefaultLayerDrawingDescriptions',
                                    'GetDefaultLayerDrawingDescriptionsResponse' => 'GetDefaultLayerDrawingDescriptionsResponse',
                                    'GetMapTableSubtypeInfos' => 'GetMapTableSubtypeInfos',
                                    'GetMapTableSubtypeInfosResponse' => 'GetMapTableSubtypeInfosResponse',
                                    'esriIdentifyOption' => 'esriIdentifyOption',
                                    'esriServerHTMLPopupType' => 'esriServerHTMLPopupType',
                                    'esriMapCacheStorageFormat' => 'esriMapCacheStorageFormat',
                                    'esriFindOption' => 'esriFindOption',
                                    'TileCacheInfo' => 'TileCacheInfo',
                                    'LODInfo' => 'LODInfo',
                                    'AreaPatch' => 'AreaPatch',
                                    'CenterAndScale' => 'CenterAndScale',
                                    'CenterAndSize' => 'CenterAndSize',
                                    'FeatureExtent' => 'FeatureExtent',
                                    'ImageDescription' => 'ImageDescription',
                                    'ImageDisplay' => 'ImageDisplay',
                                    'ImageResult' => 'ImageResult',
                                    'esriImageFormat' => 'esriImageFormat',
                                    'esriScaleBarPos' => 'esriScaleBarPos',
                                    'esriVertPosEnum' => 'esriVertPosEnum',
                                    'esriScaleBarFrequency' => 'esriScaleBarFrequency',
                                    'esriScaleBarResizeHint' => 'esriScaleBarResizeHint',
                                    'esriImageReturnType' => 'esriImageReturnType',
                                    'ImageType' => 'ImageType',
                                    'LayerDescription' => 'LayerDescription',
                                    'LayerResultOptions' => 'LayerResultOptions',
                                    'LegendClass' => 'LegendClass',
                                    'LegendClassFormat' => 'LegendClassFormat',
                                    'LinePatch' => 'LinePatch',
                                    'MapArea' => 'MapArea',
                                    'MapDescription' => 'MapDescription',
                                    'MapExtent' => 'MapExtent',
                                    'MapImage' => 'MapImage',
                                    'MapLayerInfo' => 'MapLayerInfo',
                                    'MapServerBookmark' => 'MapServerBookmark',
                                    'MapServerFindResult' => 'MapServerFindResult',
                                    'MapServerHyperlink' => 'MapServerHyperlink',
                                    'MapServerIdentifyResult' => 'MapServerIdentifyResult',
                                    'MapServerInfo' => 'MapServerInfo',
                                    'MapServerLegendClass' => 'MapServerLegendClass',
                                    'MapServerLegendGroup' => 'MapServerLegendGroup',
                                    'MapServerLegendInfo' => 'MapServerLegendInfo',
                                    'MapServerLegendPatch' => 'MapServerLegendPatch',
                                    'MapServerRelationship' => 'MapServerRelationship',
                                    'MapServerRow' => 'MapServerRow',
                                    'ScaleBar' => 'ScaleBar',
                                    'AlternatingScaleBar' => 'AlternatingScaleBar',
                                    'SingleDivisionScaleBar' => 'SingleDivisionScaleBar',
                                    'SQLSyntaxInfo' => 'SQLSyntaxInfo',
                                    'Shadow' => 'Shadow',
                                    'Background' => 'Background',
                                    'SymbolBackground' => 'SymbolBackground',
                                    'Border' => 'Border',
                                    'SymbolBorder' => 'SymbolBorder',
                                    'SymbolShadow' => 'SymbolShadow',
                                    'Element' => 'Element',
                                    'GraphicElement' => 'GraphicElement',
                                    'LineElement' => 'LineElement',
                                    'CircleElement' => 'CircleElement',
                                    'EllipseElement' => 'EllipseElement',
                                    'GroupElement' => 'GroupElement',
                                    'MarkerElement' => 'MarkerElement',
                                    'ParagraphTextElement' => 'ParagraphTextElement',
                                    'PolygonElement' => 'PolygonElement',
                                    'RectangleElement' => 'RectangleElement',
                                    'TextElement' => 'TextElement',
                                    'Patch' => 'Patch',
                                    'esriRotationType' => 'esriRotationType',
                                    'esriNormalizationType' => 'esriNormalizationType',
                                    'FeatureRenderer' => 'FeatureRenderer',
                                    'UniqueValueInfo' => 'UniqueValueInfo',
                                    'ClassBreakInfo' => 'ClassBreakInfo',
                                    'SimpleRenderer' => 'SimpleRenderer',
                                    'UniqueValueRenderer' => 'UniqueValueRenderer',
                                    'ClassBreaksRenderer' => 'ClassBreaksRenderer',
                                    'LabelingDescription' => 'LabelingDescription',
                                    'esriServerPointLabelPlacementType' => 'esriServerPointLabelPlacementType',
                                    'esriServerLineLabelPlacementType' => 'esriServerLineLabelPlacementType',
                                    'esriServerPolygonLabelPlacementType' => 'esriServerPolygonLabelPlacementType',
                                    'LabelPlacementDescription' => 'LabelPlacementDescription',
                                    'PointLabelPlacementDescription' => 'PointLabelPlacementDescription',
                                    'LineLabelPlacementDescription' => 'LineLabelPlacementDescription',
                                    'PolygonLabelPlacementDescription' => 'PolygonLabelPlacementDescription',
                                    'LabelClassDescription' => 'LabelClassDescription',
                                    'LayerDrawingDescription' => 'LayerDrawingDescription',
                                    'FeatureLayerDrawingDescription' => 'FeatureLayerDrawingDescription',
                                    'LegendGroup' => 'LegendGroup',
                                    'TileImageInfo' => 'TileImageInfo',
                                    'CacheStorageInfo' => 'CacheStorageInfo',
                                    'ImageQueryFilter' => 'ImageQueryFilter',
                                    'RasterLayerDrawingDescription' => 'RasterLayerDrawingDescription',
                                    'RasterRenderer' => 'RasterRenderer',
                                    'RasterUniqueValueRenderer' => 'RasterUniqueValueRenderer',
                                    'RasterRGBRenderer' => 'RasterRGBRenderer',
                                    'RasterStretchRenderer' => 'RasterStretchRenderer',
                                    'RasterClassifyRenderer' => 'RasterClassifyRenderer',
                                    'LayerCacheInfo' => 'LayerCacheInfo',
                                    'CacheDescriptionInfo' => 'CacheDescriptionInfo',
                                    'CacheControlInfo' => 'CacheControlInfo',
                                    'esriCachedMapServiceType' => 'esriCachedMapServiceType',
                                    'esriQueryResultFormat' => 'esriQueryResultFormat',
                                    'QueryResultOptions' => 'QueryResultOptions',
                                    'QueryResult' => 'QueryResult',
                                    'MapTableInfo' => 'MapTableInfo',
                                    'MapTableDescription' => 'MapTableDescription',
                                    'StandaloneTableInfo' => 'StandaloneTableInfo',
                                    'StandaloneTableDescription' => 'StandaloneTableDescription',
                                    'RelateInfo' => 'RelateInfo',
                                    'esriRelateResultFormat' => 'esriRelateResultFormat',
                                    'RelateDescription' => 'RelateDescription',
                                    'MapServerForceDeriveFromAnyType' => 'MapServerForceDeriveFromAnyType',
                                    'RelatedRecordSet' => 'RelatedRecordSet',
                                    'RelatedRecordGroup' => 'RelatedRecordGroup',
                                    'MapTableSubtypeInfo' => 'MapTableSubtypeInfo',
                                    'SubtypeInfo' => 'SubtypeInfo',
                                    'FieldDomainInfo' => 'FieldDomainInfo',
                                    'esriTimeRelation' => 'esriTimeRelation',
                                    'TimeQueryFilter' => 'TimeQueryFilter',
                                    'esriServerPictureOutputType' => 'esriServerPictureOutputType',
                                    'ServerSymbolOutputOptions' => 'ServerSymbolOutputOptions',
                                    'Color' => 'Color',
                                    'GrayColor' => 'GrayColor',
                                    'RgbColor' => 'RgbColor',
                                    'CmykColor' => 'CmykColor',
                                    'HlsColor' => 'HlsColor',
                                    'HsvColor' => 'HsvColor',
                                    'Symbol' => 'Symbol',
                                    'esriSimpleFillStyle' => 'esriSimpleFillStyle',
                                    'esriSimpleLineStyle' => 'esriSimpleLineStyle',
                                    'esriSimpleMarkerStyle' => 'esriSimpleMarkerStyle',
                                    'esriTextHorizontalAlignment' => 'esriTextHorizontalAlignment',
                                    'esriTextVerticalAlignment' => 'esriTextVerticalAlignment',
                                    'esriTextPosition' => 'esriTextPosition',
                                    'esriTextCase' => 'esriTextCase',
                                    'esriTextDirection' => 'esriTextDirection',
                                    'esriMaskStyle' => 'esriMaskStyle',
                                    'SimpleFillSymbol' => 'SimpleFillSymbol',
                                    'SimpleLineSymbol' => 'SimpleLineSymbol',
                                    'SimpleMarkerSymbol' => 'SimpleMarkerSymbol',
                                    'esriFontStyle' => 'esriFontStyle',
                                    'esriFontWeight' => 'esriFontWeight',
                                    'esriFontDecoration' => 'esriFontDecoration',
                                    'esriSimpleTextVerticalAlignment' => 'esriSimpleTextVerticalAlignment',
                                    'esriSimpleTextHorizontalAlignment' => 'esriSimpleTextHorizontalAlignment',
                                    'SimpleTextSymbol' => 'SimpleTextSymbol',
                                    'TextSymbol' => 'TextSymbol',
                                    'CharacterMarkerSymbol' => 'CharacterMarkerSymbol',
                                    'PictureMarkerSymbol' => 'PictureMarkerSymbol',
                                    'PictureFillSymbol' => 'PictureFillSymbol',
                                    'FillSymbol' => 'FillSymbol',
                                    'LineSymbol' => 'LineSymbol',
                                    'MarkerSymbol' => 'MarkerSymbol',
                                    'CartographicMarkerSymbol' => 'CartographicMarkerSymbol',
                                    'XMLBinarySymbol' => 'XMLBinarySymbol',
                                    'XMLBinaryFillSymbol' => 'XMLBinaryFillSymbol',
                                    'ColorRamp' => 'ColorRamp',
                                    'AlgorithmicColorRamp' => 'AlgorithmicColorRamp',
                                    'RandomColorRamp' => 'RandomColorRamp',
                                    'PresetColorRamp' => 'PresetColorRamp',
                                    'MultiPartColorRamp' => 'MultiPartColorRamp',
                                    'RasterUniqueValues' => 'RasterUniqueValues',
                                    'PropertySetProperty' => 'PropertySetProperty',
                                    'PropertySet' => 'PropertySet',
                                    'XMLPersistedObject' => 'XMLPersistedObject',
                                    'NumericFormat' => 'NumericFormat',
                                    'esriUnits' => 'esriUnits',
                                    'esriRoundingOptionEnum' => 'esriRoundingOptionEnum',
                                    'esriNumericAlignmentEnum' => 'esriNumericAlignmentEnum',
                                    'esriTimeUnits' => 'esriTimeUnits',
                                    'esriTransportType' => 'esriTransportType',
                                    'TimeReference' => 'TimeReference',
                                    'TimeValue' => 'TimeValue',
                                    'TimeInstant' => 'TimeInstant',
                                    'TimeExtent' => 'TimeExtent',
                                    'esriGeometryType' => 'esriGeometryType',
                                    'GeoTransformation' => 'GeoTransformation',
                                    'SpatialReference' => 'SpatialReference',
                                    'ProjectedCoordinateSystem' => 'ProjectedCoordinateSystem',
                                    'GeographicCoordinateSystem' => 'GeographicCoordinateSystem',
                                    'UnknownCoordinateSystem' => 'UnknownCoordinateSystem',
                                    'Geometry' => 'Geometry',
                                    'Curve' => 'Curve',
                                    'Segment' => 'Segment',
                                    'Polycurve' => 'Polycurve',
                                    'Envelope' => 'Envelope',
                                    'EnvelopeN' => 'EnvelopeN',
                                    'EnvelopeB' => 'EnvelopeB',
                                    'Point' => 'Point',
                                    'PointN' => 'PointN',
                                    'PointB' => 'PointB',
                                    'Multipoint' => 'Multipoint',
                                    'MultipointB' => 'MultipointB',
                                    'MultipointN' => 'MultipointN',
                                    'Line' => 'Line',
                                    'EllipticArc' => 'EllipticArc',
                                    'CircularArc' => 'CircularArc',
                                    'BezierCurve' => 'BezierCurve',
                                    'Path' => 'Path',
                                    'Ring' => 'Ring',
                                    'Polygon' => 'Polygon',
                                    'PolygonN' => 'PolygonN',
                                    'PolygonB' => 'PolygonB',
                                    'Polyline' => 'Polyline',
                                    'PolylineN' => 'PolylineN',
                                    'PolylineB' => 'PolylineB',
                                    'MultiPatch' => 'MultiPatch',
                                    'MultiPatchB' => 'MultiPatchB',
                                    'MultiPatchN' => 'MultiPatchN',
                                    'TriangleFan' => 'TriangleFan',
                                    'TriangleStrip' => 'TriangleStrip',
                                    'esriFieldType' => 'esriFieldType',
                                    'GeometryDef' => 'GeometryDef',
                                    'esriMergePolicyType' => 'esriMergePolicyType',
                                    'esriSplitPolicyType' => 'esriSplitPolicyType',
                                    'Domain' => 'Domain',
                                    'Field' => 'Field',
                                    'Fields' => 'Fields',
                                    'Record' => 'Record',
                                    'RecordSet' => 'RecordSet',
                                    'esriSearchOrder' => 'esriSearchOrder',
                                    'esriSpatialRelEnum' => 'esriSpatialRelEnum',
                                    'FIDSet' => 'FIDSet',
                                    'QueryFilter' => 'QueryFilter',
                                    'SpatialFilter' => 'SpatialFilter',
                                    'FilterDef' => 'FilterDef',
                                    'XMLFilterDef' => 'XMLFilterDef',
                                    'RangeDomain' => 'RangeDomain',
                                    'CodedValue' => 'CodedValue',
                                    'CodedValueDomain' => 'CodedValueDomain',
                                    'BitMaskCodedValueDomain' => 'BitMaskCodedValueDomain',
                                    'RasterDef' => 'RasterDef',
                                    'GeometryResultOptions' => 'GeometryResultOptions',
                                    'AttachmentInfo' => 'AttachmentInfo',
                                    'AttachmentData' => 'AttachmentData',
                                   );
public function dltb_MapServer($wsdl = "http://192.168.100.228:8399/arcgis/services/dltb/MapServer?wsdl", $options = array()) {
    foreach(self::$classmap as $key => $value) {
      if(!isset($options['classmap'][$key])) {
        $options['classmap'][$key] = $value;
      }
    }
    parent::__construct($wsdl, $options);
  }

  /**
   *  
   *
   * @param GetDocumentInfo $parameters
   * @return GetDocumentInfoResponse
   */
  public function GetDocumentInfo(GetDocumentInfo $parameters) {
    return $this->__soapCall('GetDocumentInfo', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param GetTileImageInfo $parameters
   * @return GetTileImageInfoResponse
   */
  public function GetTileImageInfo(GetTileImageInfo $parameters) {
    return $this->__soapCall('GetTileImageInfo', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param QueryFeatureData2 $parameters
   * @return QueryFeatureData2Response
   */
  public function QueryFeatureData2(QueryFeatureData2 $parameters) {
    return $this->__soapCall('QueryFeatureData2', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param QueryAttachmentInfos $parameters
   * @return QueryAttachmentInfosResponse
   */
  public function QueryAttachmentInfos(QueryAttachmentInfos $parameters) {
    return $this->__soapCall('QueryAttachmentInfos', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   * Gets the cache control information for a given map. 
   *
   * @param GetCacheControlInfo $parameters
   * @return GetCacheControlInfoResponse
   */
  public function GetCacheControlInfo(GetCacheControlInfo $parameters) {
    return $this->__soapCall('GetCacheControlInfo', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param GetDefaultLayerDrawingDescriptions $parameters
   * @return GetDefaultLayerDrawingDescriptionsResponse
   */
  public function GetDefaultLayerDrawingDescriptions(GetDefaultLayerDrawingDescriptions $parameters) {
    return $this->__soapCall('GetDefaultLayerDrawingDescriptions', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param QueryAttachmentData $parameters
   * @return QueryAttachmentDataResponse
   */
  public function QueryAttachmentData(QueryAttachmentData $parameters) {
    return $this->__soapCall('QueryAttachmentData', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param GetSQLSyntaxInfo $parameters
   * @return GetSQLSyntaxInfoResponse
   */
  public function GetSQLSyntaxInfo(GetSQLSyntaxInfo $parameters) {
    return $this->__soapCall('GetSQLSyntaxInfo', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param ExportScaleBar $parameters
   * @return ExportScaleBarResponse
   */
  public function ExportScaleBar(ExportScaleBar $parameters) {
    return $this->__soapCall('ExportScaleBar', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param GetVirtualCacheDirectory $parameters
   * @return GetVirtualCacheDirectoryResponse
   */
  public function GetVirtualCacheDirectory(GetVirtualCacheDirectory $parameters) {
    return $this->__soapCall('GetVirtualCacheDirectory', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param QueryRowCount $parameters
   * @return QueryRowCountResponse
   */
  public function QueryRowCount(QueryRowCount $parameters) {
    return $this->__soapCall('QueryRowCount', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param GetSupportedImageReturnTypes $parameters
   * @return GetSupportedImageReturnTypesResponse
   */
  public function GetSupportedImageReturnTypes(GetSupportedImageReturnTypes $parameters) {
    return $this->__soapCall('GetSupportedImageReturnTypes', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param QueryFeatureIDs $parameters
   * @return QueryFeatureIDsResponse
   */
  public function QueryFeatureIDs(QueryFeatureIDs $parameters) {
    return $this->__soapCall('QueryFeatureIDs', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param QueryData $parameters
   * @return QueryDataResponse
   */
  public function QueryData(QueryData $parameters) {
    return $this->__soapCall('QueryData', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param QueryHTMLPopups $parameters
   * @return QueryHTMLPopupsResponse
   */
  public function QueryHTMLPopups(QueryHTMLPopups $parameters) {
    return $this->__soapCall('QueryHTMLPopups', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   * Gets the cache storage information for a given map. 
   *
   * @param GetCacheStorageInfo $parameters
   * @return GetCacheStorageInfoResponse
   */
  public function GetCacheStorageInfo(GetCacheStorageInfo $parameters) {
    return $this->__soapCall('GetCacheStorageInfo', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param ToMapPoints $parameters
   * @return ToMapPointsResponse
   */
  public function ToMapPoints(ToMapPoints $parameters) {
    return $this->__soapCall('ToMapPoints', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param GetMapName $parameters
   * @return GetMapNameResponse
   */
  public function GetMapName(GetMapName $parameters) {
    return $this->__soapCall('GetMapName', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param GetTileCacheInfo $parameters
   * @return GetTileCacheInfoResponse
   */
  public function GetTileCacheInfo(GetTileCacheInfo $parameters) {
    return $this->__soapCall('GetTileCacheInfo', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param QueryRelatedRecords $parameters
   * @return QueryRelatedRecordsResponse
   */
  public function QueryRelatedRecords(QueryRelatedRecords $parameters) {
    return $this->__soapCall('QueryRelatedRecords', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param QueryFeatureData $parameters
   * @return QueryFeatureDataResponse
   */
  public function QueryFeatureData(QueryFeatureData $parameters) {
    return $this->__soapCall('QueryFeatureData', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param QueryHyperlinks $parameters
   * @return QueryHyperlinksResponse
   */
  public function QueryHyperlinks(QueryHyperlinks $parameters) {
    return $this->__soapCall('QueryHyperlinks', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param HasLayerCache $parameters
   * @return HasLayerCacheResponse
   */
  public function HasLayerCache(HasLayerCache $parameters) {
    return $this->__soapCall('HasLayerCache', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param QueryFeatureIDs2 $parameters
   * @return QueryFeatureIDs2Response
   */
  public function QueryFeatureIDs2(QueryFeatureIDs2 $parameters) {
    return $this->__soapCall('QueryFeatureIDs2', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param GetLayerTile $parameters
   * @return GetLayerTileResponse
   */
  public function GetLayerTile(GetLayerTile $parameters) {
    return $this->__soapCall('GetLayerTile', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param GetServiceConfigurationInfo $parameters
   * @return GetServiceConfigurationInfoResponse
   */
  public function GetServiceConfigurationInfo(GetServiceConfigurationInfo $parameters) {
    return $this->__soapCall('GetServiceConfigurationInfo', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param QueryFeatureCount2 $parameters
   * @return QueryFeatureCount2Response
   */
  public function QueryFeatureCount2(QueryFeatureCount2 $parameters) {
    return $this->__soapCall('QueryFeatureCount2', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param GetCacheDescriptionInfo $parameters
   * @return GetCacheDescriptionInfoResponse
   */
  public function GetCacheDescriptionInfo(GetCacheDescriptionInfo $parameters) {
    return $this->__soapCall('GetCacheDescriptionInfo', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param Identify $parameters
   * @return IdentifyResponse
   */
  public function Identify(Identify $parameters) {
    return $this->__soapCall('Identify', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param ComputeDistance $parameters
   * @return ComputeDistanceResponse
   */
  public function ComputeDistance(ComputeDistance $parameters) {
    return $this->__soapCall('ComputeDistance', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param GetDefaultMapName $parameters
   * @return GetDefaultMapNameResponse
   */
  public function GetDefaultMapName(GetDefaultMapName $parameters) {
    return $this->__soapCall('GetDefaultMapName', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param IsFixedScaleMap $parameters
   * @return IsFixedScaleMapResponse
   */
  public function IsFixedScaleMap(IsFixedScaleMap $parameters) {
    return $this->__soapCall('IsFixedScaleMap', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }
/**
   *  
   *
   * @param GetLegendInfo $parameters
   * @return GetLegendInfoResponse
   */
  public function GetLegendInfo(GetLegendInfo $parameters) {
    return $this->__soapCall('GetLegendInfo', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param GetMapCount $parameters
   * @return GetMapCountResponse
   */
  public function GetMapCount(GetMapCount $parameters) {
    return $this->__soapCall('GetMapCount', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param HasSingleFusedMapCache $parameters
   * @return HasSingleFusedMapCacheResponse
   */
  public function HasSingleFusedMapCache(HasSingleFusedMapCache $parameters) {
    return $this->__soapCall('HasSingleFusedMapCache', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param GetMapTile $parameters
   * @return GetMapTileResponse
   */
  public function GetMapTile(GetMapTile $parameters) {
    return $this->__soapCall('GetMapTile', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param GetServerInfo $parameters
   * @return GetServerInfoResponse
   */
  public function GetServerInfo(GetServerInfo $parameters) {
    return $this->__soapCall('GetServerInfo', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param GetMapTableSubtypeInfos $parameters
   * @return GetMapTableSubtypeInfosResponse
   */
  public function GetMapTableSubtypeInfos(GetMapTableSubtypeInfos $parameters) {
    return $this->__soapCall('GetMapTableSubtypeInfos', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param QueryFeatureCount $parameters
   * @return QueryFeatureCountResponse
   */
  public function QueryFeatureCount(QueryFeatureCount $parameters) {
    return $this->__soapCall('QueryFeatureCount', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param QueryRasterValue $parameters
   * @return QueryRasterValueResponse
   */
  public function QueryRasterValue(QueryRasterValue $parameters) {
    return $this->__soapCall('QueryRasterValue', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param FromMapPoints $parameters
   * @return FromMapPointsResponse
   */
  public function FromMapPoints(FromMapPoints $parameters) {
    return $this->__soapCall('FromMapPoints', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param QueryRowIDs $parameters
   * @return QueryRowIDsResponse
   */
  public function QueryRowIDs(QueryRowIDs $parameters) {
    return $this->__soapCall('QueryRowIDs', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param GetCacheName $parameters
   * @return GetCacheNameResponse
   */
  public function GetCacheName(GetCacheName $parameters) {
    return $this->__soapCall('GetCacheName', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param ComputeScale $parameters
   * @return ComputeScaleResponse
   */
  public function ComputeScale(ComputeScale $parameters) {
    return $this->__soapCall('ComputeScale', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param Find $parameters
   * @return FindResponse
   */
  public function Find(Find $parameters) {
    return $this->__soapCall('Find', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

  /**
   *  
   *
   * @param ExportMapImage $parameters
   * @return ExportMapImageResponse
   */
  public function ExportMapImage(ExportMapImage $parameters) {
    return $this->__soapCall('ExportMapImage', array($parameters),       array(
            'uri' => 'http://www.esri.com/schemas/ArcGIS/10.0',
            'soapaction' => ''
           )
      );
  }

}

$dltb_MapServer = new dltb_MapServer();

$MapDescription = new MapDescription();

$MapName  = new GetMapName();
$MapName->Index = 0;

$MapNameResponse= new GetMapNameResponse();

$MapNameResponse = $dltb_MapServer->GetMapName($MapName);
//var_dump($MapNameResponse);

$ServerInfo = new GetServerInfo();
$ServerInfo->MapName = $MapNameResponse->Result;

$ServerInfoResponse = new GetServerInfoResponse();

$ServerInfoResponse = $dltb_MapServer->GetServerInfo($ServerInfo);
//var_dump($ServerInfoResponse);

$ExportMapImage = new ExportMapImage();
$MapDescription = new MapDescription();
$ImageDescription = new ImageDescription();

$MapDescription = $ServerInfoResponse->Result->DefaultMapDescription;
$ExportMapImage->MapDescription = $MapDescription;

$ImageType = new ImageType();
$ImageType->ImageFormat = esriImageFormat::esriImagePNG;
$ImageType->ImageReturnType = esriImageReturnType::esriImageReturnURL;

$ImageDescription->ImageType = $ImageType;

$ImageDisplay = new ImageDisplay();
$ImageDisplay->ImageHeight = 100;
$ImageDisplay->ImageWidth = 100;
$ImageDisplay->ImageDPI = 96;
$ImageDescription->ImageDisplay = $ImageDisplay;

$ExportMapImage->ImageDescription = $ImageDescription;
 
$ExportMapImageResponse = new ExportMapImageResponse();
$ExportMapImageResponse = $dltb_MapServer->ExportMapImage($ExportMapImage);
var_dump($ExportMapImageResponse);

$image = imagecreatefrompng($ExportMapImageResponse->Result->ImageURL);
if($image != false)
{
    header('Content-Type: image/png');
    imagepng($image);
    imagedestroy($image);
}
else
{
    echo 'An error occurred.';
}

?>
调用过程如下,
1. 导出图像,ExportMapImage

  
  'catchment_MapServer.php');

$catchment_MapServer = new catchment_MapServer();

$MapDescription = new MapDescription();

$MapName  = new GetMapName();
$MapName->Index = 0;

$MapNameResponse= new GetMapNameResponse();

$MapNameResponse = $catchment_MapServer->GetMapName($MapName);
//var_dump($MapNameResponse);

$ServerInfo = new GetServerInfo();
$ServerInfo->MapName = $MapNameResponse->Result;

$ServerInfoResponse = new GetServerInfoResponse();

$ServerInfoResponse = $catchment_MapServer->GetServerInfo($ServerInfo);
//var_dump($ServerInfoResponse);

$ExportMapImage = new ExportMapImage();
$MapDescription = new MapDescription();
$ImageDescription = new ImageDescription();

$MapDescription = $ServerInfoResponse->Result->DefaultMapDescription;
$ExportMapImage->MapDescription = $MapDescription;

$ImageType = new ImageType();
$ImageType->ImageFormat = esriImageFormat::esriImagePNG;
$ImageType->ImageReturnType = esriImageReturnType::esriImageReturnURL;

$ImageDescription->ImageType = $ImageType;

$ImageDisplay = new ImageDisplay();
$ImageDisplay->ImageHeight = 500;
$ImageDisplay->ImageWidth = 500;
$ImageDisplay->ImageDPI = 96;
$ImageDescription->ImageDisplay = $ImageDisplay;

$ExportMapImage->ImageDescription = $ImageDescription;
 
$ExportMapImageResponse = new ExportMapImageResponse();
$ExportMapImageResponse = $catchment_MapServer->ExportMapImage($ExportMapImage);
//var_dump($ExportMapImageResponse);

$image = imagecreatefrompng($ExportMapImageResponse->Result->ImageURL);
if($image != false)
{
    header('Content-Type: image/png');
    imagepng($image);
    imagedestroy($image);
}
else
{
    echo 'An error occurred.';
}

?>

2. FromMapPoints


  
  'catchment_MapServer.php');

$catchment_MapServer = new catchment_MapServer();

$MapDescription = new MapDescription();

$MapName  = new GetMapName();
$MapName->Index = 0;

$MapNameResponse= new GetMapNameResponse();

$MapNameResponse = $catchment_MapServer->GetMapName($MapName);

$ServerInfo = new GetServerInfo();
$ServerInfo->MapName = $MapNameResponse->Result;

$ServerInfoResponse = new GetServerInfoResponse();

$ServerInfoResponse = $catchment_MapServer->GetServerInfo($ServerInfo);

$MapDescription = $ServerInfoResponse->Result->DefaultMapDescription;

$ImageDisplay = new ImageDisplay();
$ImageDisplay->ImageHeight = 500;
$ImageDisplay->ImageWidth = 500;
$ImageDisplay->ImageDPI = 96;

$ToMapPoints = new ToMapPoints();
$XScreenPoints = array(10);
$YScreenPoints = array(10);

$ToMapPoints = new ToMapPoints();
$ToMapPoints->MapDescription = $MapDescription;
$ToMapPoints->MapImageDisplay = $ImageDisplay;
$ToMapPoints->ScreenXValues = $XScreenPoints;
$ToMapPoints->ScreenYValues = $YScreenPoints;

$ToMapPointsResponse = new ToMapPointsResponse();

$ToMapPointsResponse = $catchment_MapServer->ToMapPoints($ToMapPoints);

var_dump($ToMapPointsResponse);
?>
3. ToMapPoints

include ('catchment_MapServer.php');

$catchment_MapServer = new catchment_MapServer();

$MapDescription = new MapDescription();

$MapName  = new GetMapName();
$MapName->Index = 0;

$MapNameResponse= new GetMapNameResponse();

$MapNameResponse = $catchment_MapServer->GetMapName($MapName);

$ServerInfo = new GetServerInfo();
$ServerInfo->MapName = $MapNameResponse->Result;

$ServerInfoResponse = new GetServerInfoResponse();

$ServerInfoResponse = $catchment_MapServer->GetServerInfo($ServerInfo);

$MapDescription = $ServerInfoResponse->Result->DefaultMapDescription;

$ImageDisplay = new ImageDisplay();
$ImageDisplay->ImageHeight = 500;
$ImageDisplay->ImageWidth = 500;
$ImageDisplay->ImageDPI = 96;

$ToMapPoints = new ToMapPoints();
$XScreenPoints = array(10);
$YScreenPoints = array(10);

$ToMapPoints = new ToMapPoints();
$ToMapPoints->MapDescription = $MapDescription;
$ToMapPoints->MapImageDisplay = $ImageDisplay;
$ToMapPoints->ScreenXValues = $XScreenPoints;
$ToMapPoints->ScreenYValues = $YScreenPoints;

$ToMapPointsResponse = new ToMapPointsResponse();

$ToMapPointsResponse = $catchment_MapServer->ToMapPoints($ToMapPoints);

$MultipointN = new MultipointN();
$MultipointN = $ToMapPointsResponse->Result;

$PointArray = $MultipointN->PointArray;

foreach($PointArray as $Point)
{
    printf("The Map X Value is %f, The Map Y Value is %f",$Point->X,$Point->Y);
}
?>

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值