GIS在网络分析中的应用:设施选址(Location-Allocation)模型

GIS基础理论
Dr.GIS
wowwwai GIS研习社 · 工具流程与项目排障

GIS在网络分析中的应用:设施选址(Location-Allocation)模型,解决的是一个很常见但不容易凭经验判断的问题:在给定道路网络、需求点和候选设施点的条件下,应该把有限数量的设施放在哪里,才能让服务覆盖更合理、出行成本更低,或者服务人口最大化。

在实际项目中,设施选址不只是“在地图上找中心点”。学校、医院、消防站、物流网点、核酸采样点、快递驿站、公共停车场等设施,都受到道路通达性、服务半径、需求权重、设施容量和候选位置约束的影响。Location-Allocation 模型正是把这些约束放到网络分析框架中进行计算的一类方法。

GIS在网络分析中的应用 设施选址Location-Allocation模型示意图
Location-Allocation 设施选址模型通常基于道路网络,将需求点分配到最合适的设施点。

引言:为什么设施选址要放到网络分析中做

很多初学者会先想到用缓冲区或直线距离做设施覆盖分析。例如,以医院为中心生成 3 公里缓冲区,看哪些小区被覆盖。这个方法简单,但在城市道路环境下容易出错,因为居民真实出行不是沿直线移动,而是沿道路网络移动。

网络分析会把道路看成由节点和边组成的通行网络。边可以带有长度、时间、速度、通行方向、限行、转向成本等属性。设施选址(Location-Allocation)模型则在这个网络上寻找最优设施组合,并把需求点分配给设施点。

因此,Location-Allocation 适合回答这类问题:

  • 在 20 个候选消防站位置中,选 5 个才能覆盖最多人口?
  • 新建 3 个社区卫生服务中心,如何让居民平均出行时间最短?
  • 多个物流网点如何分配服务区域,才能降低配送距离?
  • 现有学校容量有限时,哪些居住区应该分配到哪所学校?
  • 关闭一个服务点后,哪些需求点会受到明显影响?

背景:Location-Allocation 模型适合哪些 GIS 场景

设施选址问题的核心不是“找最近点”,而是在多个候选设施之间做组合优化。一个设施点看起来位置很好,但如果它和其他设施服务范围高度重叠,整体效果可能并不好。Location-Allocation 模型关注的是全局结果。

在 GIS 项目中,常见输入数据包括:

  • 道路网络数据:道路中心线、通行方向、长度、速度、时间成本、道路等级等。
  • 需求点数据:居民小区、订单点、学校学生来源、事故点、客户点等。
  • 候选设施点:可建设地块、现有网点、备选仓库、候选医院或消防站位置。
  • 权重字段:人口数、订单量、风险等级、服务优先级、就诊需求量等。
  • 约束字段:设施容量、最大服务距离、最大服务时间、必须保留设施、必须排除设施等。

常见 GIS 软件中,ArcGIS Pro 的 Network Analyst 扩展提供了比较成熟的 Location-Allocation 工具;QGIS 可结合 ORS Tools、pgRouting、QNEAT3 或自建 PostGIS 网络进行近似分析;Python 生态中可以使用 OSMnx、NetworkX、GeoPandas、OR-Tools 等组合实现更灵活的模型。

原理:设施选址(Location-Allocation)模型如何工作

Location-Allocation 可以拆成两个关键词:Location 是选择设施位置,Allocation 是把需求点分配给设施。模型会根据道路网络成本,计算需求点到候选设施点之间的最短路径成本,然后在约束条件下选择最优设施组合。

1. 网络成本不是直线距离

网络成本可以是距离,也可以是时间。对于消防、急救、配送等场景,时间通常比距离更重要。道路拥堵、单行线、快速路入口、桥梁绕行都会让“地图上看起来很近”的两个点,在网络上变得很远。

2. 需求点可以带权重

如果一个小区有 5000 人,另一个小区有 300 人,它们在模型中不应该被同等对待。权重字段可以让模型优先服务人口更多、订单更多或风险更高的区域。

3. 候选设施点可以有限制

实际项目中,设施并不是想建在哪里就建在哪里。候选点可能来自规划用地、已有物业、现有网点或行政要求。Location-Allocation 模型通常是在候选点集合中选择指定数量的设施。

4. 目标函数决定结果偏向

