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 小米 华为 单反 装机 图拉丁
 
   -> 人工智能 -> 【GIS】夜光遥感数据时序分析 -> 正文阅读

[人工智能]【GIS】夜光遥感数据时序分析

基于夜光遥感的旅游产业发展分析


夜光遥感技术是指遥感平台获取夜间灯光数据的遥感技术。其具有空间清晰的与城市化有关的社会经济活动强度的感知信息,为探索城市和城市化问题提供了新的研究途径。除却反映城市夜间灯光活动,夜光遥感数据在监测森林火灾、反映人类活动、衡量经济发展等诸多领域也崭露头角,展现出其独特的价值。

本文基于格洛纳斯(GLONASS)卫星导航系统获取到的2018-2021年夜光遥感数据,分析丽江市旅游产业在疫情时代下的发展趋势。(注:该数据已经过预处理,如果是珞珈数据或是其他数据格式可能需要根据其提供的帮助文档进行预处理)

在开始之前,我们先介绍一些常见的夜光遥感数据的获取途径:


一、项目准备工作

1.1 研究数据

在本项目中,我们使用的数据有:

  • 2018年9月-2018年12月 云南丽水逐月平均夜光遥感影像图
  • 2019年1月-2019年12月 云南丽水逐月平均夜光遥感影像图
  • 2020年1月-2020年12月 云南丽水逐月平均夜光遥感影像图
  • 2021年1月-2021年12月 云南丽水逐月平均夜光遥感影像图
  • 丽江旅游产业相关POI的Excel表数据

夜光影像图的空间分辨率为500m。

1.2 环境搭建与数据预处理

为了方便工作的进行,我们将数据统一放入一个文件夹中,并在此新建一个新的文件地理数据库。

我们以2018年十月的数据为例,进行数据探查。在ArcGIS中,其显示为

该数据的值域范围为[0.06,181.83],以float栅格形式存储。为了更加清晰地表征数据,我们可以对数据的色彩直方图做一定的线性拉伸,该操作能够更好地分配区间内色彩值的映射,也就是更好的可视化表达。直方图均衡化也常见于CV中灰度图像的处理,有利于更好地挖掘图像的潜在特征表达。

在直方图均衡化后,结果相对清晰、分明。

遥感图像由于受到噪声点影响,会出现负值的情况,本文将负值统一修正为0,以便满足其在语义上的不变性。其操作可以在栅格计算器中完成。

处理完栅格数据之后,我们需要加载兴趣点数据。本文获取的POI是以Excel表的形式存储,其数据结构如下:

在Excel转表工具中,可以将其转为关系表:

接着将其作为点shp添加进文件数据库中:

至此,我们已经完成了初步的环境搭建与数据处理部分。


二、评价体系

为了评估不同时期夜光数据的变化,本文采用了环比增长率和同比增长率进行处理。其公式表达如下:
S i = S i ? S i ? 1 S i ? 1 S_i=\frac{S_i-S_{i-1}}{S_{i-1}} Si?=Si?1?Si??Si?1??
其中,计算同比增长率时 i i i表示年度数据,计算环比增长率时 j j j表示月度数据。

对于增长率为正值的区域,可认为该区域处于发展状态,而对于增长率为负值的区域,则认为该区域处于萧条状态。


三、实验操作

3.1 增长率计算

环比与同比的计算方法是一样的,这里我们拿同比增长率来举例。计算同比增长率需要相隔一年的同月数据,这里我们选择2019年10月和2020年10月的数据进行计算。将数据加载进ArcMap后,选择栅格计算器,输入公式1。

于是我们得到了一张同比增长率的图。关于这幅图我们等等细说,为了方便研究增长率,我们可以创建二值图像,并对信息做一些统计。

创建好的二值图像如下图所示,其中绿色表示增长率为负数的区域,粉色则是增长率为正数的区域,值表示对应栅格个数。

虽然该方法不能评估整体的经济发展状态,但可以得出大部分地区相较于去年,都呈积极发展态势。再来看看下面这张图,结合同比增长率变化图,我们可以发现,左下高度发展区域在一年后反而呈现衰退趋势,而右上和右下两个高度发展区域发展态势依旧良好。

当然,这些图都是在表征整个研究区域的情况,我们的目的是研究旅游变化趋势,因而需要进一步细化研究区域。

3.2 旅游焦点区域

前面提到本文初步计算得到的结果是全局的结果,为了追踪旅游行业的变化趋势,我们选取了带有相关语义的POI数据,这些数据表现为与旅游产业呈现较高的相关性。在前面的数据预处理中,我们将这些数据进行了格式转换,并导入了ArcMap中。

仅有POI还是很难体现空间上的相关性,因此,我们为这些POI增设一个服务范围。该服务范围具有一个服务搜索半径,该半径可以是固定值,也可以是自适应增长的。关于自适应增长的搜索半径接下来我也会发一篇文章重点讲讲,本文选择了较为简单的固定方法。

此时我们选择三个固定阈值作为POI的搜索半径,分别是 1 K M , 3 K M , 5 K M 1KM,3KM,5KM 1KM,3KM,5KM。借助这些半径值构建的环形缓冲区,我们将其称为兴趣点的服务范围。实际含义为服务场所所能提供相关服务的影响范围。

我们以景区的POI数据为例,在ArcMap中构建 3 K M 3KM 3KM的缓冲区。

由于距离原因,难免会出现缓冲区上的叠置。但本篇文章的论述重点并不在某个景点或是某个酒店,故本文将所有的相关语义点缓冲区视为相同的共享对象。换而言之,就是把带有旅游语义的兴趣点视为空间上的一个点。(可以简单理解为图论中的超级源点)

