Frequently asked questions

Frequently asked questions about CCTV Manager are listed for reference. If you have a question that you think might frequently come up for other users, click the feedback link at the bottom of this page to submit it as a candidate.

General

Getting started

General

I noticed an issue with multiple inspections per pipe overlapping; is this something that is going to be fixed?

CCTV Manager is a conversion tool; it converts all data passed into it. If the results are not filtered before passing through the tool, there may be issues. Additionally, the results may need to go through further processing, and this is best done using a post-processing tool.

I am unable to download the 64-bit version of Microsoft Access Database Engine 2010 Redistributable or I currently have a 32-bit version of Office. How can I get my Access database tables to work with CCTV Manager?

To use the Import Access Tables tool, you must have the a 64-bit version of Microsoft Access Database Engine 2010 Redistributable installed. The best workaround is to use the Table To Table geoprocessing tool in ArcMap to convert your data into a file geodatabase. Once you've converted your data, you can get started with the Generate CCTV Pipe Features tool.

Getting started

The Generate CCTV Pipe Features tool has a red exclamation point next to it; what does this mean?

Right-click the tool and select Check Syntax if the error message is pyodbc.Error: Microsoft Access driver not found. This error means you have not installed the 64-bit driver, which is necessary to read an Access database in ArcGIS Pro.

I ran the Import Access Tables tool and received an error. I am getting the error message RuntimeError: The row contains a bad value. [Field]; what does this mean?

This error occurs if the schema of the Access database tables does not match the target field in the file geodatabase. Potential reasons for this issue include a field data type that is different or a field length for text fields that is too large. To fix this error, modify the field schema in the target geodatabase to match the field in the Access database, or delete the target field and the tool will create it with the correct schema during the next execution.

I have already used CCTV Manager to generate spatial results from my CCTV inspection data but would like to add the Condition Category field. How do I create and calculate this field?

