您的当前位置:首页>关注 > 正文

QGIS|构建选址模型 模型需求分析:天天消息

来源:CSDN 时间:2022-12-21 13:37:32

选址模型是GIS经典的空间分析模型,也是GIS最擅长解决的问题之一。选址在生产生活有着广泛的应用,如餐饮企业(麦当劳/肯德基)选址、超市、医院、物流仓储、甚至核电站选址等。选址的好坏直接影响到服务方式、服务质量、服务效率、服务成本等,从而影响到利润和市场竞争力。


(资料图片)

本文以飞机场停机坪选址为例,模拟实际生活中的决策约束条件,使用QGIS模型构建器建立选址模型,详细演示分析和建模过程,得到选址结果。(文末附有示范数据下载地址)

01 模型需求分析

本文的需求背景简要描述如下:

航空公司想在Nueces县现有的机场中查找一个合适的位置,为自己公司的直升飞机修建停机坪,要求如下:

不能修建在建成区内,以免影响市民的日常生活。

为了方便飞行员通勤,最好在城市5公里范围内。

距离县级道路不超过2公里。

距离水域不超过800米。

现有的数据为:

县级行政区划面图层,县名为COUNTY字段。

水系图层。

道路图层,道路等级存储在RTTPY字段中,取值为”C“表示县级道路。

城市建成区面图层。

飞机场点图层。

分析需求,转化为GIS语言,则选址模型变为步骤:

从行政区划图层中按属性提取出Nueces县要素。

按Nueces县的位置提取位于该县的机场。

从城市建成区面图层按属性提取出城市Corpus Christi面要素,对该要素做5000米的缓冲区,然后使用缓冲区将建成区擦除。

从道路图层按属性提取县级道路,然后对提取结果做2000米缓冲区。

对水系图层做800米缓冲区。

将城市建成区处理结果、道路缓冲区和水系缓冲区做叠加分析,得到的面多边形即为满足需求的区域。

使用满足需求的区域裁剪机场图层,即可得到适宜修建停机坪的机场。

下面使用QGIS模型构建器将上述步骤构建为模型。

02 打开数据

在【浏览】面板中定位到示范数据,拖拽到地图窗口中。

在【图层】面板调整图层顺序,从下到上依次为:Counties、CityBoundaries、Water_features、Roads、Airports。

03 模型构建器界面介绍

点击菜单【处理】->【模型构建器…】,打开【处理模型】窗口。

【处理模型】窗口由上方的工具栏、左侧的操作面板和右边的模型构建主窗口组成。

工具栏提供打开模型、保存模型、浏览模型和运行模型等功能。

左上方为模型变量定义区域,可以把需要重复使用的字符串或者数值定义为变量,使用变量可以提高工作效率。

中间为模型特性,用于设置模型的名称和所属分组。名称和分组决定了模型在【处理工具箱】面板中所处的位置,方便查找和调用。

左下方是模型构建元素面板,分为【输入】和【算法】两个标签页。

要新建一个模型,只需设置模型的名称和所在的分组,点击工具栏的【保存】按钮设置存储路径即可。例如本文新建的模型名称为“停机坪选址模型”,显示在【处理工具箱】的【我的模型】节点下。

04 提取县级区划

建模第一步:从全部行政区划中按属性提取出Nueces县要素。

将左侧的操作面板切换到【输入】标签页,可以看到QGIS的模型提供矢量字段、地图图层、坐标参照系(CRS)、字段映射器、字符串、布尔型等输入参数类型。我们需要为县图层定义一个输入参数,所以找到“+矢量图层”拖拽到右边窗口中。

在弹出的【矢量图层参数定义】对话框中,设置如下参数:

参数名称:“县 图层”。

几何图形类型:“多边形”。

勾选“强制”,表示该参数在模型运行时必须提供,不能为空。

点击【OK】完成参数定义设置。

可以看到模型窗口中用黄色方框绘制出了“县 图层”参数,双击该方框可调整参数。

为了按字段筛选县级区划,需要定义矢量字段(Vector Field)参数,选中“+向量场”(这里实际是“矢量字段”,翻译有误差),拖拽到右边画布中。

在参数定义对话框中,设置如下参数:

参数名称:“县名 属性”。

父图层设置:“县 图层”,表示该字段是来自参数“县 图层”的属性。

允许的数据类型:“字符串”。

默认值:“COUNTY”。

勾选“强制”复选框。

点击【OK】完成设置。

