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实现)的更多相关文章

  1. ArcGIS案例学习1_2

    ArcGIS案例学习1_2 联系方式:谢老师,135_4855_4328, xiexiaokui#qq.com 时间:第一天下午 案例1:矢量提取,栅格提取和坐标系投影变换 目的:认识数据类型 教程: ...

  2. Analysis Tools(分析工具)

    分析工具 1.叠加分析 # Process: 交集取反 arcpy.SymDiff_analysis("", "", 输出要素类, "ALL" ...

  3. 熊猫分布密度制图(ArcPy实现)

    一.背景 大熊猫是我国国家级珍惜保护动物,熊猫的生存必须满足一定槽域(独占的猎食与活动范围)条件.因此,科学准确的分析熊猫的分布情况,对合理制定保护措施和评价保护成效具有重要意义. 二.目的 通过练习 ...

  4. 白话陈述之——从python脚本变化解析由路径引起的GP服务运行失败问题

    补充一下未完待续的利用Python分析GP服务运行结果的输出路径 & 实现服务输出路径的本地化,这篇博客中主要介绍了如何实现将GP服务生成的结果输出至本地及输入输出路径导致GP服务运行失败的问 ...

  5. 快速入门 Python 数据分析实用指南

    Python 现如今已成为数据分析和数据科学使用上的标准语言和标准平台之一.那么作为一个新手小白,该如何快速入门 Python 数据分析呢? 下面根据数据分析的一般工作流程,梳理了相关知识技能以及学习 ...

  6. 3D Analyst Tools(3D Analyst 工具)

    3D Analyst 工具 工具里有又细分如下分类: 注:以下代码的参数需要另行配置,不能直接执行:Python2不支持中文变量! 1.3D 要素 # Process: 3D 内部 arcpy.Ins ...

  7. Spatial Analyst Tools(Spatial Analyst 工具)

    Spatial Analyst Tools 1.区域分析 # Process: 以表格显示分区几何统计 arcpy.gp.ZonalGeometryAsTable_sa("", & ...

  8. Spatial Statistics Tools(空间统计工具)

    空间统计工具 1.分析模式 # Process: 增量空间自相关 arcpy.IncrementalSpatialAutocorrelation_stats("", "& ...

  9. Space Time Pattern Mining Tools(时空模式挖掘工具)

    时空模式挖掘工具 # Process: 局部异常值分析 arcpy.LocalOutlierAnalysis_stpm("", "", 输出要素, " ...

随机推荐

  1. mac下编译安装grafana

    下载grafana源码 从grafana git 仓库下载指定的分支. 编译后端 我下载的时候,grafana的最新release是7.3.7,其需要安装go 1.15版本 生成可执行文件 进入项目根 ...

  2. 使用什么快捷键,关闭、打开、最小化qq聊天窗口

    Alt+F4或者Alt+C关闭聊天窗口.Alt+空格+N 最小化聊天窗口.Alt+H 打开聊天记录,打开聊天窗口没有快捷键,必须点击qq好友图标

  3. SSE图像算法优化系列三十一:Base64编码和解码算法的指令集优化。

        一.基础原理 Base64是一种用64个Ascii字符来表示任意二进制数据的方法.主要用于将不可打印的字符转换成可打印字符,或者简单的说是将二进制数据编码成Ascii字符.Base64也是网络 ...

  4. Git使用教程七——Git实用技能

    Git实用技能 1.图形管理工具 Github for Desktop Source tree 老牌的GitGUl管理工具了,也号称是最好用的Git GUI工具.功能丰富,基本操作和高 级操作都非常流 ...

  5. win+R 中的命令

    cmd------CMD命令提示符 MSConfig------系统配置实用程序 regedit------注册表编辑器 notepad------打开记事本 calc------启动计算器 msts ...

  6. awk 命令-随笔

    awk语法: awk [option] 'pattern{action}' file ... awk [参数] '条件{动作}' 文件 ... 解析: 命令: awk 参数: -F "&qu ...

  7. 性能测试工具JMeter 基础(四)—— 录制脚本

    对于JMeter中HTTP请求除了手动添加以为还可以进行脚本录制,有两个方法: 使用badboy录制,录制完成后,将录制的文件导入JMeter中 使用JMeter自带的录制原件进行录制(HTTP(S) ...

  8. 哦?原来这就是 JVM 垃圾!

    大家都知道,JVM 有垃圾回收的机制,垃圾回收的前提是要知道:什么是垃圾!然后再是如何识别垃圾! 什么是垃圾 垃圾,本质上就是没有引用的对象(们),下面来介绍两种垃圾 1. 没有引用指向的对象 下图是 ...

  9. angularjs实现购物清单

    HTML: 1:要定义ng-app,在html上定义ng-app="App"; 2:在body上定义ng-controller="ToDoCtrl" 3: &l ...

  10. Swagger-初见

    目录 Swagger简介 SpringBoot集成Swagger 配置Swagger 配置扫描接口 配置Swagger开关 配置API分组 实体配置 常用注解 Swagger简介 前后端分离 前端 - ...