In this topic
- Initializing a GeoDataServer object for a local geodatabase
- Initializing a GeoDataServer object for an ArcSDE geodatabase
- Initializing a GeoDataServer object for IWorkspace
- Initializing a GeoDataServer object for an ArcGIS for Server GeoData service
Initializing a GeoDataServer object for a local geodatabase
Do the following initialization steps for a local geodatabase:
- Cast the GeoDataServer object to the IGeoDataServerInit interface to initialize a GeoDataServer object from a personal or file geodatabase. Call IGeoDataServerInit.InitFromFile with the path of the personal or file geodatabase as a parameter to initialize the object.
- Use the following code example to create GeoDataServer objects for a personal geodatabase, file geodatabase, or an ArcSDE geodatabase with a local connection file:
// For example, path=@"C:\arcgis\ArcTutor\DatabaseServers\buildings.mdb".
// Or, path=@"C:\arcgis\ArcTutor\DatabaseServers\hazards.gdb".
public IGeoDataServer InitGeoDataServerFromFile(String path)
{
// Create the GeoDataServer and cast to the the IGeoDataServerInit interface.
IGeoDataServer geoDataServer=new GeoDataServerClass();
IGeoDataServerInit geoDataServerInit=(IGeoDataServerInit)geoDataServer;
// Initialize the GeoDataServer and return it.
geoDataServerInit.InitFromFile(path);
return geoDataServer;
}
[VB.NET] ' For example, path=@"C:\arcgis\ArcTutor\DatabaseServers\buildings.mdb".
' Or, path=@"C:\arcgis\ArcTutor\DatabaseServers\hazards.gdb".
Public Function InitGeoDataServerFromFile(ByVal Path As String) As IGeoDataServer
' Create the GeoDataServer and cast to the the IGeoDataServerInit interface.
Dim geoDataServer As IGeoDataServer=New GeoDataServerClass()
Dim geoDataServerInit As IGeoDataServerInit=CType(geoDataServer, IGeoDataServerInit)
' Initialize the GeoDataServer and return it.
geoDataServerInit.InitFromFile(Path)
Return geoDataServer
End Function
Initializing a GeoDataServer object for an ArcSDE geodatabase
Do the following initialization steps for an ArcSDE geodatabase:
- Initialize a GeoDataServer for an ArcSDE geodatabase using a connection string, which is similar to opening a workspace using a connection string.
- If a connection file (with a .SDE extension) exists for the geodatabase, create a GeoDataServer object by using the IGeoDataServerInit.InitFromFile method, as shown in the previous code example.
The following code example shows how to initialize an object using a connection string:
[C#] // For example, connectionString="SERVER=bobmk;INSTANCE=5151;VERSION=sde.DEFAULT;USER=gdb;PASSWORD=gdb".
public IGeoDataServer InitGeoDataServerFromConnectionString(String connectionString)
{
// Create the GeoDataServer and cast to the the IGeoDataServerInit interface.
IGeoDataServer geoDataServer=new GeoDataServerClass();
IGeoDataServerInit geoDataServerInit=(IGeoDataServerInit)geoDataServer;
// Initialize the GeoDataServer and return it.
geoDataServerInit.InitFromConnectionString(connectionString);
return geoDataServer;
}
[VB.NET] ' For example, connectionString="SERVER=bobmk;INSTANCE=5151;VERSION=sde.DEFAULT;USER=gdb;PASSWORD=gdb".
Public Function InitGeoDataServerFromConnectionString(ByVal connectionString As String) As IGeoDataServer
' Create the GeoDataServer and cast to the the IGeoDataServerInit interface.
Dim geoDataServer As IGeoDataServer=New GeoDataServerClass()
Dim geoDataServerInit As IGeoDataServerInit=CType(geoDataServer, IGeoDataServerInit)
' Initialize the GeoDataServer and return it.
geoDataServerInit.InitFromConnectionString(connectionString)
Return geoDataServer
End Function
Initializing a GeoDataServer object for IWorkspace
If an application has a reference to a workspace (through the IWorkspace interface), a GeoDataServer can be created from it by using the IGeoDataServerInit.InitWithWorkspace method. See the following code example:
[C#] public IGeoDataServer InitGeoDataServerFromWorkspace(IWorkspace workspace)
{
// Create the GeoDataServer and cast to the the IGeoDataServerInit interface.
IGeoDataServer geoDataServer=new GeoDataServerClass();
IGeoDataServerInit geoDataServerInit=(IGeoDataServerInit)geoDataServer;
// Initialize the GeoDataServer and return it.
geoDataServerInit.InitWithWorkspace(workspace);
return geoDataServer;
}
[VB.NET] Public Function InitGeoDataServerFromWorkspace(ByVal workspace As IWorkspace) As IGeoDataServer
' Create the GeoDataServer and cast to the the IGeoDataServerInit interface.
Dim geoDataServer As IGeoDataServer=New GeoDataServerClass()
Dim geoDataServerInit As IGeoDataServerInit=CType(geoDataServer, IGeoDataServerInit)
' Initialize the GeoDataServer and return it.
geoDataServerInit.InitWithWorkspace(workspace)
Return geoDataServer
End Function
Initializing a GeoDataServer object for an ArcGIS for Server GeoData service
A GeoDataServer can be initialized using an ArcGIS for Server GeoData service exposed on the Internet. See the following code example:
[C#] // For example, url=@"http://jerome/arcgis/services".
// serviceName="FileGDB_GDS".
public IGeoDataServer InitGeoDataServerFromInternetServer(String url, String
serviceName)
{
// Create a property set for connection properties.
IPropertySet propertySet=new PropertySetClass();
propertySet.SetProperty("URL", url);
// Connect to the server and get an enumerator for its objects.
IAGSServerConnectionFactory agsServerConnectionFactory=new
AGSServerConnectionFactoryClass();
IAGSServerConnection agsServerConnection=agsServerConnectionFactory.Open
(propertySet, 0);
IAGSEnumServerObjectName enumServerObjectName =
agsServerConnection.ServerObjectNames;
enumServerObjectName.Reset();
// Iterate through the objects to locate the GeoData service.
IAGSServerObjectName serverObjectName=null;
IGeoDataServer geoDataServer=null;
while ((serverObjectName=enumServerObjectName.Next()) != null)
{
if (serverObjectName.Name == serviceName)
{
IName name=(IName)serverObjectName;
geoDataServer=(IGeoDataServer)name.Open();
break;
}
}
return geoDataServer;
}
[VB.NET] ' For example, url=@"http://jerome/arcgis/services".
' serviceName="FileGDB_GDS".
Public Function InitGeoDataServerFromInternetServer(ByVal url As String, ByVal serviceName As String) As IGeoDataServer
' Create a property set for connection properties.
Dim propertySet As IPropertySet=New PropertySetClass()
propertySet.SetProperty("URL", url)
' Connect to the server and get an enumerator for its objects.
Dim agsServerConnectionFactory As IAGSServerConnectionFactory=New AGSServerConnectionFactoryClass()
Dim agsServerConnection As IAGSServerConnection=agsServerConnectionFactory.Open(propertySet, 0)
Dim enumServerObjectName As IAGSEnumServerObjectName=agsServerConnection.ServerObjectNames
enumServerObjectName.Reset()
' Iterate through the objects to locate the GeoData service.
Dim serverObjectName As IAGSServerObjectName=Nothing
Dim geoDataServer As IGeoDataServer=Nothing
Do While Not (serverObjectName) Is Nothing
If serverObjectName.Name=serviceName Then
Dim Name As IName=CType(serverObjectName, IName)
geoDataServer=CType(Name.Open(), IGeoDataServer)
Exit Do
End If
serverObjectName=enumServerObjectName.Next()
Loop
Return geoDataServer
End Function
Initializing GeoDataServer objects for GeoData services exposed through a local network is similar to those exposed through the Internet, with only the connection properties changing slightly. See the following code example:
[C#] // For example, machineName="jerome".
// serviceName="FileGDB_GDS".
public IGeoDataServer InitGeoDataServerFromNetworkServer(String machineName, String
serviceName)
{
// Create a property set for connection properties.
IPropertySet propertySet=new PropertySetClass();
propertySet.SetProperty("Machine", machineName);
// Connect to the server and get an enumerator for its objects.
IAGSServerConnectionFactory agsServerConnectionFactory=new
AGSServerConnectionFactoryClass();
IAGSServerConnection agsServerConnection=agsServerConnectionFactory.Open
(propertySet, 0);
IAGSEnumServerObjectName enumServerObjectName =
agsServerConnection.ServerObjectNames;
enumServerObjectName.Reset();
// Iterate through the objects to locate the GeoData service.
IAGSServerObjectName serverObjectName=null;
IGeoDataServer geoDataServer=null;
while ((serverObjectName=enumServerObjectName.Next()) != null)
{
if (serverObjectName.Name == serviceName)
{
IName name=(IName)serverObjectName;
geoDataServer=(IGeoDataServer)name.Open();
break;
}
}
return geoDataServer;
}
[VB.NET] ' For example, machineName="jerome".
' serviceName="FileGDB_GDS".
Public Function InitGeoDataServerFromNetworkServer(ByVal machineName As String, ByVal serviceName As String) As IGeoDataServer
' Create a property set for connection properties.
Dim propertySet As IPropertySet=New PropertySetClass()
propertySet.SetProperty("Machine", machineName)
' Connect to the server and get an enumerator for its objects.
Dim agsServerConnectionFactory As IAGSServerConnectionFactory=New AGSServerConnectionFactoryClass()
Dim agsServerConnection As IAGSServerConnection=agsServerConnectionFactory.Open(propertySet, 0)
Dim enumServerObjectName As IAGSEnumServerObjectName=agsServerConnection.ServerObjectNames
enumServerObjectName.Reset()
' Iterate through the objects to locate the GeoData service.
Dim serverObjectName As IAGSServerObjectName=Nothing
Dim geoDataServer As IGeoDataServer=Nothing
Do While Not (serverObjectName) Is Nothing
If serverObjectName.Name=serviceName Then
Dim Name As IName=CType(serverObjectName, IName)
geoDataServer=CType(Name.Open(), IGeoDataServer)
Exit Do
End If
serverObjectName=enumServerObjectName.Next()
Loop
Return geoDataServer
End Function
To use the code in this topic, reference the following assemblies in your Visual Studio project. In the code files, you will need using (C#) or Imports (VB .NET) directives for the corresponding namespaces (given in parenthesis below if different from the assembly name):
- ESRI.ArcGIS.System (ESRI.ArcGIS.esriSystem)
- ESRI.ArcGIS.Geodatabase
- ESRI.ArcGIS.GeoDatabaseDistributed
- ESRI.ArcGIS.GISClient
- ESRI.ArcGIS.Server
Development licensing | Deployment licensing |
---|---|
ArcGIS Desktop Basic | ArcGIS Desktop Basic |
ArcGIS Desktop Standard | ArcGIS Desktop Standard |
ArcGIS Desktop Advanced | ArcGIS Desktop Advanced |
Engine Developer Kit | Engine: Geodatabase Update |