Как добавить "_projected.shp" в конце каждого имени набора данных - PullRequest
0 голосов
/ 22 марта 2020

У меня есть код, который проецирует несколько шейп-файлов в папке в другую систему координат, а спроецированные шейп-файлы помещаются в другую папку. Для проецируемых шейп-файлов я хочу добавить «_projected» в конце каждого имени шейп-файла.

То, что у меня есть, работает для проекции и установки выходных файлов в указанную папку c, но новые выходные файлы не отображаются в конце «_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")

Поскольку код работает, я не получаю никаких ошибок. Имя файла просто не заменяется окончанием, к которому я хочу.

1 Ответ

1 голос
/ 22 марта 2020

Ваш код заменяет текст пути к файлу infc, но на самом деле не переименовывает файл .

Кроме того, outfc - это путь к новому проецируемому шейп-файлу, который вы создаете, а infc - путь к исходному файлу. Разве вы не хотите, чтобы outfc имел суффикс "_projected.shp"?

Приведенный ниже код изменяет текст пути к выходному файлу и включает "_projected.shp" перед вызовом arcpy.Project_management для создания нового файла.

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 при построении путей к файлам.

...