ArcObjects Library Reference  (Carto)    

ImageServerExample

[C++]

The following is a sample C++ function that opens an image server object using an AGS server object name, and then exercises different image server methods:

 

HRESULT TestImageService(String serverName, String serverObjectName)

{

  HRESULT hr;

 

  IPropertySetPtr ipConnProps(CLSID_PropertySet);

  Variant vType(((long)esriAGSConnectionTypeInternet);

  ipConnProps->SetProperty(Stringing(L"CONNECTIONTYPE"), vType);

  ipConnProps->SetProperty(Stringing(L"URL"), Variant(serverName));

 

  IAGSServerConnectionNamePtr ipAGSServerConnName(CLSID_AGSServerConnectionName);

  ipAGSServerConnName->put_ConnectionProperties(ipConnProps);

  IAGSServerObjectNamePtr ipAGSServerObjectName(CLSID_AGSServerObjectName);

 

  ipAGSServerObjectName->put_Name(serverObjectName);

  ipAGSServerObjectName->put_Type(Stringing(L"ImageServer"));

  ipAGSServerObjectName->putref_AGSServerConnectionName(ipAGSServerConnName);

 

  IUnknownPtr ipUnk;

  if (FAILED(hr = INamePtr(ipAGSServerObjectName)->Open(&ipUnk)))

    return hr;

 

 

  IImageServerPtr ipImageServer(ipUnk);

 

  float version;

  if (FAILED(hr = ipImageServer->get_Version(&version)))

    return hr;

 

  IImageServiceInfoPtr ipServiceInfo;

  if (FAILED(hr = pImageServer->get_ServiceInfo(&ipServiceInfo)))

    return hr;

 

  long nBands;

  ipServiceInfo->get_BandCount(&nBands);

  double min;

  double max;

  double mean;

  double stdv;

  for (long i = 0; i < nBands; ++i)

    ipServiceInfo->GetStatistics(i, &min, &max, &mean, &stdv);

 

  IGeoImageDescriptionPtr ipImageDescription(CLSID_GeoImageDescription);

  IEnvelopePtr ipExtent;

  ipServiceInfo->get_Extent(&ipExtent);

  ipExtent->Offset(180, 90);

  ipImageDescription->putref_Extent(ipExtent);

  ipImageDescription->put_Width(512);

  ipImageDescription->put_Height(512);

  ipImageDescription->put_Compression(Stringing(L""));

  IImageTypePtr ipImageType(CLSID_ImageType);

  ipImageType->put_Format(esriImageBMP);

  ipImageType->put_ReturnType(esriImageReturnURL);

  IImageResultPtr ipImage;

  if (FAILED(hr = pImageServer->ExportImage(ipImageDescription, ipImageType, &ipImage)))

    return hr;

 

  ipImageDescription->put_Compression(Stringing(L"JPEG"));

 

  SAFEARRAY* pData = 0;

  if (FAILED(hr = pImageServer->GetImage(ipImageDescription, &pData)))

    return hr;

 

  ::SafeArrayDestroy(pData);

 

  IAISRequestPtr ipRequest(CLSID_AISRequest);

  Stringing response;

 

  ipRequest->put_Name(Stringing(L"GetImageMetadata"));

  ipRequest->putref_Arguments(0);

  if (FAILED(hr = pImageServer->ExecuteAISRequest(ipRequest, &response)))

    return hr;

 

  return S_OK;

}

 


[Visual Basic 6.0, Visual Basic .NET, C#]
No example is available for Visual Basic 6.0, Visual Basic .NET, or C#. To view a C++ example, click the Language Filter button Language Filter in the upper-left corner of the page.