Ben sadece iş için Python senaryosuna girmeye başladım.
Şu anda bir işlemi otomatikleştirmek için bir komut dosyası oluşturuyorum.
Temel olarak, kullanıcıya istemci adını sorar, varsa bir projeksiyon alır, istemci için C: sürücüsünde dizin oluşturur, istemciye özel dosya coğrafi veritabanı oluşturur, gerekli veri kümesini oluşturur ve istemci verilerine özel özellik sınıfları oluşturur. Sonunda, her özellik sınıfına ve muhtemelen başka şeylere gerekli alanları da ekleyecektir.
Bu gerçekten ArcMap için Python betik görgü kurallarını bilmeden başladım. Ama şimdiye kadar yarattığım şeyin sadece ArcMap dışında çalışacağını düşünüyorum.
Bu kabul edilebilir mi?
Az önce öğrendiğim arcpy.getparamaterastext () aracılığıyla kullanıcı girişi almak yerine raw_input () kullanıyorum.
Bu iyi mi?
İşe yarıyor, bunun komut dosyası yapmak için uygun bir yol olup olmadığından emin değilim.
İşte şimdiye kadar sahip olduğum kod.
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.")
Gerekli alanları eklemek gibi hala yapmam gereken işler var.