Tôi mới bắt đầu tham gia vào kịch bản Python cho công việc.
Tôi hiện đang tạo một tập lệnh để tự động hóa một quy trình.
Về cơ bản, nó hỏi người dùng tên máy khách, nhận một phép chiếu nếu có, tạo thư mục trên ổ C: cho máy khách, tạo tệp cơ sở dữ liệu địa lý cụ thể cho máy khách, tạo tập dữ liệu cần thiết và tạo các lớp đối tượng cụ thể cho dữ liệu máy khách. Cuối cùng, nó cũng sẽ thêm các trường bắt buộc vào từng lớp tính năng và có thể một số thứ khác.
Tôi bắt đầu điều này không thực sự biết nghi thức đúng đắn của kịch bản Python cho ArcMap. Nhưng những gì tôi đã tạo cho đến nay sẽ chỉ chạy bên ngoài ArcMap tôi tin.
điều này có chấp nhận được không?
Thay vì nhận đầu vào của người dùng thông qua arcpy.getparamaterastext () mà tôi vừa tìm hiểu, tôi đang sử dụng raw_input ().
Cái này có ổn không
Nó không hoạt động, tôi chỉ không chắc đây có phải là một cách thích hợp để thực hiện kịch bản hay không.
Đây là mã tôi có cho đến nay.
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.")
Tôi vẫn còn một số việc phải làm, như thêm các trường cần thiết.