如何在每个数据集名称的末尾附加“_projected.shp”

2024-09-28 01:31:06 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个代码,可以将文件夹中的许多形状文件投影到另一个坐标系,投影的形状文件放置在另一个文件夹中。对于投影的shapefile,我想在每个shapefile名称的末尾附加“\u projected”

到目前为止,我所做的工作用于投影,并将输出文件设置到特定文件夹中,但新的输出文件没有在末尾显示“_projected”

这是我的密码

import arcpy
import os

arcpy.env.workspace = "inputdatafolder"
arcpy.env.overwriteOutput = True
outWorkspace = "outputdatafolder"

for infc in arcpy.ListFeatureClasses():
   dsc = arcpy.Describe(infc)
   if dsc.spatialReference.Name == "Unknown":
        print ("skipped this fc due to undefined coordinate system: "+ infc)

    else:
        outfc = os.path.join(outWorkspace, infc)

        outCS = arcpy.SpatialReference('NAD 1983 UTM Zone 10N')

        arcpy.Project_management(infc, outfc, outCS)

        infc = infc.replace(".shp","_projected.shp")

由于代码正常工作,我没有收到任何错误。文件名没有替换为我希望的结尾


Tags: 文件代码importenv文件夹os投影形状
1条回答
网友
1楼 · 发布于 2024-09-28 01:31:06

您的代码正在替换infc的文件路径的文本,但实际上没有重命名文件

此外,outfc是您正在创建的新投影形状文件的路径,而infc是原始文件的路径。你不想outfc"_projected.shp"后缀吗

下面的代码在调用arcpy.Project_management创建新文件之前,将输出文件路径的文本更改为包含"_projected.shp"

import arcpy
import os

arcpy.env.workspace = "inputdatafolder"
arcpy.env.overwriteOutput = True
outWorkspace = "outputdatafolder"

for infc in arcpy.ListFeatureClasses():
   dsc = arcpy.Describe(infc)
   if dsc.spatialReference.Name == "Unknown":
        print ("skipped this fc due to undefined coordinate system: "+ infc)
    else:
        outfc = os.path.join(outWorkspace, infc).replace(".shp","_projected.shp")
        outCS = arcpy.SpatialReference('NAD 1983 UTM Zone 10N')
        arcpy.Project_management(infc, outfc, outCS)

我也不确定你是否正确使用了Describe。在构造文件路径时,可能需要使用infc.name

相关问题 更多 >

    热门问题