地理过程,尤其是城市发展过程,是极为复杂的。为了准确的模拟城市发展过程和预测未来城市形态,我们提供了一套基于元胞自动机的地理模拟软件(Geographical Simulation App via Cellular Automata, 以下简称GeoCA)。
GeoCA是一套用于模拟大规模像素级(栅格级)城市发展过程的软件。GeoCA具备一套完备的高性能海量空间数据读写底层,可支持多线程读写、内存自动分配和空间数据坐标自动对齐特性。GeoCA内封装的耦合元胞自动机和多机器学习模型支持的城市模拟模型,已被广泛的应用于城市发展过程分析、用地侵蚀分析、生态环境分析和城市规划相关领域。
GeoCA包括以下功能模块:输入模拟数据、输出模拟结果、模拟参数设置、规则挖掘参数设置、模拟结果检验、用地侵蚀制图、模型执行、处理日志输出。模块和模块间采用都是数据松耦合的设计模式。
GeoCA软件由中国地质大学(武汉)高性能空间计算智能实验室(HPSCIL@CUG)发布,版权为中国地质大学(武汉)高性能空间计算智能实验室(HPSCIL@CUG)所有。
基于元胞自动机的城市模拟模型理论和原理在文末附有参考文献,亦可于此下载相关资料:http://www.urbancomp.net/2020/10/01/traditional-ca/
以下将详细介绍每一个模块的功能、算法和操作步骤。
该模块的主要功能为设置模型的输入数据。
输入数据包括三部分:
界面如图1所示。输入分为四大部分:输入数据的文件夹路径(Source Filepath,必填)、土地利用文件(Landcover Files,必填)、辅助空间变量数据(Auxiliary Files,必填)、附加概率文件(Additional Probability File,选填)。
图1 输入模拟数据设置界面
Landcover Filepath:土地利用/土地覆被文件的文件夹路径。建议将所有土地利用和土地覆被文件放在该文件夹内。
Auxiliary Filepath:辅助空间变量数据文件的文件夹路径。建议将所有辅助空间变量文件放在该文件夹内。
Output Filepath:输出数据的文件夹路径。程序将会把所有输出文件放置于该文件夹内。
Classification Code File: 放置于Landcover Filepath内的土地利用重分类文件,文件类型为txt或csv文本文件。每一类存储每一土地利用和土地覆被类型的DN, NAME, TYPE_ID, RE_TYPE, RE_TYPE_ID, COMMENTS。
Landcover File Name(Simulation Start/End Year):模拟起始和终止年的土地利用文件,Geotiff格式。需要输入年份和文件名。
该部分设置的按钮可批量打开辅助空间变量数据集。
每一个数据为Geotiff格式,建议数据类型为FLOAT32浮点型。
每一个辅助空间变量数据以行的形式显示,nFID为辅助数据的唯一标识码。
为了数据归一化进入规则挖掘,需要手动修改每一个辅助空间变量数据的最小值(Minimum Value)、最大值(Maximum Value)和均值(Mean Value),默认最小值为0、最大值为1、均值为0.5,可以按需修改。
是否越近越好(Better):“是”填1,“否”填0。若填0,归一化将采用逆序方式。
备注(Comments):便于理解,可选填。
理论上辅助空间变量数据的个数不超过采样随机点个数(默认为5000)。
该文件用于挖掘城市增长规则概率基础上,相乘另一个概率数值。
该文件可选是否使用,数据类型为FLOAT32,数据范围不做限定。如果使用了该项概率,Simulation Settings >> CA Iteration Settings >> Minimum Transition Probability Threshold 也建议根据该文件数值范围修改。
附加概率数据存储位置应位于Simulation Data >> Auxiliary Filepath。
提示:该文件可用于控制是否允许增长(数据为0或1),或者用于控制(增加或减少)某种地物被侵蚀的概率。
该模块为设置输出模拟结果文件。
图2为输出结果设置模块界面。
GeoCA用于城市模拟输出的结果主要包括:
图2 输出结果数据文件名设置界面
所有数据将会输出于Source Filepath >> Output Filepath文件夹中。
统计的起始年和终止年土地利用类型转换差异。
扩展名为tif,文件类型为Geotiff,数据类型为BYTE。
根据重分类代码文件内设置,将起始年和终止年土地利用数据的重分类结果。
扩展名为tif,文件类型为Geotiff,数据类型为BYTE。
根据重分类代码文件内设置,得到研究区每一个栅格的发展为城市的适宜性(允许发展、不允许发展、受限发展区域)。
扩展名为tif,文件类型为Geotiff,数据类型为BYTE。
以9种不同的转换类型,在土地利用转换和辅助空间数据上进行随机取样,存储为随机点-转换类型数据。可用于后期检查数据和测试数据挖掘模型精度。
该文件为文本文件,存储了每一个随机点的经纬度、辅助数据集和转换类型。
根据获取的随机点和用户选择的规则挖掘模型,得到的非城市向城市转换的Pg概率图文件。
扩展名为tif,文件类型为Geotiff,数据类型为BYTE,数值范围为0~1。
根据CA模型和设置的参数(Simulation Settings),得到的城市发展模拟迭代结果文件。
注意这里不需要设置文件扩展名,默认文件名为5UrbanDevelopmentCAIterationsResult。
迭代结果会根据迭代次数自动命名为:5UrbanDevelopmentCAIterationsResult_IterNo_*.tif,其中*为迭代次数。
该文件较大,是否输出可选,默认不输出。
根据获取的随机点和用户选择的规则挖掘模型,得到的9种类型转换的Pg概率图文件。
扩展名为tif,文件类型为Geotiff,数据类型为BYTE,数值范围为0~1,具有9个波段。
该模块用于设置模拟参数和CA迭代参数。
图3为模拟和迭代过程的参数设置界面。
主要包括两大设置:模拟参数(Simulation Parameters)设置和迭代参数(CA Iteration Parameters)设置。
图3 模拟和迭代过程参数设置界面
线程数目(Thread Number):设置多线程数目。程序会自动获取电脑可使用的多线程数目,是否使用多线程由用户决定。若不使用多线程,该项设置为1。
起始年(Start Year)、终止年(End Year)、年间隔(Year Gap):这三项为废弃参数,不需要设置。
训练使用的最少随机点数(Minimum number of random points involved in training):程序自动采集的最少随机点数目。一般情况,程序会采集用户设置数目的2倍随机点进入规则挖掘过程。
输出的土地利用转换概率类型(LULC Transition Probability Type):输出的Pg概率类型,默认为“1 非城市到城市”。如无必要,不要修改为其他类型的输出。
规则挖掘模型选择(Rule-mining method for CA):用于计算Pg概率的规则挖掘方法。GeoCA目前提供5种模型:随机森林模型(Random Forest,推荐使用)、神经网络模型(Neural Network,推荐使用)、逻辑模型(Logit Model,推荐使用)、复杂逻辑回归(Logic Regression,测试中,不推荐使用)和免疫算法(Immune Algorithm,测试中,不推荐使用)。
城市总增长量(Total growth of the urban area):设置城市增长的元胞数目。
最大迭代次数(Maximum number of iterations):若迭代次数超过该值,则停止迭代。
最小增长间隔差异(Minimum difference of cell growth):前后迭代元胞增长数目如果小于该值,则停止迭代。
最小转换概率(Minimum Transition Probability Threshold):非城市发展为城市的最小发展概率。概率计算方法P=Pg*Ω*RA,其中Ω为邻域概率,RA为正态随机数。
每次增长的种子点数目(Number of rand-increase each time):当前已废弃参数,不需要设置。
邻域概率计算方法(Neighborhood Probability Calculation Method):计算邻域概率Ω的方法。
GeoCA提供了三种邻域概率计算模型:
Tranditional 8-neighborhood:传统八邻域概率(城市=1,非城市=0)
8-neighborhood with Probability:考虑到非城市发展概率的改进8邻域模型(城市=1,非城市=Pg)
Tan-curve model:基于正切模型的邻域概率 (tan(0.25*邻域城市数量-1.2)+3.0)/4.0-0.09
是否每次无限制发展(Whether to grow without limit in each iterations):
√ 如果框选此项:
城市总增长量将不受限制(在参数文件中此项为0);
GeoCA将会把每次能增长为城市的元胞都进行转变;
迭代停止条件为达到最大迭代次数或最小增长间隔差异。
○ 如果不框选此项:
城市总增长量为用户设置。
每次增长的数量 = 城市总增长量 / 最大迭代次数。
最小增长间隔差异非迭代停止条件。
是否采用快速发展模式(Whether to use rapid growth mode):
√ 如果框选此项:
数据量较小情况下,直接统计可以增长的城市数据。
一般和无限制发展配合使用。
○ 如果不框选此项:
根据城市总增长量和模拟城市扩张总数进行模拟。
一般和非无限制发展配合使用。
是否保护用地发展为城市用地(Whether the protected land is used for urban development):
√ 如果框选此项:保护用地在迭代过程中会发展为城市用地。
○ 如果不框选此项:保护用地保持不变。
是否下次迭代采用上一次的概率结果(Whether the next iterations uses the previous result probability):
不建议框选。
√ 如果框选此项:每次迭代后总体发展概率Pg将会被P代替,P的计算收敛速度将加快。
○ 如果不框选此项:总体发展概率Pg保持不变。
该模块用于设置计算总体发展概率Pg的机器学习模型参数。
图3为规则挖掘模型参数设置界面。
根据选择的机器学习模型,GeoCA将自动开放相应的参数设置区域。
图4 规则挖掘参数设置模块
决策树总数目(Toal trees):构建随机森林采用的决策树总数目;
训练比例(Training ratio):训练数据集(袋内数据)比例;
最佳分裂时使用的变量数(Number of variables for split):用于决策树分割时使用的变量数目
输出精度文件(Output Accuracy and Weight File Name):输出的随机森林精度和变量权重文件,存储于Simulation Data >> Output Filepath 内。
隐藏层数目(Hidden Layers Num):神经网络隐藏层数目;
训练重启次数(Restart times for validation):训练时重启次数。设置为10时,则为10-fold交叉验证;
输出精度文件(Output Accuracy File Name):输出的神经网络交叉验证精度文件,存储于Simulation Data >> Output Filepath 内。
输出参数因子文件(Output Cofficients File Name):输出每一个转换类别的特征变量权重因子;
输出精度文件(Output Accuracy File Name):输出的逻辑模型训练精度文件,存储于Simulation Data >> Output Filepath 内。
模型文件(Saved model file name):逻辑回归保存的模型文件。存储于Simulation Data >> Output Filepath 内;
最小接受精度(Minimal accepted accuracy):此为迭代停止条件,当模型精度大于该数值时,停止训练模型;
最大迭代次数(Max iteration loops):此为迭代停止条件,但迭代次数达到该数值时,停止训练模型;
最小损失率(Minimal loss for decrease):模型迭代时的损失函数参数;
高斯先验λ(Lambda of Gaussian Prior):模型的高斯核参数;
学习率(Learning rate):梯度下降时的学习率设置。
是否更新模型(Update Model Every Iteration):
√ 如果框选此项:启动时载入已有模型进行更新。
○ 如果不框选此项:将重新训练模型。
变量权重是否采用所有迭代均值(Average weights of all iteration loops):
√ 如果框选此项:变量权重将采用所有迭代的均值更新。
○ 如果不框选此项:变量权重将采用最后一次迭代的结果。
模型阶数(Model order):免疫模型模型的算法阶数;
抗体数目(Antibody number):抗体数目;
方差参数(Variation Coefficient):差异水平;
交换概率(Exchange Probability):抗体交换基因的概率;
最大迭代次数(Max Training Iterations):模型训练的最大迭代次数;
输出精度文件(Output Accuracy File Name):输出的免疫算法模型训练精度文件,存储于Simulation Data >> Output Filepath 内。
该模块用于验证CA模拟结果,支持对每一次迭代结果计算其精度。
该功能为可选功能。
图5为CA模拟结果验证模块。
根据输入的验证数据,支持对CA模拟迭代结果进行精度评价。
图5 CA模拟验证模块
模拟起始年的土地利用重分类文件。
扩展名为tif,文件类型为Geotiff,数据类型为BYTE。
此处应该为文件的绝对路径。
验证年份(模拟目标年份)的土地利用重分类文件。
扩展名为tif,文件类型为Geotiff,数据类型为BYTE。
此处应该为文件的绝对路径。
城市发展模拟迭代结果文件,为绝对路径。
注意这里不需要设置文件扩展名,默认设置文件路径是Simulation Data >> Output Filepath,文件名为Output Settings >> Iteration Results。
CA迭代结果命名应为该类型:filename_IterNo_*.tif,其中*为迭代次数。
如果手动选择的文件缺少"_IterNo_",则GeoCA会拒绝载入。
城市发展模拟迭代的精度评价文件,为绝对路径。
注意这里不需要设置文件扩展名,默认设置文件路径是Simulation Data >> Output Filepath,文件名为Output Settings >> Iteration Results。
迭代结果会根据迭代次数自动命名为:5UrbanDevelopmentCAIterationsResult_IterNo_*.accu,其中*为迭代次数。
*.accu为文本文件,可以用记事本打开,GeoCA自动输出混淆矩阵、kappa系数、各类的错分和误分误差、各类的用户和生产者精度。以及Figure-of-Merit(FoM),FoM的用户精度和生产者精度。
该模块为一个CA的典型应用,用于分析某类用地在城市发展过程中被侵蚀的比例,及被侵蚀的分布制图。
该功能为可选功能。
图6为基于CA模拟结果的用地侵蚀制图和分析模块。
根据输入的CA模拟迭代结果和第三方土地利用数据,进行用户选择的用地开展侵蚀分析和制图。
图6 用地侵蚀制图和分析模块
输入的第三方土地利用文件,为绝对路径。
文件类型为Geotiff,数据类型建议为BYTE。
在第三方土地利用文件中,需要被分析的用地侵蚀情况。
可以输入多个用地代码用于分析,每个代码用英文逗号隔开。
城市发展模拟迭代结果文件,为绝对路径。
注意这里不需要设置文件扩展名,默认设置文件路径是Simulation Data >> Output Filepath,文件名为Output Settings >> Iteration Results。
CA迭代结果命名应为该类型:filename_IterNo_*.tif,其中*为迭代次数。
如果手动选择的文件缺少"_IterNo_",则GeoCA会拒绝载入。
输出的用地侵蚀结果文件集,为绝对路径。
注意这里不需要设置文件扩展名,默认设置文件路径是Simulation Data >> Output Filepath,文件名为"7FarmlandAnalysis"。
迭代结果会根据迭代次数自动命名为:7FarmLandAnalysis_IterNo_*.tif,其中*为迭代次数。
侵蚀结果文件为Geotiff,数据类型为BYTE。
统计的用地侵蚀比例可以在log文件中查询。
该模块为参数的载入、输出和执行。
图7为模型的执行按钮集。
支持载入、保存GeoCA参数文件和运行模拟流程。
图7 模型执行按钮集
支持载入已有的参数文件。
参数文件为xml格式。
支持保存用户设置的参数。
参数文件为xml格式。
在用户保存设置参数后,点击该按钮会执行整个模拟过程。
模型执行时,将会自动跳转到处理日志输出模块。
注意:只有将参数保存后,该按钮才会成为有效状态。
该模块为模型执行时的日志输出和显示。
图8为模型执行时的日志输出模块。
日志文件将会自动保存在输出路径(Simulation Parameters >> Output Filepath)的logs文件夹中。
*.log 文件为文本文件,可以用记事本打开查看。
图8 模型执行时的日志输出模块
为了让用户更快的了解GeoCA的功能和文件需求,GeoCA提供了一套测试数据集和测试参数文件。
测试数据集位置位于程序目录下的 ./WUHAN_DATA 文件夹中(图9)。
对应的测试参数文件是程序目录下的 ./sim_params.xml(图10)。
可以采用GeoCA提供的参数载入、保存和模型执行模块,载入参数并保存参数(到第三方文件)后可以直接执行。
图9 测试数据和参数所在位置
图10 Notepad++打开测试参数文件
文件格式:Geotiff 带投影坐标信息
数据类型:BYTE、UINT16、FLOAT32,单波段
文件说明:无
文件格式:文本文件
数据类型:txt或csv
文件说明:
以逗号分隔的文本文件,建议为英文或数字,不要出现中文。
第一行为:DN,NAME,TYPE_ID,RE_TYPE,RE_TYPE_ID,COMMENTS
DN:土地利用数据中对应的数值(DN值)
NAME:土地利用/土地覆被名称
TYPE_ID:1~N,根据土地利用类型数量编号
RE_TYPE:NON_URBAN_AREA(非城市用地)、URBAN_AREA(城市用地)、PROTECTED_AREA(保护用地)
RE_TYPE_ID:NON_URBAN_AREA(0)、URBAN_AREA(1)、PROTECTED_AREA(-1)
COMMENTS:备注,可无
文件格式:Geotiff 带投影坐标信息
数据类型:BYTE,数值范围0-3,单波段
文件说明:根据土地利用数据代码文件将土地利用数据文件重分类。
数据代码:
0 未知用地
1 城市用地
2 非城市用地
3 保护用地
文件格式:Geotiff 带投影坐标信息
数据类型:FLOAT32,单波段
文件说明:空间辅助数据文件,如距离城市中心距离、距离主要公路距离、路网密度等。
数量限制:不超过用户设置的随机点个数*2(默认为5000,因此输入超过10000个空间辅助数据模型会存在很大误差)。
文件格式:Geotiff 带投影坐标信息
数据类型:FLOAT32,单波段
文件说明:乘在总体概率文件Pg上的附加概率文件。
文件格式:Geotiff 带投影坐标信息
数据类型:BYTE,数值范围0-9,单波段
文件说明:根据两期土地利用重分类文件制作的城市转换文件。
数据代码:城市转换代码
0 未知转变
1 非城市用地转换为城市用地
2 非城市用地未转变
3 非城市用地转换为保护用地
4 城市用地未转变
5 城市用地转换为非城市用地
6 城市用地转换为保护用地
7 保护用地转换为城市用地
8 保护用地转换为非城市用地
9 保护用地未转变
参考“输入数据 >> 土地利用重分类数据文件”。
文件格式:Geotiff 带投影坐标信息
数据类型:BYTE,数值范围0-2,单波段
文件说明:根据土地利用数据代码文件制作的城市适宜性转变文件。
数据代码:
0 不允许转变为城市用地
1 允许转变为城市用地
2 保护区域(用户决定是否可以转变)
文件格式:文本文件
数据类型:txt
文件说明:
第一行为随机点数量,变量数量,转变类型数量
Longitude 经度
Latitude 纬度
Feature-(nFID+1) 第nFID个特征值
ClassiID 城市转换代码(详见“城市转换文件”)
文件格式:Geotiff 带投影坐标信息
数据类型:FLOAT32,数值范围0-1,单波段
文件说明:非城市用地、保护用地转化为城市用地的概率。
文件格式:Geotiff 带投影坐标信息
数据类型:FLOAT32,数值范围0-1,9波段
文件说明:非城市用地、保护用地和城市用地相互转换的概率。
波段说明:
1 非城市用地转换为城市用地
2 非城市用地未转变
3 非城市用地转换为保护用地
4 城市用地未转变
5 城市用地转换为非城市用地
6 城市用地转换为保护用地
7 保护用地转换为城市用地
8 保护用地转换为非城市用地
9 保护用地未转变
文件格式:Geotiff 带投影坐标信息
数据类型:BYTE,数值范围0-3,单波段
文件说明:模拟结果文件集。文件名中有“_IterNo_*.tif”,*为迭代次数。
数据代码:
0 未知用地
1 城市用地
2 非城市用地
3 保护用地
文件格式:文本文件
数据类型:txt
文件说明:规则挖掘模型精度报告。第一行为报告生成时间。
指标说明:
rel cls error 相对分类精度
avgce 平均交叉熵
rms error 均方根误差(RMSE)
avg error 平均误差
avg rel error 平均相对误差
oob-* 袋外误差(随机森林)
Top vars 变量重要性排序(随机森林)
Var importances 变量重要性值(随机森林)
Coefficients 变量权重参数(逻辑回归)
Number of independent variables 独立变量个数(逻辑回归)
Number of classes 类别个数(逻辑回归)
参考“输入数据 >> 土地利用重分类数据文件”。
参考“输出数据 >> 模拟结果文件集”
文件格式:文本文件(扩展名为*.accu)
数据类型:accu
文件说明:模拟结果精度评价文件集。文件名中有“_IterNo_*.accu”,*为迭代次数(图11)。第一行为评价的模拟结果文件名,第二行为报告生成时间。
指标说明:
Confusion Matrix 混淆矩阵
Overall Accuracy 总体精度
Kappa Kappa系数
Commission Error 错分误差
Omission Error 漏分误差
Mapping Accuracy 制图精度
User Accuracy 用户精度
FOM 品质因子Figure-of-Merit
FOM_PA 基于FOM的生产者精度
FOM_UA 基于FOM的用户精度
图11 模拟精度文件
参考“输入文件 >> 土地利用数据文件”。
参考“输出文件 >> 模拟结果文件集”。
文件格式:Geotiff 带投影坐标信息
数据类型:BYTE,数值范围0-2,单波段
文件说明:用地在未来的侵蚀情况空间制图。文件名中有“_IterNo_*.tif”,*为迭代次数(图11)。侵蚀比例可以在日志文件中查看(图12)。
数据代码:
0 未知
1 已被城市用地侵蚀
2 未被城市用地侵蚀
图12 日志文件中的用地侵蚀分析输出
日志文件为程序运行时的输出文件,可以在GeoCA的处理日志输出模块实时查看。
日志文件默认保存在 Output Filepath 的logs文件夹中(图13)。
日志文件的命名格式为“HPSCIL_SIM_GEOCA_V2_小时_分钟_秒_日期.log”,文件名中的时间为程序执行的时间。
日志文件可通过记事本打开(图14)。
图13 日志文件夹
图14 日志文件内容
参数文件为XML格式。
XML文件注释可查看程序目录下的 .\sim_params.xml 内的注释。
可以直接修改XML文件,修改程序目录下的 .\run.bat 直接执行模型。
如果你在使用中遇到问题,请及时和我们联系。
请在邮件中附上模型导出的参数文件(*.xml)和模型执行错误时的日志文件(*.log)。
[1] Chen, D., Zhang, Y., Yao, Y., Hong, Y., Guan, Q., & Tu, W. (2019). Exploring the spatial differentiation of urbanization on two sides of the Hu Huanyong Line--based on nighttime light data and cellular automata. Applied Geography, 112, 102081.
[2] Zhang, D., Liu, X., Wu, X., Yao, Y., Wu, X., & Chen, Y. (2019). Multiple intra-urban land use simulations and driving factors analysis: a case study in Huicheng, China. GIScience & Remote Sensing, 56(2), 282-308.
[3] Yao, Y., Liu, X., Zhang, D., Liang, Z., & Zhang, Y. (2017). Simulation of Urban Expansion and Farmland Loss in China by Integrating Cellular Automata and Random Forest. arXiv preprint arXiv:1705.05651.
[4] He, Y., Ai, B., Yao, Y., & Zhong, F. (2015). Deriving urban dynamic evolution rules from self-adaptive cellular automata with multi-temporal remote sensing images. International Journal of Applied Earth Observation and Geoinformation, 38, 164-174.
[5] Li, X., & Yeh, A. G. O. (2002). Neural-network-based cellular automata for simulating multiple land use changes using GIS. International Journal of Geographical Information Science, 16(4), 323-343.