Dim pSR As ISpatialReference3
pSR = Nothing
Dim t As Type = Type.GetTypeFromProgID("esriGeometry.SpatialReferenceEnvironment")
Dim obj As System.Object = Activator.CreateInstance(t)
Dim pSRF As ESRI.ArcGIS.Geometry.ISpatialReferenceFactory3 = obj
' Create a projection, GeographicCoordinateSystem, and unit using the factory.
Dim projection As IProjectionGEN = TryCast(pSRF.CreateProjection(CInt(esriSRProjectionType.esriSRProjection_Sinusoidal)), IProjectionGEN)
Dim geographicCoordinateSystem As IGeographicCoordinateSystem = pSRF.CreateGeographicCoordinateSystem(CInt(esriSRGeoCSType.esriSRGeoCS_WGS1984))
Dim unit As ILinearUnit = TryCast(pSRF.CreateUnit(CInt(esriSRUnitType.esriSRUnit_Meter)), ILinearUnit)
' Get the default parameters from the projection.
Dim parameters As IParameter() = projection.GetDefaultParameters()
' Create a PCS using the Define method.
Dim projectedCoordinateSystemEdit As IProjectedCoordinateSystemEdit = New ProjectedCoordinateSystemClass()
Dim Name As Object = "Newfoundland"
Dim [Alias] As Object = "NF_LAB"
Dim abbreviation As Object = "NF"
Dim remarks As Object = "Most Eastern Province in Canada"
Dim usage As Object = "When making maps of Newfoundland"
Dim geographicCoordinateSystemObject As Object = TryCast(geographicCoordinateSystem, Object)
Dim unitObject As Object = TryCast(unit, Object)
Dim projectionObject As Object = TryCast(projection, Object)
Dim parametersObject As Object = TryCast(parameters, Object)
' Note: Alias is a reserved keyword in VB .NET. To use it as a variable name, encase it in brackets [ ].
projectedCoordinateSystemEdit.Define(Name, [Alias], abbreviation, remarks, usage, geographicCoordinateSystemObject, unitObject, projectionObject, parametersObject)
pSR = projectedCoordinateSystemEditprivate static ISpatialReference getCustomSpatialRefFromFile() throws Exception {//, ISpatialReference inSpaRef
ISpatialReferenceFactory srf = new SpatialReferenceEnvironment();
IProjectedCoordinateSystem pcs = (IProjectedCoordinateSystem) srf.createESRISpatialReferenceFromPRJFile("test.prj");
IProjectedCoordinateSystem4GEN pcsGen = (IProjectedCoordinateSystem4GEN) pcs;
IParameter[][] parameters = new IParameter[1][7];
pcsGen.getParameters(parameters);
for (int i = 0; i < parameters[0].length; i++){
IParameter currentParameter = parameters[0];
if (currentParameter != null){
System.out.println(currentParameter.getName() + ", " +
currentParameter.getIndex() + ", " + currentParameter.getValue());
}
// set the value by parameter name
if (parameters[0].getName().equals("My_Parameter") == true){IParameter p = parameters[0];p.setValue(0);}
}
pcs.changed();
for (int i = 0; i < parameters[0].length; i++){
IParameter currentParameter = parameters[0];
if (currentParameter != null)
System.out.println(currentParameter.getName() + ", " +
currentParameter.getIndex() + ", " + currentParameter.getValue());
}
return pcs;
}
private static ISpatialReference getCustomSpatialRefFromFile() throws Exception {//, ISpatialReference inSpaRef
ISpatialReferenceFactory srf = new SpatialReferenceEnvironment();
IProjectedCoordinateSystem pcs = (IProjectedCoordinateSystem) srf.createESRISpatialReferenceFromPRJFile("test.prj");
IProjectedCoordinateSystem4GEN pcsGen = (IProjectedCoordinateSystem4GEN) pcs;
IParameter[][] parameters = new IParameter[1][16]; // the 16 is very important.
pcsGen.getParameters(parameters);
for (int i = 0; i < parameters[0].length; i++){
IParameter currentParameter = parameters[0];
if (currentParameter != null){
System.out.println(currentParameter.getName() + ", " +
currentParameter.getIndex() + ", " + currentParameter.getValue());
}
// set the value by parameter name
if (parameters[0].getName().equals("My_Parameter") == true){IParameter p = parameters[0];p.setValue(0);}
}
pcs.changed();
for (int i = 0; i < parameters[0].length; i++){
IParameter currentParameter = parameters[0];
if (currentParameter != null)
System.out.println(currentParameter.getName() + ", " +
currentParameter.getIndex() + ", " + currentParameter.getValue());
}
return pcs;
}