From ef18fccd4f8a3eb50fa00adb2b2f9033f475ae07 Mon Sep 17 00:00:00 2001 From: Evan Thoms Date: Fri, 20 Aug 2021 08:12:50 -0800 Subject: [PATCH] Added Fix string values tool to toolbox --- GeMS_Tools_AGP2.tbx | Bin 226304 -> 227840 bytes Scripts/GeMS_FixStrings_AGP2.py | 69 ++++++++++++++++++++++++++++++++ 2 files changed, 69 insertions(+) create mode 100644 Scripts/GeMS_FixStrings_AGP2.py diff --git a/GeMS_Tools_AGP2.tbx b/GeMS_Tools_AGP2.tbx index 1e5ad310e264271dbf9b3efeb8eb177d3d9507e8..28ce7f4e8d89bdd0405f4f0cf21f08527e3bfc25 100644 GIT binary patch delta 1119 zcmb7CZA_b06n@XWrF^yJefu?_8r~5_2HpA*vH%&%#)etu46}6%qmkMc=u$phi^0aF zWl=|nCb%P9MH91xIJYdbqoHpcYJ}i^Rh>@bk459Z=|5sxnI;ZTk@-V^`Qy3IeV%jf zIrpC2)X&CL-Z*nYHw2QDQP=`3vZ&6~e|)d+huQDpDM^x2b(qj6;3X{RllqI4_RNEr zC{4h-nL_DV01uun-+)JPydnt^EYRAAXpNLADV&Yaica)GTHHgD^z@_}>oY>U? z%{X)Pz?s$TD&$&VR($arG|P|BJUa>d3B~@RYy%#XkCW;poVe$PHo$2OlNullZo7X{ zzP7LdPe(KB_M0GNU^@05$2aP1vKk%UE={+DhE5 z?!8`Ix%tGlDZU0~F>Sdm`&>syL;lFH7-P)V)E$}d#ZOVGSiKsG#Kxk57e@la;f{I= zsIjex`a&Q&9*zn3ZDzx7mh14tc$ZkuuqnLu@e!0iQE>fN9bTR{&Rqu;Z~X45`qx?U z{1I?q@X{G^$zIhqa<-rSzj9I+t0MR=PqPk4v0HSMt+dq94l)CIx^_uPdX+h_cU z)HT9#(Y+e5K=w=aV=t~Q*JJ0(XW~{LS2eYPg8^T?VK)>%%R%Xo~g?S$X zS^IR5+W-{t?GT>@vvxAV9jx54RiEC6lWR6q*Sz9zkT*j0-6C@&1R6f5U5y?h0tF*4L}{cplc?Aklz|xSA!8u4 zR?Y4PWlFav(>mu(%q#*6M1&rK5PB$jo>79**34T6zWww6d#%0qStBXO$WO;atI`D~ z)0|68!>s64oHJ9+l>@FX&~7rB7W@=bW6()yHLgD8vgI<0<;LLNTsn6Q;1*r6Y(j{l z);M%in%C15wZ-8urFpHUs69@a!%JpIFQr(ovuaNEPWH|MN;o5=m>|cd=(puvRGw4ZGcBbsqvB1&b;v<>noCoeJCh6=WmL!u>W8fpyD zdXAquiWNCO4`y0Xs%E|ZN%C8cQ^%W9%NDnt=bzoW**TP46Xq$iZj&FwqE-gZ;lkBL zeGxv@K#lyo0hRfg;v+nW2IeRu&6{vCo3^lPW!f_71s;nxQ~Q_c;p8F{W{l}gIMb^~ z#ArZ{N)gwuiS@m5{k z8OAZN%N-HCk>kiz$>1ymjO7Sc062|}OV}nL&uHpHAIQc&ROO|9oB)^crym2t;?5q- z$J6MNk4l&J$**B7m*az21Rmq%AkG250-;(zxqCsucAf Dq|o|h diff --git a/Scripts/GeMS_FixStrings_AGP2.py b/Scripts/GeMS_FixStrings_AGP2.py new file mode 100644 index 0000000..95cb20b --- /dev/null +++ b/Scripts/GeMS_FixStrings_AGP2.py @@ -0,0 +1,69 @@ +# Script to clean up string fields in a GeMS database +## Removes leading and trailing spaces +## Converts "", "" and similar to (system nulls). +# Ralph Haugerud, 28 July 2020 +# Updated to Python 3, 8/20/21 and added to toolbox, Evan Thoms + +import arcpy, os, os.path, sys +from GeMS_utilityFunctions import * + +versionString = 'GeMS_FixStrings_AGP2.py, version of 20 August 2020' +rawurl = 'https://raw.githubusercontent.com/usgs/gems-tools-pro/master/Scripts/GeMS_FixStrings_AGP2.py' +checkVersion(versionString, rawurl, 'gems-tools-pro') + +def fixTableStrings(fc): + fields1 = arcpy.ListFields(fc,'','String') + fields = ['OBJECTID'] + for f in fields1: + fields.append(f.name) + with arcpy.da.UpdateCursor(fc, fields) as cursor: + for row in cursor: + trash = '' + updateRowFlag = False + row1 = [row[0]] + for f in row[1:]: + updateFieldFlag = False + f0 = f + if f != None: + if f != f.strip(): + f = f.strip() + updateFieldFlag = True + if f.lower() == '' or f == '': + f = None + updateFieldFlag = True + if updateFieldFlag: + updateRowFlag = True + addMsgAndPrint( ' '+str(row[0])+' **'+ str(f0)+'**') + row1.append(f) + if updateRowFlag: + try: + cursor.updateRow(row1) + except: + addMsgAndPrint('failed to update row '+str(row[0])+'. Perhaps a field is not nullable') + +######################### + +db = sys.argv[1] + +addMsgAndPrint(versionString) +arcpy.env.workspace = db + +tables = arcpy.ListTables() +for tb in tables: + addMsgAndPrint(' ') + addMsgAndPrint(os.path.basename(tb)) + fixTableStrings(tb) + +datasets = arcpy.ListDatasets(feature_type='feature') +datasets = [''] + datasets if datasets is not None else [] +for ds in datasets: + for fc in arcpy.ListFeatureClasses(feature_dataset=ds): + path = os.path.join(arcpy.env.workspace, ds, fc) + addMsgAndPrint(' ') + addMsgAndPrint(os.path.basename(fc)) + try: + fixTableStrings(path) + except: + addMsgAndPrint(' failed to fix strings') + +addMsgAndPrint('DONE')