• 画基站扇区的一种方法


    '创建扇区
    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

  • 相关阅读:
    教你开发jQuery插件(转)
    PHP7CMS 无条件前台GETSHELL
    如何利用GitHub搜索敏感信息
    YOU种你来丨i春秋校园行第一站北京电子科技学院
    超有料丨小白如何成功逆袭为年薪30万的Web安全工程师
    SQL基本注入演示
    从SQL注入到内网漫游
    与你有关丨微信可能隐藏着这样的安全隐患
    业务逻辑漏洞探索之敏感信息泄露
    Web安全之XSS Platform搭建及使用实践
  • 原文地址:https://www.cnblogs.com/googlegis/p/2978845.html
Copyright © 2020-2023  润新知