不同目标函数会得到不同结果。常见目标包括:

  • 最小化阻抗:让总出行距离或总出行时间最小。
  • 最大化覆盖:在指定服务半径或服务时间内覆盖最多需求。
  • 最大化市场份额:考虑竞争设施时,尽量吸引更多需求。
  • 最小化设施数量:在满足覆盖条件的前提下,使用尽量少的设施。
  • 容量约束分配:每个设施只能服务一定数量的需求。

同一批数据,选择“最小化总出行时间”和“最大化 15 分钟覆盖人口”,结果可能不同。建模前必须先明确业务目标。

步骤:用 ArcGIS Pro 做 Location-Allocation 设施选址

下面以 ArcGIS Pro Network Analyst 的典型流程为例,说明 GIS在网络分析中的应用:设施选址(Location-Allocation)模型 如何落地。不同版本界面名称可能略有变化,但核心步骤一致。

1. 准备道路网络数据

首先需要可用于网络分析的道路网络。数据可以来自本地测绘道路、交通部门数据、商业路网或 OpenStreetMap。道路数据至少应具备可计算成本的字段,例如长度或通行时间。

  • 检查道路是否断裂,尤其是路口位置是否正确相交。
  • 检查高架、隧道、匝道是否错误连通。
  • 检查单行线、禁行、转向限制是否符合业务需求。
  • 为道路建立长度或时间字段,例如 minutes、travel_time、length_m。
  • 在 ArcGIS Pro 中构建 Network Dataset,并完成 Build Network。

如果网络数据质量较差,后续 Location-Allocation 结果再精细也没有意义。设施选址对道路连通性非常敏感,断头路、悬挂线、错误交叉会直接影响服务范围。

2. 准备需求点

需求点是需要被服务的对象。常见需求点可以是居民小区质心、人口网格中心点、订单位置、学校学生居住点、事故点或企业客户点。

建议为需求点准备以下字段:

  • DemandID:需求点唯一编号。
  • Weight:需求权重,例如人口、订单量、就诊量。
  • Name:需求点名称,便于结果检查。
  • Group:可选字段,例如行政区、街道或服务片区。

如果需求数据是面数据,例如小区边界或人口网格,需要先转换为代表点。常见做法是使用面质心,但对于不规则面或跨道路的大型小区,最好使用实际出入口点或人口分布点。

3. 准备候选设施点

候选设施点是模型可以选择的位置。它们可以是未建设的备选地块,也可以是现有网点加新增候选点。

建议为候选设施点准备以下字段:

  • FacilityID:设施点唯一编号。
  • Name:设施名称。
  • FacilityType:候选、必选、已有、竞争设施等。
  • Capacity:容量字段,例如最大服务人口或最大订单量。
  • Cost:建设成本,可用于后续综合评价。

如果某些设施必须保留,可以在模型中设置为 Required Facility;如果某些点只是候选点,则设置为 Candidate Facility。不要把所有现有点和候选点混在一起不加区分,否则结果解释会很困难。

4. 新建 Location-Allocation 分析图层

在 ArcGIS Pro 中启用 Network Analyst 后,可以新建 Location-Allocation 分析图层。创建时需要选择网络数据源,并设置阻抗字段,例如 Length 或 TravelTime。

常用参数包括:

  • Impedance:网络阻抗,通常选择距离或时间。
  • Problem Type:问题类型,例如 Minimize Impedance、Maximize Coverage。
  • Number of Facilities to Find:要选择的设施数量。
  • Default Measurement Cutoff:最大服务距离或最大服务时间。
  • Travel Direction:从需求点到设施,或从设施到需求点。

如果是居民到医院、学生到学校,常用方向是 Demand to Facility;如果是配送中心向客户配送,常用方向是 Facility to Demand。方向不同,在有单行线或通行限制的道路网络中结果可能不同。

5. 加载设施点和需求点

将候选设施点加载到 Facilities 子图层,将需求点加载到 Demand Points 子图层。加载时要注意字段映射。

  • 需求点的 Weight 字段应映射到需求权重。
  • 设施点类型应正确映射为 Candidate、Required 或 Competitor。
  • 如果使用容量约束,应确认 Capacity 字段被正确识别。
  • 点位应能成功定位到网络上,未定位点需要单独检查。

加载完成后,建议先查看未定位记录。未定位设施点或需求点不会参与分析,常见原因包括点离道路太远、坐标系不一致、网络范围不覆盖或定位容差过小。

6. 设置模型目标并运行求解

不同业务目标对应不同 Problem Type。常见配置如下:

业务问题 推荐模型目标 关键参数
让居民平均出行时间尽量短 Minimize Impedance 设施数量、时间阻抗、需求权重
15 分钟内覆盖最多人口 Maximize Coverage 服务时间阈值、人口权重、候选设施数
用最少设施达到覆盖要求 Minimize Facilities 覆盖阈值、最大阻抗、需求权重
考虑竞争门店吸引客户 Maximize Market Share 竞争设施、吸引力、距离衰减

运行 Solve 后,模型会输出被选择的设施、需求点分配结果以及连接线。连接线通常不是实际路线,而是表示需求点与设施之间的分配关系;如果要查看真实路径,需要进一步执行最短路径分析。

7. 检查和解释结果

Location-Allocation 的结果不能只看地图颜色,还要检查属性表。重点关注:

  • 哪些候选设施被选中。
  • 每个设施服务了多少需求点。
  • 每个设施承担了多少权重,例如人口或订单量。
  • 最远服务距离或最大服务时间是多少。
  • 是否存在未分配需求点。
  • 设施服务量是否超过现实容量。

如果某些需求点被分配到看起来较远的设施,不要急着判断模型错误。先检查网络方向、道路连通、单行线、阻抗字段和服务阈值。网络分析结果通常反映的是成本最优,而不是视觉距离最近。

8. 输出成果图和表格

一个可交付的设施选址分析成果,建议至少包含以下内容:

  • 候选设施点分布图。
  • 最终选中设施点分布图。
  • 需求点分配结果图。
  • 每个设施的服务人口或服务订单统计表。
  • 未覆盖需求点清单。
  • 不同方案对比表,例如选 3 个、选 5 个、选 8 个设施的效果。

在汇报中,不要只说“模型推荐这几个点”。更好的表达是:在当前道路网络、候选点、需求权重和服务半径设定下,该方案能够达到怎样的覆盖效果,以及哪些区域仍然存在服务不足。

常见坑:设施选址模型结果不可靠的原因

1. 用经纬度直接计算距离

经纬度单位是度,不是米。虽然网络分析通常会使用网络数据的成本字段,但如果长度字段是在错误坐标系下计算的,结果会明显偏差。建议在适合本地区的投影坐标系下计算长度,或使用软件可靠的测地线计算方法。

2. 把直线最近当成网络最近

很多需求点看起来离某个设施最近,但道路上可能需要绕行。尤其在河流、铁路、高速路、封闭小区、山地城市中,直线距离很容易误导设施选址。

3. 道路拓扑没有清理

道路线看起来相交,不代表网络上真的连通。GIS 中常见的拓扑问题包括端点未捕捉、重复线、断裂线、悬挂线、错误跨线连接等。这些问题会让模型出现异常绕行或不可达。

4. 需求点代表性不足

如果用行政区几何中心代表整个街道需求,可能会把需求放到山体、水面或无人区域。对于人口服务类项目,建议使用人口网格、建筑物、居住小区出入口或更精细的需求点。

5. 忽略设施容量

如果一个医院服务了过多人口,即使总出行时间较低,也可能不符合现实。容量约束是设施选址中非常关键的业务条件,尤其适用于学校、医院、仓储、停车场和政务服务中心。

6. 服务半径设置过于主观

“15 分钟生活圈”或“5 公里覆盖”并不是所有场景都适用。应结合行业标准、交通方式、城市规模和实际服务能力设定阈值。必要时可以做多个阈值的敏感性分析。

7. 没有区分新增设施和现有设施

如果项目目标是“在现有设施基础上新增 3 个点”,模型中应把现有设施设为必选,把新增点设为候选。否则模型可能会替换现有点,导致结果与业务目标不一致。

方法比较:Location-Allocation 与其他 GIS 选址方法

设施选址(Location-Allocation)模型不是唯一的选址方法。不同方法适合不同阶段和不同数据条件。

方法 适用场景 优点 局限
缓冲区分析 快速估算直线覆盖范围 简单、易解释、数据要求低 不考虑道路网络,容易高估覆盖
服务区分析 评估已有设施可达范围 能反映道路通达性 主要评价现有设施,不负责最优选点
最近设施分析 查找每个需求点最近服务点 适合分配和应急响应 不能自动选择最优设施组合
加权叠加分析 综合土地、人口、环境、成本因素 适合宏观适宜性评价 不直接计算道路服务成本
Location-Allocation 从候选点中选择最优设施组合 同时考虑选址和需求分配 依赖高质量网络和清晰业务约束

