市区择房分析(ArcPy实现)
1, 背景
如何找到环境好、购物方便、小孩上学方便的居住区地段是购房者最关心的问题。因此购房者就需要从总体上对商品房的信息进行研究分析,选择最适宜的购房地段。
2,目的
学会利用缓冲区分析和叠置分析解决实际问题。
3,数据
试验数据位于,“\Chp7\Ex_1.
4,要求
所寻求的市区是噪声要小,距离商业中心和各大名牌高中要近,是为了环境优雅离名胜古迹较近。综合上述条件,给定一个定量的限定如下:
(1)离主要市区交通要道200m之外,交通要道的车流量大,噪声产生的主要源于此(ST为道路类型中的主要市区交通要道);
(2)距大型商业中心的影响,以商业中心的大小来确定影响区域,具体是以其属性字段YUZHI;
(3)距名牌高中在750m之内,以便小孩上学便捷;
(4)距名胜古迹500m之内环境优雅;
具体流程图如下:

5,模型构建器

6,ArcPy实现
# -*- coding: utf-8 -*-
# ---------------------------------------------------------------------------
# 7-1 市区择房分析.py
# Created on: 2021-10-09 20:55:29.00000
#   (generated by ArcGIS/ModelBuilder)
# Description:
# ---------------------------------------------------------------------------
# Import arcpy module
import arcpy
import os
path = raw_input("请输入所需数据的对应绝对路径:").decode("utf-8")
paths = path + '\\result'
if not os.path.exists(paths):
    os.mkdir(paths)
# Local variables:
network = path + "\\network.shp"
network_Select_shp = "network_Select.shp"
network_Select_Buffer200_shp = "network_Select_Buffer200.shp"
Marketplace = path + "\\Marketplace.shp"
Marketplace_Buffer_shp = "Marketplace_Buffer.shp"
school = path + "\\school.shp"
school_Buffer_shp = "school_Buffer.shp"
famous_place = path + "\\famous place.shp"
famousplace_Buffer_shp = "famousplace_Buffer.shp"
suitable_shp = u"区域居住适宜性分级.shp"
# Set Geoprocessing environments
arcpy.env.scratchWorkspace = paths
arcpy.env.workspace = paths
# Process: 筛选
print "print Process: 筛选"
arcpy.Select_analysis(network, network_Select_shp, "\"TYPE\" = 'ST'")
# Process: 缓冲区
print "Process: 缓冲区"
arcpy.Buffer_analysis(network_Select_shp, network_Select_Buffer200_shp, "200 Meters", "FULL", "ROUND", "ALL", "", "PLANAR")
# Process: 添加字段
print "Process: 添加字段"
arcpy.AddField_management(network_Select_Buffer200_shp, "voice", "SHORT", "", "", "", "", "NULLABLE", "NON_REQUIRED", "")
# Process: 计算字段
print "Process: 计算字段"
arcpy.CalculateField_management(network_Select_Buffer200_shp, "voice", "-1", "VB", "")
# Process: 缓冲区 (2)
print "Process: 缓冲区 (2)"
arcpy.Buffer_analysis(Marketplace, Marketplace_Buffer_shp, "YUZHI_", "FULL", "ROUND", "ALL", "", "PLANAR")
# Process: 添加字段 (2)
print "Process: 添加字段 (2)"
arcpy.AddField_management(Marketplace_Buffer_shp, "market", "SHORT", "", "", "", "", "NULLABLE", "NON_REQUIRED", "")
# Process: 计算字段 (2)
print "Process: 计算字段 (2)"
arcpy.CalculateField_management(Marketplace_Buffer_shp, "market", "1", "VB", "")
# Process: 缓冲区 (3)
print "Process: 缓冲区 (3)"
arcpy.Buffer_analysis(school, school_Buffer_shp, "750 Meters", "FULL", "ROUND", "ALL", "", "PLANAR")
# Process: 添加字段 (3)
print "Process: 添加字段 (3)"
arcpy.AddField_management(school_Buffer_shp, "school", "SHORT", "", "", "", "", "NULLABLE", "NON_REQUIRED", "")
# Process: 计算字段 (3)
print "Process: 计算字段 (3)"
arcpy.CalculateField_management(school_Buffer_shp, "school", "1", "VB", "")
# Process: 缓冲区 (4)
print "Process: 缓冲区 (4)"
arcpy.Buffer_analysis(famous_place, famousplace_Buffer_shp, "500 Meters", "FULL", "ROUND", "ALL", "", "PLANAR")
# Process: 添加字段 (4)
print "Process: 添加字段 (4)"
arcpy.AddField_management(famousplace_Buffer_shp, "famous", "SHORT", "", "", "", "", "NULLABLE", "NON_REQUIRED", "")
# Process: 计算字段 (4)
print "Process: 计算字段 (4)"
arcpy.CalculateField_management(famousplace_Buffer_shp, "famous", "1", "VB", "")
# Process: 联合
print "Process: 联合"
arcpy.Union_analysis(u"{}\\network_Select_Buffer200.shp #;{}\\Marketplace_Buffer.shp #;{}\\school_Buffer.shp #;{}\\famousplace_Buffer.shp #".format(paths,paths,paths,paths), suitable_shp, "ALL", "", "GAPS")
# Process: 删除字段
print "Process: 删除字段"
arcpy.DeleteField_management(suitable_shp, "METERS;NAME;TYPE;L_F_ADD;R_T_ADD;CALLE;ONEWAY;L_T_ADD;R_F_ADD;FT_SPEED;TF_SPEED;TF_MINUTES;FT_MINUTES;MINUTES;SPEED;value;BUFF_DIST;ORIG_FID;ID;NAME_1;TYPE_1;YUZHI_;LABEL;value_1;BUFF_DIS_1;ORIG_FID_1;Id_1;name_12;value_12;BUFF_DIS_2;ORIG_FID_2;ID_12;NAME_12_13;LABEL_1;ADDRESS;ʱDDͨESS;ʱDDͨͨSS;ʱDDͨͨ_1;ʱDDͨͨ_2;value_1_13;BUFF_DIS_3;ORIG_FID_3")
# Process: 添加字段 (5)
print "Process: 添加字段 (5)"
arcpy.AddField_management(suitable_shp, "class", "SHORT", "", "", "", "", "NULLABLE", "NON_REQUIRED", "")
# Process: 计算字段 (5)
print "Process: 计算字段 (5)"
arcpy.CalculateField_management(suitable_shp, "class", "[voice] + [market] + [famous] + [school]", "VB", "")
ListFeatureClasses = arcpy.ListFeatureClasses()  # 统计要素类个数
for Feature in ListFeatureClasses:  # 循环遍历,删除不必要要素类
    if u"适宜" not in Feature:
        print "正在删除{}".format(Feature)
        arcpy.Delete_management(Feature)
