一、背景

合理的学校空间位置布局,有利于学生的上课与生活。学校的选址问题需要考虑地理位置、学生娱乐场所配套、与现有学校的距离间隔等因素,从总体上把握这些因素能够确定出适宜性比较好的学校选址区。

二、目的

通过练习,熟悉ArcGIS栅格数据距离制图、成本距离加权、数据重分类、多层面合并等空间分析功能﹔熟练掌握利用ArcGIS空间分析功能,分析和结果类似学校选址的实际应用问题。

三、数据

(1) landuse (土地利用图);

(2) dem(地面高程图);

(3) rec _ sites(娱乐场所分布图);

(4) school(现有学校分布图)。

(\Chp8 \ Ex1 \)

四、要求

(1)新学校选址需注意如下几点:①新学校应位于地势较平坦处;②新学校的建立应结合现有土地利用类型综合考虑,选择成本不高的区域;③新学校应该与现有娱乐设施相配套,学校距离这些设施越近越好﹔④新学校应避开现有学校,合理分布。

(2)各数据层权重比为:距离娱乐设施占0.5,距离学校占0.25,土地利用类型和地势位置因素各占0.125。

(3)实现过程运用ArcGIS的扩展模块( extension)中的空间分析( spatial ana-lyst)部分功能,具体包括:坡度计算、直线距离制图功能、重分类及栅格计算器等功能完成。

(4)给出适合新建学校的适宜地区图,并作简要分析。

五、实现流程图

ArcGIS中实现学校选址分析,首先利用现有学校数据集、现有娱乐场所数据集和高程数据派生出坡度数据,以及到现有学校、娱乐场所距离数据集。然后重分类数据集到相同的等级范围,再按照上述数据集在学校选址中的影响率赋权重值,最后合并这些数据即可创建显示新学校适宜位置分布的地图。学校选址的逻辑过程主要包括四个部分(如下图所示,结果中深色部分为学校候选区)。

(1)数据准备,确定需要哪些数据作为输人,包括高程数据(dem)、土地利用数据(landuse)、现有学校数据(school)娱乐场所数据(rec_ sites) ;

(2)派生数据集,从现存数据派生出能提供学校选址的原始成本数据,包括坡度数据、到现有学校距离数据集和到娱乐场所数据集;

(3)重分类各种数据集,消除各成本数据集的量纲影响,使各成本数据具有大致相同的可比分类体系。各成本数据均按等间距分类原则分为1~10级,级数越高适宜性越好﹔

(4)给各数据集赋权重。必要的话在适宜性模型中影响比较大的数据集赋比较高权重,然后合并各数据集合以寻找适宜位置。

六、模型构建器

七、ArcPy实现

