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知识库 -> 【无标题】 -> 正文阅读

[Python知识库]【无标题】

Python实现地图栅格化

引言
以2021年美赛B题为背景,研究为了应对澳洲山火的无人机配比问题。
在正式进入求解之前,我们需要对地图环境进行建模。
一般来说,求解无人机路径问题时,我们选择对地图数据栅格化处理,然后将之由GIS信息转化为可供编程求解的信息。
地图栅格化思路
为了将地图栅格化,我们要明白格子是如何生成的,
两种思路:
1.生成两组连续的数,在地图上互相划线,即一组代表起始点数组,另一组代表终止点数组。
2.一个格子一个格子画,确定好格子四周的信息,然后循环画格子。

本文将使用第二种方法进行绘图,python代码如下
我们将使用python的folium库进行绘图
这个库应该需要用conda命令进行安装,或者在其他的相关库配备完全的情况下可以用pip直接安装。
对于另外的地理信息绘图库Geopandas,我们需要先从网页下载几个whl文件,后用pip install 文件名.whl 安装这个文件,然后再pip就好

import folium
import pandas as pd
import webbrowser as wb
import numpy as np
archive = pd.read_csv('dataset_of_vctria.csv') # 导入数据集
#提取经纬度数据
latitude = archive['latitude'].head(30000)
longitude = archive['longitude'].head(30000)

m = folium.Map(location=[np.mean(latitude), np.mean(longitude)],  #表示开始时地图的起始位置
               width='100%', #窗口的宽高限制(此处指打开窗口时占据显示屏的百分比
               height='100%',
               zoom_start=5,   #初始放大倍数
               min_zoom=0,    #最小缩放倍数,由于folium地图控件有良好的交互效果,因此可以进行自由的缩放操作
               max_zoom=18,
               tiles='OpenStreetMap',  #地图类型
               attr="http://ditu.amap.com/"  #直接用这个就行了,表示的是地图来源
               )

#在地图上打点
def pointpoint(m, latitude, lontitude):
#这里创建了一个点集一类的东西用来存储新增加的点
    point = folium.map.FeatureGroup()
    for lat, lon in zip(latitude, longitude):
        point.add_child(
            folium.CircleMarker(
                (lat, lon),
                radius=2,   # 圆圈半径
                color='red', # 半径颜色
                fill=True,     # 内部填充
                fill_color='red',
                fill_opacity=1,
            )
        )
    m.add_child(point)
#生成栅格
#选定起始点 不断生成四方格 由于经纬度与距离的转换公式不同 因此需要进行增量的调整
#栅格大小 5km*5km
#生成400个格子
for i in range(20):
    for j in range(20):
    #folium.Polygon函数用来生成封闭的图形,我们需要提供四个顶点的信息
        folium.Polygon(
            [
               [-38.02 + 0.04 * j, 142.91 + i * 0.05],
                [-38.02 + 0.04 * j, 142.91 + (i + 1) * 0.05],
                [-38.02 + 0.04 * (j + 1), 142.91 + (i + 1) * 0.05],
                [-38.02 + 0.04 * (j + 1), 142.91 + i * 0.05]
            ], color='orange', weight=1
        ).add_to(m)
        '''
        如果要填充格子
        folium.Polygon(
            [
               [-38.02 + 0.04 * j, 142.91 + i * 0.05],
                [-38.02 + 0.04 * j, 142.91 + (i + 1) * 0.05],
                [-38.02 + 0.04 * (j + 1), 142.91 + (i + 1) * 0.05],
                [-38.02 + 0.04 * (j + 1), 142.91 + i * 0.05]
            ], color='orange', weight=1,fill=True, fill_color='blue', fill_opacity=0.2 # 最后一个参数是透明度(0-1)
        ).add_to(m)
        '''
m.add_child(folium.LatLngPopup())
'''
这里提一句,pycharm使用这个控件的时候可能会存在打不开这个图的问腿,所以我们采用保存为网页格式,然后用浏览器打开,但是如果数据量过大的时候会存在很难进行交互,以及卡顿的情况。
'''
m.save('map.html')
wb.open('map.html')

看看效果
在这里插入图片描述
放大之后在这里插入图片描述
在这里我们选定一个研究区域对其火灾情况进行研究
在这里插入图片描述
这是我们研究的一个区域中无人机分布
在这里插入图片描述

  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2022-01-17 11:28:10  更:2022-01-17 11:28:45 
 
开发: 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/16 2:46:30-

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