'nType 创建地理坐标类型
Public Function CreateProject(ByVal pSpatRefFact As ISpatialReferenceFactory, ByVal nType As Integer, ByVal strNameBZ As String) As IProjectedCoordinateSystem
'投影坐标系
Dim spatialReferenceFactory As ISpatialReferenceFactory2 = New SpatialReferenceEnvironmentClass()
Dim projection As IProjectionGEN = pSpatRefFact.CreateProjection(esriSRProjectionType.esriSRProjection_GaussKruger)
'地理坐标系统
'定义地理坐标,由输入的对象决定,也可以自己定义,参考: esriSRGeoCSType
Dim pGCS As IGeographicCoordinateSystem = New GeographicCoordinateSystem()
'定义投影方式
pGCS = spatialReferenceFactory.CreateGeographicCoordinateSystem(nType)
'定义投影单位,参考:esriSRUnitType
Dim pUnit As ILinearUnit = New LinearUnitClass()
pUnit = spatialReferenceFactory.CreateUnit(esriSRUnitType.esriSRUnit_Meter)
'定义其他参数,参考:esriSRParameterType
Dim pParm(5) As IParameter
pParm(0) = spatialReferenceFactory.CreateParameter(esriSRParameterType.esriSRParameter_FalseEasting)
pParm(0).Value = CDbl(m_strEasting)
pParm(1) = spatialReferenceFactory.CreateParameter(esriSRParameterType.esriSRParameter_FalseNorthing)
pParm(1).Value = 0
Dim dCentrel As Double = CDbl(Me.TextBox_D.Text) + CDbl(Me.TextBox_F.Text) / 60 + CDbl(Me.TextBox_M.Text) / 3600
pParm(2) = spatialReferenceFactory.CreateParameter(esriSRParameterType.esriSRParameter_CentralMeridian)
pParm(2).Value = dCentrel
pParm(3) = spatialReferenceFactory.CreateParameter(esriSRParameterType.esriSRParameter_ScaleFactor)
pParm(3).Value = 1
' pParm(4) = spatialReferenceFactory.CreateParameter(esriSRParameterType.esriSRParameter_StandardParallel2)
' pParm(4).Value = 47
pParm(4) = spatialReferenceFactory.CreateParameter(esriSRParameterType.esriSRParameter_LatitudeOfOrigin)
pParm(4).Value = 0
'设置投影相关信息
Dim projectedCoordinateSystemEdit As IProjectedCoordinateSystemEdit = New ProjectedCoordinateSystem
Dim name As Object = strNameBZ + CStr(dCentrel)
Dim aliasFL As Object = "Albers"
Dim abbreviation As Object = "Albers"
Dim remarks As Object = "User_Defined_Albers is the projection"
Dim usage As Object = ""
Dim parametersObject As Object = pParm
projectedCoordinateSystemEdit.Define(name, aliasFL, abbreviation, remarks, _
usage, pGCS, pUnit, _
projection, parametersObject)
Return projectedCoordinateSystemEdit
End Function