About the Find near features SOAP SOE Sample
[C#]
Form1.cs
using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Windows.Forms; using FindNearFeaturesSOAPClient.localhost; namespace FindNearFeaturesSOAPClient { public partial class Form1 : Form { public Form1() { InitializeComponent(); } private object GetProperty(PropertySet props, string key) { foreach (PropertySetProperty prop in props.PropertyArray) { if (string.Compare(prop.Key, key, true) == 0) return prop.Value; } return null; } private void GetCenterPointAndDistance(EnvelopeN extent, out PointN center, out double distance) { center = new PointN(); center.SpatialReference = extent.SpatialReference; center.X = extent.XMin + (Math.Abs(extent.XMax - extent.XMin) / 2); center.Y = extent.YMin + (Math.Abs(extent.YMax - extent.YMin) / 2); distance = Math.Abs(extent.XMax - extent.XMin) / 10; } private void button1_Click(object sender, EventArgs e) { try { //create instance of proxy USA_FindNearFeaturesSoapSOE nearFeatsService = new USA_FindNearFeaturesSoapSOE(); nearFeatsService.Url = "http://localhost/ArcGIS/services/USA/MapServer/FindNearFeaturesSoapSOE"; //getLayerInfos CustomLayerInfo[] layerInfos = nearFeatsService.GetLayerInfos(); foreach (CustomLayerInfo layerInfo in layerInfos) { EnvelopeN extent = (EnvelopeN)layerInfo.Extent; debug( string.Format("Layer {0} has ID: {1} and extent: {2},{3},{4},{5}", layerInfo.Name, layerInfo.ID, extent.XMin, extent.YMin, extent.XMax, extent.YMax)); } //findNearFeatures CustomLayerInfo aLayerInfo = layerInfos[0]; PointN location; double distance; GetCenterPointAndDistance((EnvelopeN)aLayerInfo.Extent, out location, out distance); RecordSet feats = nearFeatsService.FindNearFeatures(aLayerInfo.ID, location, distance); foreach (Record record in feats.Records) { foreach (object o in record.Values) if (o != null) debug(o.ToString() + ", "); debug("\n"); } } catch (Exception ex) { MessageBox.Show(ex.Message); } } private void debug(string info) { richTextBox1.AppendText(info + "\n"); } } }
[Visual Basic .NET]
Form1.vb
Imports Microsoft.VisualBasic Imports System Imports System.Collections.Generic Imports System.ComponentModel Imports System.Data Imports System.Drawing Imports System.Linq Imports System.Text Imports System.Windows.Forms Imports FindNearFeaturesSOAPClient_VBNet.localhost Namespace FindNearFeaturesSOAPClient_VBNet Partial Public Class Form1 Inherits Form Public Sub New() InitializeComponent() End Sub Private Function GetProperty(ByVal props As PropertySet, ByVal key As String) As Object For Each prop As PropertySetProperty In props.PropertyArray If String.Compare(prop.Key, key, True) = 0 Then Return prop.Value End If Next prop Return Nothing End Function Private Sub GetCenterPointAndDistance(ByVal extent As EnvelopeN, <System.Runtime.InteropServices.Out()> ByRef center As PointN, <System.Runtime.InteropServices.Out()> ByRef distance As Double) center = New PointN() center.SpatialReference = extent.SpatialReference center.X = extent.XMin + (Math.Abs(extent.XMax - extent.XMin) / 2) center.Y = extent.YMin + (Math.Abs(extent.YMax - extent.YMin) / 2) distance = Math.Abs(extent.XMax - extent.XMin) / 10 End Sub Private Sub button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles button1.Click Try 'create instance of proxy Dim nearFeatsService As New USA_FindNearFeaturesSoapSOE_VBNet() nearFeatsService.Url = "http://localhost/ArcGIS/services/USA/MapServer/FindNearFeaturesSoapSOE_VBNet" 'getLayerInfos Dim layerInfos() As CustomLayerInfo_VBNet = nearFeatsService.GetLayerInfos() For Each layerInfo As CustomLayerInfo_VBNet In layerInfos Dim extent As EnvelopeN = CType(layerInfo.Extent, EnvelopeN) debug(String.Format("Layer {0} has ID: {1} and extent: {2},{3},{4},{5}", layerInfo.Name, layerInfo.ID, extent.XMin, extent.YMin, extent.XMax, extent.YMax)) Next layerInfo 'findNearFeatures Dim aLayerInfo As CustomLayerInfo_VBNet = layerInfos(0) Dim location As PointN Dim distance As Double GetCenterPointAndDistance(CType(aLayerInfo.Extent, EnvelopeN), location, distance) Dim feats As RecordSet = nearFeatsService.FindNearFeatures(aLayerInfo.ID, location, distance) For Each record As Record In feats.Records For Each o As Object In record.Values If o IsNot Nothing Then debug(o.ToString() & ", ") End If Next o debug(Constants.vbLf) Next record Catch ex As Exception MessageBox.Show(ex.Message) End Try End Sub Private Sub debug(ByVal info As String) richTextBox1.AppendText(info & Constants.vbLf) End Sub End Class End Namespace