방금 파이썬 스크립팅을 시작했습니다.
현재 프로세스를 자동화하는 스크립트를 만들고 있습니다.
기본적으로 사용자에게 클라이언트 이름을 묻고 사용 가능한 경우 프로젝션을 받고 C :에 클라이언트 용 드라이브를 생성하고 클라이언트 전용 드라이브 파일을 생성하며 필요한 데이터 세트를 생성하고 클라이언트 데이터와 관련된 기능 클래스를 생성합니다. 결국, 각 피처 클래스 및 기타 다른 것에 필수 필드를 추가합니다.
ArcMap을위한 Python 스크립팅의 적절한 에티켓을 알지 못하면서 이것을 시작했습니다. 그러나 지금까지 만든 것은 내가 믿는 ArcMap 외부에서만 실행됩니다.
이것이 허용됩니까?
방금 찾은 arcpy.getparamaterastext ()를 통해 사용자 입력을 얻는 대신 raw_input ()을 사용하고 있습니다.
괜찮습니까?
작동하지만, 이것이 스크립팅을 수행하는 올바른 방법인지 확실하지 않습니다.
여기까지 내가 가진 코드가 있습니다.
import sys
import arcpy
import os
#Records name of the client
client = raw_input("Enter the name of the client: (letters and underscores only) \n")
#Records filepath of client to be created
clientpath = "C:/" + client
#Inquires if projection file exists
projection = raw_input("Is there a .prj or .shp available with correct projection? Y or N \n")
#Records the projection location if available
if projection.upper() == "Y":
spatialr = raw_input("Drag the .prj or .shp here to record the filepath \n")
nspatialr = spatialr.replace('"', "")
elif projection.upper() == "N":
alert = raw_input("You must add the spatial reference manually, hit enter to continue. \n")
elif projection.upper() != "N" or "Y":
exit = raw_input("That is not a valid response. Try again. \n")
sys.exit()
#Checks if client folder exists; if not, creates one
if not os.path.exists(clientpath):
os.makedirs(clientpath)
#Variable for file geodatabase location
FGBpath = clientpath + "/" + client + ".gdb"
#Checks if client file geodatabase exists; if not, creates one
if not arcpy.Exists(FGBpath):
arcpy.CreateFileGDB_management(clientpath, client)
#Variable for dataset location
FDatasetpath = clientpath + "/" + client + ".gdb" + "/Network"
#Checks if dataset exists; if not, creates one
if not arcpy.Exists(FDatasetpath):
if projection.upper() == "Y":
arcpy.CreateFeatureDataset_management(FGBpath, "Network", nspatialr)
elif projection.upper() == "N":
arcpy.CreateFeatureDataset_management(FGBpath, "Network")
#Variable for cable feature class location
FCcablepath = clientpath + "/" + client + ".gdb" + "/Network" + "/cable"
#Checks if cable feature class exists; if not, creates one
if not arcpy.Exists(FCcablepath):
if projection.upper() == "Y":
arcpy.CreateFeatureclass_management (FDatasetpath, "cable", "POLYLINE", "", "", "", nspatialr)
elif projection.upper() == "N":
arcpy.CreateFeatureclass_management (FDatasetpath, "cable", "POLYLINE")
#Variable for splice point feature class location
FCsplicepath = clientpath + "/" + client + ".gdb" + "/Network" + "/splice_point"
#Checks if splice point feature class exists; if not, creates one
if not arcpy.Exists(FCsplicepath):
if projection == 'Y' or projection == 'y':
arcpy.CreateFeatureclass_management (FDatasetpath, "splice_point", "POINT", "", "", "", nspatialr)
elif projection == 'N' or projection == 'n':
arcpy.CreateFeatureclass_management (FDatasetpath, "splice_point", "POINT")
exit = raw_input("\n\n File geodatabase, dataset, and the cable \n and splice point feature classes successfully created. \n\n Hit enter to exit.")
필요한 필드를 추가하는 등 여전히해야 할 일이 있습니다.