Tips:可以在ArcGIS中提取,代码主要是批量处理。 仅供参考~
代码符合示例说明:
数据: 2000-2018年逐年全国县级人口数据,如2000_population.shp、2001_population.shp等
要求:每年分布提取各省县级人口数据
数据属性表:字段包括FID、population、cityName等
最终结果:在各文件夹中输出包含各省人口数据的19个文件夹
#! /usr/迷路乌龟/env python #-- *-coding : utf-8-* ' ' createdonmondec 2818336005:172020 @ author 3360 Xiao _ gf ' ' ' creatted outpath输出路径filed_name提取字段的名称; file_name输入文件的名称shp=ogr.open(in_shp, 1 )打开shp文件lyr=shp.get layer (ly defn=lyr.getlayerdefn ) spatialref=lyr.GetSpatialRef ) #空间坐标系geomtype=lydeff polygon等) a=[] #初始化列表b=[] #初始化列表for i, feainenumerate(lyr ) : feat=lyr.GetFeature(i ) I ) FID=feat.getfield ) filed _ name (a.append ) FID ) #获取来源) forjinrange ) len ) b ) )获取:驱动器=ogr.getdriverbyname ) ' Esrishapefile ' )以创建shp驱动out_shp的' str(b[j] ) out layer=out _ shp.create layer (str (b [ j ] ) file_name,srs=spatialref, geom_type=geomtype ) for k in range (0ly defn.getfield count ((: field defn=ly defn.getfield defn ) k ) out layer.crange (0, lyr.GetFeatureCount ) : feat=lyr.GetFeature(i ) I ) FID=feat.getfield ) iffid对应的图层out feature ryRef ) outfeature.setgeometry ) for i in range(0 (提取0的outlayerdefn.getfield count ((: field defn=outlayerdefn.getfield ) ) defn.get fat.getfield(I ) (outlayer.createfeature ) (outfeature ) ) )。 out feature=none out _ shp=none if _ name _=' _ _ main _ ' : filed _ name=' city name ' in path=r ' provi cial 3360 ]=='.shp ' : in _ shp _ pile file ) folder _ name=file [ :-4 ] ifos.path.isdir (out path ) 3360 OS.OS folder_name(#文件夹out _ shp _ path=OS.path.join (out path,folder_name ) extr_attri ) in_shp_path,