【需求】将文件夹中生成的栅格文件转化为矢量文件并合并
【分析】读取文件夹中的所有栅格文件,将栅格文件转换为矢量文件,矢量文件添加字段,合并矢量文件
import os
import arcpy
import sys
defaultencoding = 'utf-8'
if sys.getdefaultencoding() != defaultencoding:
reload(sys)
sys.setdefaultencoding(defaultencoding) #将语言设置为能识别的中文
arcpy.env.workspace ="A:\\360data\\重要数据\\桌面\\边境市\\新建文件地理数据库.gdb" #设置默认的数据库环境
f="A:\\360data\\重要数据\\桌面\\边境市\\新建文件地理数据库.gdb\\"
tmp="A:\\360data\\重要数据\\桌面\\边境市\\tmp.shp"
alline="A:\\360data\\重要数据\\桌面\\边境市\\alline.shp"
n=0
datasets = arcpy.ListRasters() #定义栅格数据集
for f1 in datasets: #遍历数据集中的数据
n=n+1
tmp_path = os.path.join(f,f1) #获取每个栅格
line=str(n)+".shp"
arcpy.AddField_management(tmp_path, "cost", "LONG") #添加cost字段
cursor = arcpy.da.UpdateCursor(tmp_path, ["PATHCOST", "cost"])
for m in cursor:
m[1] = m[0]
cursor.updateRow(m)
print tmp_path
arcpy.RasterToPolyline_conversion(tmp_path, line, "ZERO", "0", "SIMPLIFY", "cost") #将栅格转化为要素线
arcpy.AddField_management(line, "name", "TEXT") #添加name字段
cursor = arcpy.da.UpdateCursor(line, ["to"])
for m in cursor:
m[0] = f1
cursor.updateRow(m)
arcpy.Delete_management(tmp)
arcpy.CopyFeatures_management(alline, tmp)
arcpy.Delete_management(alline)
arcpy.Merge_management([line, tmp],alline)
利用每个栅格文件读取的循环中套入转换成栅格,添加字段和合并要素类