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

  • 相关阅读:
    provider: Shared Memory Provider, error: 0
    用户 'sa' 登录失败。 (Microsoft SQL Server,错误: 18456)
    从sqlite 迁移到mysql报错,处理 D:seafile-server_5.0.3_win32seafile-server-5.0.3seahubsql 重新执行这个SQL
    org.apache.jasper.runtime.ELContextImpl cannot be cast to org.apache.jasper.el.ELContextImpl
    java.lang.NoClassDefFoundError: org/apache/log4j/spi/ThrowableInformation
    无法完成操作。服务无法在此时接受控制信息。
    MyEclipse出现Unable to install breakpoint in...
    ERROR 1364 (HY000): Field 'id' doesn't have a default value
    各地都在搞大数据,你的家乡有啥特色没——解读2017年地方政府大数据报告
    HTML5桌面通知:notification
  • 原文地址:https://www.cnblogs.com/googlegis/p/2978845.html
Copyright © 2011-2022 走看看