定义【按属性提取】算法参数以提取“县 图层”要素。左侧面板切换到【算法】标签页,在上方的搜索框中输入“extract”,找到【矢量选择】->【按属性提取】,拖拽到模型窗口中。

在弹出的【按属性提取】对话框中设置:

Description:提取Nueces县。

输入图层:县 图层。

选择属性:县名 属性。

操作符:=。

值:Nueces。表示提取名为“Nueces”的县。

提取后(属性):Nueces县。表示提取成功时,输出结果默认情况下保存在“Nueces县”为名称的图层中。在模型运行时,用户可以另行设定输出结果的路径和文件格式。

注意,在模型处理过程中,如果不设置输出结果的参数,则输出结果作为中间文件在内存中作为下一步骤的输入参数,不会被保存,也不会出现在地图窗口中。

可以看到窗口中增加了一个“提取Nueces县”的白色方块,表示算法,绿色方块“Nueces县”表示该算法的输出结果。至此,县级区域图层的处理结束,点击工具栏的【保存】按钮保存模型。

05 处理机场图层

建模第二步:按Nueces县的覆盖范围提取位于该县的机场点。

设置输入图层参数。切换到【输入】标签页,双击【矢量图层】添加机场图层参数,在弹出的参数定义对话框中设置:

参数名称:“机场 图层”。

几何图形类型:点。

勾选“强制”复选框。

点击【OK】完成设置。

使用裁剪算法提取处于县范围内的机场。切换到【算法】标签页,在搜索框中输入“clip”,找到【矢量叠加】->【裁剪】,拖拽到窗口中。

在【裁剪】对话框中设置参数如下:

Description:裁剪机场

输入图层:机场 图层

叠加图层:"提取后(属性)" from algorithm "提取Nueces县"。

其他参数保持默认即可,点击【OK】完成设置。

完成机场图层裁剪后,模型如下:

06 处理城市建成区面图层

模型构建第三步:处理城市建成区面图层,即根据需求从城市建成区面图层按属性提取出城市Corpus Christi面要素,对该要素做5000米的缓冲区,然后在缓冲区面将建成区擦除。

添加输入图层参数。切换到【输入】标签页,双击【矢量图层】,参数定义如下:

参数名称:城市区域 图层。

几何图形类型:多边形。

勾选”强制“复选框。

点击【OK】完成设置。

添加字段参数。双击【输入】标签页的参数【向量场】,设置城市区域属性参数如下:

参数名称:城市区域 属性。

父图层:城市区域 图层。

允许的数据类型:字符串。

默认值:NAME。

勾选”强制“复选框。

点击【OK】按钮完成设置。

切换到【算法】标签页,双击【矢量选择】->【按属性提取】,参数设置如下:

Description:提取Corpus Christi市。

输入图层:城市区域 图层。

选择属性:城市区域 属性。

操作符:=。

值:Corpus Christi。

其他参数保持默认即可。

点击【OK】完成设置。

使用缓冲区分析计算距离城市5000米的覆盖范围。在【算法】标签页找到【矢量几何图形】->【轮廓】(buffer),双击弹出参数设置对话框,参数定义如下:

Description:Corpus Christi缓冲区。

输入图层:"提取后(属性)" from algorithm "提取Corpus Christi市"。

栅格距离结果:5000。

融合结果:是。

其他参数保持默认,点击【OK】完成设置。

使用差分算法,去除建成区域范围,得到城市区域5000米内不属于建成区的环状地带。找到【矢量叠加】->【差分】算法,双击,设置参数如下:

Description:差分Corpus Christi市。

输入图层:"缓冲区建立后" from algorithm "Corpus Christi缓冲区"。

叠加图层:"提取后(属性)" from algorithm "提取Corpus Christi市"。

其他参数保持默认,点击【OK】完成设置。

此时,模型的全图如下:

07 处理道路图层

模型构建第四步:处理道路图层,即从道路图层按属性提取县级道路,然后对提取结果做2000米缓冲区。

添加道路图层输入参数。在【输入】标签页双击【矢量图层】,参数定义如下:

参数名称:道路 图层。

几何图形类型:线条。

勾选”强制“复选框。

点击【OK】完成设置。

添加用于提取道路的属性参数。在【输入】标签页双击【向量场】,在弹出对话框设置参数定义:

参数名称:道路 属性。

父图层:道路 图层。

允许的数据类型:字符串。

默认值:RTTYP。

勾选”强制“复选框。

点击【OK】完成设置。

