创建地理坐标类型

来源:互联网 发布:俄罗斯听歌软件 编辑:程序博客网 时间:2024/05/16 07:19


    '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