From f1edd4f4577f73955b3f9ad80f8556a08a7e86b9 Mon Sep 17 00:00:00 2001 From: Evan Thoms Date: Wed, 8 May 2024 17:22:07 -0800 Subject: [PATCH] added ParagraphStyleValues domain to Create Database and A La Carte GeMS --- Scripts/GeMS_ALaCarte.py | 47 ++++++++++++++++++++++++++-------- Scripts/GeMS_CreateDatabase.py | 21 +++++++++++++-- Scripts/GeMS_Definition.py | 19 ++++++++++++++ 3 files changed, 74 insertions(+), 13 deletions(-) diff --git a/Scripts/GeMS_ALaCarte.py b/Scripts/GeMS_ALaCarte.py index b7011d3..948f92b 100644 --- a/Scripts/GeMS_ALaCarte.py +++ b/Scripts/GeMS_ALaCarte.py @@ -36,7 +36,7 @@ from pathlib import Path import sys -versionString = "GeMS_ALaCarte.py, version of 10/5/23" +versionString = "GeMS_ALaCarte.py, version of 5/8/24" rawurl = "https://raw.githubusercontent.com/DOI-USGS/gems-tools-pro/master/Scripts/GeMS_ALaCarte.py" guf.checkVersion(versionString, rawurl, "gems-tools-pro") @@ -90,10 +90,6 @@ def eval_prj(prj_str, fd): if any([x in fd for x in unk_fds]): # create 'UNKNOWN' spatial reference sr = "" - # sr_empty = arcpy.FromWKT("POINT EMPTY").spatialReference - # sr_str = sr_empty.exportToString() - # sr = arcpy.SpatialReference() - # sr.loadFromString(sr_str) else: sr = arcpy.SpatialReference() sr.loadFromString(prj_str) @@ -120,17 +116,31 @@ def conf_domain(gdb): l_domains = [d.name for d in arcpy.da.ListDomains(gdb)] if not "ExIDConfidenceValues" in l_domains: conf_vals = gdef.DefaultExIDConfidenceValues - arcpy.AddMessage("adding domain ExIDConfidenceValues") + arcpy.AddMessage("Adding domain ExIDConfidenceValues") arcpy.CreateDomain_management( gdb, "ExIDConfidenceValues", "", "TEXT", "CODED", "DUPLICATE" ) for val in conf_vals: - arcpy.AddMessage(f"adding value {val[0]}") + arcpy.AddMessage(f" Adding value {val[0]}") arcpy.AddCodedValueToDomain_management( gdb, "ExIDConfidenceValues", val[0], val[0] ) +def style_domain(gdb): + l_domains = [d.name for d in arcpy.da.ListDomains(gdb)] + if not "ParagraphStyleValues" in l_domains: + arcpy.AddMessage("Adding domain ParagraphStyleValues") + arcpy.CreateDomain_management( + gdb, "ParagraphStyleValues", "", "TEXT", "CODED", "DUPLICATE" + ) + for val in gdef.ParagraphStyleValues: + arcpy.AddMessage(f" Adding value {val}") + arcpy.AddCodedValueToDomain_management( + gdb, "ParagraphStyleValues", val, val + ) + + def required(value_table): found = False # collect the values from the valuetable @@ -161,7 +171,7 @@ def add_geomaterial(db, out_path, padding): if is_gdb: l_domains = [d.name for d in arcpy.da.ListDomains(db)] if not "GeoMaterials" in l_domains: - arcpy.AddMessage(f"{padding}adding domain GeoMaterials") + arcpy.AddMessage(f"{padding}Adding domain GeoMaterials") arcpy.TableToDomain_management( geomat_csv, "GeoMaterial", @@ -173,12 +183,12 @@ def add_geomaterial(db, out_path, padding): # GeoMaterialConfidenceValues if not "GeoMaterialConfidenceValues" in l_domains: conf_vals = gdef.GeoMaterialConfidenceValues - arcpy.AddMessage(f"{padding}adding domain GeoMaterialConfidenceValues") + arcpy.AddMessage(f"{padding}Adding domain GeoMaterialConfidenceValues") arcpy.CreateDomain_management( db, "GeoMaterialConfidenceValues", "", "TEXT", "CODED", "DUPLICATE" ) for val in conf_vals: - arcpy.AddMessage(f"{padding} adding value {val}") + arcpy.AddMessage(f"{padding} Adding value {val}") arcpy.AddCodedValueToDomain_management( db, "GeoMaterialConfidenceValues", val, val ) @@ -212,6 +222,7 @@ def process(db, value_table): if is_gdb: conf_domain(db) + style_domain(db) # feature dataset fd_tab = "" @@ -262,7 +273,6 @@ def process(db, value_table): fc_fields = [f.name for f in arcpy.ListFields(fc_path)] field_defs = gdef.startDict[template] for fDef in field_defs: - dom_spaces = "" if not fDef[0] in fc_fields: try: arcpy.AddMessage(f"{fd_tab}{fc_tab}Adding field {fDef[0]}") @@ -324,6 +334,21 @@ def process(db, value_table): arcpy.AddMessage( f"{fd_tab}{fc_tab}{fld_tab}GeoMaterials domain assigned to field GeoMaterial" ) + + if fDef[0] == "ParagraphStyle": + try: + this_field = arcpy.ListFields(fc_path, fDef[0])[0] + if not this_field.domain == "ParagraphStyleValues": + arcpy.AssignDomainToField_management( + str(fc_path), fDef[0], "ParagraphStyleValues" + ) + arcpy.AddMessage( + f"{fd_tab}{fc_tab}{fld_tab}Domain ParagraphStyleValues assigned to field {fDef[0]}" + ) + except: + arcpy.AddWarning( + f"Failed to assign domain ParagraphStyleValues to field {fDef[0]}" + ) # except: # arcpy.AddWarning( # f"Failed to assign domain GeoMaterials to field GeoMaterial" diff --git a/Scripts/GeMS_CreateDatabase.py b/Scripts/GeMS_CreateDatabase.py index 441afef..876ff54 100644 --- a/Scripts/GeMS_CreateDatabase.py +++ b/Scripts/GeMS_CreateDatabase.py @@ -27,12 +27,12 @@ tableDict, GeoMaterialConfidenceValues, DefaultExIDConfidenceValues, - IDLength, + ParagraphStyleValues, ) from GeMS_utilityFunctions import * import copy -versionString = "GeMS_CreateDatabase.py, version of 10/5/23" +versionString = "GeMS_CreateDatabase.py, version of 5/8/24" rawurl = "https://raw.githubusercontent.com/DOI-USGS/gems-tools-pro/master/Scripts/GeMS_CreateDatabase.py" checkVersion(versionString, rawurl, "gems-tools-pro") @@ -375,6 +375,23 @@ def main(thisDB, coordSystem, nCrossSections): except: addMsgAndPrint(arcpy.GetMessages()) + if table == "DescriptionOfMapUnits": + # ParagraphStyleValues domain + arcpy.AddMessage(" Creating domain ParagraphStyleValues") + arcpy.CreateDomain_management( + thisDB, "ParagraphStyleValues", "", "TEXT", "CODED", "DUPLICATE" + ) + for val in ParagraphStyleValues: + arcpy.AddCodedValueToDomain_management( + thisDB, "ParagraphStyleValues", val, val + ) + + arcpy.AssignDomainToField_management( + thisDB + "/DescriptionOfMapUnits", + "ParagraphStyle", + "ParagraphStyleValues", + ) + ### GeoMaterials addMsgAndPrint(" Setting up GeoMaterialsDict table and domains...") # Copy GeoMaterials table diff --git a/Scripts/GeMS_Definition.py b/Scripts/GeMS_Definition.py index 393671c..04a5f31 100644 --- a/Scripts/GeMS_Definition.py +++ b/Scripts/GeMS_Definition.py @@ -395,6 +395,25 @@ ], ] +ParagraphStyleValues = [ + "DMU Headnote - 1 Line", + "DMU Headnote - More Than 1 Line", + "DMU Headnote Paragraph", + "DMU Headnote - More Than 1 Line", + "DMU Unit 1 (1st after heading)", + "DMU Unit 1", + "DMU Unit 2", + "DMU Unit 3", + "DMU Unit 4", + "DMU Unit 5", + "DMU-Heading1", + "DMU-Heading2", + "DMU-Heading3", + "DMU-Heading4", + "DMU-Heading5", + "Run-inHead", +] + enumeratedValueDomainFieldList = [ "Type",