[C#]
Form1.cs
using System;
using System.Drawing;
using System.Windows.Forms;
using ESRI.ArcGIS.Carto;
using ESRI.ArcGIS.Display;
using ESRI.ArcGIS.Geometry;
using ESRI.ArcGIS.Server;
using SimpleSOEInterfaces_CSharp;
namespace SimpleSOE_WinFormApp
{
public partial class Form1 : Form
{
private string serverName = "localhost";
private string serviceName = "Yellowstone";
private ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection gisconnection;
private IServerContext serverContext;
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
try
{
gisconnection =
new ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection();
gisconnection.Host = serverName;
gisconnection.Connect();
IServerObjectManager serverManager = gisconnection.ServerObjectManager;
serverContext = serverManager.CreateServerContext(serviceName, "MapServer");
IMapServer mapServer = serverContext.ServerObject as IMapServer;
IMapServerInfo mapServerInfo = mapServer.GetServerInfo(mapServer.DefaultMapName);
IMapDescription mapDesc = mapServerInfo.DefaultMapDescription;
#region Server Object Extension client code
IServerObjectExtensionManager soexm = (IServerObjectExtensionManager)mapServer;
IServerObjectExtension soext = soexm.FindExtensionByTypeName("SimpleSOE_CSharp");
IUtilSOE_CSharp utilsoe = (IUtilSOE_CSharp)soext;
IPoint pnt = serverContext.CreateObject("esriGeometry.Point") as IPoint;
pnt.PutCoords(mapDesc.MapArea.Extent.XMin + (mapDesc.MapArea.Extent.Width / 2),
mapDesc.MapArea.Extent.YMin + (mapDesc.MapArea.Extent.Height / 2));
double radius = mapDesc.MapArea.Extent.Width / 8;
IPolygon circle = (IPolygon)utilsoe.ReturnCircle(ref pnt, ref radius);
IElement element = serverContext.CreateObject("esriCarto.PolygonElement") as IElement;
element.Geometry = circle;
IFillShapeElement fillElement = element as IFillShapeElement;
ISimpleFillSymbol fillSymbol =
serverContext.CreateObject("esriDisplay.SimpleFillSymbol") as ISimpleFillSymbol;
IRgbColor rgbColor = serverContext.CreateObject("esriDisplay.RgbColor") as IRgbColor;
rgbColor.Red = 0;
rgbColor.Green = 255;
rgbColor.Blue = 255;
fillSymbol.Color = rgbColor as IColor;
fillElement.Symbol = fillSymbol;
if (mapDesc.CustomGraphics == null)
mapDesc.CustomGraphics = serverContext.CreateObject("esriCarto.GraphicElements") as IGraphicElements;
mapDesc.CustomGraphics.Add(element as IGraphicElement);
#endregion
IImageDescription imageDesc = serverContext.CreateObject("esriCarto.ImageDescription") as IImageDescription;
IImageType imgType = serverContext.CreateObject("esriCarto.ImageType") as IImageType;
imgType.Format = ESRI.ArcGIS.Carto.esriImageFormat.esriImageJPG;
imgType.ReturnType = ESRI.ArcGIS.Carto.esriImageReturnType.esriImageReturnMimeData;
IImageDisplay imageDisp =
serverContext.CreateObject("esriCarto.ImageDisplay") as IImageDisplay;
imageDisp.Height = pictureBox1.Height;
imageDisp.Width = pictureBox1.Width;
imageDisp.DeviceResolution = 96;
imageDesc.Type = imgType;
imageDesc.Display = imageDisp;
IMapImage mapImageOutput = mapServer.ExportMapImage(mapDesc, imageDesc);
System.IO.Stream mimeStream = new System.IO.MemoryStream(mapImageOutput.MimeData);
pictureBox1.Image = Image.FromStream(mimeStream);
pictureBox1.Refresh();
}
catch (Exception ex) { }
finally
{
serverContext.ReleaseContext();
gisconnection.Dispose();
}
}
}
}
[Visual Basic .NET]
Form1.vb
Imports Microsoft.VisualBasic
Imports System
Imports System.Drawing
Imports System.Windows.Forms
Imports ESRI.ArcGIS.Carto
Imports ESRI.ArcGIS.Display
Imports ESRI.ArcGIS.Geometry
Imports ESRI.ArcGIS.Server
Imports SimpleSOEInterfaces_VBNet
Namespace SimpleSOE_WinFormApp_VBNet
Partial Public Class Form1
Inherits Form
Private serverName As String = "localhost"
Private serviceName As String = "Yellowstone"
Private gisconnection As ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection
Private serverContext As IServerContext
Public Sub New()
InitializeComponent()
End Sub
Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles button1.Click
Try
gisconnection = New ESRI.ArcGIS.ADF.Connection.AGS.AGSServerConnection()
gisconnection.Host = serverName
gisconnection.Connect()
Dim serverManager As IServerObjectManager = gisconnection.ServerObjectManager
serverContext = serverManager.CreateServerContext(serviceName, "MapServer")
Dim mapServer As IMapServer = TryCast(serverContext.ServerObject, IMapServer)
Dim mapServerInfo As IMapServerInfo = mapServer.GetServerInfo(mapServer.DefaultMapName)
Dim mapDesc As IMapDescription = mapServerInfo.DefaultMapDescription
' #Region "Server Object Extension client code"
Dim soexm As IServerObjectExtensionManager = CType(mapServer, IServerObjectExtensionManager)
Dim soext As IServerObjectExtension = soexm.FindExtensionByTypeName("SimpleSOE_VBNet")
Dim utilsoe As IUtilSOE_VBNet = CType(soext, IUtilSOE_VBNet)
Dim pnt As IPoint = TryCast(serverContext.CreateObject("esriGeometry.Point"), IPoint)
pnt.PutCoords(mapDesc.MapArea.Extent.XMin + (mapDesc.MapArea.Extent.Width / 2), mapDesc.MapArea.Extent.YMin + (mapDesc.MapArea.Extent.Height / 2))
Dim radius As Double = mapDesc.MapArea.Extent.Width / 8
Dim circle As IPolygon = CType(utilsoe.ReturnCircle(pnt, radius), IPolygon)
Dim element As IElement = TryCast(serverContext.CreateObject("esriCarto.PolygonElement"), IElement)
element.Geometry = circle
Dim fillElement As IFillShapeElement = TryCast(element, IFillShapeElement)
Dim fillSymbol As ISimpleFillSymbol = TryCast(serverContext.CreateObject("esriDisplay.SimpleFillSymbol"), ISimpleFillSymbol)
Dim rgbColor As IRgbColor = TryCast(serverContext.CreateObject("esriDisplay.RgbColor"), IRgbColor)
rgbColor.Red = 0
rgbColor.Green = 255
rgbColor.Blue = 255
fillSymbol.Color = TryCast(rgbColor, IColor)
fillElement.Symbol = fillSymbol
If mapDesc.CustomGraphics Is Nothing Then
mapDesc.CustomGraphics = TryCast(serverContext.CreateObject("esriCarto.GraphicElements"), IGraphicElements)
End If
mapDesc.CustomGraphics.Add(TryCast(element, IGraphicElement))
' #End Region
Dim imageDesc As IImageDescription = TryCast(serverContext.CreateObject("esriCarto.ImageDescription"), IImageDescription)
Dim imgType As IImageType = TryCast(serverContext.CreateObject("esriCarto.ImageType"), IImageType)
imgType.Format = ESRI.ArcGIS.Carto.esriImageFormat.esriImageJPG
imgType.ReturnType = ESRI.ArcGIS.Carto.esriImageReturnType.esriImageReturnMimeData
Dim imageDisp As IImageDisplay = TryCast(serverContext.CreateObject("esriCarto.ImageDisplay"), IImageDisplay)
imageDisp.Height = pictureBox1.Height
imageDisp.Width = pictureBox1.Width
imageDisp.DeviceResolution = 96
imageDesc.Type = imgType
imageDesc.Display = imageDisp
Dim mapImageOutput As IMapImage = mapServer.ExportMapImage(mapDesc, imageDesc)
Dim mimeStream As System.IO.Stream = New System.IO.MemoryStream(mapImageOutput.MimeData)
pictureBox1.Image = Image.FromStream(mimeStream)
pictureBox1.Refresh()
Catch ex As Exception
Finally
serverContext.ReleaseContext()
gisconnection.Dispose()
End Try
End Sub
End Class
End Namespace