MATLAB与Arcgis技术层面实现城市灯光中心转移可视化

一、MATLAB实现夜间灯光数据的灯光中心获取

        普遍来说,城市中心被认为是与周边地区相比,拥有较高人口密度、就业规模和经济聚集度的城市区域(Giuliano and Small,1991),是一座城市经济文明的聚集区,是各种社会经济要素在空间上集聚的结果。总的来说,城市中心就是人类活动比周围都要活跃的城市区域(Tammaru,2001),表现在夜间灯光影像上就是高值像元(Chen et al.,2017),即在一定的城市空间范围内,该像元的夜间灯光亮度值比周围的所有像元都要大[6]。

        目前大尺度空间的城市中心区域空间边界的确定主要依靠统一的阈值方法,下述方法提取的是中心点[6]。(值得注意的是,根据生活经验来说,独立工厂通常也具有较大的光亮值并且其通常可能被误提取为中心

(一)MATLAB代码

        由于遥感影像本身具备图像值矩阵与坐标元素结构体两部分的复杂性以及研究区四周几乎不存在中心出现的可能性,暂不考虑边界像素的遍历问题,多次采用不同边长方形核实验后,采用25*25核进行遍历。

%获取文件绝对路径
File = 'D:\matlab\code\Plight\20202.tif';
%本处提供核大小更改交互(仅支持奇数边长方形核)
len = input('请输入奇数边方形核边长:');
ck = (len-1)/2;
%读取tiff文件的影像矩阵与坐标系文件
[A,R] = geotiffread(File);
%获取投影坐标系
info = geotiffinfo('D:\matlab\code\Plight\20202.tif');
[r,c] = size(A);
%创建一个与影像矩阵同大小的outPut矩阵
outPut = ones(size(A));
%将output矩阵值全赋为-1,避免与原数据相减时误提取灯光中心
outputR = outPut .*(-1);
%处理过程
for i = (ck+1):(r-ck)
    for j = (ck+1):(c-ck)
        MatC = A((i-ck):(i+ck),(j-ck):(j+ck));
        MatMax = max(MatC(:));
        for k = (i-ck):(i+ck)
            for l = (j-ck):(j+ck)
                outputR(k,l) = MatMax;
            end
        end
    end
end
%输出图像
fprintf('数据处理完毕,正在导出!\n');
geotiffwrite('centralLight2.tif',outputR,R,'GeoKeyDirectoryTag',info.GeoTIFFTags.GeoKeyDirectoryTag);
fprintf('数据导出完毕!');

(二)灯光中心输出影像与原始影像做差值(可基于ENVI中的Band Math来做)

        (abs(灯光中心影像-原始影像) lt 0.000009)*原始影像

        差值影像中像元值为0(除背景值)的像元即为灯光中心(此处需要考虑到浮点数运算必须有个误差限比较)。

二、Arcgis标准差椭圆和中心迁移轨迹制作

(一)栅格转矢量点数据

        1、避免按栅格大小直接转点,首先将背景值点去除

        spatial analyst tools(空间分析工具) ->extraction(提取)->extract by attributes(按属性提取) ->按要求筛选出符合要求的栅格即可。

        2、按照属性转点

        Conversion Tools(转换工具) -> From Raster(来源栅格) ->Raster to Point(栅格转矢量点) ->可将栅格DN值作为属性转入。

(二)标准差椭圆

        Spatial Statistics Tools(空间统计工具) -> 度量地理分布 ->方向分布(标准差椭圆)->可按点属性值加权绘制标准差椭圆。

(三)显示时序的标准差椭圆

        spatial statistics Tools ->Measuring Geographic Distributions ->Mean Center(获取均值中心);

        GeoProcessing(标题栏下工具栏) ->Merge (将时序中心点组合为一个图层);

        Data Management Tools ->Feature(要素) ->Points to Line(点集转线)。

 上图来源[6]:Bilibili平台的进击的脊梁小白

(注:该图作为标准制图展示,如有侵权请联系本人删除)

参考资料:

[1]获得人生第一桶金对遥感的一些思考_N某人的博客-CSDN博客(MATLAB)

[2]MATLAB读取及存储geotiff_就是一只白的博客-CSDN博客_matlab读geotif

[3]DMSP/OLS等夜间灯光数据建成区扩张时空分析之标准差椭圆_端木宛白的GIS课堂的博客-CSDN博客_椭圆分布

[4]arcgis 栅格转点时抹去value值为0的区域_smartian-_-的博客-CSDN博客_arcgis删除0值

[5]重心迁移1——重心迁移图绘制_哔哩哔哩_bilibili

[6]重心迁移2——标准差椭圆和重心迁移补充_哔哩哔哩_bilibili

[7]葛伟.基于NPP-VIIRS夜间灯光数据的中国城市中心识别及其时空格局研究[D].重庆:西南大学,2019.

[8]Matlab 读取—处理—保存遥感影像(带有地理信息的图像)_themingyi的博客-CSDN博客_geotiffread

[9]白话空间统计之九:方向分布(标准差椭圆)修正版_虾神说D的博客-CSDN博客_标准差椭圆分析arcgis​​​​​​

[10]arcgis 将栅格值提取到点_Arcgis中怎么把栅格数据中大于某值的区域提取出来_不许肥的博客-CSDN博客