筛选某区域范围内符合条件的点


前言

  1. 数据清洗过程中,需要对某范围内数据进行筛选,需要同时满足横轴和纵轴的范围要求,如矩形的长和宽范围内的节点,或某海域内的船舶节点。
  2. 需要分别对横轴范围和纵轴范围依次进行判断筛选,若同时进行判断,会出现横纵轴数据长度不相等的情况,不利于绘图。

一、准备好需要筛选的数据集

以船舶分布为例,筛选出某矩形海域内船舶节点

# 选定矩形区域(可手动设置或传参设置)
    start = [120, 30]  # 矩形起点(左下角)
    end = [122, 32]  # 矩形终点(右上角)
 # 获取数据内船舶经纬度及mmsi
    lon_x = data['lon']
    lat_y = data['lat']
    mmsi = data['mmsi']

将数据打包,便于统一提取

 # 将三组数据进行打包处理
    dict = list(zip(mmsi, lon_x , lat_y))

二、开始进行数据筛选

经纬度顺序先后没有影响,只是不能同时进行

1.首先对经度进行筛选

  # 筛选矩形范围内经度节点
    temp= [] # 将初步筛选的节点保存到临时列表中
    for i in range(len(dict)):
        a = dict[i][1]
        if start[0] <= a <= end[0]:
            temp.append(dict[i])

2.然后对纬度进行筛选

   # 在经度范围内,筛选矩形范围内纬度节点,即符合矩形条件的最终节点
    coordinates = []
    for j in range(len(temp)):
        b = temp[j][2]
        if start[1] <= b <= end[1]:
            coordinates.append(temp[j])

3.提取船舶节点x、y坐标信息

  	longitude = []
    latitude = []
    mmsi = []
    for i in range(len(coordinates)):
        latitude.append(coordinates[i][2])
        longitude.append(coordinates[i][1])
        mmsi.append(coordinates[i][0])

三、绘制船舶分布图

 # 绘制散点图
    plt.scatter(longitude, latitude)

    # 为散点添加标签
    for i, msi in enumerate(mmsi):
        plt.annotate(msi,(longitude[i], latitude[i]),textcoords='offset points', xytext=(0, 10), ha='center')

    # 用来正常显示中文标签
    plt.rcParams['font.sans-serif'] = ['SimHei']
    
	# 设置坐标轴标签
    plt.xlabel('经度')
    plt.ylabel('纬度')

    # 显示图表
    plt.show()

plt.annotate的使用方法可以参考matplotlibplt.annotate()函数解析(最清晰的解释)

绘图显示

数据特殊,截取图片部分内容
在这里插入图片描述


总结

记录一下,便于自己复习查阅,也为有需要的小伙伴提供小小的帮助。
某大佬如有优化的意向,还望不吝赐教【抱拳】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值