一直以来就想做这个系列。记录学习arcgis、geoda、python、cad等工具的过程。
在arcgis篇,最开始的打算是想把arcgis中的工具都整理一遍,不过经过几年得使用和学习,发现其中有很多工具都用不上,或者不常用,所以我觉得应该把精力集中在常用的工具上。
arcgis篇初步打算是分为两个子系列,包括:单工具学习和综合应用。
在单工具篇里,我会对arcgis得某些工具进行单独得说明;在综合应用篇(如果后面时间充足有时间可以做下来得话),对某几个工具进行联合得操作以实现某个效果,或者说为了达到某个目的应该怎么去做。
clip工具的操作逻辑是:
这个工具主要是做裁剪,对原数据裁剪出自己需要的范围。
值得注意的是,针对矢量数据和栅格数据有两个clip。
1处的clip是裁剪矢量数据,2处的clip是裁剪栅格数据。
矢量数据可以为面数据、线数据以及点数数据。clip 元素也不限制。
通过查阅arcgis帮助文档,也可以找到两个clip工具的python代码:
(1)矢量clip工具python代码:
#python window import arcpy from arcpy import env env.workspace = "C:/data" arcpy.Clip_analysis("majorrds.shp", "study_quads.shp", "C:/output/studyarea.shp") #stand-alone Python script import arcpy from arcpy import env # Set workspace env.workspace = "C:/data" # Set local variables in_features = "majorrds.shp" clip_features = "study_quads.shp" out_feature_class = "C:/output/studyarea.shp" xy_tolerance = "" # Execute Clip arcpy.Clip_analysis(in_features, clip_features, out_feature_class, xy_tolerance)(2)栅格clip工具python代码:
#python window import arcpy arcpy.env.workspace = "C:/Workspace" arcpy.Clip_management( "image.tif","1952602.23 294196.279 1953546.23 296176.279", "clip.gdb/clip", "#", "#", "NONE") #stand-alone Python script import arcpy arcpy.env.workspace = "C:/Workspace" arcpy.Clip_management( "image.tif","1952602.23 294196.279 1953546.23 296176.279", "clip.gdb/clip", "#", "#", "NONE")
这个工具可以看作是clip工具的进阶版。分割工具,可以进行按着数据的属性对元数据进行分割。
对矢量数据操作界面:
对栅格数据操作界面:
比如当我们拿到县级地类数据,现在需要分到各乡。对某个乡而言,我们可以利用一个乡的行政数据clip地类数据,但当我们拿到的是多个县级数据,需要同时处理的时候,就可以使用split工具。
使用片区的乡级行政区数据,然后再split field选择乡的代码就行,然后再target workspace选择以一个文件夹。
值得注意的是对栅格数据分割得到的分割数据命名好像只能以一个名字为开头,后续叠加,比如在output base name填a,得到的命名就是a0、a1、a2……可能是我还没找到怎么改变这个名字,如果有知道的同学可以告诉一下;然后在栅格分割中如果要按矢量进行分割,还有一个地方要选择,在split method中要选择polygon_features。
最后分割出来的数据就是需要的各个乡的地类数据。操作逻辑如下:
split工具也有两个版本,和clip工具属于同一层。
其python代码分别如下:
(1)矢量split工具python代码:
#python window import arcpy arcpy.env.workspace = "c:/data" arcpy.Split_analysis("Habitat_Analysis.gdb/vegtype", "climate.shp", "Zone", "C:/output/Output.gdb", "1 Meters") #stand-alone Python script import arcpy from arcpy import env # Set environment settings env.workspace = "C:/data" # Split vegetation layer by climate zones, write to Output.gdb veg = "Habitat_Analysis.gdb/vegtype" splitFeatures = "climate.shp" splitField = "Zone" outWorkspace = "C:/output/Output.gdb" clusterTol = "1 Meters" arcpy.Split_analysis(veg, splitFeatures, splitField, outWorkspace, clusterTol)(2)栅格split工具python代码:
#python window import arcpy arcpy.SplitRaster_management("c:/source/large.tif", "c:/output/splitras", "ras", "NUMBER_OF_TILES", "TIFF", "NEAREST", "2 2", "#", "10", "PIXELS", "#", "#") #stand-alone Python script try: import arcpy arcpy.env.workspace = r"\\myServer\PrjWorkspace\RasGP" ##Equally split a large TIFF image by number of images arcpy.SplitRaster_management("large.tif", "splitras", "number", "NUMBER_OF_TILES",\ "TIFF", "NEAREST", "2 2", "#", "4", "PIXELS",\ "#", "#") ##Equally split a large TIFF image by size of images arcpy.SplitRaster_management("large.tif", "splitras", "size2", "SIZE_OF_TILE",\ "TIFF", "BILINEAR", "#", "3500 3500", "4", "PIXELS",\ "#", "-50 60") except: print "Split Raster exsample failed." print arcpy.GetMessages()
今天先介绍两个工具,后续会慢慢更新,目前单工具以图文为主,后续如果是多工具同时联动的时候,可能就会采用视频的方式进行讲解了。大家有什么想看的也可以给我私信留言。欢迎大家提建议。
参考资料:
ArcGIS的clip操作_java能飞翔-博客
https://desktop.arcgis.com/zh-cn/arcmap/10.3/tools/analysis-toolbox/split.htm
当前会在知乎、哔哩哔哩、同步更新。
以后将主要发布在微信公众号和知乎上。欢迎大家关注: