QGIS|构建选址模型-以机场选址为例

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

 

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

 

 01 模型需求分析

 

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

 

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

 

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

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

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

  • 距离水域不超过800米。

 

现有的数据为:

 

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

  • 水系图层。

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

  • 城市建成区面图层。

  • 飞机场点图层。

 

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

 

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

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

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

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

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

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

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

 

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

 

 02 打开数据

 

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

 

QGIS|构建选址模型-以机场选址为例_第1张图片

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

 

QGIS|构建选址模型-以机场选址为例_第2张图片

 

 03 模型构建器界面介绍

 

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

 

QGIS|构建选址模型-以机场选址为例_第3张图片

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

 

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

 

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

 

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

 

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

 

QGIS|构建选址模型-以机场选址为例_第4张图片

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

 

QGIS|构建选址模型-以机场选址为例_第5张图片

 

 04 提取县级区划

 

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

 

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

 

QGIS|构建选址模型-以机场选址为例_第6张图片

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

 

  1. 参数名称:“县 图层”。

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

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

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

 

QGIS|构建选址模型-以机场选址为例_第7张图片

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

 

QGIS|构建选址模型-以机场选址为例_第8张图片

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

 

QGIS|构建选址模型-以机场选址为例_第9张图片

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

 

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

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

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

  4. 默认值:“COUNTY”。

  5. 勾选“强制”复选框。

  6. 点击【OK】完成设置。

 

QGIS|构建选址模型-以机场选址为例_第10张图片

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

 

QGIS|构建选址模型-以机场选址为例_第11张图片

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

 

  1. Description:提取Nueces县。

  2. 输入图层:县 图层。

  3. 选择属性:县名 属性。

  4. 操作符:=。

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

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

 

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

 

QGIS|构建选址模型-以机场选址为例_第12张图片

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

 

QGIS|构建选址模型-以机场选址为例_第13张图片

 

 05 处理机场图层

 

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

 

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

 

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

  2. 几何图形类型:点。

  3. 勾选“强制”复选框。

  4. 点击【OK】完成设置。

 

QGIS|构建选址模型-以机场选址为例_第14张图片

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

 

QGIS|构建选址模型-以机场选址为例_第15张图片

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

 

  1. Description:裁剪机场

  2. 输入图层:机场 图层

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

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

 

QGIS|构建选址模型-以机场选址为例_第16张图片

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

 

QGIS|构建选址模型-以机场选址为例_第17张图片

 

 06 处理城市建成区面图层

 

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

 

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

 

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

  2. 几何图形类型:多边形。

  3. 勾选”强制“复选框。

  4. 点击【OK】完成设置。

 

QGIS|构建选址模型-以机场选址为例_第18张图片

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

 

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

  2. 父图层:城市区域 图层。

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

  4. 默认值:NAME。

  5. 勾选”强制“复选框。

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

 

QGIS|构建选址模型-以机场选址为例_第19张图片

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

 

  1. Description:提取Corpus Christi市。

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

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

  4. 操作符:=。

  5. 值:Corpus Christi。

  6. 其他参数保持默认即可。

  7. 点击【OK】完成设置。

 

QGIS|构建选址模型-以机场选址为例_第20张图片

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

 

  1. Description:Corpus Christi缓冲区。

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

  3. 栅格距离结果:5000。

  4. 融合结果:是。

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

 

QGIS|构建选址模型-以机场选址为例_第21张图片

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

 

  1. Description:差分Corpus Christi市。

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

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

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

 

QGIS|构建选址模型-以机场选址为例_第22张图片

此时,模型的全图如下:

 

QGIS|构建选址模型-以机场选址为例_第23张图片

 

 07 处理道路图层

 

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

 

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

 

  1. 参数名称:道路 图层。

  2. 几何图形类型:线条。

  3. 勾选”强制“复选框。

  4. 点击【OK】完成设置。

 

QGIS|构建选址模型-以机场选址为例_第24张图片

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

 

  1. 参数名称:道路 属性。

  2. 父图层:道路 图层。

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

  4. 默认值:RTTYP。

  5. 勾选”强制“复选框。

  6. 点击【OK】完成设置。

 

QGIS|构建选址模型-以机场选址为例_第25张图片

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

 

  1. Description:提取县域道路。

  2. 输入图层:道路 图层。

  3. 输入属性:道路 属性。

  4. 操作符:=。

  5. 值:C。

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

 

QGIS|构建选址模型-以机场选址为例_第26张图片

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

 

  1. Description:道路缓冲区。

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

  3. 栅格距离结果:2000.000000。

  4. 融合结果:是。

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

 

QGIS|构建选址模型-以机场选址为例_第27张图片

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

 

QGIS|构建选址模型-以机场选址为例_第28张图片

 

 08 处理水系图层

 

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

 

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

 

  1. 参数名称:水要素图层。

  2. 几何图形类型:线条。

  3. 勾选”强制“复选框。

  4. 点击【OK】完成设置。

 

QGIS|构建选址模型-以机场选址为例_第29张图片

 

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

  1. Description:水要素缓冲区。

  2. 输入图层:水要素图层。

  3. 栅格距离结果:800.000000。

  4. 融合结果:是。

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

 

QGIS|构建选址模型-以机场选址为例_第30张图片

 

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

 

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

 

  1. Description:相交。

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

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

 

QGIS|构建选址模型-以机场选址为例_第31张图片

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

 

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

 

QGIS|构建选址模型-以机场选址为例_第32张图片

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

 

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

  2. 输入图层:'裁剪后' from algorithm '裁剪机场'。

  3. 叠加图层:'相交(intersection)' from algorithm '相交'。

  4. 裁剪后:最终选址方案。

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

 

QGIS|构建选址模型-以机场选址为例_第33张图片

 

模型最终全图如下:

 

QGIS|构建选址模型-以机场选址为例_第34张图片

 

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

 

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

 

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

 

QGIS|构建选址模型-以机场选址为例_第35张图片

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

 

QGIS|构建选址模型-以机场选址为例_第36张图片

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

 

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

 

QGIS|构建选址模型-以机场选址为例_第37张图片

 

 11 小结&示范数据下载

 

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

 

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

 

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

 

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

提取码:lf56

 

版权声明

 

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

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

 

QGIS|构建选址模型-以机场选址为例_第38张图片

 

你可能感兴趣的:(QGIS实操与技巧,QGIS教程)