一、背景

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

二、目的

通过练习,熟悉ArcGIS密度制图函数的原理及差异性,掌握如何根据事迹采样数据特点,结合ArcGIS提供的密度制图功能和其它空间分析,制作符合要求的密度图。

三、要求

1)熊猫活动具有一定的槽域范围,一个槽域范围只有一个或一对熊猫,假设熊猫槽域半径为5000m,理论上最大槽域面积为3.1450005000

2)虽然一个采样点代表一个熊猫,但由于熊猫的生存具有确定槽域特征,不同的采样点具有不同的空间控制面积。假定熊猫活动范围分布满足以采样点为中心的泰森多边形,如何将这一信息加入密度分布图是本练习的重点。

3)在野外实采的熊猫活动足迹数据的基础上,以每个熊猫槽域范围为权重,运用ArcGIS 中的区域分配功能和密度制图功能制作该地区熊猫分布密度图。

四、数据

野外实采的熊猫活动足迹数据,一个足迹代表一个熊猫曾在此处活动过,相同足迹只记载一次。(\Chp8\Ex3)

五、计算原理

首先利用栅格数据空间分析模块提供的区域分配功能提取熊猫的槽域范围,然后用理论最大域面积(假定是半径为5km的圆,面积为3.141592755 km²)除以所提取的熊猫实际槽域面积,作为采样点的加权值(记为Power字段),生成熊猫分布密度图。

解题思路:

1)欧式分配,求出每个熊猫的实际控制范围

2)添加字段area,计算每个熊猫的实际控制面积:栅格数栅格边长栅格边长

3)添加power字段,计算权重:理论上最大槽域面积/栅格数栅格边长栅格边长

4)利用power字段进行核密度分析

操作流程图:

六、模型构建器

七、ArcPy实现

# -*- coding: utf-8 -*-
# ---------------------------------------------------------------------------
# 8-3熊猫密度图.py
# Created on: 2021-10-10 15:53:34.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:
Xmpoint = path + "\\Xmpoint.shp" # 数据
Output_distance_grid = "Distance" # 输出距离栅格,格网基本名称的长度不能超过了 13
Output_direction_grid = "Direction" # 输出方向栅格,格网基本名称的长度不能超过了 13
Output_inverse_grid = "Inverse" # 输出反向栅格,格网基本名称的长度不能超过了 13
EucAllo_shp = "EucAllo_shp" # 欧式分配输出要素
KernelD_shp = "KernelD_shp" # 核密度分析输出要素
constant = "10000000"
Distribution_map = "密度分布图" # 格网基本名称的长度不能超过了 13 # Set Geoprocessing environments
print "Set Geoprocessing environments"
arcpy.env.workspace = paths # 工作空间
arcpy.env.scratchWorkspace = paths # 临时工作空间
arcpy.env.extent = "15153765.390904 -140950.922884 15227181.528600 -92036.748014" # 处理范围,左下右上 # Process: 检查属性表字段是否含有"area", "power",有则删除
fields = arcpy.ListFields(Xmpoint)
for field in fields:
if fields.name.lower() in ["area", "power"]:
arcpy.DeleteField_management(Xmpoint, fields.name) # Process: 欧氏分配
print "Process: 欧氏分配"
arcpy.gp.EucAllocation_sa(Xmpoint, EucAllo_shp, "5000", "", "500", "ID", Output_distance_grid, Output_direction_grid, "PLANAR", "", Output_inverse_grid) # Process: 添加字段
print "Process: 添加字段"
arcpy.AddField_management(EucAllo_shp, "Area", "LONG", "", "", "", "", "NULLABLE", "NON_REQUIRED", "") # Process: 计算字段
print "Process: 计算字段"
arcpy.CalculateField_management(EucAllo_shp, "Area", "[COUNT] * 500 *500", "VB", "") # Process: 连接字段
print "Process: 连接字段"
arcpy.JoinField_management(Xmpoint, "ID", EucAllo_shp, "Value", "Area") # Process: 添加字段 (2)
print "Process: 添加字段 (2)"
arcpy.AddField_management(Xmpoint, "power", "LONG", "", "", "", "", "NULLABLE", "NON_REQUIRED", "") # Process: 计算字段 (2)
print "Process: 计算字段 (2)"
arcpy.CalculateField_management(Xmpoint, "power", "3.1415927*5000*5000 / [Area]", "VB", "") # Process: 核密度分析
print "Process: 核密度分析"
arcpy.gp.KernelDensity_sa(Xmpoint, "power", KernelD_shp, "500", "", "SQUARE_MAP_UNITS", "DENSITIES", "PLANAR") # Process: 乘
print "Process: 乘"
arcpy.gp.Times_sa(KernelD_shp, constant, Distribution_map) rasters = arcpy.ListRasters()
for raster in rasters:
if u"分布图" not in raster:
print u"正在删除{}".format(raster)
arcpy.Delete_management(raster)
print "运行完毕~~~"

注意看注释提示!

八、结果