print "运行完毕~~~"
注意:删除字段那里,如果出现错误的话,可能是乱码问题,干脆直接把删除字段这代码删除,继续执行也可以,
删除字段只是简化属性表罢了!
7,结果展示




后面对最终结果分五个等级,越绿的,说明评分越高,适宜性越好,越红的,说明评分越低,适宜性越差。区域居住适宜性分级就制作完毕了。
继续下一个实验O(∩_∩)O~~~
市区择房分析(ArcPy实现)的更多相关文章
- ArcGIS案例学习1_2
		
ArcGIS案例学习1_2 联系方式:谢老师,135_4855_4328, xiexiaokui#qq.com 时间:第一天下午 案例1:矢量提取,栅格提取和坐标系投影变换 目的:认识数据类型 教程: ...
 - Analysis Tools(分析工具)
		
分析工具 1.叠加分析 # Process: 交集取反 arcpy.SymDiff_analysis("", "", 输出要素类, "ALL" ...
 - 熊猫分布密度制图(ArcPy实现)
		
一.背景 大熊猫是我国国家级珍惜保护动物,熊猫的生存必须满足一定槽域(独占的猎食与活动范围)条件.因此,科学准确的分析熊猫的分布情况,对合理制定保护措施和评价保护成效具有重要意义. 二.目的 通过练习 ...
 - 白话陈述之——从python脚本变化解析由路径引起的GP服务运行失败问题
		
