Saya baru mulai masuk ke scripting Python untuk bekerja.
Saat ini saya sedang membuat skrip untuk mengotomatisasi proses.
Pada dasarnya, ia meminta pengguna nama klien, mendapatkan proyeksi jika tersedia, membuat direktori pada drive C: untuk klien, membuat file geodatabase khusus untuk klien, membuat dataset yang diperlukan, dan membuat kelas fitur khusus untuk data klien. Akhirnya, itu juga akan menambahkan bidang yang diperlukan untuk setiap kelas fitur dan mungkin beberapa hal lainnya.
Saya mulai ini tidak benar-benar mengetahui etika yang tepat dari skrip Python untuk ArcMap. Tapi apa yang saya buat sejauh ini hanya akan berjalan di luar ArcMap, saya percaya.
Apakah ini dapat diterima?
Alih-alih mendapatkan input pengguna melalui arcpy.getparamaterastext (), yang baru saja saya ketahui, saya menggunakan raw_input ().
Apakah ini baik?
Ini berhasil, saya tidak yakin apakah ini cara yang tepat untuk melakukan scripting.
Inilah kode yang saya miliki sejauh ini.
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.")
Saya masih memiliki beberapa pekerjaan yang harus dilakukan, seperti menambahkan bidang yang diperlukan.