GIS在网络分析中的应用:设施选址(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 自动化建模,会更稳妥。