ConnectionStatus represents the state of a layers connection. This class is used for feedback when connecting a layer to an underlying data source.
Namespace:
ESRI.ArcGISExplorer.MappingAssembly: ESRI.ArcGISExplorer (in ESRI.ArcGISExplorer.dll) Version: 2.0.0.1500 (2.0.0.1500)
Syntax
C# |
---|
public sealed class ConnectionStatus |
Visual Basic (Declaration) |
---|
Public NotInheritable Class ConnectionStatus |
Remarks
This class is typically used when a Layer fails to connect to a data source after calling the Layer.Connect method. If the connection fails, the Layer.ConnectionStatus property is updated. ConnectionStatus provides feedback about why a layer could not connect successfully. The feedback contains a human-readable error message and if available, provides access to the exception thrown as a result of the failed connection attempt.
Examples
The code below illustrates how to populate the data source properties for each derived layer type and attempts to connect to
the underlying data source. If the connection is unsuccessful, the ConnectionStatus property is used to check if an error occurred,
and if so prints a description of the error and the call stack.
CopyC#
using System; using System.Collections.Generic; using System.Text; using Microsoft.VisualStudio.TestTools.UnitTesting; // Import these namespaces to highlight Application and Point name clashes. using System.Windows.Forms; using System.Drawing; // Required additional using statements. using ESRI.ArcGISExplorer.Data; using ESRI.ArcGISExplorer.Mapping; namespace ExamplesCS.Mapping { class LayerConnectionExample { private void CheckConnectionStatus(Layer layer) { //Investigate connection issue using the layer connection status property ConnectionStatus status = layer.ConnectionStatus; if (status.HasError) { //Print a human-readable error message using the connection status System.Diagnostics.Debug.Print("Error message: " + status.ErrorString); //If there was an exception print out the call stack if(status.ErrorException != null) System.Diagnostics.Debug.Print("Call stack: " + status.ErrorException.StackTrace); } } public void Layer_Connections() { Map map = ESRI.ArcGISExplorer.Application.Application.ActiveMapDisplay.Map; //FeatureLayer: vector data held in an ESRI shapefile or geodatabase //Create a DataSourceProperties object that holds the connection information to the feature class DataSourceProperties featureLayerDataSourceProps = new DataSourceProperties(@"C:\Data\Forestry.gdb", "road_hazards"); //Create a feature layer FeatureLayer featureLayer = new FeatureLayer(featureLayerDataSourceProps); //Connect the layer to the feature class bool isConnected = featureLayer.Connect(); if (isConnected) //Add the layer to the map map.ChildItems.Add(featureLayer); else CheckConnectionStatus(featureLayer); //RasterLayer: raster data held in a georeferenced image file or ESRI geodatabase //Create a DataSourceProperties object that holds the connection information to the raster data source DataSourceProperties rasterLayerDataSourceProps = new DataSourceProperties(@"C:\Data\Scotland.gdb", "NORTHGORMS_HO"); //Create a raster layer RasterLayer rasterLayer = new RasterLayer(rasterLayerDataSourceProps); //Connect the layer to the raster data source isConnected = rasterLayer.Connect(); if (isConnected) map.ChildItems.Add(rasterLayer); else CheckConnectionStatus(rasterLayer); //ServiceLayer: data provided by a service (ArcGIS Server, ArcIMS, WMS, Virtual Earth) //Create a URI object for ArcGIS Online Uri serverUri = new Uri("http://services.arcgisonline.com/Server/Services"); //Define service name for Map Service string serviceName = "ESRI_Imagery_World_2D"; //Create a ServiceConnectionProperties object that holds connection information for the service ServiceConnectionProperties serviceLayerConnectionProps = new ServiceConnectionProperties(ServiceType.MapServer, serverUri, serviceName); ServiceLayer serviceLayer = new ServiceLayer(serviceLayerConnectionProps); isConnected = serviceLayer.Connect(); if (isConnected) map.ChildItems.Add(serviceLayer); else CheckConnectionStatus(serviceLayer); //GeoRssLayer: data provided by a GeoRSS feed Uri geoRssUri = new Uri("http://feeds.bbc.co.uk/weather/feeds/rss/5day/world/6697.xml"); GeoRssLayer geoRssLayer = new GeoRssLayer(geoRssUri); isConnected = geoRssLayer.Connect(); if (isConnected) map.ChildItems.Add(geoRssLayer); else CheckConnectionStatus(geoRssLayer); //KmlLayer: data held in a KML file string pathToKmlFile = @"C:\Data\KmlExample.kml"; KmlLayer kmlLayer = new KmlLayer(pathToKmlFile); isConnected = kmlLayer.Connect(); if (isConnected) map.ChildItems.Add(kmlLayer); else CheckConnectionStatus(kmlLayer); // PackageLayer: data held in layer package or layer file string pathToPackageLayer = @"C:\Data\LpkExample.lpk"; PackageLayer packageLayer = new PackageLayer(pathToPackageLayer); isConnected = packageLayer.Connect(); if (isConnected) map.ChildItems.Add(packageLayer); else CheckConnectionStatus(packageLayer); } } }
CopyVB.NET
Imports System Imports System.Collections.Generic Imports System.Text Imports Microsoft.VisualStudio.TestTools.UnitTesting ' Import these namespaces to highlight Application and Point name clashes. Imports System.Windows.Forms Imports System.Drawing ' Required additional using statements. Imports ESRI.ArcGISExplorer.Data Imports ESRI.ArcGISExplorer.Mapping Class LayerConnectionExample Private Sub CheckConnectionStatus(ByVal layer As Layer) 'Investigate connection issue using the layer connection status property Dim status As ConnectionStatus = layer.ConnectionStatus If status.HasError Then 'Print a human-readable error message using the connection status System.Diagnostics.Debug.Print("Error message: " + status.ErrorString) 'If there was an exception print out the call stack If status.ErrorException IsNot Nothing Then System.Diagnostics.Debug.Print("Call stack: " + status.ErrorException.StackTrace) End If End If End Sub Public Sub Layer_Connections() Dim map As Map = ESRI.ArcGISExplorer.Application.Application.ActiveMapDisplay.Map 'FeatureLayer: vector data held in an ESRI shapefile or geodatabase 'Create a DataSourceProperties object that holds the connection information to the feature class Dim featureLayerDataSourceProps As New DataSourceProperties("C:\Data\Forestry.gdb", "road_hazards") 'Create a feature layer Dim featureLayer As New FeatureLayer(featureLayerDataSourceProps) 'Connect the layer to the feature class Dim isConnected As Boolean = featureLayer.Connect() If isConnected Then map.ChildItems.Add(featureLayer) Else CheckConnectionStatus(featureLayer) 'Add the layer to the map End If 'RasterLayer: raster data held in a georeferenced image file or ESRI geodatabase 'Create a DataSourceProperties object that holds the connection information to the raster data source Dim rasterLayerDataSourceProps As New DataSourceProperties("C:\Data\Scotland.gdb", "NORTHGORMS_HO") 'Create a raster layer Dim rasterLayer As New RasterLayer(rasterLayerDataSourceProps) 'Connect the layer to the raster data source isConnected = rasterLayer.Connect() If isConnected Then map.ChildItems.Add(rasterLayer) Else CheckConnectionStatus(rasterLayer) End If 'ServiceLayer: data provided by a service (ArcGIS Server, ArcIMS, WMS, Virtual Earth) 'Create a URI object for ArcGIS Online Dim serverUri As New Uri("http://services.arcgisonline.com/Server/Services") 'Define service name for Map Service Dim serviceName As String = "ESRI_Imagery_World_2D" 'Create a ServiceConnectionProperties object that holds connection information for the service Dim serviceLayerConnectionProps As New ServiceConnectionProperties(ServiceType.MapServer, serverUri, serviceName) Dim serviceLayer As New ServiceLayer(serviceLayerConnectionProps) isConnected = serviceLayer.Connect() If isConnected Then map.ChildItems.Add(serviceLayer) Else CheckConnectionStatus(serviceLayer) End If 'GeoRssLayer: data provided by a GeoRSS feed Dim geoRssUri As New Uri("http://feeds.bbc.co.uk/weather/feeds/rss/5day/world/6697.xml") Dim geoRssLayer As New GeoRssLayer(geoRssUri) isConnected = geoRssLayer.Connect() If isConnected Then map.ChildItems.Add(geoRssLayer) Else CheckConnectionStatus(geoRssLayer) End If 'KmlLayer: data held in a KML file Dim pathToKmlFile As String = "C:\Data\KmlExample.kml" Dim kmlLayer As New KmlLayer(pathToKmlFile) isConnected = kmlLayer.Connect() If isConnected Then map.ChildItems.Add(kmlLayer) Else CheckConnectionStatus(kmlLayer) End If ' PackageLayer: data held in layer package or layer file Dim pathToPackageLayer As String = "C:\Data\LpkExample.lpk" Dim packageLayer As New PackageLayer(pathToPackageLayer) isConnected = packageLayer.Connect() If isConnected Then map.ChildItems.Add(packageLayer) Else CheckConnectionStatus(packageLayer) End If End Sub End Class