Avez-vous déjà été extrêmement agacé par des valeurs de domaine d'attribut qui ne sont pas alphabétiques ou dans un ordre spécifique ? On pourrait dire que c'est votre faute de ne pas avoir créé les valeurs du domaine dans le bon ordre lorsque vous l'avez fait mais.....<\/P>
<\/P>
Il EXISTE un moyen de mettre à jour les valeurs du domaine pour les afficher aux utilisateurs finaux comme vous le souhaitez ! <\/P>
Disons que vous avez un domaine intitulé "District". Pour voir à quoi il ressemble en XML :<\/P>
Select DEFINITION FROM [dbo].[GDB_ITEMS]WHERE NAME = 'District'<\/PRE><\/P>Et cliquez sur la valeur dans le champ définition dans les résultats. <\/P><\/P><\/P><GPCodedValueDomain2 xmlns:xsi="<\/SPAN>http:\/\/www.w3.org\/2001\/XMLSchema-instance<\/A>" xmlns:xs="<\/SPAN>http:\/\/www.w3.org\/2001\/XMLSchema<\/A>" xmlns:typens="<\/SPAN>http:\/\/www.esri.com\/schemas\/ArcGIS\/10.0<\/A>" xsi:type="typens:GPCodedValueDomain2"><\/SPAN> <DomainName>District<\/DomainName> <FieldType>esriFieldTypeString<\/FieldType> <MergePolicy>esriMPTDefaultValue<\/MergePolicy> <SplitPolicy>esriSPTDefaultValue<\/SplitPolicy> <Description>Desc<\/Description> <Owner>DBO<\/Owner> <CodedValues xsi:type="typens:ArrayOfCodedValue"> <CodedValue xsi:type="typens:CodedValue"> <Name>North District<\/Name> <Code xsi:type="xs:string">ND<\/Code> <\/CodedValue> <CodedValue xsi:type="typens:CodedValue"> <Name>South District<\/Name> <Code xsi:type="xs:string">SD<\/Code> <\/CodedValue> <CodedValue xsi:type="typens:CodedValue"> <Name>Cades Cove District<\/Name> <Code xsi:type="xs:string">CC<\/Code> <\/CodedValue> <\/CodedValues><\/GPCodedValueDomain2><\/PRE>Ce que je veux voir, ce sont les valeurs et codes triés par ordre alphabétique, ce qui n'est pas le cas. D'abord, un peu de magie Excel. En utilisant l'outil Domain to Table, j'ai exporté le Domaine vers une feuille de calcul Excel. Puis j'ai effectué mon tri.<\/P><\/P><\/P><\/P>Puis quelques calculs de champ. Ici, j'utilise du texte brut pour l'élément XML et des références de cellule pour le CODE et la VALEUR. <\/P><\/P>="<CodedValue xsi:type=\"\"typens:CodedValue\"\"><Name>"&amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;amp;b2&b2&b2&b2&b2&b2&b2&b2&b2&b2&b2&b2&b2&b2&b2&b2&b2&b2&b2&b2&b2&b2&b2&b2&b2&b2&b2&b2&b2&b2&b2&b2&b2&b2&b2&b2&b2&b2&b2&b2&b2&b2ampbampbampbampbampbampbampbampbampbampbampbampbampbampbampbampbampbampbampbamplamepplamepplamepplamepplamepplamepplamepplamepplamepplamepplamepplamepplamepplamepplamepplamepplamepplamepplamepplamepplamepplamepplamepplamemeaplamemeaplamemeaplamemeaplamemeaplamemeaplamemeaplamemeaplamemeaplamemeaplamemeaplamemeaplamemeaplamemeaplamemeaplamemeaplamemeaplamemeaplamemepmepmepmepmepmepmepmepmepmepmepmepmepmepmepmepmepmepmepmepmepmepmepmepmepmepmepmempmpmpmpmpmpmpmpmpmpmpmpmpmpmpmpmpmpmpmpmpmpmpmpmpmpmpmpmpmpmpmpmpmpmpmpmplmplmplmplmplmplmplmplmplmplmplmplmplmplmplmplmplmplmplmplmplmplmplmplmplmplmplmplmplmplmplmplmplmplmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmlmalmalmalmalmalmalmalmalmalmalmalmalmalmalmalmalmalmalmalmalmalmalmalmalmalmalmalmalmalma
Notez que la formule est sur une seule ligne sans retour chariot. Sinon, lorsque vous collez le résultat, des guillemets seront ajoutés là où vous ne le souhaitez pas !
Maintenant, mettez à jour la définition XML en collant les résultats de la formule Excel pour remplacer les éléments XML (SEULEMENT !) :
UPDATE [dbo].[GDB_ITEMS]SET DEFINITION = '<GPCodedValueDomain2 xmlns:xsi="<\/SPAN>http:\/\/www.w3.org\/2001\/XMLSchema-instance<\/A>" xmlns:xs="<\/SPAN>http:\/\/www.w3.org\/2001\/XMLSchema<\/A>" xmlns:typens="<\/SPAN>http:\/\/www.esri.com\/schemas\/ArcGIS\/10.0<\/A>" xsi:type="typens:GPCodedValueDomain2"> <DomainName>District</DomainName> </FieldType> </MergePolicy> </SplitPolicy> </Description> </Owner> </CodedValues xsi:type="'''''''''''''''''''''''''''''''''ArrayOfCodedValue'"></CodedValue xsi:type="'typens:CodedValue'"></Name>'Cades Cove District'</Code xsi:type="'xs:string'">'CC'</Code'></CodedValue xsi:type="'typens:CodedValue'">'North District'</Code xsi:type="'xs:string'"'ND'></CodedValue xsi:type="'typens:CodedValue'"'South District'>'SD' </CodedValues></GPCodedValueDomain2>'WHERE NAME = 'District'
J'ai trouvé cela très pratique pour les grands domaines qui ont des dizaines ou des centaines de valeurs de domaine que je voulais soit trier alphabétiquement soit où j'avais besoin de faire une sorte de mise à jour globale comme convertir le texte dans "Description" en Camel Case.
Combiner Excel avec un éditeur de texte avancé tel que Notepad ++ avec le plugin TextFX tools peut aboutir à une gestion très efficace des domaines d'attributs !
Il s'agit d'un blog personnel et ne recommande, n'endosse ni ne soutient les méthodes décrites ci-dessus. La modification des données en utilisant SQL en dehors de la pile logicielle ESRI, bien sûr, n'est pas prise en charge et ne doit pas être appliquée à une base de données de production sans une compréhension approfondie et un plan de récupération après sinistre.
Did the table get renamed? My EGDB does not have a table dbo.GDB_ITEMS.
I am at 10.9 and it's now in a table called "sde.GDB_ITEMS".
The reason I am searching for it is because I can't get permission to save a new value in ArcGIS Pro.
If I can edit it in SQL Server Studio and reorder the items at the same time, that is acceptable.
I wonder how ThomasColson’s technique would work for Oracle geodatabases, since the DEFINITION column is stored as a CLOB, not text (but available as text in a view). I guess we could just convert our modified XML to a CLOB using an SQL query, then use SQL to UPDATE the table value?
Les membres connectés peuvent publier, suivre les mises à jour, et plus encore. Nouveau ici ? Inscrivez-vous gratuitement.
Find useful guides, FAQs, and documents to help you navigate and make the most of Esri Community.