The Condition Category field was added in the September 2018 release and provides a grouping of condition codes. To create the Condition Category field, complete the following steps:

  1. Create a field using the Add Field tool with the following settings:

    • Input Table—CCTV Conditions
    • Field Name—ConditionCategory
    • Field Type—Text
    • Field Length—60
    • Field Alias—Condition Category
    • Field isNullable—Checked
  2. Calculate the Condition Category using the Calculate Field tool with the following settings:

    • Input Table—CCTV Conditions
    • Field Name—Condition Category
    • Expression Type—Python 3

    Condition Category =

    process(!code!)
    

  3. Copy the following code into the Code Block and verify by clicking the green check mark. If the expression is valid, click Run.

    def process(code):    
    if code in ['ACB', 'ACOH', 'ACOM', 'ACOP', 'ADP', 'AEP', 'AJB', 'AM', 'AMH', 'AOC', 'ATC', 'AWA', 'AWW', 'AZ']:        
    return 'Access Points'    
    elif code in ['DB', 'DI', 'MB', 'MML', 'MMM', 'MMS']:        
    return 'Brickwork'    
    elif code in ['B', 'BSV', 'BVV']:        
    return 'Broken'    
    elif code in ['X', 'XB', 'XP']:        
    return 'Collapse'    
    elif code in ['CC', 'CH2', 'CH3', 'CH4', 'CL', 'CM', 'CS']:        
    return 'Crack'    
    elif code in ['D', 'DV', 'DH', 'DR', 'DFC', 'DFE', 'DFBI', 'DFBR']:        
    return 'Deformed'    
    elif code in ['DAE', 'DAGS', 'DAR', 'DAZ', 'DNF', 'DNGV', 'DNZ', 'DSC', 'DSF', 'DSGV', 'DSZ']:        
    return 'Deposits'    
    elif code in ['FC', 'FH2', 'FH3', 'FH4', 'FL', 'FM', 'FS']:        
    return 'Fracture'    
    elif code in ['GRT', 'GTFJ', 'GTFL', 'GTPJ', 'GTPL', 'GTUJ', 'GTUL']:        
    return 'Grout Test and Seal'    
    elif code in ['H', 'HSV', 'HVV']:        
    return 'Hole'    
    elif code in ['IDB', 'IDC', 'IDJ', 'IDL', 'IGB', 'IGC', 'IGJ', 'IGL', 'IRB', 'IRC', 'IRJ', 'IRL', 'ISB', 'ISC', 'ISJ', 'ISL', 'IWB', 'IWC', 'IWJ', 'IWL', 'ID', 'IG', 'IR', 'IS', 'IW']:        
    return 'Infiltration'    
    elif code in ['ISGT', 'ISSR', 'ISSRB', 'ISSRH', 'ISSRL', 'ISZ']:        
    return 'Intruding Sealing Material'    
    elif code in ['JAL', 'JAM', 'JAS', 'JOL', 'JOLD', 'JOM', 'JOMD', 'JOS', 'JOSD', 'JSL', 'JSM', 'JSS']:        
    return 'Joint'    
    elif code in ['LD', 'LL', 'LLD', 'LLU', 'LR', 'LRD', 'LRU', 'LU']:        
    return 'Line'    
    elif code in ['LFAC', 'LFAS', 'LFB', 'LFBK', 'LFBU', 'LFCS', 'LFD', 'LFDC', 'LFDE', 'LFDL', 'LFOC', 'LFPH', 'LFRS', 'LFUC', 'LFW', 'LFZ']:        
    return 'Lining'    
    elif code in ['MCU', 'MGO', 'MGP', 'MJL', 'MLC', 'MMC', 'MSA', 'MWL', 'MWLS', 'MWM', 'MYN', 'MYV', 'MSC']:        
    return 'Miscellaneous'    
    elif code in ['OBB', 'OBC', 'OBI', 'OBJ', 'OBM', 'OBN', 'OBP', 'OBR', 'OBS', 'OBZ']:        
    return 'Obstacle'    
    elif code in ['RPL', 'RPLD', 'RPP', 'RPPD', 'RPR', 'RPRD', 'RPZ', 'RPZD']:        
    return 'Point Repair'    
    elif code in ['RBB', 'RBC', 'RBJ', 'RBL', 'RFB', 'RFC', 'RFJ', 'RFL', 'RMB', 'RMC', 'RMJ', 'RML', 'RTB', 'RTC', 'RTJ', 'RTL']:        
    return 'Roots'    
    elif code in ['SAM', 'SAMC', 'SAMM', 'SAMZ', 'SAP', 'SAPC', 'SAPM', 'SAPZ', 'SAV', 'SAVC', 'SAVM', 'SAVZ', 'SCP', 'SMW', 'SMWC', 'SMWM', 'SMWZ', 'SRC', 'SRCC', 'SRCM', 'SRCZ', 'SRI', 'SRIC', 'SRIM', 'SRIZ', 'SRP', 'SRPC', 'SRPM', 'SRPZ', 'SRV', 'SRVC', 'SRVM', 'SRVZ', 'SSC', 'SSS', 'SSSC', 'SSSM', 'SSSZ', 'SZ', 'SZC', 'SZM', 'SZZ']:        
    return 'Surface'    
    elif code in ['TB', 'TBA', 'TBB', 'TBC', 'TBD', 'TBI', 'TF', 'TFA', 'TFB', 'TFC', 'TFD', 'TFI', 'TR', 'TRA', 'TRB', 'TRC', 'TRD', 'TRI', 'TS', 'TSA', 'TSB', 'TSC', 'TSD', 'TSI']:        
    return 'Tap'    
    elif code in ['VC', 'VR', 'VZ']:        
    return 'Vermin'    
    elif code in ['WFC', 'WFL', 'WFM', 'WFS', 'WFZ']:        
    return 'Weld'    
    else:        
    return 'Unknown Code'
    

Top