zoukankan      html  css  js  c++  java
  • 画基站扇区的一种方法

    '创建扇区
    Private Function FeatureFactoryCell(ByVal longitude As Double, ByVal latitude As Double, 
    ByVal angle As Integer, ByVal Lac As Integer, ByVal sectorSign As Integer) As Feature


    Dim FeatureRegion As Feature
    Dim FeatureCircular As Feature
    Dim FeatureSector   As Feature
    Dim pointCenter   As New Point
    Dim pointTemp   As New Point
    Dim pointRegion As New Points
    Dim angleInteger As Integer
    Dim angleMod As Integer
    Dim angleTemp1 As Integer
    Dim angleTemp2 As Integer

    pointCenter.Set longitude, latitude

    If (angle < 0 Or angle > 360) Then
    MsgBox "基站小区角度存在误差"
    End If

    '增加扇区的中心点
    pointTemp.Set longitude, latitude
    pointRegion.Add pointTemp

    '三角形的右上角坐标,并添加到点集
    angleTemp1 = angle + 30

    If (angleTemp1 > 360) Then
        angleTemp1 = angleTemp1 - 360
    End If

       angleInteger = angleTemp1 \ 90
       angleMod = angleTemp1 Mod 90


         Select Case angleInteger
             Case 0
                 pointTemp.Set longitude + distanceRegion * Sin(angleMod / 180 * 3.14159265358979), 
    latitude + distanceRegion * Cos(angleMod / 180 * 3.14159265358979)
             Case 1
                 pointTemp.Set longitude + distanceRegion * Cos(angleMod / 180 * 3.14159265358979), 
    latitude - distanceRegion * Sin(angleMod / 180 * 3.14159265358979)
             Case 2
                 pointTemp.Set longitude - distanceRegion * Sin(angleMod / 180 * 3.14159265358979), 
    latitude - distanceRegion * Cos(angleMod / 180 * 3.14159265358979)
             Case 3
                 pointTemp.Set longitude - distanceRegion * Cos(angleMod / 180 * 3.14159265358979), 
    latitude + distanceRegion * Sin(angleMod / 180 * 3.14159265358979)
             Case 4
                 pointTemp.Set longitude + distanceRegion * Sin(angleMod / 180 * 3.14159265358979), 
    latitude + distanceRegion * Cos(angleMod / 180 * 3.14159265358979)
        
         End Select

    pointRegion.Add pointTemp

    '三角形的左上角坐标,并添加到点集
         angleTemp1 = angle - 30

    If (angleTemp1 < 0) Then
        angleTemp1 = angleTemp1 + 360
    End If

         angleInteger = angleTemp1 \ 90
         angleMod = angleTemp1 Mod 90


         Select Case angleInteger
             Case 0
                 pointTemp.Set longitude + distanceRegion * Sin(angleMod / 180 * 3.14159265358979), 
    latitude + distanceRegion * Cos(angleMod / 180 * 3.14159265358979)
             Case 1
                 pointTemp.Set longitude + distanceRegion * Cos(angleMod / 180 * 3.14159265358979), 
    latitude - distanceRegion * Sin(angleMod / 180 * 3.14159265358979)
             Case 2
                 pointTemp.Set longitude - distanceRegion * Sin(angleMod / 180 * 3.14159265358979), 
    latitude - distanceRegion * Cos(angleMod / 180 * 3.14159265358979)
             Case 3
                 pointTemp.Set longitude - distanceRegion * Cos(angleMod / 180 * 3.14159265358979), 
    latitude + distanceRegion * Sin(angleMod / 180 * 3.14159265358979)
             Case 4
                 pointTemp.Set longitude + distanceRegion * Sin(angleMod / 180 * 3.14159265358979), 
    latitude + distanceRegion * Cos(angleMod / 180 * 3.14159265358979)
         End Select

    pointRegion.Add pointTemp

    If sectorSign = 1 Then

         Set FeatureRegion = Map1.FeatureFactory.CreateRegion(pointRegion)
         Set FeatureCircular = Map1.FeatureFactory.CreateCircularRegion(miCircleTypeMap, pointCenter, 0.1, , 15)    '(圆形)
         Set FeatureSector = Map1.FeatureFactory.IntersectFeatures(FeatureRegion, FeatureCircular) '(组合图元)

    Else
         Set FeatureRegion = Map1.FeatureFactory.CreateRegion(pointRegion)
         Set FeatureCircular = Map1.FeatureFactory.CreateCircularRegion(miCircleTypeMap, pointCenter, 0.3, , 15)   '(圆形)
         Set FeatureSector = Map1.FeatureFactory.IntersectFeatures(FeatureRegion, FeatureCircular) '(组合图元)

    End If
      
       '连接数据库,设置扇区样式

        Dim SQL As String
        Dim cn As New ADODB.Connection
        Dim rs As New ADODB.Recordset

    cn.Provider = "Microsoft.Jet.OLEDB.4.0"
    cn.ConnectionString = "Data Source=" & App.Path & "\data.mdb"
    cn.Open
    SQL = "select LAC,RED,BLUE,GREEN from laccolor"
    Set rs = New ADODB.Recordset
    Set rs.ActiveConnection = cn
    rs.Open SQL
    rs.MoveFirst

    While Not rs.EOF
    If Lac = rs.Fields.Item("LAC") Then
    FeatureSector.Style.RegionColor = RGB(rs.Fields.Item("RED"), rs.Fields.Item("BLUE"), rs.Fields.Item("GREEN"))
    'rs.MoveLast
    End If
    rs.MoveNext
    Wend

    rs.Close
    cn.Close

    Set FeatureFactoryCell = FeatureSector

    End Function

  • 相关阅读:
    两个服务器上SQLServer实例之间配置Service Broker示例
    处理数据库镜像问题的一个案例
    oracel修改密码
    Oracle报错
    如何创建ORACLE大文件表空间
    创建、删除表空间
    oracle中新建用户和赋予权限
    非常全的VsCode快捷键
    VS Code常用快捷键
    启动Weblogic问题集锦
  • 原文地址:https://www.cnblogs.com/googlegis/p/2978845.html
Copyright © 2011-2022 走看看