def PostProcLRS(): #this will create the calibrated network LRMs and the calibration points which are useful for other referential methods MResolution = 0.0005 MTolerance = 0.001 env.MTolerance = MTolerance env.MResolution = MResolution try: #copying these layers, the routes measures are already calibrated, measures as they should be #the FC2Fc was changed in the document to show only the primary route, mitigating hte need for the V_LRSNETS view FeatureClassToFeatureClass_conversion( admin_workspace + "/GIS_CANSYS.DBO.V_LRSS_SDO_R", admin_workspace, "SMLRS", "DIRECTION in (1, 2)", "#", "#") ChangePrivileges_management(admin_workspace + "/GIS_CANSYS.DBO.SMLRS", "readonly", "GRANT", "AS_IS") FeatureClassToFeatureClass_conversion( admin_workspace + "/GIS_CANSYS.DBO.V_LRSC_SDO_R", admin_workspace, "CMLRS", "DIRECTION in (1, 2)", "#", "#") ChangePrivileges_management(admin_workspace + "/GIS_CANSYS.DBO.CMLRS", "readonly", "GRANT", "AS_IS") #Oracle EXOR require M values at ever vertex #over time EXOR measures have become a bit of a mess, because of non-functional route calibration tools prior to 2012-2013 #measures should be based on stationing and increase linearly along a project except at the location of an equation #assets are based on whatever section reference they are given, so if the section measures change, so does the asset location except: endingTime = datetime.datetime.now() ScriptStatusLogging('CANP_LRS_EXPORT.py', 'PostProcLRS Function', scriptFailure, startingTime, endingTime, GetMessages(2)) pass
def PostProcLRS(): MResolution = 0.0005 MTolerance = 0.001 env.MTolerance = MTolerance env.MResolution = MResolution LRM_NAMES = ["CMLRS", "SMLRS"] FeatureClassToFeatureClass_conversion( admin_workspace + "/GIS_CANSYS.DBO.V_LRSNETS", admin_workspace, "SMLRS", "DIRECTION in (1, 2)", "#", "#") ChangePrivileges_management(admin_workspace + "/GIS_CANSYS.DBO.SMLRS", "readonly", "GRANT", "AS_IS") FeatureClassToFeatureClass_conversion( admin_workspace + "/GIS_CANSYS.DBO.V_LRSNETC", admin_workspace, "CMLRS", "DIRECTION in (1, 2)", "#", "#") ChangePrivileges_management(admin_workspace + "/GIS_CANSYS.DBO.CMLRS", "readonly", "GRANT", "AS_IS") for LRM in LRM_NAMES: print "converting " + LRM + " to point features " + str( datetime.datetime.now()) FeatureVerticesToPoints_management( admin_workspace + "/GIS_CANSYS.DBO." + LRM, admin_workspace + "/GIS_CANSYS.DBO." + LRM + "_Point", "ALL") print "adding calibration values to " + LRM + " point features " + str( datetime.datetime.now()) AddXY_management(admin_workspace + "/GIS_CANSYS.DBO." + LRM + "_Point") print "finished " + LRM + " LRM processing " + str( datetime.datetime.now()) ChangePrivileges_management( admin_workspace + "/GIS_CANSYS.DBO." + LRM + "_Point", "readonly", "GRANT", "AS_IS")
def ROPrivs(): ChangePrivileges_management(connection1 + "CCL_Report", "Readonly", "GRANT") ChangePrivileges_management(connection1 + "MAINTENANCE_CCL", "Readonly", "GRANT") ChangePrivileges_management(connection1 + "CCL_Resolution", "Readonly", "GRANT") ChangePrivileges_management(connection1 + "CCL_LANE_CLASS_OVERLAY", "Readonly", "GRANT") ChangePrivileges_management(connection1 + "CCL_LEGEND", "Readonly", "GRANT")
def ExportGISProdLyrs(owner_workspace, admin_workspace): #similar to CANP, only for layers in another geodatabase, like GISPROD. owner = "GIS_CANSYS.SHARED." outpre = owner_workspace + "/" + owner print "exporting initialized at " + str(datetime.datetime.now()) destConnection = owner_workspace #once again, this could be change to the admin workspace for lyr in mapping.ListLayers(mxd): if lyr.name in gisprodlist: try: #manipulate the layer name a little bit differently lyrname = lyr.name[7:] print lyrname + " exporting..." outlyrname = lyrname outlyrobj = outpre + outlyrname Unlock(admin_workspace) FeatureClassToFeatureClass_conversion(lyr, destConnection, outlyrname, "#", "#", "#") ChangePrivileges_management(outlyrobj, "readonly", "GRANT", "AS_IS") print lyrname + " exported to " + outlyrname + " " + str( datetime.datetime.now()) except ExecuteError: msgs = GetMessages(2) AddError(msgs) print msgs endingTime = datetime.datetime.now() ScriptStatusLogging('CANP_LRS_EXPORT.py', 'ExportGISProdLyrs Function', scriptFailure, startingTime, endingTime, GetMessages(2)) pass except (RuntimeError, TypeError, NameError): print "TypeError on item" + lyr.name endingTime = datetime.datetime.now() ScriptStatusLogging('CANP_LRS_EXPORT.py', 'ExportGISProdLyrs Function', scriptFailure, startingTime, endingTime, GetMessages(2)) pass except: tb = sys.exc_info()[2] tbinfo = traceback.format_tb(tb)[0] pymsg = "PYTHON ERRORS:\nTraceback info:\n" + tbinfo + "\nError Info:\n" + str( sys.exc_info()[1]) msgs = "ArcPy ERRORS:\n" + GetMessages(2) + "\n" print pymsg + "\n" print msgs endingTime = datetime.datetime.now() ScriptStatusLogging('CANP_LRS_EXPORT.py', 'ExportGISProdLyrs Function', scriptFailure, startingTime, endingTime, GetMessages(2)) else: #print lyr.name +" was not in the export list and will be skipped" return
def AddROPrivs(OpRunOut): env.workspace = OpRunOut env.overwriteOutput = True print OpRunOut DissolvedFCList = ListFeatureClasses() for FC in DissolvedFCList: print FC ChangePrivileges_management(FC, "readonly", "GRANT", "AS_IS")
def PostProcAnnum(admin_workspace): Unlock(admin_workspace) #AADT is historical and left open so it takes a really long time to run all the junk that exists in this layer #It might help to put a def query in the MXD that ilmits AADT to 5 years #sine AADT is only updated once a year, this can be run manually annually or as needed AADT = admin_workspace + "/GIS_CANSYS.DBO.ACCS" Unlock(admin_workspace) Dissolve_management( admin_workspace + "/GIS_CANSYS.DBO.V_ACCS_SDO_V", AADT, "CRND_RTE;LRS_KEY;STATE_LRS;ROUTE_NO;COUNTY_CD;COUNTY_NAME;LANE_DIRECTION;DISTRICT;DIV_UNDIV;ACS_CTRL_ID;ACS_CTRL_ID_DESC", "BCMP MIN;ECMP MAX;BSMP MIN;ESMP MAX", "MULTI_PART", "DISSOLVE_LINES") ChangePrivileges_management(AADT, "readonly", "GRANT", "AS_IS")
def PostProcAnnum(): Unlock(admin_workspace) AADT = "Database Connections/SQL61_GIS_CANSYS.sde/GIS_CANSYS.DBO.ACCS" Unlock(admin_workspace) Dissolve_management( "Database Connections/SQL61_GIS_CANSYS.sde/GIS_CANSYS.DBO.V_ACCS_SDO_V", AADT, "CRND_RTE;LRS_KEY;STATE_LRS;ROUTE_NO;COUNTY_CD;COUNTY_NAME;LANE_DIRECTION;DISTRICT;DIV_UNDIV;ACS_CTRL_ID;ACS_CTRL_ID_DESC", "BCMP MIN;ECMP MAX;BSMP MIN;ESMP MAX", "MULTI_PART", "DISSOLVE_LINES") ChangePrivileges_management(AADT, "readonly", "GRANT", "AS_IS") AcceptConnections(admin_workspace, True)
def PostProcAnnum(owner_workspace, admin_workspace): Unlock(admin_workspace) owner = "GIS_CANSYS.SHARED." outpre = owner_workspace + "/" + owner #AADT is historical and left open so it takes a really long time to run all the junk that exists in this layer #It might help to put a def query in the MXD that ilmits AADT to 5 years #sine AADT is only updated once a year, this can be run manually annually or as needed AADT = outpre + "AADT" Unlock(admin_workspace) Dissolve_management( outpre + "V_AADT_SDO_V", AADT, "CRND_RTE;LRS_KEY;STATE_LRS;ROUTE_NO;COUNTY_CD;COUNTY_NAME;LANE_DIRECTION;DISTRICT;DIV_UNDIV;AADT_CNT;CNT_DT;XPNSN_FCTR;XPNSN_FCTR_DT;FTR_AADT;ALTD_FTR_AADT;ALTD_FTR_DT;K_FCTR;HVY_CMRCL;RAW_HVY_CMRCL;HVY_CMRCL_DT;PCT_HVY_CMRCL;MED_TRK;RAW_MED_TRK;HVY_TRK;RAW_HVY_TRK;RAW_NON_HVY_COMM;TRF_SEQ;DIR_SPLT;AADT_COUNT_YEAR;RAW_AADT_CNT", "BCMP MIN;ECMP MAX;BSMP MIN;ESMP MAX", "MULTI_PART", "DISSOLVE_LINES") ChangePrivileges_management(AADT, "readonly", "GRANT", "AS_IS")
def ExportCANPLyrs(): print "exporting initialized at " + str(datetime.datetime.now()) destConnection = r"D:\SQL61_GIS_CANSYS.sde" TableToTable_conversion("MAP_EXTRACT", r"Database Connections/SQL61_GIS_CANSYS.sde", "Map_Extract", "#", "#", "#") for lyr in mapping.ListLayers(mxd): if lyr.name in CANPlist: try: lyrname = lyr.name[11:] print lyrname + " exporting..." outlyrname = "V_" + lyrname outlyrobj = destConnection + "\\GIS_CANSYS.DBO." + outlyrname FeatureClassToFeatureClass_conversion(lyr, destConnection, outlyrname, "#", "#", "#") ChangePrivileges_management(outlyrobj, "readonly", "GRANT", "AS_IS") print lyrname + " exported to " + outlyrname + " " + str( datetime.datetime.now()) except ExecuteError: msgs = GetMessages(2) AddError(msgs) print msgs pass except (RuntimeError, TypeError, NameError): print "TypeError on item" + lyr.name pass except: tb = sys.exc_info()[2] tbinfo = traceback.format_tb(tb)[0] # Concatenate information together concerning the error into a message string # pymsg = "PYTHON ERRORS:\nTraceback info:\n" + tbinfo + "\nError Info:\n" + str( sys.exc_info()[1]) msgs = "ArcPy ERRORS:\n" + GetMessages(2) + "\n" print pymsg + "\n" print msgs else: #print lyr.name +" was not in the export list and will be skipped" pass
def PostProcCalibPts(): #this will create the calibrated network LRMs and the calibration points which are useful for other referential methods # It turns out these calibration points aren't reliable to calibrate routes due to the source geometry having non-increasing measures, also due to the ESRI calibrate routes tools: # http://support.esri.com/en/bugs/nimbus/TklNMDkwOTk5 # http://search.esri.com/results/index.cfm?do=support&searchview=all&q=Calibrate%20Routes%20&filterid=2&requiredfields=(search-category:bugs/nimbus)&filter=p MResolution = 0.0005 MTolerance = 0.001 env.MTolerance = MTolerance env.MResolution = MResolution LRM_NAMES = ["SMLRS", "CMLRS"] try: for LRM in LRM_NAMES: print "converting " + LRM + " to point features " + str( datetime.datetime.now()) #this is rather expensive FeatureVerticesToPoints_management( owner_workspace + "/GIS_CANSYS.SHARED." + LRM, owner_workspace + "/GIS_CANSYS.SHARED." + LRM + "_Point", "ALL") print "adding calibration values to " + LRM + " point features " + str( datetime.datetime.now()) #this is VERY expensive and should be replaced by a da cursor that calculates SHAPE@M #for now this is easy and convenient to attribute the M value at every point AddXY_management(owner_workspace + "/GIS_CANSYS.SHARED." + LRM + "_Point") #AddXY might take an hour total for both LRMS print "finished " + LRM + " LRM processing " + str( datetime.datetime.now()) ChangePrivileges_management( admin_workspace + "/GIS_CANSYS.SHARED." + LRM + "_Point", "readonly", "GRANT", "AS_IS") except: endingTime = datetime.datetime.now() #ScriptStatusLogging('CANP_LRS_EXPORT.py', 'PostProcCalibPts Function failed while attempting to calibrate ' + str(LRM), # scriptFailure, startingTime, # endingTime, GetMessages(2)) pass
def PostProcDissolveOne(): owner = "GIS_CANSYS.SHARED." outpre = admin_workspace + "/" + owner DissolveLayer = "MED" PostProcDissolveLocation = "MED" # @UnusedVariable #each layer for GIS should be dissolved as multi-part lines so they can more efficiently be mapped online #each layer has different fields so each of these dissolves can be tested in ArcMap and copied to this script as needed try: Outputlyr = outpre + DissolveLayer MakeFeatureLayer_management( owner + "V_MED_SDO_V", "MED_PRIMARY", "CRND_RTE LIKE '%EB' OR CRND_RTE LIKE '%NB'", "#", "#") Dissolve_management( "MED_PRIMARY", Outputlyr, "CRND_RTE;LRS_KEY;COUNTY_CD;COUNTY_NAME;LANE_DIRECTION;DISTRICT;DIV_UNDIV;MED_ID;MED_ID_DESC;MED_WDTH;MED_WDTH_FT", "BCMP MIN;ECMP MAX;BSMP MIN;ESMP MAX", "MULTI_PART", "DISSOLVE_LINES") ChangePrivileges_management(Outputlyr, "readonly", "GRANT", "AS_IS") #print "MED dissolved for viewing" except: print "oops" pass
def PostProcCalibPts(): #this will create the calibrated network LRMs and the calibration points which are useful for other referential methods MResolution = 0.0005 MTolerance = 0.001 env.MTolerance = MTolerance env.MResolution = MResolution LRM_NAMES = ["SMLRS", "CMLRS"] try: for LRM in LRM_NAMES: print "converting " + LRM + " to point features " + str( datetime.datetime.now()) #this is rather expensive FeatureVerticesToPoints_management( admin_workspace + "/GIS_CANSYS.DBO." + LRM, admin_workspace + "/GIS_CANSYS.DBO." + LRM + "_Point", "ALL") print "adding calibration values to " + LRM + " point features " + str( datetime.datetime.now()) #this is VERY expensive and should be replaced by a da cursor that calculates SHAPE@M #for now this is easy and convenient to attribute the M value at every point AddXY_management(admin_workspace + "/GIS_CANSYS.DBO." + LRM + "_Point") #AddXY might take an hour total for both LRMS print "finished " + LRM + " LRM processing " + str( datetime.datetime.now()) ChangePrivileges_management( admin_workspace + "/GIS_CANSYS.DBO." + LRM + "_Point", "readonly", "GRANT", "AS_IS") except: endingTime = datetime.datetime.now() ScriptStatusLogging( 'CANP_LRS_EXPORT.py', 'PostProcCalibPts Function failed while attempting to calibrate ' + str(LRM), scriptFailure, startingTime, endingTime, GetMessages(2)) pass
''' Created on Jun 21, 2016 This is my new favorite script I've ever had @author: kyleg ''' from arcpy import ImportXMLWorkspaceDocument_management, ChangePrivileges_management, env, EnableEditorTracking_management from config_collector import ODB env.workspace = ODB database = "Collector20160621.Geo" Datasets = "Collector20160621.Geo.Railroad;Collector20160621.Geo.RoadSide;Collector20160621.Geo.Roadway;Collector20160621.Geo.Signs" #DatasetList = ["Collector.SDE.RailroadCrossing", "Collector.SDE.RoadSide", "Collector.SDE.Roadway", "Collector.SDE.Signs"] ## Have to assign Collector user in SQL Management Studio security mapping first. ChangePrivileges_management(Datasets, user="******", View="GRANT", Edit="GRANT") ## Enabling Editor Tracking by feature dataset doesnt work in python at 10.3.1 - would have to do it by feature class, or apply to FD in catalog ## Add GUIDS EnableEditorTracking_management()
def PostProcDissolve(): owner = "GIS_CANSYS.SHARED." outpre = owner_workspace + "/" + owner PostProcDissolveLocation = "" #each layer for GIS should be dissolved as multi-part lines so they can more efficiently be mapped online #each layer has different fields so each of these dissolves can be tested in ArcMap and copied to this script as needed try: ##PostProcDissolveLocation = "ACCS" ACCS = outpre + "ACCS" Unlock(admin_workspace) Dissolve_management( owner + "V_ACCS_SDO_V", ACCS, "CRND_RTE;LRS_KEY;STATE_LRS;ROUTE_NO;COUNTY_CD;COUNTY_NAME;LANE_DIRECTION;DISTRICT;DIV_UNDIV;ACS_CTRL_ID;ACS_CTRL_ID_DESC", "BCMP MIN;ECMP MAX;BSMP MIN;ESMP MAX", "MULTI_PART", "DISSOLVE_LINES") ChangePrivileges_management(ACCS, "readonly", "GRANT", "AS_IS") #PostProcDissolveLocation = "SMAP" SMAP = outpre + "SMAP" Unlock(admin_workspace) Dissolve_management( owner + "V_SMAP_SDO_V", SMAP, "CRND_RTE;LRS_KEY;COUNTY_CD;COUNTY_NAME;LANE_DIRECTION;DISTRICT;DIV_UNDIV;STATIONING_TYPE;STATIONING_TYPE_DESC;BEGIN_STATIONING;BEGIN_STATIONING_DECIMAL;END_STATIONING;END_STATIONING_DECIMAL;PROJECT_YEAR;PROJECT_NUMBER;PROJECT_TYPE;PROJECT_TYPE_DESC;HOST_PROJECT_NUMBER;PW_URL", "BCMP MIN;ECMP MAX;BSMP MIN;ESMP MAX", "MULTI_PART", "DISSOLVE_LINES") ChangePrivileges_management(SMAP, "readonly", "GRANT", "AS_IS") print "SMAP dissolved for viewing" #PostProcDissolveLocation = "LYRS" LYRS = outpre + "LYRS" Dissolve_management( owner + "V_LYRS_SDO_V", LYRS, "CRND_RTE;LRS_KEY;COUNTY_CD;COUNTY_NAME;LANE_DIRECTION;DISTRICT;DIV_UNDIV;LAYER_TYPE;LAYER_TYPE_DESC;MATERIAL_TYPE;MATERIAL_TYPE_DESC;DEPTHS_MILLIMETERS;LAYER_DATE;MATERIAL_WIDTH_METERS;MATERIAL_WIDTH_FEET;SOURCE_TYPE;SOURCE_TYPE_DESC;PROJECT_ID;PW_URL", "BCMP MIN;ECMP MAX;BSMP MIN;ESMP MAX", "MULTI_PART", "DISSOLVE_LINES") ChangePrivileges_management(LYRS, "readonly", "GRANT", "AS_IS") print "LYRS dissolved for viewing" #PostProcDissolveLocation = "LNCL" LNCL = outpre + "LNCL" MakeFeatureLayer_management( outpre + "V_LNCL_SDO_V", "LNCL_PRIMARY", "CRND_RTE LIKE '%EB' OR CRND_RTE LIKE '%NB'", "#", "OBJECTID OBJECTID VISIBLE NONE;CRND_RTE CRND_RTE VISIBLE NONE;LRS_KEY LRS_KEY VISIBLE NONE;BCMP BCMP VISIBLE NONE;ECMP ECMP VISIBLE NONE;BSMP BSMP VISIBLE NONE;ESMP ESMP VISIBLE NONE;COUNTY_CD COUNTY_CD VISIBLE NONE;COUNTY_NAME COUNTY_NAME VISIBLE NONE;LANE_DIRECTION LANE_DIRECTION VISIBLE NONE;DISTRICT DISTRICT VISIBLE NONE;DIV_UNDIV DIV_UNDIV VISIBLE NONE;LNCL_CLS_ID LNCL_CLS_ID VISIBLE NONE;LNCL_CLS_ID_DESC LNCL_CLS_ID_DESC VISIBLE NONE;LNCL_DT LNCL_DT VISIBLE NONE;Shape Shape VISIBLE NONE;Shape.STLength() Shape.STLength() VISIBLE NONE" ) Dissolve_management( "LNCL_PRIMARY", LNCL, "CRND_RTE;LRS_KEY;COUNTY_CD;COUNTY_NAME;LANE_DIRECTION;DISTRICT;DIV_UNDIV;LNCL_CLS_ID;LNCL_CLS_ID_DESC", "BCMP MIN;ECMP MAX;BSMP MIN;ESMP MAX", "MULTI_PART", "DISSOLVE_LINES") ChangePrivileges_management(LNCL, "readonly", "GRANT", "AS_IS") print "LNCL dissolved for viewing" #PostProcDissolveLocation = "CPMS" CPMS = outpre + "CPMS" Dissolve_management( owner + "V_CPMS_SDO_V", CPMS, "CRND_RTE;LRS_KEY;COUNTY_CD;COUNTY_NAME;LANE_DIRECTION;DISTRICT;DIV_UNDIV;SCHEME_ID;PROJECT_ID;TECH_NAME;WORK_TYPE_DESC;DESIGN_CRITERIA;LEG_MAP_ID;CATEGORY_CODE;SUBCAT_CODE;PROJECT_DESC_FRND;PROJ_DISTRICT;PROJ_AREA;PROJ_SUB_AREA;PROJ_LENGTH;HOST_PROJ_NUM;FISCAL_YEAR_PRGM;LETTING_DATE;PW_URL", "BCMP MIN;BSMP MIN;ECMP MAX;ESMP MAX", "MULTI_PART", "DISSOLVE_LINES") ChangePrivileges_management(CPMS, "readonly", "GRANT", "AS_IS") print "CPMS dissolved for viewing" #PostProcDissolveLocation = "POEQ" POEQ = outpre + "POEQ" Dissolve_management( owner + "V_POEQ_SDO_V", POEQ, "CRND_RTE;LRS_KEY;COUNTY_CD;COUNTY_NAME;LANE_DIRECTION;DISTRICT;DIV_UNDIV;IRIR;RLIFE;RLIFE_DEFAULT;RLIFE_DEFAULT_DESC;EQFAULT;EQJD;EQTCR;RUTVAL;PVMTGRP;PVMTGRP_DESC;DEF_FLAG;DEF_FLAG_DESC;POEQ_DT;MEAN_IRIR;YEAR_LAST_IMP;YEAR_LAST_CONST;LAST_OVERLAY_THIC;IRIR_DATE;IRIR_DATE_DEFAULT;IRIR_DATE_DEFAULT_DESC", "BCMP MIN;ECMP MAX;BSMP MIN;ESMP MAX", "MULTI_PART", "DISSOLVE_LINES") ChangePrivileges_management(POEQ, "readonly", "GRANT", "AS_IS") print "POEQ dissolved for viewing" #PostProcDissolveLocation = "HPPA" HPPA = outpre + "HPPA" Dissolve_management( owner + "V_HPPA_SDO_V", HPPA, "CRND_RTE;LRS_KEY;COUNTY_CD;COUNTY_NAME;LANE_DIRECTION;DISTRICT;DIV_UNDIV;HPMS_SURFACE_TYPE;HPMS_SURFACE_TYPE_DESC;HPMS_YEAR_LAST_IMPROV;HPMS_YEAR_LAST_CONST;HPMS_LAST_OVERLAY_THICK;HPMS_THICKNESS_RIGID;HPMS_THICKNESS_FLEXIBLE;HPMS_BASE_TYPE;HPMS_BASE_TYPE_DESC;HPMS_BASE_THICKNESS", "BCMP MIN;ECMP MAX;BSMP MIN;ESMP MAX", "MULTI_PART", "DISSOLVE_LINES") ChangePrivileges_management(HPPA, "readonly", "GRANT", "AS_IS") #print "HPPA dissolved for viewing" #PostProcDissolveLocation = "SPED" SPED = outpre + "SPED" Dissolve_management( owner + "V_SPED_SDO_V", SPED, "CRND_RTE;LRS_KEY;COUNTY_CD;COUNTY_NAME;LANE_DIRECTION;DISTRICT;DIV_UNDIV;SPD_LMT;SPD_LMT_DESC;SPED_RESOL", "#", "MULTI_PART", "DISSOLVE_LINES") ChangePrivileges_management(SPED, "readonly", "GRANT", "AS_IS") #print "SPED dissolved for viewing" #PostProcDissolveLocation = "FUN" FUN = outpre + "FUN" Dissolve_management( owner + "V_FUN_SDO_V", FUN, "CRND_RTE;LRS_KEY;COUNTY_CD;COUNTY_NAME;LANE_DIRECTION;DISTRICT;DIV_UNDIV;FUN_CLASS;FUN_CLASS_DESC;OLD_FUN_CLASS", "BCMP MIN;ECMP MAX;BSMP MIN;ESMP MAX", "MULTI_PART", "DISSOLVE_LINES") ChangePrivileges_management(FUN, "readonly", "GRANT", "AS_IS") #print "FUN dissolved for viewing" #PostProcDissolveLocation = "LANE" LANE = outpre + "LANE" Dissolve_management( owner + "V_LANE_SDO_V", LANE, "CRND_RTE;LRS_KEY;COUNTY_CD;COUNTY_NAME;LANE_DIRECTION;DISTRICT;DIV_UNDIV;LN_ID;LN_ID_DESC;LN_WDTH;LN_WDTH_FT;XSP;XSP_DESCR;HOV;HOV_DESC", "BCMP MIN;ECMP MAX;BSMP MIN;ESMP MAX", "MULTI_PART", "DISSOLVE_LINES") ChangePrivileges_management(LANE, "readonly", "GRANT", "AS_IS") #print "LANE dissolved for viewing" #PostProcDissolveLocation = "NHS" NHS = outpre + "NHS" Dissolve_management( owner + "V_NHS_SDO_V", NHS, "LRS_KEY;COUNTY_CD;COUNTY_NAME;DISTRICT;NHS_ID;NHS_ID_DESC", "BCMP MIN;ECMP MAX;BSMP MIN;ESMP MAX", "MULTI_PART", "DISSOLVE_LINES") ChangePrivileges_management(NHS, "readonly", "GRANT", "AS_IS") #print "NHS dissolved for viewing" #PostProcDissolveLocation = "SHLD" SHLD = outpre + "SHLD" Dissolve_management( owner + "V_SHLD_SDO_V", SHLD, "CRND_RTE;LRS_KEY;COUNTY_CD;COUNTY_NAME;LANE_DIRECTION;DISTRICT;DIV_UNDIV;SHLDR_ID;SHLDR_ID_DESC;FORESLOPE;SHLDR_WDTH;SHLDR_WDTH_FT;XSP;XSP_DESCR", "BCMP MIN;ECMP MAX;BSMP MIN;ESMP MAX", "MULTI_PART", "DISSOLVE_LINES") ChangePrivileges_management(SHLD, "readonly", "GRANT", "AS_IS") #print "SHLD dissolved for viewing" #PostProcDissolveLocation = "MED" MED = outpre + "MED" MakeFeatureLayer_management( owner + "V_MED_SDO_V", "MED_PRIMARY", "CRND_RTE LIKE '%EB' OR CRND_RTE LIKE '%NB'", "#", "#") Dissolve_management( "MED_PRIMARY", MED, "CRND_RTE;LRS_KEY;COUNTY_CD;COUNTY_NAME;LANE_DIRECTION;DISTRICT;DIV_UNDIV;MED_ID;MED_ID_DESC;MED_WDTH; MED_WDTH_FT", "BCMP MIN;ECMP MAX;BSMP MIN;ESMP MAX", "MULTI_PART", "DISSOLVE_LINES") ChangePrivileges_management(MED, "readonly", "GRANT", "AS_IS") #print "MED dissolved for viewing" #PostProcDissolveLocation = "RMBL" RMBL = outpre + "RMBL" Dissolve_management( owner + "V_RMBL_SDO_V", RMBL, "CRND_RTE;LRS_KEY;COUNTY_CD;COUNTY_NAME;LANE_DIRECTION;DISTRICT;DIV_UNDIV;RMBL_SHAPE;RMBL_SHAPE_DESC;HOST_PRJCT_ID;PRJCT_ID;RMBL_SOURCE;RMBL_SOURCE_DESC;XSP;XSP_DESCR", "BCMP MIN;ECMP MAX;BSMP MIN;ESMP MAX", "MULTI_PART", "DISSOLVE_LINES") ChangePrivileges_management(RMBL, "readonly", "GRANT", "AS_IS") #print "RMBL dissolved for viewing" #PostProcDissolveLocation = "SWID" SWID = outpre + "SWID" Dissolve_management( owner + "V_SWID_SDO_V", SWID, "CRND_RTE;LRS_KEY;COUNTY_CD;COUNTY_NAME;LANE_DIRECTION;DISTRICT;DIV_UNDIV;SRFC_WDTH; SRFC_WDTH_FT", "BCMP MIN;ECMP MAX;BSMP MIN;ESMP MAX", "MULTI_PART", "DISSOLVE_LINES") ChangePrivileges_management(SWID, "readonly", "GRANT", "AS_IS") ##PostProcDissolveLocation = "" STHN = outpre + "STHN" Dissolve_management( owner + "V_STHN_SDO_V", STHN, dissolve_field= "CRND_RTE;LRS_KEY;COUNTY_CD;COUNTY_NAME;LANE_DIRECTION;DISTRICT;DIV_UNDIV;STRAHNET;STRAHNET_DESC", statistics_fields="BCMP MIN;ECMP MAX;BSMP MIN;ESMP MAX", multi_part="MULTI_PART", unsplit_lines="DISSOLVE_LINES") ChangePrivileges_management(STHN, "readonly", "GRANT", "AS_IS") except: endingTime = datetime.datetime.now() #if PostProcDissolveLocation != "": # ScriptStatusLogging('CANP_LRS_EXPORT.py', 'PostProcDissolve failed while attempting to dissolve ' + str(PostProcDissolveLocation), # scriptFailure, startingTime, # endingTime, GetMessages(2)) #elif: #ERROR 000732: path not valid #else: # ScriptStatusLogging('CANP_LRS_EXPORT.py', 'PostProcDissolve Function', # scriptFailure, startingTime, # endingTime, GetMessages(2)) pass
def ExportNUSYS(admin_workspace): print "exporting initialized at " + str(datetime.datetime.now()) #set the output database, this could be changed to admin workspace destConnection = admin_workspace #copy the map extract table to the destination commented 5/8/2014 #TableToTable_conversion("MAP_EXTRACT",destConnection,"Map_Extract","#","#","#") #start the loop for layers in the mxd for lyr in mapping.ListLayers(nusys_mxd): #continue the loop operations for layers in the NUSYS MXD (unlisted) try: #manipulate the layer name a little bit lyrname = lyr.name print lyrname + " exporting..." outlyrname = lyrname outlyrobj = destConnection + "\\GIS_CANSYS.SHARED." + outlyrname #this should prevent ERROR 000258: Layer already exists, even though OverwriteOutput is true if Exists(outlyrobj): Delete_management(outlyrobj) #export the layer to SQL server FeatureClassToFeatureClass_conversion(lyr, destConnection, outlyrname, "#", "#", "#") #this is a total replacement, so grant the necessary administrative privileges ChangePrivileges_management(outlyrobj, "readonly", "GRANT", "AS_IS") #tell me what happened print lyrname + " exported to " + outlyrname + " " + str( datetime.datetime.now()) except ExecuteError: msgs = GetMessages(2) AddError(msgs) #tell me what went wrong if there was an execute error print msgs AcceptConnections(admin_workspace, True) endingTime = datetime.datetime.now() ScriptStatusLogging('CANP_LRS_EXPORT.py', 'ExportNUSYS Function', scriptFailure, startingTime, endingTime, GetMessages(2)) pass except (RuntimeError, TypeError, NameError): #tell me if there is a problem with one of the layers print "TypeError on item" + lyr.name AcceptConnections(admin_workspace, True) endingTime = datetime.datetime.now() ScriptStatusLogging('CANP_LRS_EXPORT.py', 'ExportNUSYS Function', scriptFailure, startingTime, endingTime, GetMessages(2)) pass except: tb = sys.exc_info()[2] tbinfo = traceback.format_tb(tb)[0] # Concatenate information together concerning the error into a message string pymsg = "PYTHON ERRORS:\nTraceback info:\n" + tbinfo + "\nError Info:\n" + str( sys.exc_info()[1]) msgs = "ArcPy ERRORS:\n" + GetMessages(2) + "\n" print pymsg + "\n" print msgs AcceptConnections(admin_workspace, True) endingTime = datetime.datetime.now() ScriptStatusLogging('CANP_LRS_EXPORT.py', 'ExportNUSYS Function', scriptFailure, startingTime, endingTime, GetMessages(2))
def PostProcDissolve(): Unlock(admin_workspace) ACCS = "Database Connections/SQL61_GIS_CANSYS.sde/GIS_CANSYS.DBO.ACCS" Unlock(admin_workspace) Dissolve_management( "Database Connections/SQL61_GIS_CANSYS.sde/GIS_CANSYS.DBO.V_ACCS_SDO_V", ACCS, "CRND_RTE;LRS_KEY;STATE_LRS;ROUTE_NO;COUNTY_CD;COUNTY_NAME;LANE_DIRECTION;DISTRICT;DIV_UNDIV;ACS_CTRL_ID;ACS_CTRL_ID_DESC", "BCMP MIN;ECMP MAX;BSMP MIN;ESMP MAX", "MULTI_PART", "DISSOLVE_LINES") ChangePrivileges_management(ACCS, "readonly", "GRANT", "AS_IS") SMAP = "Database Connections/SQL61_GIS_CANSYS.sde/GIS_CANSYS.DBO.SMAP" Unlock(admin_workspace) Dissolve_management( "Database Connections/SQL61_GIS_CANSYS.sde/GIS_CANSYS.DBO.V_SMAP_SDO_V", SMAP, "CRND_RTE;LRS_KEY;COUNTY_CD;COUNTY_NAME;LANE_DIRECTION;DISTRICT;DIV_UNDIV;STATIONING_TYPE;STATIONING_TYPE_DESC;BEGIN_STATIONING;BEGIN_STATIONING_DECIMAL;END_STATIONING;END_STATIONING_DECIMAL;PROJECT_YEAR;PROJECT_NUMBER;PROJECT_TYPE;PROJECT_TYPE_DESC;HOST_PROJECT_NUMBER;PW_URL", "BCMP MIN;ECMP MAX;BSMP MIN;ESMP MAX", "MULTI_PART", "DISSOLVE_LINES") ChangePrivileges_management(SMAP, "readonly", "GRANT", "AS_IS") print "SMAP dissolved for viewing" LYRS = "Database Connections/SQL61_GIS_CANSYS.sde/GIS_CANSYS.DBO.LYRS" Dissolve_management( "Database Connections/SQL61_GIS_CANSYS.sde/GIS_CANSYS.DBO.V_LYRS_SDO_V", LYRS, "CRND_RTE;LRS_KEY;COUNTY_CD;COUNTY_NAME;LANE_DIRECTION;DISTRICT;DIV_UNDIV;LAYER_TYPE;LAYER_TYPE_DESC;MATERIAL_TYPE;MATERIAL_TYPE_DESC;DEPTHS_MILLIMETERS;LAYER_DATE;MATERIAL_WIDTH_METERS;MATERIAL_WIDTH_FEET;SOURCE_TYPE;SOURCE_TYPE_DESC;PROJECT_ID;PW_URL", "BCMP MIN;ECMP MAX;BSMP MIN;ESMP MAX", "MULTI_PART", "DISSOLVE_LINES") ChangePrivileges_management(LYRS, "readonly", "GRANT", "AS_IS") print "LYRS dissolved for viewing" LNCL = "Database Connections/SQL61_GIS_CANSYS.sde/GIS_CANSYS.DBO.LNCL" MakeFeatureLayer_management( "Database Connections/SQL61_GIS_CANSYS.sde/GIS_CANSYS.DBO.V_LNCL_SDO_V", "LNCL_PRIMARY", "CRND_RTE LIKE '%EB' OR CRND_RTE LIKE '%NB'", "#", "OBJECTID OBJECTID VISIBLE NONE;CRND_RTE CRND_RTE VISIBLE NONE;LRS_KEY LRS_KEY VISIBLE NONE;BCMP BCMP VISIBLE NONE;ECMP ECMP VISIBLE NONE;BSMP BSMP VISIBLE NONE;ESMP ESMP VISIBLE NONE;COUNTY_CD COUNTY_CD VISIBLE NONE;COUNTY_NAME COUNTY_NAME VISIBLE NONE;LANE_DIRECTION LANE_DIRECTION VISIBLE NONE;DISTRICT DISTRICT VISIBLE NONE;DIV_UNDIV DIV_UNDIV VISIBLE NONE;LNCL_CLS_ID LNCL_CLS_ID VISIBLE NONE;LNCL_CLS_ID_DESC LNCL_CLS_ID_DESC VISIBLE NONE;LNCL_DT LNCL_DT VISIBLE NONE;Shape Shape VISIBLE NONE;Shape.STLength() Shape.STLength() VISIBLE NONE" ) Dissolve_management( "LNCL_PRIMARY", LNCL, "CRND_RTE;LRS_KEY;COUNTY_CD;COUNTY_NAME;LANE_DIRECTION;DISTRICT;DIV_UNDIV;LNCL_CLS_ID;LNCL_CLS_ID_DESC", "BCMP MIN;ECMP MAX;BSMP MIN;ESMP MAX", "MULTI_PART", "DISSOLVE_LINES") ChangePrivileges_management(LNCL, "readonly", "GRANT", "AS_IS") print "LYRS dissolved for viewing" CPMS = "Database Connections/SQL61_GIS_CANSYS.sde/GIS_CANSYS.DBO.CPMS" Dissolve_management( "Database Connections/SQL61_GIS_CANSYS.sde/GIS_CANSYS.DBO.V_CPMS_SDO_V", CPMS, "CRND_RTE;LRS_KEY;COUNTY_CD;COUNTY_NAME;LANE_DIRECTION;DISTRICT;DIV_UNDIV;SCHEME_ID;PROJECT_ID;TECH_NAME;WORK_TYPE_DESC;DESIGN_CRITERIA;LEG_MAP_ID;CATEGORY_CODE;SUBCAT_CODE;PROJECT_DESC_FRND;PROJ_DISTRICT;PROJ_AREA;PROJ_SUB_AREA;PROJ_LENGTH;HOST_PROJ_NUM;FISCAL_YEAR_PRGM;LETTING_DATE;PW_URL", "BCMP MIN;BSMP MIN;ECMP MAX;ESMP MAX", "MULTI_PART", "DISSOLVE_LINES") ChangePrivileges_management(CPMS, "readonly", "GRANT", "AS_IS") print "CPMS dissolved for viewing" POEQ = "Database Connections/SQL61_GIS_CANSYS.sde/GIS_CANSYS.DBO.POEQ" Dissolve_management( "Database Connections/SQL61_GIS_CANSYS.sde/GIS_CANSYS.DBO.V_POEQ_SDO_V", POEQ, "CRND_RTE;LRS_KEY;COUNTY_CD;COUNTY_NAME;LANE_DIRECTION;DISTRICT;DIV_UNDIV;IRIR;RLIFE;RLIFE_DEFAULT;RLIFE_DEFAULT_DESC;EQFAULT;EQJD;EQTCR;RUTVAL;PVMTGRP;PVMTGRP_DESC;DEF_FLAG;DEF_FLAG_DESC;POEQ_DT;MEAN_IRIR;YEAR_LAST_IMP;YEAR_LAST_CONST;LAST_OVERLAY_THIC;IRIR_DATE;IRIR_DATE_DEFAULT;IRIR_DATE_DEFAULT_DESC", "BCMP MIN;ECMP MAX;BSMP MIN;ESMP MAX", "MULTI_PART", "DISSOLVE_LINES") ChangePrivileges_management(POEQ, "readonly", "GRANT", "AS_IS") print "POEQ dissolved for viewing" HPPA = "Database Connections/SQL61_GIS_CANSYS.sde/GIS_CANSYS.DBO.HPPA" Dissolve_management( "GIS_CANSYS.DBO.V_HPPA_SDO_V", HPPA, "CRND_RTE;LRS_KEY;COUNTY_CD;COUNTY_NAME;LANE_DIRECTION;DISTRICT;DIV_UNDIV;HPMS_SURFACE_TYPE;HPMS_SURFACE_TYPE_DESC;HPMS_YEAR_LAST_IMPROV;HPMS_YEAR_LAST_CONST;HPMS_LAST_OVERLAY_THICK;HPMS_THICKNESS_RIGID;HPMS_THICKNESS_FLEXIBLE;HPMS_BASE_TYPE;HPMS_BASE_TYPE_DESC;HPMS_BASE_THICKNESS", "BCMP MIN;ECMP MAX;BSMP MIN;ESMP MAX", "MULTI_PART", "DISSOLVE_LINES") ChangePrivileges_management(HPPA, "readonly", "GRANT", "AS_IS") print "HPPA dissolved for viewing" SPED = "Database Connections/SQL61_GIS_CANSYS.sde/GIS_CANSYS.DBO.SPED" Dissolve_management( "GIS_CANSYS.DBO.V_SPED_SDO_V", SPED, "CRND_RTE;LRS_KEY;COUNTY_CD;COUNTY_NAME;LANE_DIRECTION;DISTRICT;DIV_UNDIV;SPD_LMT;SPD_LMT_DESC;SPED_RESOL", "#", "MULTI_PART", "DISSOLVE_LINES") ChangePrivileges_management(SPED, "readonly", "GRANT", "AS_IS") print "SPED dissolved for viewing" FUN = "Database Connections/SQL61_GIS_CANSYS.sde/GIS_CANSYS.DBO.FUN" Dissolve_management( "GIS_CANSYS.DBO.V_FUN_SDO_V", FUN, "CRND_RTE;LRS_KEY;COUNTY_CD;COUNTY_NAME;LANE_DIRECTION;DISTRICT;DIV_UNDIV;FUN_CLASS;FUN_CLASS_DESC;DONUT_SMPL;DONUT_SMPL_DESC;FUN_DT;OLD_FUN_CLASS", "BCMP MIN;ECMP MAX;BSMP MIN;ESMP MAX", "MULTI_PART", "DISSOLVE_LINES") ChangePrivileges_management(FUN, "readonly", "GRANT", "AS_IS") print "FUN dissolved for viewing" AcceptConnections(admin_workspace, True)
def DissolveNonDirectionalItems(OpEnvironmentMode): OpRunIn = OpEnvironment.OpRunInSum # @UndefinedVariable OpRunOut = OpEnvironment.OpRunOut # @UndefinedVariable adm = OpEnvironment.adm # @UndefinedVariable Owner = OpEnvironment.Owner # @UndefinedVariable DB = OpEnvironment.DB # @UndefinedVariable env.workspace = OpRunIn env.overwriteOutput = True print OpRunIn #combine the connection, db, and owner to the destination path for enterprise geodatabase output OpRunFullOut = OpRunOut + "/" + DB + "." + Owner + "." print OpRunFullOut FCList = ListFeatureClasses() print "dissolving items in the primary direction" FCGlobalFieldsDissolve = [ "LRS_KEY", "COUNTY_CD", "COUNTY_NAME", "DISTRICT" ] FCGlobalFieldsSummarize = "BSMP MIN;ESMP MAX;BCMP MIN;ECMP MAX" FCFieldsIgnore = [ "OBJECTID", "CRND_RTE", "LANE_DIRECTION", "DIV_UNDIV", "SHAPE", "SHAPE.STLength()", "BSMP", "ESMP", "BCMP", "ECMP", "OLD_FUN_CLASS", "FUN_DT" ] for Item in FCList: ItemOut = Item[2:] ItemDissolveFields = [] print ItemOut fields = ListFields(Item) for field in fields: if field.name not in FCFieldsIgnore: #print " "+field.name ItemDissolveFields.append(field.name) dissolvelist = ItemDissolveFields + FCGlobalFieldsDissolve DissolveFields = ';'.join(dissolvelist) if Exists(OpRunFullOut + ItemOut): try: print "feature class " + str( ItemOut) + " exists and will be updated" Dissolve_management(Item, "in_memory/" + ItemOut, DissolveFields, FCGlobalFieldsSummarize, "MULTI_PART", "DISSOLVE_LINES") TruncateTable_management(OpRunFullOut + ItemOut) Append_management("in_memory/" + ItemOut, OpRunFullOut + ItemOut, "NO_TEST", "#") Delete_management("in_memory/" + ItemOut) print "feature class " + str( ItemOut) + " was successfully updated" except ExecuteError: print "update failed because the schema has changed from what existed" #need to add locking DisconnectUser(adm, "readonly") AcceptConnections(adm, True) Delete_management(OpRunFullOut + ItemOut) print "recreating the dissolved feature class for " + str( ItemOut) Dissolve_management(Item, OpRunFullOut + ItemOut, DissolveFields, FCGlobalFieldsSummarize, "MULTI_PART", "DISSOLVE_LINES") ChangePrivileges_management(OpRunFullOut + ItemOut, "readonly", "GRANT", "AS_IS") except: print "another error happened on updating the feature class" else: print "feature class " + str( ItemOut) + " will be created or overwritten" DisconnectUser(adm, "readonly") AcceptConnections(adm, True) Dissolve_management(Item, OpRunFullOut + ItemOut, DissolveFields, FCGlobalFieldsSummarize, "MULTI_PART", "DISSOLVE_LINES") ChangePrivileges_management(OpRunFullOut + ItemOut, "readonly", "GRANT", "AS_IS") try: Delete_management("in_memory/" + Item) except: pass