About the Clonable object Sample
[C#]
TestClass.cs
using System;
using System.Collections;
using System.Collections.Generic;
using System.Text;
using System.Runtime.InteropServices;
using ESRI.ArcGIS.esriSystem;
using ESRI.ArcGIS.Geometry;
using ClonableObject;
namespace TestApp
{
public sealed class TestClass
{
#region class constructor (empty constructor)
public TestClass()
{
}
#endregion
public void Test()
{
Console.WriteLine("Creating an instance of the clonable object.");
ClonableObjClass cloneable = new ClonableObjClass();
Console.WriteLine("Assigning properties");
cloneable.SpatialReference = CreateGeographicSpatialReference();
cloneable.Name = "test 1";
cloneable.Point = new PointClass();
cloneable.Point.PutCoords(35.02,31.4);
cloneable.ManagedArray = new ArrayList();
cloneable.ManagedArray.Add("One");
cloneable.ManagedArray.Add("Two");
cloneable.ManagedArray.Add("Three");
Console.WriteLine("New object's properties");
Console.WriteLine("-----------------------");
Console.WriteLine("Name: " + cloneable.Name);
Console.WriteLine("ID: " + cloneable.ID.ToString());
Console.WriteLine("Version: " + cloneable.Version.ToString());
Console.WriteLine("Array values: ");
foreach (object obj in cloneable.ManagedArray)
{
Console.WriteLine((string)obj);
}
Console.WriteLine("Spatial Reference parameters:");
Console.WriteLine("Name: " + cloneable.SpatialReference.Name);
IGeographicCoordinateSystem gcs = (IGeographicCoordinateSystem)cloneable.SpatialReference;
Console.WriteLine("Alias: " + gcs.Alias);
Console.WriteLine("Datum: " + gcs.Datum.Name);
Console.WriteLine("");
Console.WriteLine("Cloning the object...");
ClonableObjClass clonee = cloneable.Clone() as ClonableObjClass;
Console.WriteLine("");
Console.WriteLine("Cloned object's properties:");
Console.WriteLine("---------------------------");
Console.WriteLine("Name: " + clonee.Name);
Console.WriteLine("ID: " + clonee.ID.ToString());
Console.WriteLine("Version: " + clonee.Version.ToString());
Console.WriteLine("Array values: ");
foreach (object obj in clonee.ManagedArray)
{
Console.WriteLine((string)obj);
}
Console.WriteLine("Spatial Reference parameters:");
Console.WriteLine("Name: " + clonee.SpatialReference.Name);
gcs = (IGeographicCoordinateSystem)clonee.SpatialReference;
Console.WriteLine("Alias: " + gcs.Alias);
Console.WriteLine("Datum: " + gcs.Datum.Name);
Console.WriteLine("");
}
/// <summary>
/// create a crazy coordinate system
/// </summary>
/// <returns></returns>
private ISpatialReference CreateGeographicSpatialReference()
{
ISpatialReferenceFactory spatialRefFatcory = new SpatialReferenceEnvironmentClass();
IGeographicCoordinateSystem geoCoordSys;
geoCoordSys = spatialRefFatcory.CreateGeographicCoordinateSystem((int)esriSRGeoCSType.esriSRGeoCS_WGS1984);
//assign a user defined datum to the SR (just for the test)
IDatum datum = new DatumClass();
IDatumEdit datumEdit = (IDatumEdit)datum;
ISpheroid spheroid = spatialRefFatcory.CreateSpheroid((int)esriSRSpheroidType.esriSRSpheroid_Clarke1880);
datumEdit.DefineEx("MyDatum", "My Datum", "MDTM", "", spheroid);
IPrimeMeridian primeMeridian = spatialRefFatcory.CreatePrimeMeridian((int)esriSRPrimeMType.esriSRPrimeM_Greenwich);
IAngularUnit angularUnits = spatialRefFatcory.CreateUnit((int)esriSRUnitType.esriSRUnit_Degree) as IAngularUnit;
IGeographicCoordinateSystemEdit geoCoordSysEdit = (IGeographicCoordinateSystemEdit)geoCoordSys;
geoCoordSysEdit.DefineEx("MyGeoCoordSys", "MyGeoCoordSys", "MGCS", "", "", datum, primeMeridian, angularUnits);
geoCoordSys.SetFalseOriginAndUnits(-180.0, -180.0, 5000000.0);
geoCoordSys.SetZFalseOriginAndUnits(0.0, 100000.0);
geoCoordSys.SetMFalseOriginAndUnits(0.0, 100000.0);
return geoCoordSys as ISpatialReference;
}
}
}
[Visual Basic .NET]
TestClass.vb
Imports Microsoft.VisualBasic
Imports System
Imports System.Collections
Imports System.Collections.Generic
Imports System.Text
Imports System.Runtime.InteropServices
Imports ESRI.ArcGIS.esriSystem
Imports ESRI.ArcGIS.Geometry
Imports ClonableObject
Public NotInheritable Class TestClass
#Region "class constructor (empty constructor)"
Public Sub New()
End Sub
#End Region
Public Sub Test()
Console.WriteLine("Creating an instance of the clonable object.")
Dim cloneable As ClonableObjClass = New ClonableObjClass()
Console.WriteLine("Assigning properties")
cloneable.SpatialReference = CreateGeographicSpatialReference()
cloneable.Name = "test 1"
cloneable.Point = New PointClass()
cloneable.Point.PutCoords(35.02, 31.4)
cloneable.ManagedArray = New ArrayList()
cloneable.ManagedArray.Add("One")
cloneable.ManagedArray.Add("Two")
cloneable.ManagedArray.Add("Three")
Console.WriteLine("New object's properties")
Console.WriteLine("-----------------------")
Console.WriteLine("Name: " & cloneable.Name)
Console.WriteLine("ID: " & cloneable.ID.ToString())
Console.WriteLine("Version: " & cloneable.Version.ToString())
Console.WriteLine("Array values: ")
For Each obj As Object In cloneable.ManagedArray
Console.WriteLine(CStr(obj))
Next obj
Console.WriteLine("Spatial Reference parameters:")
Console.WriteLine("Name: " & cloneable.SpatialReference.Name)
Dim gcs As IGeographicCoordinateSystem = CType(cloneable.SpatialReference, IGeographicCoordinateSystem)
Console.WriteLine("Alias: " & gcs.Alias)
Console.WriteLine("Datum: " & gcs.Datum.Name)
Console.WriteLine("")
Console.WriteLine("Cloning the object...")
Dim clonee As ClonableObjClass = TryCast(cloneable.Clone(), ClonableObjClass)
Console.WriteLine("")
Console.WriteLine("Cloned object's properties:")
Console.WriteLine("---------------------------")
Console.WriteLine("Name: " & clonee.Name)
Console.WriteLine("ID: " & clonee.ID.ToString())
Console.WriteLine("Version: " & clonee.Version.ToString())
Console.WriteLine("Array values: ")
For Each obj As Object In clonee.ManagedArray
Console.WriteLine(CStr(obj))
Next obj
Console.WriteLine("Spatial Reference parameters:")
Console.WriteLine("Name: " & clonee.SpatialReference.Name)
gcs = CType(clonee.SpatialReference, IGeographicCoordinateSystem)
Console.WriteLine("Alias: " & gcs.Alias)
Console.WriteLine("Datum: " & gcs.Datum.Name)
Console.WriteLine("")
End Sub
''' <summary>
''' create a crazy coordinate system
''' </summary>
''' <returns></returns>
Private Function CreateGeographicSpatialReference() As ISpatialReference
Dim spatialRefFatcory As ISpatialReferenceFactory = New SpatialReferenceEnvironmentClass()
Dim geoCoordSys As IGeographicCoordinateSystem
geoCoordSys = spatialRefFatcory.CreateGeographicCoordinateSystem(CInt(Fix(esriSRGeoCSType.esriSRGeoCS_WGS1984)))
'assign a user defined datum to the SR (just for the test)
Dim datum As IDatum = New DatumClass()
Dim datumEdit As IDatumEdit = CType(datum, IDatumEdit)
Dim spheroid As ISpheroid = spatialRefFatcory.CreateSpheroid(CInt(Fix(esriSRSpheroidType.esriSRSpheroid_Clarke1880)))
datumEdit.DefineEx("MyDatum", "My Datum", "MDTM", "", spheroid)
Dim primeMeridian As IPrimeMeridian = spatialRefFatcory.CreatePrimeMeridian(CInt(Fix(esriSRPrimeMType.esriSRPrimeM_Greenwich)))
Dim angularUnits As IAngularUnit = TryCast(spatialRefFatcory.CreateUnit(CInt(Fix(esriSRUnitType.esriSRUnit_Degree))), IAngularUnit)
Dim geoCoordSysEdit As IGeographicCoordinateSystemEdit = CType(geoCoordSys, IGeographicCoordinateSystemEdit)
geoCoordSysEdit.DefineEx("MyGeoCoordSys", "MyGeoCoordSys", "MGCS", "", "", datum, primeMeridian, angularUnits)
geoCoordSys.SetFalseOriginAndUnits(-180.0, -180.0, 5000000.0)
geoCoordSys.SetZFalseOriginAndUnits(0.0, 100000.0)
geoCoordSys.SetMFalseOriginAndUnits(0.0, 100000.0)
Return TryCast(geoCoordSys, ISpatialReference)
End Function
End Class