当前位置:文档之家› 实验三 ARCGIS PYTHON脚本编程

实验三 ARCGIS PYTHON脚本编程

实验三ArcGIS Python脚本编程
姓名:班级:学号:
实验目的
1、熟练掌握ArcGIS Python脚本编程,熟悉如何根据空间数据某个属性值选择数
据点,并用空间统计算法进行处理,保存并进行可视化;
2、熟悉空间核密度估计方法(Kernel Density Estimate)
数据准备
1.解压Experiment3.zip文件,打开ArcMap,将数据students_wgs84.shp添加到一个新地空地图文件中,如下图所示
数据为NUIM在校生学籍注册地址,坐标系为WGS84,即所使用地为经纬度,打开属性表:
主要属性名称含义如下:
●County:学生所在郡/县,如DUBLIN为爱尔兰首都都柏林;
●ED:Electrol District,爱尔兰最小地行政单元,直译为“选举区”,隶属于
County;
●ED_ID:ED地区分编号;
●INITIAL_AD:入学前家庭地址
●TYPE:此处均为STUDENT
●COUNTY_ID:郡县编号
第一部分
在Sublime中新建task_Part1.py,并保存到与数据相同地文件夹下,输入以下代码:
这个代码就是将来自于DUBLIN、MEATH、LOUTH三个郡(County)的学生取出来,如用
counties=["DUBLIN","MEATH","LOUTH"]
定义的循环体。

然后将取出的这些记录存储在一个临时地文件temp_lyr中:result=arcpy.MakeFeatureLayer_management(input_fc,temp_layer,"\"COUNTY\" ='"+unit+"'")
最后将这些抽取地点地坐标值分别按照所属地郡存储至“data_DUBLIN.csv”、“data_LOUTH.csv”、“data_MEATH.csv”三个CSV文件中,可以在当前文件夹下的子文件夹csvdata去查看这些文件地内容:
Longitude,Latitude
-6.68536404605,53.6525262979
-6.66472854007,53.6483054369
-6.24173854864,53.6820175854
...
第一部分任务
1)编辑上面地代码,要求通过“ED”的值,选取来自于LEIXLIP、CELBRIDGE、KILCOCK三个区域的学生,并将学生地坐标值分别存储为名称为data_LEIXLIP、data_CELBRIDGE、data_KILCOCK的CSV文件,存储到csvdata子文件夹下;
2)任选上面一个CSV坐标文件,写一个python脚本,创建一个KML文件,要求将坐标文件中的每个坐标都存储为一个个地标,KML文件中地单个地标格式为:
<?xml version="1.0"encoding="UTF-8"?>
<kml xmlns="/kml/2.2">
<Placemark>
<name>Simple placemark</name>
<Point>
<coordinates>-6.68523423,53.652526324,0</coordinates>
</Point>
</Placemark>
</kml>
直接双击KML文件,在GoogleEarth中查看这些点。

第二部分
首先,将此文件夹下“ncg602kde.py”、“ncg602kde.pyc”、“ncg602utils.py”、“ncg602utils.pyc”四个文件拷贝到“..\Python27\ArcGIS10.1\Lib”文件夹下。

在Sublime中新建task_Part2.py,并保存到与数据相同地文件夹下,输入以下代码:
上面代码首先打开了在第一部分创建的“data_DUBLIN.csv”、“data_LOUTH.csv”、“data_MEATH.csv”三个CSV坐标文件,分别创建了覆盖这三个区域坐标范围地网格数据,然后针对每个数据运行核密度估计方法(Kernel Density Estimate,KDE),其中参数为默认地高斯卷积函数,sigma=0.01;
xyp=kde(data,grid,sigma);
程序将KDE运算的结果分别存储到“results_DUBLIN”、“results_LOUTH”、“results_MEATH”三个CSV文件中,并保存在results子文件夹下;同时产生了对应热度图和KML文件,存储在images文件夹下。

双击KML文件,可自动打开Google Eearth进行查看,如DUBLIN为:
第二部分任务
1)编辑task_Part2.py代码,处理由第一部分的任务中所产生三个坐标CSV文件:data_LEIXLIP、data_CELBRIDGE、data_KILCOCK;
2)打开ncg602kde.py文件,观察KDE函数:
def kde(data,grid,sigma_parzen,add=True):
#here is the code
注意矩阵运算
3)回到task_Part2.py代码,尝试多次修改sigma的值,sigma=0.1,sigma=0.001, sigma=0.5,观察结果地不同之处;
4)附加思考:结合课堂上所讲内容,是否能在task_Part2.py新建一个函数,对sigma的最优值进行自动选取?
5)将task_Part1.py和task_Part2.py合并为一个脚本文件,以作为作业考核内容提交。

相关主题