实务中常见组合是:先用加权叠加分析筛选候选区域,再生成候选设施点,最后使用 Location-Allocation 进行网络选址优化。这样既能考虑土地适宜性,也能考虑道路服务效率。

检查清单:运行设施选址模型前后要核对什么

建模前检查

  • 道路网络是否覆盖完整研究区。
  • 道路是否正确连通,关键路口是否可通行。
  • 阻抗字段是距离还是时间,单位是否统一。
  • 道路方向、单行线、限行是否需要参与分析。
  • 需求点是否位于合理位置,是否存在异常点。
  • 需求权重字段是否存在空值、负值或异常大值。
  • 候选设施点是否符合规划和建设约束。
  • 现有设施、候选设施、竞争设施是否分类正确。
  • 设施数量、服务半径、容量限制是否有业务依据。

运行后检查

  • 是否有未定位设施点或未定位需求点。
  • 是否有未分配需求点。
  • 选中的设施是否落在实际可建设位置。
  • 每个设施承担的需求是否过于不均衡。
  • 最远服务距离或最大服务时间是否可接受。
  • 结果是否受到某些异常高权重点强烈影响。
  • 不同参数方案下,选址结果是否稳定。
  • 输出地图是否清楚表达设施、需求和分配关系。

FAQ:设施选址(Location-Allocation)模型常见问题

Q1:Location-Allocation 和服务区分析有什么区别?

服务区分析通常回答“已有设施能服务到哪里”,而 Location-Allocation 回答“应该选择哪些设施点,并把需求分配给谁”。前者偏评价,后者偏优化。

Q2:设施选址一定要用道路网络吗?

不一定。如果是非常粗略的宏观规划,可以先用直线距离或栅格成本距离。但对于城市公共服务、物流配送、消防急救等场景,建议使用道路网络,否则结果容易偏离真实出行成本。

Q3:ArcGIS Pro 做 Location-Allocation 需要什么扩展?

通常需要 Network Analyst 扩展,并且要有可用的网络数据集。只有普通点线面数据还不够,必须构建或加载支持网络分析的网络数据源。

Q4:QGIS 能做设施选址(Location-Allocation)模型吗?

QGIS 本身没有完全等同于 ArcGIS Pro Network Analyst 的内置 Location-Allocation 工具,但可以结合 QNEAT3、ORS Tools、pgRouting、PostGIS、Python 和 OR-Tools 实现类似流程。关键是先计算需求点到候选设施点的网络成本矩阵,再进行优化选址。

Q5:为什么模型选中的点不是城市中心?

因为模型优化的是设定目标函数,而不是几何中心。人口权重、道路可达性、服务半径、候选点位置和设施数量都会影响结果。城市中心如果道路拥堵、候选点不足或服务范围重叠严重,未必是最优。

Q6:需求点权重应该怎么设置?

权重应来自业务需求。公共服务可以用人口、老年人口、学生数量或就诊量;物流可以用订单量、货量或客户等级;应急服务可以用风险等级或历史事件频次。不要为了让结果“好看”随意调整权重。

Q7:选几个设施最合理?

设施数量通常来自预算、政策或建设计划。如果没有固定数量,可以分别计算 1 个、2 个、3 个直到更多设施的方案,观察覆盖提升是否明显变小。这类分析常用于判断新增设施的边际收益。

Q8:Location-Allocation 结果可以直接作为规划结论吗?

不建议直接作为唯一结论。模型结果应与土地权属、建设成本、环境约束、政策要求、现场调研和公众需求结合。GIS 模型提供的是空间决策依据,而不是替代完整规划决策。

结论:把设施选址从经验判断变成可验证的 GIS 分析

GIS在网络分析中的应用:设施选址(Location-Allocation)模型 的价值,在于把候选位置、需求分布、道路通达性和服务目标放到同一个可计算框架中。它比简单缓冲区更接近真实出行,也比单纯最近设施分析更适合做方案优化。

实际使用时,最重要的不是点击哪个按钮,而是把业务问题表达清楚:服务谁、选几个、按什么成本、在多大范围内服务、是否有容量限制、哪些设施必须保留。只有这些条件明确,Location-Allocation 的结果才有解释价值。

对于 GIS 学生和初级工程师,建议先用一个小范围案例练习完整流程:整理道路网络、准备需求点、设置候选设施、运行模型、检查未分配点、输出分配统计表。掌握这个闭环后,再扩展到多方案比较、容量约束、竞争设施和 Python 自动化建模,会更稳妥。