IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> 筛选100米范围内而且方位角相差15度以内的基站 -> 正文阅读

[Python知识库]筛选100米范围内而且方位角相差15度以内的基站

前面我在《使用sklearn处理经纬度的三种距离计算与地图可视化》一文中演示了三种基站经纬度数据的计算。

今天的需求给出原始数据是一批包含方位角的基站发射器数据,每个基站存在多个发射器,幼稚不同的方位角,要求找出与目标基站距离接近并且方位角接近的基站数据。例如筛选出100米范围内方位角相差15度以内的基站发射器。

首先我们读取数据:

import pandas as pd
import numpy as np

excel = pd.ExcelFile("多层网计算.xlsx")
find = excel.parse("基础网")
data = excel.parse("匹配数据")
display(find)
display(data)

image-20220426164812169

然后先找出每个被查找点100米范围内的点:

from sklearn.neighbors import BallTree
from math import *


def distancefuc(s1, s2):
    "创建用于计算两个经纬度距离的函数"
    # 经纬度转换成弧度
    lon1, lat1 = map(radians, s1)
    lon2, lat2 = map(radians, s2)
    dlon = lon2 - lon1
    dlat = lat2 - lat1
    a = sin(dlat / 2)**2 + cos(lat1) * cos(lat2) * sin(dlon / 2)**2
    distance = round(2 * asin(sqrt(a)) * 6371000, 1)  # 地球平均半径,6371km
    return distance

data_p = data.values[:, 1:3]
find_p = find.values[:, 1:3]
bt = BallTree(data_p, metric=distancefuc)
points = bt.query_radius(find_p, 100)
print(points)
[array([8, 7, 9, 6], dtype=int64)
 array([1676, 1677,  129,  128,  130,  124,  123], dtype=int64)
 array([131, 134, 135, 132, 133], dtype=int64) array([0, 1], dtype=int64)
 array([], dtype=int64) array([], dtype=int64) array([], dtype=int64)
 array([], dtype=int64) array([], dtype=int64) array([], dtype=int64)]

然后找出其中方位角小于15度的数据:

# 过滤出方位角小于15的点
points2 = []
for a2, point in zip(find.方位角, points):
    a1 = data.iloc[point, 3].values
    mask = np.abs(a1-a2) < 15
    points2.append(point[mask])
find["目标索引"] = points2
find

image-20220426165732544

然后就可以通过表连接整理出需要的数据了:

result = pd.merge(find.explode("目标索引"), data, how="left",
                  left_on="目标索引", right_index=True)
result

image-20220426170915922

找出了这些覆盖角度相同的,距离又离得近的基站发射器之后,就可以拆除一些或者调整发射器的发射角度增大基站的利用率。

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-04-28 11:48:54  更:2022-04-28 11:49:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 15:31:37-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码