在ArcGIS中我们经常会使用Select By Location功能来裁剪矢量。
例如,要实现根据美国各个州的图层去裁剪一个全美的图层,得到各个州分别的结果。然而美国有50个州,常规做法是使用Select By Location五十次才能实现,操作非常麻烦。
可以用ArcGIS自带的python窗口编写一段简单的代码实现批量裁剪,解放双手。
这是官方对SelectLayerByLocation的解释说明:https://desktop.arcgis.com/zh-cn/arcmap/10.3/tools/data-management-toolbox/select-layer-by-location.htm
在实现代码前要把各个用到的图层都加载进ArcGIS里,?打开python
具体的代码如下:
import arcpy
arcpy.env.workspace = "E:/NA_SDD/YEAR/map"
city_names=['City1', 'City2', 'City3', 'City4'] #输入各城市的Layer名字
for city_i in city_names:
arcpy.SelectLayerByLocation_management("2019_SDD", "INTERSECT", city_i, "", 'NEW_SELECTION') #注意顺序,前面是待被裁剪的全底图Layer名称,后面是各城市Layer
CUT_Link = arcpy.env.workspace + '/2019_Ca_shp/' + city_i
arcpy.CopyFeatures_management("2019_SDD", CUT_Link+'_2019') #设定新输出的Layer的名称
数据量大的时候会有点慢,只要等着ArcGIS自己实现就好。这是最终结果,得到了各个州的裁剪矢量图层。?
|