Looking for a way in model builder or python to iterate through all domains in a GDB and Sort Coded Value on ASC order.
In addition to using 'domain.name', I would move the line to just after the 'if domainType == CodedValue' line; you only need to sort it once.
<SPAN class="keyword token">import</SPAN> arcpy domains <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>ListDomains<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Database Connections\\Server DB Owner.sde"</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">for</SPAN> domain <SPAN class="keyword token">in</SPAN> domains<SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'Domain name: {0}'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>domain<SPAN class="punctuation token">.</SPAN>name<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">if</SPAN> domain<SPAN class="punctuation token">.</SPAN>domainType <SPAN class="operator token">==</SPAN> <SPAN class="string token">'CodedValue'</SPAN><SPAN class="punctuation token">:</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>SortCodedValueDomain_management<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Database Connections\\Server DB Owner.sde"</SPAN><SPAN class="punctuation token">,</SPAN> domain<SPAN class="punctuation token">.</SPAN>name<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"CODE"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"ASCENDING"</SPAN><SPAN class="punctuation token">)</SPAN> coded_values <SPAN class="operator token">=</SPAN> domain<SPAN class="punctuation token">.</SPAN>codedValues <SPAN class="keyword token">for</SPAN> val<SPAN class="punctuation token">,</SPAN> desc <SPAN class="keyword token">in</SPAN> coded_values<SPAN class="punctuation token">.</SPAN>items<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'{0} : {1}'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>val<SPAN class="punctuation token">,</SPAN> desc<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">elif</SPAN> domain<SPAN class="punctuation token">.</SPAN>domainType <SPAN class="operator token">==</SPAN> <SPAN class="string token">'Range'</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'Min: {0}'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>domain<SPAN class="punctuation token">.</SPAN>range<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'Max: {0}'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>domain<SPAN class="punctuation token">.</SPAN>range<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>
EDIT: I'm not sure if it will print the domain sorted within the loop. You could change lines 8-9:
<SPAN class="keyword token">for</SPAN> val<SPAN class="punctuation token">,</SPAN> desc <SPAN class="keyword token">in</SPAN> sorted<SPAN class="punctuation token">(</SPAN>coded_values<SPAN class="punctuation token">.</SPAN>items<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'{0} : {1}'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>val<SPAN class="punctuation token">,</SPAN> desc<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN></SPAN>
Thank you, Randy. The 'domain.name' expression was the key.
You code is a little tough to decipher: My old eyes prefer tabs over single spaced indents. I've copied and pasted it below with what I think they should be:
<SPAN class="keyword token">import</SPAN> arcpy domains <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>ListDomains<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Database Connections\\Server DB Owner.sde"</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">for</SPAN> domain <SPAN class="keyword token">in</SPAN> domains<SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'Domain name: {0}'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>domain<SPAN class="punctuation token">.</SPAN>name<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">if</SPAN> domain<SPAN class="punctuation token">.</SPAN>domainType <SPAN class="operator token">==</SPAN> <SPAN class="string token">'CodedValue'</SPAN><SPAN class="punctuation token">:</SPAN> coded_values <SPAN class="operator token">=</SPAN> domain<SPAN class="punctuation token">.</SPAN>codedValues <SPAN class="keyword token">for</SPAN> val<SPAN class="punctuation token">,</SPAN> desc <SPAN class="keyword token">in</SPAN> coded_values<SPAN class="punctuation token">.</SPAN>items<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>SortCodedValueDomain_management<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Database Connections\\Server DB Owner.sde"</SPAN><SPAN class="punctuation token">,</SPAN> Which Value?<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"CODE"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"ASCENDING"</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'{0} : {1}'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>val<SPAN class="punctuation token">,</SPAN> desc<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">elif</SPAN> domain<SPAN class="punctuation token">.</SPAN>domainType <SPAN class="operator token">==</SPAN> <SPAN class="string token">'Range'</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'Min: {0}'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>domain<SPAN class="punctuation token">.</SPAN>range<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'Max: {0}'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>domain<SPAN class="punctuation token">.</SPAN>range<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>
I'm trying your code as I've shown it, and haven't yet figured out which value either.... I'll keep trying as I have time...
edited moments later- looks like Randy got it. Just an FYI: when I run the code on an egdb that we have with domains, I get an error because I can't get an exclusive lock due to several users being connected...
SortCodedValueDomain_management (in_workspace, domain_name, sort_by, sort_order)
You need the domain name. I would try 'domain.name' :
arcpy<SPAN class="punctuation token">.</SPAN>SortCodedValueDomain_management<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Database Connections\\Server DB Owner.sde"</SPAN><SPAN class="punctuation token">,</SPAN> domain<SPAN class="punctuation token">.</SPAN>name<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"CODE"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"ASCENDING"</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN></SPAN>
Thank you, Joe,
It is a start, but seem to be missing the value for the SortCodedValueDomain_management command.
<SPAN class="keyword token">import</SPAN> arcpy domains <SPAN class="operator token">=</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>da<SPAN class="punctuation token">.</SPAN>ListDomains<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Database Connections\\Server DB Owner.sde"</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">for</SPAN> domain <SPAN class="keyword token">in</SPAN> domains<SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'Domain name: {0}'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>domain<SPAN class="punctuation token">.</SPAN>name<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">if</SPAN> domain<SPAN class="punctuation token">.</SPAN>domainType <SPAN class="operator token">==</SPAN> <SPAN class="string token">'CodedValue'</SPAN><SPAN class="punctuation token">:</SPAN> coded_values <SPAN class="operator token">=</SPAN> domain<SPAN class="punctuation token">.</SPAN>codedValues <SPAN class="keyword token">for</SPAN> val<SPAN class="punctuation token">,</SPAN> desc <SPAN class="keyword token">in</SPAN> coded_values<SPAN class="punctuation token">.</SPAN>items<SPAN class="punctuation token">(</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">:</SPAN> arcpy<SPAN class="punctuation token">.</SPAN>SortCodedValueDomain_management<SPAN class="punctuation token">(</SPAN><SPAN class="string token">"Database Connections\\Server DB Owner.sde"</SPAN><SPAN class="punctuation token">,</SPAN> Which Value?<SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"CODE"</SPAN><SPAN class="punctuation token">,</SPAN> <SPAN class="string token">"ASCENDING"</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'{0} : {1}'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>val<SPAN class="punctuation token">,</SPAN> desc<SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">elif</SPAN> domain<SPAN class="punctuation token">.</SPAN>domainType <SPAN class="operator token">==</SPAN> <SPAN class="string token">'Range'</SPAN><SPAN class="punctuation token">:</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'Min: {0}'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>domain<SPAN class="punctuation token">.</SPAN>range<SPAN class="punctuation token">[</SPAN><SPAN class="number token">0</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="keyword token">print</SPAN><SPAN class="punctuation token">(</SPAN><SPAN class="string token">'Max: {0}'</SPAN><SPAN class="punctuation token">.</SPAN>format<SPAN class="punctuation token">(</SPAN>domain<SPAN class="punctuation token">.</SPAN>range<SPAN class="punctuation token">[</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>
Does this help?
ListDomains—Help | ArcGIS Desktop
Angemeldete Mitglieder können Beiträge verfassen, Updates folgen und mehr. Neu hier? Registriere ein kostenloses Konto.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.