实验结束 byebye~

熊猫分布密度制图(ArcPy实现)的更多相关文章

  1. arcpy.mapping实战-专题图制图自动化

    arcpy.mapping实战-专题图制图自动化 by 李远祥 最初对arcpy.mapping感兴趣是因为一次大规模的专题地图调整的需要,由于某某单位利用ArcEngine编写的专题图出图系统,出现 ...

  2. arcpy.mapping常用四大件-StyleItem

    arcpy.mapping常用四大件-StyleItem by 李远祥 StyleItem 笔者将其归类到arcpy.mapping的四大件当中,主要是因为它的独特之处,就是其能力是直接读取.styl ...

  3. arcpy.mapping常用四大件-MapsurroundElement

    arcpy.mapping常用四大件-MapsurroundElement by 李远祥 在arcpy.mapping 中,除了数据入口MapDocument.图层Layer之外,另一重要的角色就是M ...

  4. arcpy.mapping常用四大件-Layer

    arcpy.mapping常用四大件-Layer by 李远祥 图层是地图里面非常重要的组成,几乎所有的制图显示都与图层有关.首先它是连接数据与符号渲染的重要桥梁,其次在出版地图中,图层又与图例关联在 ...

  5. ArcGIS制图技巧系列(2)地形渲染

    ArcGIS制图技巧系列(2)地形渲染 by 李远祥 DEM数据是常见的地形数据,在GIS常规的制图中,DEM一直扮演着增强效果.由于带有高程值,DEM在很多情况下都在三维中显示,但这里主要介绍的是在 ...

  6. 使用python制作ArcGIS插件(3)ArcPy的使用说明

    使用python制作ArcGIS插件(3)ArcPy的使用说明 by 李远祥 ArcPy 是一个以成功的 arcgisscripting 模块为基础并继承了 arcgisscripting 功能进而构 ...

  7. ArcPy开发教程2-管理地图文档1

    联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com ArcPy开发教程2-管理地图文档1 第二次课:2019年2月26日上午第二节 讲解: 地图文档:Map docume ...

  8. 【284】◀▶ arcpy.da & arcpy 数据访问模块

    使用游标访问数据 数据访问模块 (arcpy.da) 参考: ArcGIS Python编程案例(9)-ArcPy数据访问模块 读取几何 写入几何 使用 Python 指定查询 01   da.Sea ...

  9. 【281】◀▶ arcpy.mapping 常用类说明

    arcpy.mapping 教程入门 arcpy.mapping 指导原则 按字母顺序排序的 arcpy.mpping 类列表 按字母顺序排序的 arcpy.mpping 函数列表 按字母顺序排序的 ...

随机推荐

  1. Error establishing a database connection!

    后来发现在 wp-config.php 有个 debug 的参数,打开这个参数,修改为: define('WP_DEBUG','true'); 修改这个后,非常不错,报了很多错,一堆....   使用 ...

  2. 修改Windows7系统默认软件安装目录

    Windows7系统默认软件安装目录都在C盘Program Files文件夹有时候我们需要把软件安装到其他地方,如果每次安装的时候都要重新选择一次十分麻烦,下面Windows7之家教你修改软件默认安装 ...

  3. HTTP系列之:HTTP中的cookies

    目录 简介 cookies的作用 创建cookies cookies的生存时间 cookies的权限控制 第三方cookies 总结 简介 如果小伙伴最近有访问国外的一些标准网站的话,可能经常会弹出一 ...

  4. Spring Security进阶

    Spring Security进阶 1.连接数据库进行数据的验证 Spring Security进行身份验证或者权限控制时,用户名和密码应该要和数据库的进行比较才行,用户的各种信息我们从数据库中去获取 ...

  5. MySQL(二)——常用命令

    一.MySQL服务器1.介绍安装服务:mysqld -install停止服务:net stop mysql启动服务:net start mysql用户名:root,密码:Password,连接数据库: ...

  6. QT开发实战一:图片显示

    测试平台 宿主机平台:Ubuntu 12.04.4 LTS 目标机:Easy-ARM IMX283 目标机内核:Linux 2.6.35.3 QT版本:Qt-4.7.3 Tslib版本:tslib-1 ...

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

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

  8. ubantu 编译安装xl2tpd笔记

    1. 下载xl2tpd源码 推荐一个仍在维护的网站:    https://www.xelerance.com/archives/202 也可以从其他的网站下载:例如:https://pkgs.org ...

  9. 从零开始学习SQL SERVER(2)--- 基本操作及语句

    声明:仅为本人随笔及经验之谈,有错误敬请指出. # 后的文字为注释 Microsoft SQL Server Management Studio 中的SQL命令 添加数据库 1 CREATE DATA ...

  10. 1.docker概述及其历史

    一. 为什么会出现docker? 不用说, 肯定是时代进步的产物. 那么, 他为什么能火? 一定是解决了痛点问题. docker也不是一下子就火起来了, 他的火也是有一个过程的, 我们先来看看为什么会 ...