ฉันเพิ่งเริ่มทำงานกับสคริปต์ Python เพื่อทำงาน
ฉันกำลังสร้างสคริปต์เพื่อทำให้กระบวนการเป็นไปโดยอัตโนมัติ
โดยทั่วไปแล้วมันจะถามชื่อลูกค้าของผู้ใช้รับการฉายถ้ามีสร้างไดเรกทอรีบนไดรฟ์ C: สำหรับลูกค้าสร้างฐานข้อมูลไฟล์ทางภูมิศาสตร์เฉพาะสำหรับลูกค้าสร้างชุดข้อมูลที่ต้องการและสร้างคลาสคุณลักษณะเฉพาะสำหรับข้อมูลลูกค้า ในที่สุดมันจะเพิ่มฟิลด์ที่จำเป็นให้กับแต่ละฟีเจอร์คลาสและอาจเป็นอย่างอื่น
ฉันเริ่มสิ่งนี้โดยไม่รู้ถึงมารยาทที่เหมาะสมของการเขียนสคริปต์ Python สำหรับ ArcMap แต่สิ่งที่ฉันสร้างขึ้นจนถึงตอนนี้จะทำงานนอก 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.")
ฉันยังมีงานต้องทำอีกเช่นเพิ่มฟิลด์ที่ต้องการ