补充一下未完待续的利用Python分析GP服务运行结果的输出路径 & 实现服务输出路径的本地化,这篇博客中主要介绍了如何实现将GP服务生成的结果输出至本地及输入输出路径导致GP服务运行失败的问 ...
 - 快速入门 Python 数据分析实用指南
		
Python 现如今已成为数据分析和数据科学使用上的标准语言和标准平台之一.那么作为一个新手小白,该如何快速入门 Python 数据分析呢? 下面根据数据分析的一般工作流程,梳理了相关知识技能以及学习 ...
 - 3D Analyst Tools(3D Analyst 工具)
		
3D Analyst 工具 工具里有又细分如下分类: 注:以下代码的参数需要另行配置,不能直接执行:Python2不支持中文变量! 1.3D 要素 # Process: 3D 内部 arcpy.Ins ...
 - Spatial Analyst Tools(Spatial Analyst 工具)
		
Spatial Analyst Tools 1.区域分析 # Process: 以表格显示分区几何统计 arcpy.gp.ZonalGeometryAsTable_sa("", & ...
 - Spatial Statistics Tools(空间统计工具)
		
空间统计工具 1.分析模式 # Process: 增量空间自相关 arcpy.IncrementalSpatialAutocorrelation_stats("", "& ...
 - Space Time Pattern Mining Tools(时空模式挖掘工具)
		
时空模式挖掘工具 # Process: 局部异常值分析 arcpy.LocalOutlierAnalysis_stpm("", "", 输出要素, " ...
 
随机推荐
- jdbc操作mysql(四):利用反射封装
			
前言 有了前面利用注解拼接sql语句,下面来看一下利用反射获取类的属性和方法 不过好像有一个问题,数据库中的表名和字段中带有下划线该如何解决呢 实践操作 工具类:获取connection对象 publ ...
 - IMO 2021 第 1 题拓展问题的两个极值的编程求解
			
IMO 2021 第 1 题拓展问题的两个极值的编程求解 本篇是 IMO 2021 第一题题解及相关拓展问题分析 的续篇. 拓展问题三: (I). 求 n 的最小值,使得 n, n + 1, ..., ...
 - APMserv 5.2.6 安装教程
			
1.下载APMServ5.2.6.rar压缩包后解压,得到文件APMServ5.1.2.exe,其余两个没什么大用,APMServ解压缩说明.txt可以看一下,里面详细介绍了APMServ的功能和注意 ...
 - SpringBoot笔记(2)
			
一.容器功能 1.1 组件添加 1. @Configuration Full模式:获取对象时,首先在容器内搜索是否存在,如存在直接拿出 默认为Full模式,单例 配置类组件之间有依赖关系,方法会被调用 ...
 - docker-harbor私有仓库使用笔记
			
1. 登录harbor管理页面,创建项目,比如yuqx_test 2. admin登录,此处免密登录,正常情况下会输入账号密码 [root@k8s-rancher2 ~]# docker login ...
 - SSH整合(二)
			
SSH框架实现登录.新闻增删改查.树形菜单 项目结构 pom.xml 网不好不要一次引入太多,容易下不全 <project xmlns="http://maven.apache.org ...
 - 20210716 noip17
			
考场 终于有一场在晚上考了 T1 随便画了画就发现要求每个点的后继个数,想起来有 dfs 和 toposort 两种方法,感觉很稳 T2 裸的网络流有 70pts?!真香 一看 T3 就想起了 Mst ...
 - 腾讯与Intel就云游戏的探讨
			
今天去参加了在腾讯北京总部的腾讯音视频技术 HUB 技术巡回大会,对其中的云游戏应用的探讨格外感兴趣.正巧最近元宇宙概念很火,这篇文章就大会中对云游戏的探讨进行总结和汇报. 讲述一下来自Intel的工 ...
 - Activiti 学习(二)—— Activiti 流程定义和部署
			
概述 在这一节,我们将创建一个 Activit 工作流,并启动这个流程,主要包含以下几个步骤: 定义流程,按照 BPMN 的规范,使用流程定义工具,用流程符号把整个流程描述出来 部署流程,把画好的流程 ...
 - MySQL实战45讲(21--25)-笔记
			
21 | 为什么我只改一行的语句,锁这么多? 加锁规则里面:包含了两个"原则".两个"优化"和一个"bug". 原则 1:加锁的基本单位是 ...