【专注学习】基于Arcgis的python学习1
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档
【专注学习】基于Arcgis的python学习1
- 前言
- 一、主体思路流程?
- 二、需要用到的函数
- 1.清除所有变量
- 2.读入数据-loadtxt
- 3.读取文件夹中所有的txt文件的名字
- 4. for 循环
- 5.展xyz-MakeXYEventLayer_management
- 6.克里金差值
- 7.图层符号系统的改变
- 8.图层符号的统一
- 9.重分类
- 10.查找范围
- 11渔网
- 12字段添加
- 13图层名称获取
- 14将图层名称插在表格的字段中
- 15图层不可见或者直接删除
- 16数据驱动出图
- 三、慢慢合成一个程序(随时改)
- 四、参考博文
- 1.csv转shp
- 2.数据驱动制图
- 总结
前言
因为项目需要,加快项目成果处理速度,虽利用批处理可以解决一些问题,还是想试下二次开发arcgis。
一、主体思路流程?
依据 需要,先理个思路吧
- 1.读入csv数据
- 2. (增)csv转shp
- 3. 展xyz
- 4. 克里金
- 5. 图层符号系统的改变
- 6. 渔网
- 7. 轴号和高程的标注
- 8. 重分类
- 9. 分类后的表格计算
- 10. 表格添加到页面
- 11. 数据驱动出图(渔网)
二、需要用到的函数
1.清除所有变量
代码如下(示例):
[globals().pop(var) for var in dir() if not var.startswith("__")]
2.读入数据-loadtxt
代码如下(示例):
import numpy as np
data=np.loadtxt(filepath,delimiter=',')
3.读取文件夹中所有的txt文件的名字
import os
path='./data'
files=os.listdir(path)
4. for 循环
for file in files:
print file,name
5.展xyz-MakeXYEventLayer_management
arcpy.MakeXYEventLayer_management("x1.csv","Field1","Field2","x1_Layer111","#","Field3")
6.克里金差值
# Replace a layer/table view name with a path to a dataset (which can be a layer file) or create the layer/table view within the script
# The following inputs are layers or table views: "f-new_layer"
arcpy.gp.Kriging_sa("7_f_s_layer","Field3","I:/teeeest/test.gdb/Kriging_csv_2","Spherical #","#","FIXED 0.1","#")
7.图层符号系统的改变
lyr.symbology.classBreakValues=[-5,0,5] #分类
lyr.symbology.classBreakLabels=["-5-0","0-5"]
lyr.symbology.classBreakDescriptions=["1","2"]
lyr.symbology.excludedValues='0'
arcpy.RefreshActiveView()
8.图层符号的统一
mxd = arcpy.mapping.MapDocument("CURRENT")
df = arcpy.mapping.ListDataFrames(mxd)[0]
updateLayer = arcpy.mapping.ListLayers(mxd, "K_X1", df)[0]
sourceLayer = arcpy.mapping.Layer(r"C:\Project\Data\Rivers.lyr") #使用存好的图层格式
arcpy.mapping.UpdateLayer(df, updateLayer, sourceLayer, True)
9.重分类
# Replace a layer/table view name with a path to a dataset (which can be a layer file) or create the layer/table view within the script
# The following inputs are layers or table views: "k_7_f_s"
arcpy.gp.Reclassify_sa("k_7_f_s","Value","-5 0 1;0 5 2","I:/teeeest/test.gdb/Reclass_k_7_1","DATA")
# Replace a layer/table view name with a path to a dataset (which can be a layer file) or create the layer/table view within the script
# The following inputs are layers or table views: "k_7_f_w"
arcpy.gp.Reclassify_sa("k_7_f_w","Value","-9.6422948837280273 -5 1;-5 0 2;0 5 3;5 10 4","I:/teeeest/test.gdb/Reclass_k_7_1","DATA")
10.查找范围
>>> import arcpy
>>> mxd = arcpy.mapping.MapDocument("current")
>>> df = arcpy.mapping.ListDataFrames(mxd)[0]
>>> lyrs = arcpy.mapping.ListLayers(df)
>>> lyr = lyrs[4]
>>> lyr
<map layer u'CNTRY92'>
>>> e = lyr.getExtent()
>>> e.XMax
180.25862595419844
>>> e.XMin
-180.25862595419844
11渔网
# Replace a layer/table view name with a path to a dataset (which can be a layer file) or create the layer/table view within the script
# The following inputs are layers or table views: "k_7_f_s"
arcpy.CreateFishnet_management("I:/teeeest/test.gdb/fish","1.997499962 -94.502500038","1.997499962 -84.502500038","0.1","0.1","#","#","3.252519038 -91.647456642","NO_LABELS","k_7_f_s","POLYGON")
12字段添加
arcpy.AddField_management(lyr,'context',"TEXT",field_length=50)
13图层名称获取
name_list=[]
for lyr in updateLayer:
... print (lyr.name)
... name_list.append(lyr.name)
14将图层名称插在表格的字段中
#先处理下图层名称
name=[]
for i in name_listname.append(i[1:-2])
#去重下
name_txt=[]
for i in name:if i not in name_txt:name_txt.append(i)#name_txt是最终需要的字段
#字段赋值i=0cursor=arcpy.UpdateCursor("fish2")for my_row in cursor:
... my_value=my_row.getValue('TXT')
... my_row.setValue('TXT',name_txt[i])
... cursor.updateRow(my_row)
... i +=1
15图层不可见或者直接删除
for lyr in lyrs:if lyr.name.endswith("layer"):lyr.visible=False #不可见arcpy.Delete_management(lyr)
16数据驱动出图
在这里插入代码片
三、慢慢合成一个程序(随时改)
[globals().pop(var) for var in dir() if not var.startswith("__")]
import arcpy
path1='I:/teeeest'
import os
path2=path1+'/data'
outDB=path1+'/test.gdb'
files=os.listdir(path2)
mxd = arcpy.mapping.MapDocument("CURRENT")
df = arcpy.mapping.ListDataFrames(mxd)[0]
sourceLayer = arcpy.mapping.Layer(r"I:\teeeest\k_x1.lyr") for file in files:csv_path=path2+'/'+file filename=file.split('.')print (filename[0]+"is dealling")arcpy.MakeXYEventLayer_management(csv_path,"Field1","Field2",filename[0]+'layer',"#","Field3")arcpy.gp.Kriging_sa(filename[0]+'layer',"Field3",outDB+'/k_'+filename[0],"Spherical #","#","FIXED 0.1","#")print ("开始进行图层符号系统的统一")
updateLayer = arcpy.mapping.ListLayers(mxd, 'k*', df)
reclass_data="-10 -5 1;-5 0 2;0 5 3;5 10 4"
for lyr in updateLayer:arcpy.mapping.UpdateLayer(df, lyr, sourceLayer, True)arcpy.gp.Reclassify_sa(lyr,"Value",reclass_data,"re_"+lyr.name,"NODATA")#重分类print ("图层符号系统的统一结束")
print ("按照图层的分布进行渔网的生成")
for lyr in updateLayer:data_extent=lyr.getExtent()origin_coord=str(data_extent.XMin)+' '+str(data_extent.YMin)orient_coord=str(data_extent.XMin)+' '+str(data_extent.YMin+10)corner_coord=str(data_extent.XMax)+' '+str(data_extent.YMax)arcpy.CreateFishnet_management(lyr.name+'fish',origin_coord,orient_coord,"0.1","0.1","#","#",corner_coord,"NO_LABELS","#","POLYLINE")
print ("渔网生成结束")
print ("开始重分类")
#数据驱动的渔网
arcpy.CreateFishnet_management("I:/teeeest/test.gdb/fish2","0.5 -91.25","0.5 -81.25","5","3.5","#","#","5.5 0.5","NO_LABELS","0.5 -91.25 5.5 0.5","POLYGON")
#添加字段并生成num
arcpy.AddField_management('fish2','num',"FLOAT",field_length=10)
arcpy.CalculateField_management("fish2","num","!OID!","PYTHON_9.3","#")
# Replace a layer/table view name with a path to a dataset (which can be a layer file) or create the layer/table view within the script
# The following inputs are layers or table views: "fish2"
arcpy.CalculateField_management("fish2","TXT","'!num!+10'","PYTHON_9.3","#")
四、参考博文
1.csv转shp
arcpy将csv转换为shp
2.数据驱动制图
ArcGIS高级制图及批量出图使用数据驱动
总结
慢慢添加,最终应该可行
【专注学习】基于Arcgis的python学习1相关推荐
- (Python入门)学习笔记二,Python学习路线图
(Python入门)学习笔记二,Python学习路线图 千里之行始于足下,谋定而后动,冰冻三尺非一日之寒.之所以说这三句话,就是对于下面整理的路线图,即不让自己感觉路途的遥远而感到达到巅峰神界的遥遥无 ...
- arcgis下的python编程-基于ArcGIS的Python编程秘笈(第2版)
基于ArcGIS的Python编程秘笈(第2版) 译者简介 审阅人简介 1 面向ArcGIS的Python语言基础 1.1 使用IDLE进行Python脚本开发 1.1.1 Python Shell窗 ...
- 《基于ArcGIS的Python编程秘笈(第2版)》——第1章 面向ArcGIS的Python语言基础
本节书摘来自异步社区<基于ArcGIS的Python编程秘笈(第2版)>一书中的第1章,第1.1节,作者: [美]Eric Pimpler(派普勒) 更多章节内容可以访问云栖社区" ...
- 基于arcgis的python编程秘笈第2版_基于ArcGIS的Python编程秘笈(第2版)
基于ArcGIS的Python编程秘笈(第2版) 译者简介 审阅人简介 1 面向ArcGIS的Python语言基础 1.1 使用IDLE进行Python脚本开发 1.1.1 Python Shell窗 ...
- Python学习交流群、python学习群、python技术交流群
为方便大家交流学习Python,特建立Python学习交流群.python学习群.python技术交流群,群内严禁广告,广告者直接T,因群二维码有效期只有七天,需要加群的朋友请先扫码,然后回复:Pyt ...
- Python学习入门2:Python学习路线(课程大纲+Python视频教程+下载地址)
Python学习路线(课程大纲+Python视频教程+下载地址) 目前Python已经成为最受欢迎的程序设计语言之一.Python的设计哲学是"优雅"."明确" ...
- python学习路线-2020年 Python学习路线及学习目标规划 拿走不谢!
找不到完整的学习路线?小编分享2020年Python学习路线及学习目标规划拿走不谢,Python作为今年来特别受欢迎的编程语言,是AI时代头牌语言AI领域的敲门砖,Python已经入驻小学生教材,将来 ...
- 基于arcgis的python脚本编程视频-面向ArcGIS的Python脚本编程 PDF 高清版
给大家带来的一篇关于Python相关的电子书资源,介绍了关于ArcGIS.Python.脚本编程方面的内容,本书是由人民邮电出版社出版,格式为PDF,资源大小49.9 MB,Paul编写,目前豆瓣.亚 ...
- Python学习入门7:python学习从基础到高手,再到就业
其实入门Python并不难,难的是选定自己的学习方向. 简单说下Python可以做什么: 后台开发(Django / Flask / Tornado) 科学计算(Numpy / Scipy / Mat ...
最新文章
- 获取用户精准地理位置信息(百度地图)
- 流线动态图python_Node.js Stream(流)
- c语言第六章条件型循环结构,C语言课件(第六章 循环结构)
- python实现录音小程序 界面_微信小程序录音界面以及功能实现
- 08-07 性能测试--性能监听平台
- 极化码 极化现象matlab仿真(信道容量,巴氏参数,高斯近似三种方法)
- euraka 启动报错
- JS生成UUID的几种方法
- RMXP脚本解析(四):Window_Base
- 计算机页面下没有桌面图标,电脑下面小图标没了怎么办
- 大学生征信与相关金融知识手册
- 脱敏数据的残余风险评估
- STL:容器共性机制、容器元素深拷贝和浅拷贝问题
- mysql sql 多表更新语句_MySQL跨表、多表更新SQL语句总结
- Lexical Simplification with Pretrained Encoders 论文精读
- Ubuntu 挂载U盘
- [leetcode417]. 太平洋大西洋水流问题
- 开门最快的服务器,魔兽怀旧服最有牌面的服务器,开门进度惊人,国服的牌面...
- 内存正确性测试工具 memtester
- 购买视觉系统:您必须询问的10个问题