使用【按属性提取】提取出县级道路。切换到【算法】标签页,找到【矢量提取】->【按属性提取】,双击,在弹出的对话框中定义如下参数:

Description:提取县域道路。

输入图层:道路 图层。

输入属性:道路 属性。

操作符:=。

值:C。

其他参数保持默认,点击【OK】按钮完成设置。

使用缓冲区算法计算出道路2000米范围的区域。找到【矢量几何图形】->【轮廓】算法,双击,在弹出对话框设置如下参数:

Description:道路缓冲区。

输入图层:"提取后(属性)" from algorithm "提取县域道路"。

栅格距离结果:2000.000000。

融合结果:是。

其他参数保持默认,点击【OK】完成设置。

道路处理完成后,模型全貌如下图:

08 处理水系图层

模型构建第五步:处理水系图层,即对水系图层做800米缓冲区。

添加水系图层输入参数。双击【矢量图层】,在弹出的参数定义对话框中设置:

参数名称:水要素图层。

几何图形类型:线条。

勾选”强制“复选框。

点击【OK】完成设置。

使用缓冲区计算水系800米范围区域。双击【矢量几何图形】->【轮廓】,在弹出对话框中设置如下参数:

Description:水要素缓冲区。

输入图层:水要素图层。

栅格距离结果:800.000000。

融合结果:是。

其他参数保持默认,点击【OK】按钮完成设置。

09 叠加分析,找到满足综合条件的区域

使用相交算法计算出城市建成区、道路缓冲区和水系缓冲区的共同部分。点击【矢量叠加】->【相交(intersection)】,在弹出对话框中设置:

Description:相交。

输入图层:"差分(difference)" from algorithm "差分Corpus Christi市"。

叠加图层:"缓冲区建立后" from algorithm "道路缓冲区"。

由于需要用城市区域叠加道路、河流两个图层,因此要设置【Parent Algorithm】参数,表示多个图层来源。点击【Parent Algorithm】右侧的【…】按钮,在 弹出的多项选择框中勾选”水要素缓冲区“,点击【OK】关闭多项选择对话框。

在【相交】对话框中点击【OK】完成设置。

使用裁剪算法找出满足条件的机场。在【算法】标签页双击【矢量叠加】->【裁剪】,在弹出对话框中设置如下参数:

Description:用适宜区域裁剪机场。

输入图层:"裁剪后" from algorithm "裁剪机场"。

叠加图层:"相交(intersection)" from algorithm "相交"。

裁剪后:最终选址方案。

其他参数保持默认,点击【OK】完成设置。

模型最终全图如下:

10 运行模型,得到选址结果

点击工具栏【保存】按钮,保存模型。点击工具栏【运行】按钮,弹出【停机坪选址模型】对话框。

按照下图依次选择对应的参数,点击【运行】按钮,运行模型。

切换到【记录】标签页,可以查看模型运行过程的详细输出。

等待运行结束后,点击【Close】关闭对话框,返回地图主窗口。

可以看到【图层】面板中新增了”Nueces县“和”最终选址方案“两个图层,其中,”最终选址方案“图层代表模型建议的停机坪选址位置。

11 小结&示范数据下载

使用模型构建器做选址分析的优点在于:一旦模型建立完成,可以反复微调模型的输入参数,模拟不同的限制条件选择方案。例如,当将距离道路2000米修改为1500米时,会导致找不到建立停机坪的机场。而实际工作中,决策约束条件经常需要调整,模型的参数也随之变化,此时只需要在运行模型时改变参数,其他步骤均不需要重新设置,大大方便了决策过程。

然而,不同行业对选择条件的需求各不相同。例如,咖啡店的选址,一般要考虑附近是否有大商场、与高级写字楼的距离、朝向(路南还是路北)、甚至考虑坡向(上坡的位置可增加进入店内的几率)。又如核电站选址,则需要考虑与居民点的距离、附近是否有自然灾害风险、对生态环境的影响、紧急情况疏散等。因此,在实际工作中应根据具体的选址需求构建模型,才能得到最佳的选址方案,为决策提供参考。

本文示范数据和模型下载地址:

链接:https://pan.baidu.com/s/1QQJwp3XrbzFJKKoLK044JA

提取码:lf56

版权声明

本文为参考Kurt Menke等编写的书《Discover QGIS 3.x》中案例改编而成,如有不妥,请联系删除。

欢迎转载,转载时请注明出处。

标签:

最新新闻:

新闻放送
Top