我们首先通过按掩膜提取的方式获取焦点区域的数据值:

接下来可以通过符号系统里面的分类方式简单获取数据的统计信息。

3.3 结果可视化

由于在ArcMap中,栅格数据矢量表的构建仅限于单波段整形数据,本文为了保证数据的两位精度,先将栅格扩大 1 e 2 1e2 1e2倍,再转换为整形栅格:

此时栅格数据已经构建了保留两位精度的属性表,我们将其导出为csv格式的数据,再进行处理。

我们采用高级箱线图展现数据,该箱线图能够在各个采样区间评估数据,越宽所代表的样本量就越多。

import pandas as pd
import seaborn as sns
import matplotlib.pyplot as plt
path=r"C:\Export_Output.csv"
data=pd.read_csv(path)

# 此时需要构建一个统计信息
# 会占用大量空间
collect=[]

for i in range(data.shape[0]):
    collect.extend([data.iloc[i,1]/100.0]*int(data.iloc[i,2]))

# 再通过seaborn绘制盒须图
new_data=pd.DataFrame(collect,columns=["A"])
sns.set_theme(style="whitegrid")
ax=sns.boxenplot(y=new_data["A"])
ax.set_title("2020_10 Night Value")
ax.set_ylabel("Value")
plt.show()

或者是小提琴图:

ax=sns.violinplot(y="A",data=new_data)
sns.despine(left=True)

当然,本文最主要的还是做比对,除却小提琴图外,我们依旧需要绘制总量上的一个变化和变化率曲线图。(以下是环比数据的比较)

通过比对数据,我们发现在2020年10月到12月三个月中,带有旅游语义的夜光遥感总值呈现下降、上升趋势,而最发达的地区进一步发展,大量欠发展地区进入更高的发展阶段。11月可能受到疫情和政策的影响,旅游产业总体发展呈现下滑趋势,但低发展区域更多地进入了新一发展阶段,而最高值仍有提升。中间段反而呈现下降趋势,中小旅游产业受到疫情的冲击较大,而微型和大型旅游产业依旧稳固。


四、最终结果展示

各季度夜光数据分布图

各季度亮度总值

各季度环比增长率

各季度同比增长率

可视化代码

import os
import pandas as pd
import numpy as np
import seaborn as sns
import matplotlib.pyplot as plt
import argparse

def parse_args():
    parser=argparse.ArgumentParser("Read CSV")
    parser.add_argument("-root","--r",help="The root of your csv-files",default=r"..\csv",type=str)
    return parser.parse_args()

def main(args):
    path=args.root
    
    list_path=[ i for i in os.listdir(path) if i .endswith(".csv")]
    
    collect=[]
    sum_list=[]
    label=[]
    
    for lp in list_path:
        data=pd.read_csv(path+"\\"+lp)
        tem=[]
        for i in range(data.shape[0]):
            tem.extend([data.iloc[i, 1] / 100.0] * int(data.iloc[i, 2]))
            label.extend([lp.split(".")[0]] * int(data.iloc[i, 2]))
        sum_list.append(sum(tem))
        collect.extend(tem)
    
    data=np.array([collect,label]).T
    new_data=pd.DataFrame(data,columns=["A","B"])
    new_data['A'] = new_data['A'].astype('float')
    sns.set_theme(style="whitegrid")
    # ax=sns.boxenplot(x="B",y="A",data=new_data)
    new_data= new_data.explode('A')
    
    ax=sns.violinplot(x="B",y="A",data=new_data)
    sns.despine(left=True)
    ax.set_title("Night Values")
    ax.set_ylabel("Value")
    ax.set_xlabel("Times")
    plt.show()
    
    plt.plot([i.split(".")[0] for i in list_path],sum_list)
    plt.xlabel("Times")
    plt.ylabel("Value")
    plt.title("Sum")
    plt.show()
    
    record=sum_list[2:]
    
    # 环比
    for i in range(1,len(sum_list)):
        sum_list[i-1]=(sum_list[i]-sum_list[i-1])/sum_list[i-1]
    sum_list=sum_list[:-1]
    plt.plot(range(len(sum_list)),sum_list)
    plt.xlabel("Times")
    plt.ylabel("rate")
    plt.title("Month-on-month Rate")
    plt.show()
    
    # 同比
    X=["First","Second","Third","Fourth"]
    data=[]
    for j in range(2):
        tem=[]
        for i in range(j*4,j*4+4):
            tem.append((record[i+4]-record[i])/record[i])
        data.append(tem)
    x=range(4)
    plt.plot(x,data[0],"r",label="2019-2020")
    plt.plot(x,data[1],"b",label="2020-2021")
    plt.legend()
    plt.xlabel("Quarter")
    plt.ylabel("Rate")
    plt.xticks(x,X)
    plt.title("Year-on-Year")
    plt.show()

if __name__ == '__main__':
    args=parse_args()
    main(args)
  人工智能 最新文章
2022吴恩达机器学习课程——第二课(神经网
第十五章 规则学习
FixMatch: Simplifying Semi-Supervised Le
数据挖掘Java——Kmeans算法的实现
大脑皮层的分割方法
【翻译】GPT-3是如何工作的
论文笔记:TEACHTEXT: CrossModal Generaliz
python从零学(六)
详解Python 3.x 导入(import)
【答读者问27】backtrader不支持最新版本的
上一篇文章      下一篇文章      查看所有文章
加:2022-05-16 11:19:46  更:2022-05-16 11:20:55 
 
开发: 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/26 4:37:44-

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