# -*- coding: utf-8 -*-
# ---------------------------------------------------------------------------
# 8-1 学校选址.py
# Created on: 2021-10-12 13:19:17.00000
# (generated by ArcGIS/ModelBuilder)
# Description:
# --------------------------------------------------------------------------- # Import arcpy module
import arcpy
from arcpy import Raster
import os
import shutil
import time print time.asctime()
path = raw_input("请输入数据所在文件夹的绝对路径(如果是数据库,则带上数据库名):").decode("utf-8")
if "db" in path:
paths = os.path.split(path)[0] + '\\result'
else:
paths = path + "\\result"
# 开始计时
time_start = time.time()
if not os.path.exists(paths):
os.mkdir(paths)
else:
shutil.rmtree(paths)
os.mkdir(paths) # Local variables:
rec_sites = path + "\\rec_sites"
dem = path + "\\dem"
landuse = path + "\\landuse"
school = path + "\\school"
# 温馨建议:输出文件的名称不能超过13个字符
Direct_grid1 = "Direct_grid1"
Reverse_grid1 = "Reverse_grid1" Direct_grid2 = "Direct_grid2"
Reverse_grid2 = "Reverse_grid2"
Dist_recsites = "Dist_recsites"
Re_recsite = "Re_recsite"
Dist_schools = "Dist_schools"
Re_schools = "Re_schools" Slope_dem = "Slope_dem"
Re_slope = "Re_slope" land_use = "land_use"
Re_landuse = "Re_landuse"
site_result = "学校选址结果" # Set Geoprocessing environments
print "Set Geoprocessing environments"
arcpy.env.scratchWorkspace = paths
arcpy.env.workspace = paths
arcpy.env.extent = landuse
arcpy.env.cellSize = dem
arcpy.env.mask = landuse # Process: 要素转栅格
print "Process: 要素转栅格"
arcpy.FeatureToRaster_conversion(landuse, "Land_use", land_use, "5") # Process: 重分类
print "Process: 重分类"
arcpy.gp.Reclassify_sa(land_use, "Land_use", "'city center' 3;transnational 7;public 10;vegetable 4;agriculture 5;forest 2;'barren land' 1", Re_landuse, "DATA") # Process: 坡度
print "Process: 坡度"
arcpy.gp.Slope_sa(dem, Slope_dem, "DEGREE", "1", "PLANAR", "METER") # Process: 重分类 (2)
print "Process: 重分类 (2)"
arcpy.gp.Reclassify_sa(Slope_dem, "Value", "0.108518 6.291646 10;6.291646 10.751648 9;10.751648 15.131917 8;15.131917 19.819941 7;19.819941 24.931349 6;24.931349 30.529348 5;30.529348 36.494091 4;36.494091 42.837433 3;42.837433 50.637821 2;50.637821 71.992943 1", Re_slope, "DATA") # Process: 欧氏距离
print "Process: 欧氏距离"
arcpy.gp.EucDistance_sa(rec_sites, Dist_recsites, "", dem, Direct_grid1, "PLANAR", "", Reverse_grid1) # Process: 欧氏距离 (2)
print "Process: 欧氏距离 (2)"
arcpy.gp.EucDistance_sa(school, Dist_schools, "", dem, Direct_grid2, "PLANAR", "", Reverse_grid2) # Process: 重分类 (3)
print "Process: 重分类 (3)"
arcpy.gp.Reclassify_sa(Dist_recsites, "Value", "0 61.846584 10;61.846584 111.018013 9;111.018013 158.113876 8;158.113876 206.155289 7;206.155289 256.320099 6;256.320099 309.273346 5;309.273346 366.230804 4;366.230804 427.463440 3;427.463440 492.544403 2;492.544403 614.837402 1", Re_recsite, "DATA") # Process: 重分类 (4)
print "Process: 重分类 (4)"
arcpy.gp.Reclassify_sa(Dist_schools, "Value", "0 93.941475 10;93.941475 155.724121 9;155.724121 212.896683 8;212.896683 269.258240 7;269.258240 326.955658 6;326.955658 388.490662 5;388.490662 454.009918 4;454.009918 521.176575 3;521.176575 598.539917 2;598.539917 738.782776 1", Re_schools, "DATA") # Process: 栅格计算器
# arcpy.gp.RasterCalculator_sa("\"%Re_recsite%\" * 0.5 + \"%Re_schools%\" * 0.25 + \"%Re_slope%\" * 0.125 + \"%Re_landuse%\" * 0.125", site_result) # Process: 乘运算、加运算
print "Process: 乘运算、加运算"
(Raster('Re_recsite') * 0.5 + Raster('Re_schools') * 0.25 + Raster('Re_slope') * 0.125 + Raster('Re_landuse') * 0.125).save(site_result) save = [u"学校选址结果"]
rasters = arcpy.ListRasters()
for raster in rasters:
if raster.lower() not in save:
print u"正在删除{}图层".format(raster)
arcpy.Delete_management(raster)
# 结束计时
time_end = time.time()
# 计算所用时间
time_all = time_end - time_start
print time.asctime()
print "执行完毕!>>><<< 共耗时{:.0f}分{:.2f}秒".format(time_all // 60, time_all % 60)

八、结果





实验结束 byebye~

学校选址(ArcPy实现)的更多相关文章

  1. ArcGIS案例学习笔记2_1_学校选址适宜性分析

    ArcGIS案例学习笔记2_1_学校选址适宜性分析 计划时间:第二天上午 目的:学校选址,适宜性分析 内容:栅格数据分析 教程:pdf page=323 数据:chapter8/ex1/教育,生活,土 ...

  2. GIS大讲堂内所有讲座的索引(更新至2008年6月26日)(转)

    转自:http://www.cnblogs.com/xiexiaokui/archive/2008/11/20/1337934.html GIS大讲堂内所有讲座的索引(更新至2008年6月26日)   ...

  3. ArcGIS案例学习笔记2_1

    ArcGIS案例学习笔记2_1 联系方式:谢老师,135_4855_4328,xiexiaokui#qq.com 时间:第二天上午 案例1:学校选址 内容:栅格数据分析 教程:pdf page=323 ...

  4. ArcMap操作练习题目及答案

    题目: 1.主观题(20分)用文字说明中学选址的过程,并说明分析过程中所用的空间分析方法和分析工具. 2.主观题(10分)计算目标区内道路网的密度.(数据框1) 3.主观题(20分)对roadnet里 ...

  5. zz《百度地图商业选址》

    作者 | 阚长城 编辑 | 张慧芳 题图 | 站酷海阔 人类几千年的文明催生了城市的发展,计算机与复杂科学带给我们新的资源——大数据.罗马非一日建成,人力和时间成本极大,但试想一下,如果有了大数据,罗 ...

  6. 寻找最佳路径(ArcPy实现)

    一.背景 随着社会经济发展需求,公路的重要性日益提高.在一些交通欠发达的地区,公路建设迫在眉睫.如何根据实际地形情况设计出比较合理的公路规划,是一个值得研究的问题. 二.实验目的: (1)通过练习,熟 ...

  7. arcpy+PyQt+py2exe快速开发桌面端ArcGIS应用程序

    前段时间有一个项目,大体是要做一个GIS数据处理工具. 一般的方法是基于ArcObjects来进行开发,因为我对ArcObjects不太熟悉,所以就思考有没有其他简单快速的方法来做. 在查看ArcGI ...

  8. BZOJ 1226: [SDOI2009]学校食堂Dining

    1226: [SDOI2009]学校食堂Dining Time Limit: 10 Sec  Memory Limit: 259 MBSubmit: 730  Solved: 446[Submit][ ...

  9. Atitit 教育与培训学校 的计划策划 v4 qc18

    Atitit 教育与培训学校 的计划策划 v4 qc18 1.1. 版本历史12. 教育历史的前世今生12.1. 自学vs 家庭学校vs 私立学校vs 公立学校模式 vs 企业内部学校 vs 其他商业 ...

随机推荐

  1. go协程调度

    目录 前言 1. 线程池的缺陷 2.Goroutine 调度器 3.调度策略 3.1 队列轮转 3.2 系统调用 3.3 工作量窃取 4.GOMAXPROCS设置对性能的影响 参考 前言 Gorout ...

  2. 手把手教你在 SuperEdge 上用 EdgeX Foundry 接入 IoT 设备

    作者 连泓乔,华南理工计算机科学与技术大三在读,主要研究容器领域,Kubernetes.容器等云原生技术爱好者,SuperEdge 优秀贡献者. 王冬,腾讯云研发工程师,专注于 Kubernetes. ...

  3. 洛谷P2115 Sabotage G 题解

    题目 [USACO14MAR]Sabotage G 题解 本蒟蒻又来了,这道题可以用二分答案来解决.我们可以设答案最小平均产奶量为 \(x \ (x \in[1,10000])\) .然后二分搜索 \ ...

  4. Http协议 压缩

    先说结论:Request和Response可以设置gzip压缩从而节省流量/带宽,这是一个不常见的问题.具体可见连接:HTTP 协议之压缩 最近测试代理服务器时,意外的发现使用urlopen请求百度首 ...

  5. linux系列之:告诉他,他根本不懂kill

    目录 简介 使用kill来杀死进程 kill的深入用法 僵尸进程和kill java thread dump 总结 简介 和很多程序员打过交道,这些程序员可能熟知for遍历的好几种写法,但是却对写出来 ...

  6. 一文搞懂Python Unittest测试方法执行顺序

    大家好~我是米洛! 欢迎关注我的公众号测试开发坑货,一起交流!点赞收藏关注,不迷路. Unittest unittest大家应该都不陌生.它作为一款博主在5-6年前最常用的单元测试框架,现在正被pyt ...

  7. 第七章:网络优化与正则化(Part1)

    任何数学技巧都不能弥补信息的缺失. --科尼利厄斯·兰佐斯(Cornelius Lanczos) 匈牙利数学家.物理学家 文章相关 1 第七章:网络优化与正则化(Part1) 2 第七章:网络优化与正 ...

  8. 机器学习——主成分分析(PCA)

    1 前言 PCA(Principal Component Analysis)是一种常用的无监督学习方法,是一种常用的数据分析方法. PCA 通过利用 正交变换 把由 线性相关变量 表示的观测数据转换为 ...

  9. k8s工作负载资源之deployment

    首先我们要理解:一个应用跑在k8s集群上了,那么这个应用就是一个工作负载(workloads). 在k8s中会用pod的来承载这个应用,那么负责管理这个pod的东西就叫工作负载资源(workload ...

  10. 使用metaweblog API实现通用博客发布 之 本地图片自动上传以及替换路径

    使用metaweblog API实现通用博客发布 之 本地图片自动上传以及替换路径 通过metaweblog API 发布博文的时候,由于markdown中的图片路径是本地路径,将导致发布的文章图片不 ...