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

  • 相关阅读:
    git修改文件名大小写的方法。
    VC中常用的宏
    spring cloud Zuul 多层拦截 --- 心得
    Zuul网关 @EnableZuulProxy 和 @EnableZuulServer 的区别
    jave 数据类型 float 的 正确赋值
    spring cloud bus 消息总线 动态刷新配置文件 【actuator 与 RabbitMQ配合完成】
    RabbitMQ 消息中间件 的下载与安装【window10】
    spring cloud --- 使用 actuator 热更新【刷新】单机配置文件
    spring cloud 与spring boot的版本对应总结
    spring cloud feign 报错 feign.FeignException$MethodNotAllowed: status 405 reading 解决
  • 原文地址:https://www.cnblogs.com/googlegis/p/2978845.html
Copyright © 2011-2022 走看看