{"id":595212,"date":"2019-09-11T15:32:31","date_gmt":"2019-09-11T22:32:31","guid":{"rendered":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=595212"},"modified":"2020-09-30T16:50:40","modified_gmt":"2020-09-30T23:50:40","slug":"create-custom-dictionary-styles-for-arcgis","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/create-custom-dictionary-styles-for-arcgis","title":{"rendered":"Create custom dictionary styles for ArcGIS"},"author":8512,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"_searchwp_excluded":""},"categories":[22941],"tags":[31301],"industry":[],"product":[36561,36871,36601],"class_list":["post-595212","blog","type-blog","status-publish","format-standard","hentry","category-mapping","tag-symbology","product-arcgis-pro","product-api-net-win-desktop","product-developers"],"acf":{"short_description":"Create your own dictionary style with symbols, Arcade logic, and configurable properties. Apply a style to symbolize features using attributes.","flexible_content":[{"acf_fc_layout":"content","content":"<p>For the 100.6.0 release of ArcGIS Runtime SDK for .NET, I was tasked with writing documentation for using dictionary styles. Since I can&#8217;t learn without getting my hands dirty, I used this as an opportunity to create my own custom dictionary style. As a casual ArcGIS Pro user and someone who&#8217;d sooner peek into a badger den than crack open an SQLite database, I was anticipating a little discomfort. Ultimately, I found it fairly easy, and actually a lot of fun to implement. I hope describing my steps here helps get you started and inspires you to find a use for dictionary styles in your projects.<\/p>\n<p><strong>TL;DR<\/strong>: I made a custom dictionary renderer to display restaurants, feel free to <a href=\"https:\/\/www.arcgis.com\/home\/item.html?id=751138a2e0844e06853522d54103222a\" target=\"_blank\" rel=\"noopener\">download it from ArcGIS Online<\/a> and try it out.<\/p>\n<p><strong>Update (September 30, 2020):<\/strong> I&#8217;ve edited this article (and the download for the .stylx file) to use version 3.0 of the dictionary style. The changes are minimal but were enough to frustrate users trying to implement these instructions with a newer version style file. For those who may still need to use the older version, I&#8217;ve indicated the correct syntax for version 2.0 where it differs. The dictionary renderer toolkit describes <a href=\"https:\/\/github.com\/Esri\/dictionary-renderer-toolkit\/blob\/master\/docs\/upgrading-dictionary-styles-from-a-previous-version.md\">how to upgrade a style to version 3.0<\/a>.<\/p>\n"},{"acf_fc_layout":"sidebar","content":"<h3>Dictionary symbology resources<\/h3>\n<ul>\n<li><a href=\"https:\/\/pro.arcgis.com\/en\/pro-app\/help\/mapping\/layer-properties\/dictionary-renderer.htm\" target=\"_blank\" rel=\"noopener\">ArcGIS Pro documentation<\/a><\/li>\n<li><a href=\"https:\/\/developers.arcgis.com\/net\/latest\/wpf\/guide\/display-military-symbols-with-a-dictionary-renderer.htm\" target=\"_blank\" rel=\"noopener\">ArcGIS Runtime SDK documentation<\/a><\/li>\n<li><a href=\"https:\/\/esriurl.com\/DictionaryToolkit\" target=\"_blank\" rel=\"noopener\">Dictionary renderer toolkit on GitHub<\/a><\/li>\n<\/ul>\n","image_reference":false,"layout":"standard","image_reference_figure":"","snippet":"","spotlight_name":"","section_title":"","position":"Center","spotlight_image":false},{"acf_fc_layout":"content","content":"<h2>Webster defines &#8220;symbol&#8221; as &#8230;<\/h2>\n<p>OK, so it&#8217;s not that kind of dictionary. While not nearly as wordy and weighing significantly less, an ArcGIS dictionary style shares one important quality with a traditional dictionary, the ability to look up information using a provided value. I&#8217;m not just talking about looking up a symbol using a unique identifier &#8230; any style can do that. What makes a dictionary style special is built-in logic to determine which symbol to return based on input values. The symbol generated may be the result of several symbol primitives, cobbled together to appropriately represent all of the input values.<\/p>\n<p>For my custom style, I thought it would be cool to create a dictionary style for symbolizing restaurants. I wanted each restaurant symbol to impart as much information as possible. Things like: food style, open and close time, star rating, price range, and so on.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":595892,"id":595892,"title":"Restaurant symbol components","filename":"RestaurantStyle.png","filesize":8126,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/RestaurantStyle.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/create-custom-dictionary-styles-for-arcgis\/restaurantstyle","alt":"Restaurant symbol showing lots of info","author":"8512","description":"","caption":"Each component of the restaurant symbol will be generated by the dictionary style based on input attribute values.","name":"restaurantstyle","status":"inherit","uploaded_to":595212,"date":"2019-08-28 16:51:30","modified":"2019-08-29 16:21:54","menu_order":0,"mime_type":"image\/png","type":"image","subtype":"png","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":448,"height":185,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/RestaurantStyle-213x185.png","thumbnail-width":213,"thumbnail-height":185,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/RestaurantStyle.png","medium-width":448,"medium-height":185,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/RestaurantStyle.png","medium_large-width":448,"medium_large-height":185,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/RestaurantStyle.png","large-width":448,"large-height":185,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/RestaurantStyle.png","1536x1536-width":448,"1536x1536-height":185,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/RestaurantStyle.png","2048x2048-width":448,"2048x2048-height":185,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/RestaurantStyle.png","card_image-width":448,"card_image-height":185,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/RestaurantStyle.png","wide_image-width":448,"wide_image-height":185}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"sidebar","content":"<h3>Military symbols<\/h3>\n<p>Dictionary symbology has traditionally been used to symbolize features according to established military specifications. The following <a href=\"https:\/\/www.arcgis.com\/home\/group.html?id=e373003b7c144a23bba0c1fe4e7addd3\" target=\"_blank\" rel=\"noopener\">military dictionary styles are hosted on ArcGIS Online<\/a>: Joint Military Symbology specifications MIL-STD-2525B Change 2, MIL-STD-2525C, and MIL-STD-2525D as well as NATO Joint Military Symbology specifications APP-6(B), and APP-6(D).<\/p>\n","image_reference":false,"layout":"standard","image_reference_figure":"","snippet":"","spotlight_name":"","section_title":"","position":"Right","spotlight_image":false},{"acf_fc_layout":"content","content":"<p>Like a standard mobile style file, a dictionary style contains a collection of symbols and is stored as an SQLite database with a <code>.stylx<\/code> extension. In addition, it contains instructions for constructing symbols based on multiple input attributes. Until recently, the logic to apply symbols from a dictionary style hid deep in the bowels of ArcGIS and was limited to styles based on a handful of military specifications. This logic now enjoys the light of day as a JSON configuration string and an Arcade script that happily coexist with the symbols in the style. This means that not only the symbols, but also the way in which they are applied can be customized and packaged into the style.<\/p>\n<h2>Let&#8217;s give it a try<\/h2>\n<p>To create your own custom dictionary style, you&#8217;ll need the following.<\/p>\n<ul>\n<li>ArcGIS Pro<\/li>\n<li>An SQLite database editing tool (such as <a href=\"https:\/\/sqlitebrowser.org\/\">DB Browser for SQLite<\/a>)<\/li>\n<li>A text editor (I like <a href=\"https:\/\/code.visualstudio.com\/download\">Visual Studio Code<\/a> or <a href=\"https:\/\/notepad-plus-plus.org\/download\/\">Notepad++<\/a>)<\/li>\n<li>An existing dictionary style (like one of the <a href=\"https:\/\/www.arcgis.com\/home\/group.html?id=e373003b7c144a23bba0c1fe4e7addd3\">military styles hosted on ArcGIS Online<\/a>)<\/li>\n<li>A cold beverage (optional)<\/li>\n<\/ul>\n<h3>Find your style<\/h3>\n<p>The best way to start your custom style is by copying an existing dictionary style. Even if you aren&#8217;t going to use any of the existing symbols, configuration, or script in the style, you need the framework provided by an existing dictionary style. The available military styles contain a <code>meta<\/code> table with required fields like <code>dictionary_configurations<\/code> and <code>dictionary_script<\/code>.<\/p>\n<ol>\n<li>Make a copy of an existing dictionary style file, such as <code>MIL2525C.stylx<\/code>, for example. I gave the copied file a name that described my style, &#8220;RestaurantStyle.stylx&#8221;.<\/li>\n<\/ol>\n<p>Before you can start making changes to your style, you need to make it editable. A field in the style&#8217;s <code>meta<\/code> table determines if the style can be edited.<\/p>\n<ol start=\"2\">\n<li>Launch a database browser for SQLite. I used <a href=\"https:\/\/sqlitebrowser.org\/\">DB Browser for SQLite<\/a>, a free and easy-to-use utility. Open your .stylx file in the database browser. Note that the tool probably won&#8217;t recognize .stylx files as a type of SQLite database, so you may need to set the filter in the browse dialog to &#8220;all files&#8221;.<\/li>\n<li>When the database opens, browse to the <code>meta<\/code> table. In DB Browser for SQLite, you click the Browse Data tab then select the table from the drop-down. For now, you only need to change the <code>readonly<\/code> value to <strong>false<\/strong>, but while you&#8217;re at it, you should probably also go ahead and change <code>dictionary_name<\/code> to reflect the purpose of your style. I called mine &#8220;RESTAURANT-INFO&#8221; (catchy name, right?).<\/li>\n<li>Make sure to apply your changes to the database! In DB Browser for SQLite, there&#8217;s a <strong>Write Changes<\/strong> button to apply your edits.<\/li>\n<\/ol>\n"},{"acf_fc_layout":"image","image":{"ID":1027301,"id":1027301,"title":"MetaTable_readonly-1","filename":"MetaTable_readonly-1.jpg","filesize":38019,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/09\/MetaTable_readonly-1.jpg","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/create-custom-dictionary-styles-for-arcgis\/metatable_readonly-1","alt":"Change 'readonly' to false to edit your style","author":"8512","description":"","caption":"To make the style editable, change the readonly value in the meta table to false. Make sure to save your changes.","name":"metatable_readonly-1","status":"inherit","uploaded_to":595212,"date":"2020-09-30 23:24:03","modified":"2020-09-30 23:25:33","menu_order":0,"mime_type":"image\/jpeg","type":"image","subtype":"jpeg","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":357,"height":545,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/09\/MetaTable_readonly-1-213x200.jpg","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/09\/MetaTable_readonly-1.jpg","medium-width":171,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/09\/MetaTable_readonly-1.jpg","medium_large-width":357,"medium_large-height":545,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/09\/MetaTable_readonly-1.jpg","large-width":357,"large-height":545,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/09\/MetaTable_readonly-1.jpg","1536x1536-width":357,"1536x1536-height":545,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/09\/MetaTable_readonly-1.jpg","2048x2048-width":357,"2048x2048-height":545,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/09\/MetaTable_readonly-1-305x465.jpg","card_image-width":305,"card_image-height":465,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/09\/MetaTable_readonly-1.jpg","wide_image-width":357,"wide_image-height":545}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>We&#8217;ll return to the <code>meta<\/code> table of our style later when we tinker with the style configuration and Arcade script.<\/p>\n<h3>Add symbols to the style<\/h3>\n<p>Now that your new style is editable, you can bring it into ArcGIS Pro and load it up with the symbols you want to display. More accurately, the individual symbol components (&#8220;primitives&#8221;) that will be used to generate the complete symbol. This is likely to be the most time-consuming part of the process, not because it&#8217;s difficult, but because (if you&#8217;re like me) you&#8217;ll spend time tweaking and obsessing over the details of each symbol.<\/p>\n<ol start=\"5\">\n<li>Start ArcGIS Pro with a new project and add your new style to the project: From the Catalog tree, expand Styles, right-click and choose Add &gt; Add Style. Navigate to your .stylx file and add it to the project.<\/li>\n<li>Right-click the new style in the catalog and choose Manage. This will launch a window that shows all the symbols in the style.<\/li>\n<li>Select all the current symbols (ctrl-A, for example) and delete them.<\/li>\n<\/ol>\n"},{"acf_fc_layout":"image","image":{"ID":597532,"id":597532,"title":"Style_DeleteAllSyms","filename":"Style_DeleteAllSyms.jpg","filesize":27071,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/Style_DeleteAllSyms.jpg","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/create-custom-dictionary-styles-for-arcgis\/style_deleteallsyms","alt":"Symbols in the style","author":"8512","description":"","caption":"Select all symbols in the  style and delete them.","name":"style_deleteallsyms","status":"inherit","uploaded_to":595212,"date":"2019-08-29 17:30:07","modified":"2019-08-29 17:31:56","menu_order":0,"mime_type":"image\/jpeg","type":"image","subtype":"jpeg","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":499,"height":214,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/Style_DeleteAllSyms-213x200.jpg","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/Style_DeleteAllSyms.jpg","medium-width":464,"medium-height":199,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/Style_DeleteAllSyms.jpg","medium_large-width":499,"medium_large-height":214,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/Style_DeleteAllSyms.jpg","large-width":499,"large-height":214,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/Style_DeleteAllSyms.jpg","1536x1536-width":499,"1536x1536-height":214,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/Style_DeleteAllSyms.jpg","2048x2048-width":499,"2048x2048-height":214,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/Style_DeleteAllSyms.jpg","card_image-width":499,"card_image-height":214,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/Style_DeleteAllSyms.jpg","wide_image-width":499,"wide_image-height":214}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>To keep things simple, you might want to create just a subset of all the symbols you&#8217;d like for the style. That way, you can move on to creating the logic to generate symbols from attributes and test how they&#8217;re applied. You can always return to flesh out the style with additional symbols once you&#8217;re confident that your dictionary style works as expected.<\/p>\n<ol start=\"8\">\n<li>Create all the individual symbols you need. I organized mine into categories (Style, Hours, Price, and so on). While the name for each symbol isn&#8217;t too important, you need to assign a unique (and meaningful) key for each. Your style&#8217;s script will rely on these keys to return the correct symbol components. The keys in my style are generally a combination of the category and name.<\/li>\n<li>Remember that you are building a collection of symbol primitives that will be combined to create a multilayer symbol. When you create each of these symbol components, you need to position them so they fit with the others. Tweak symbol properties like <code>Offset X<\/code> and <code>Offset Y<\/code> to position things in the correct space.<\/li>\n<\/ol>\n<p>For my restaurant style, I laid out where each component should go: food style, rating, price, and so on. Each of these categories of symbol has its own position that won&#8217;t overlap with the others.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":597992,"id":597992,"title":"Style_SymbolOffset","filename":"Style_SymbolOffset.jpg","filesize":34926,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/Style_SymbolOffset.jpg","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/create-custom-dictionary-styles-for-arcgis\/style_symboloffset","alt":"Style symbol properties","author":"8512","description":"","caption":"Organize symbols into meaningful categories and give them a unique key.","name":"style_symboloffset","status":"inherit","uploaded_to":595212,"date":"2019-08-29 20:15:20","modified":"2019-08-29 20:23:14","menu_order":0,"mime_type":"image\/jpeg","type":"image","subtype":"jpeg","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":659,"height":360,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/Style_SymbolOffset-213x200.jpg","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/Style_SymbolOffset.jpg","medium-width":464,"medium-height":253,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/Style_SymbolOffset.jpg","medium_large-width":659,"medium_large-height":360,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/Style_SymbolOffset.jpg","large-width":659,"large-height":360,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/Style_SymbolOffset.jpg","1536x1536-width":659,"1536x1536-height":360,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/Style_SymbolOffset.jpg","2048x2048-width":659,"2048x2048-height":360,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/Style_SymbolOffset.jpg","card_image-width":659,"card_image-height":360,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/Style_SymbolOffset.jpg","wide_image-width":659,"wide_image-height":360}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<h3>Configure it out<\/h3>\n<p>Now that you have a few symbols in the style, you can update the style configuration to specify which attributes are needed for the dictionary script. You can then add script logic that uses the names in the configuration to determine which symbol components to return. OK &#8230; that sounds a little confusing, but trust me, it&#8217;ll make sense soon.<\/p>\n<ol start=\"10\">\n<li>Return to your SQLite browser tool and make sure your style (.stylx file) is open.<\/li>\n<li>Find the <code>dictionary_configuration<\/code> field in the <code>meta<\/code> table. Copy the configuration value (a JSON string) and paste it into a text editor. Remember that this configuration is from the military style, so there&#8217;s a lot going on. Depending on your needs, you can probably pare it down to a handful of required fields and settings.<\/li>\n<\/ol>\n"},{"acf_fc_layout":"sidebar","content":"<p>Here&#8217;s what my configuration string looks like. The JSON string defines three lists: &#8220;configuration&#8221; for settings that can be used to control symbol display (in my case just whether or not text is displayed), &#8220;symbol&#8221; to define all the attributes my script expects for generating a symbol, and &#8220;text&#8221; to define fields used to display text (in my case just a &#8220;name&#8221; field).<\/p>\n","image_reference":false,"layout":"code_snippet","image_reference_figure":"","snippet":"{\"configuration\":[{\"name\":\"text\",\"value\":\"ON\",\"domain\":[\"ON\",\"OFF\"],\"info\":\"indicates if the text is rendered\"}],\"symbol\":[\"style\",\"rating\",\"price\",\"healthgrade\",\"takeout\",\"opentimesun\",\"closetimesun\",\"opentimemon\",\"closetimemon\",\"opentimetue\",\"closetimetue\",\"opentimewed\",\"closetimewed\",\"opentimethu\",\"closetimethu\",\"opentimefri\",\"closetimefri\",\"opentimesat\",\"closetimesat\"],\"text\":[\"name\"]}","spotlight_name":"","section_title":"","position":"Center","spotlight_image":false},{"acf_fc_layout":"content","content":"<ol start=\"12\">\n<li>Once you have the configuration the way you like it, paste it back into the <code>dictionary_configuration<\/code> field in the <code>meta<\/code> table.<\/li>\n<\/ol>\n<h3>Play with Arcade<\/h3>\n<p>The names you added to your configuration can now be used as variables in the style&#8217;s Arcade script. Let&#8217;s add some logic to the script that uses those values to determine which symbols to return.<\/p>\n<ol start=\"13\">\n<li>Find the <code>dictionary_script<\/code>\u00a0field in the <code>meta<\/code> table. Copy the value (an Arcade script) and paste it into a text editor. This script is from the military style, and it&#8217;s waaaay more complex than what we need for restaurants.<\/li>\n<li>Scroll to the bottom of the script and look at the last line: <code>return keys;<\/code>.<\/li>\n<\/ol>\n<p>Whatever logic you decide to add to your script, ultimately, it just has to return a semi-colon delimited list of keys that correspond to keys you assigned to symbols in the style. This can be zero keys, one key, or several. All the symbols identified by the list will be used to create the output multilayer symbol.<\/p>\n"},{"acf_fc_layout":"sidebar","content":"<h3>Arcade playground<\/h3>\n<p>The <a href=\"https:\/\/developers.arcgis.com\/arcade\/playground\/\" target=\"_blank\" rel=\"noopener\">ArcGIS Arcade playground<\/a> allows you to write (or copy and paste) Arcade expressions for evaluation in the page. It also provides a list of available Arcade functions and a description of their use. While the name doesn&#8217;t live up to my visions of Donkey Kong and swingsets, it&#8217;s still pretty cool.<\/p>\n","image_reference":false,"layout":"standard","image_reference_figure":"","snippet":"","spotlight_name":"","section_title":"","position":"Center","spotlight_image":false},{"acf_fc_layout":"content","content":"<ol start=\"15\">\n<li>Delete all the text in the script, it looks scary &#8230; let&#8217;s start with a blank canvas.<\/li>\n<\/ol>\n<p>Some keys for your symbols might be built using the input attribute you&#8217;re evaluating. For food style, for example, I use the <code>style<\/code>\u00a0 input to determine the corresponding symbol by building the key with the input value. If the style attribute value is &#8220;thai&#8221;, the script creates the key &#8220;style-thai&#8221;, for example.<\/p>\n<p>Other keys might need to be determined with additional logic. For my star rating symbol, for example, I had to return a symbol for the nearest 1\/2 star. My script uses a branching statement to round the input rating to the nearest .5 stars and returns the appropriate key. I do the same for healthgrade, returning a key for a letter grade based on the raw input score (0-100).<\/p>\n<p>Of course, you can make the logic as complicated as you need to. For open and close times, for example, I use an Arcade function to get the current day of the week and then return the symbol keys for today&#8217;s open and close time.<\/p>\n<ol start=\"16\">\n<li>Use the script shown below as a model to create a list of keys to return (&#8220;key1;key2;keyN&#8221;). The last line of your script should return the list.<\/li>\n<\/ol>\n"},{"acf_fc_layout":"sidebar","content":"<p>The Arcade script for my restaurant dictionary style.<\/p>\n","image_reference":false,"layout":"code_snippet","image_reference_figure":"","snippet":"\/\/ conventions:\r\n\/\/ $feature.rating: attribute (received as string)\r\n\/\/ ratingkey: local variable\r\n\r\n\/\/ calculating the semi-colon delimited keys\r\nvar keys;\r\nvar foodstylekey = '';\r\nvar ratingkey = '';\r\nvar pricekey = '';\r\nvar openkey = '';\r\nvar closekey = '';\r\nvar healthgradekey = '';\r\n\r\n\/\/ Get the key for the food style.\r\nif (!isempty($feature.style)) {\r\n    foodstylekey = concatenate(['style-',Lower(replace($feature.style,' ','-'))]);\r\n\tkeys = keys + foodstylekey + \";\";\r\n  }\r\n\r\n\/\/ Get the rating (1-5 stars), rounded to the nearest 1\/2 star.\r\nif (!isempty($feature.rating)) {\r\n    if($feature.rating &gt; 4.75){ ratingkey = 'rating-5.0' }\r\n    else if($feature.rating &gt; 4.25){ ratingkey = 'rating-4.5' }\r\n    else if($feature.rating &gt; 3.75){ ratingkey = 'rating-4.0' }\r\n    else if($feature.rating &gt; 3.25){ ratingkey = 'rating-3.5' }\r\n    else if($feature.rating &gt; 2.75){ ratingkey = 'rating-3.0' }\r\n    else if($feature.rating &gt; 2.25){ ratingkey = 'rating-2.5' }\r\n    else if($feature.rating &gt; 1.75){ ratingkey = 'rating-2.0' }\r\n    else if($feature.rating &gt; 1.25){ ratingkey = 'rating-1.5' }\r\n    else { ratingkey = 'rating-1.0' }\r\n\t\r\n\tkeys = keys + ratingkey + \";\";\r\n  }\r\n  \r\n\/\/ Get the health letter grade (A, B, C, etc) from the numeric inspection score.\r\nif (!isempty($feature.healthgrade) &amp;&amp; $feature.healthgrade &gt; 0) {\r\n    if($feature.healthgrade &gt; 89){ healthgradekey = 'inspection-A' }\r\n    else if($feature.healthgrade &gt; 79){ healthgradekey = 'inspection-B' }\r\n    else if($feature.healthgrade &gt; 69){ healthgradekey = 'inspection-C' }\r\n    else { healthgradekey = 'inspection-yuk' }\r\n\t\r\n\tkeys = keys + healthgradekey + \";\";\r\n  }  \r\n  \r\n\/\/ Get the price class (1 - 4).\r\nif (!isempty($feature.price)) {\r\n    pricekey = concatenate(['price-',$feature.price]);\r\n\t\r\n\tkeys = keys + pricekey + \";\";\r\n  }\r\n  \r\n\/\/ Get the current day of the week as a number (0=Sun, 1=Mon, etc.).\r\nvar dayofweek = Weekday(Today());\r\n\r\n\/\/ Get the open time for the current day of the week.\r\nvar openval = decode(dayofweek, 0, $feature.opentimesun, 1, $feature.opentimemon, 2, $feature.opentimetue, 3, $feature.opentimewed, 4, $feature.opentimethu, 5, $feature.opentimefri, 6, $feature.opentimesat,'');\r\n\r\n\/\/ Get the open time symbol key.\r\nif(openval == '-1') {\r\n\topenkey = 'hours-open-not';\r\n\tkeys = keys + openkey + \";\";\r\n}\r\nelse\r\n{\r\n    var opendate = Date(openval);\r\n    var opentime = Hour(opendate);\r\n\tif(opentime &gt; 12) { opentime = opentime - 12; }\r\n\tif(opentime == 0) { opentime = 12; }\r\n    openkey = concatenate(['hours-open-',opentime]);\r\n\tkeys = keys + openkey + \";\";\r\n}\r\n\r\n\/\/ Get the close time for the current day of the week.\r\nvar closeval = decode(dayofweek, 0, $feature.closetimesun, 1, $feature.closetimemon, 2, $feature.closetimetue, 3, $feature.closetimewed, 4, $feature.closetimethu, 5, $feature.closetimefri, 6, $feature.closetimesat,'');\r\n \r\n\/\/Get the close time symbol key.\r\nif(closeval == '-1') {\r\n\tclosekey = 'hours-close-not';\r\n\tkeys = keys + closekey + \";\";\r\n}\r\nelse\r\n{\r\n    var closedate = Date(closeval);\r\n    var closetime = Hour(closedate);\r\n\tif(closetime &gt; 12) { closetime = closetime - 12; }\r\n\tif(closetime == 0) { closetime = 12; }\r\n    closekey = concatenate(['hours-close-',closetime]);\r\n\tkeys = keys + closekey + \";\";\r\n}\r\n  \r\n\/\/ Check if the 'takeout' symbol should be shown.\r\nif($feature.takeout &gt; 0){\r\n\tkeys = keys + \"takeout;\";\r\n}\r\n\/\/ See if text should be displayed.\r\nvar showLabels = $config.text != 'OFF';\r\n\r\n\/\/ Create the concatenated string of keys (separated with \";\"). Add the label key if text is on.\r\nif (showLabels) {\r\n  keys = keys + \"label-name;\";\r\n  }\r\n  \r\n\/\/ Return string of keys.\r\nreturn keys;","spotlight_name":"","section_title":"","position":"Center","spotlight_image":false},{"acf_fc_layout":"sidebar","content":"<p>The main difference between the v2.0 and v3.0 syntax is how you refer to symbol attribute variables in your script. For version 2.0, you simply use the symbol attribute (as specified in the configuration) prefaced by a &#8220;$&#8221;. For v3.0, the symbol attribute is accessed from the &#8220;$feature&#8221; variable. For example, here&#8217;s how you would access the &#8220;rating&#8221; symbol attribute in your script for both versions:<\/p>\n<ul>\n<li>v2.0 = $rating<\/li>\n<li>v3.0 = $feature.rating<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>Configuration values are accessed in a similar way:<\/p>\n<ul>\n<li>v2.0 = $text<\/li>\n<li>v3.0 = $config.text<\/li>\n<\/ul>\n","image_reference":false,"layout":"standard","image_reference_figure":"","snippet":"","spotlight_name":"","section_title":"","position":"Center","spotlight_image":false},{"acf_fc_layout":"content","content":"<ol start=\"17\">\n<li>Paste the edited Arcade script back into the <code>dictionary_script<\/code>\u00a0field in the <code>meta<\/code> table.<\/li>\n<li>Don&#8217;t forget to write your changes back to the style!<\/li>\n<\/ol>\n<p>Except for the inevitable tweaking you&#8217;ll want to do, your dictionary style is complete! The only thing left to do now is to test it with a dataset containing the expected information to symbolize.<\/p>\n"},{"acf_fc_layout":"sidebar","content":"<h2>Using a style in ArcGIS Runtime<\/h2>\n<p>While you can use mobile styles (including a dictionary style) in your ArcGIS Runtime SDK app, some symbol properties are not supported and will not display as they do in ArcGIS Pro. Examples include a gradient fill (which will display as black) and true curves (which will not be rendered). If you need to use your style in an ArcGIS Runtime app, make sure to avoid effects that won&#8217;t render as expected and test your symbols using Runtime.<\/p>\n","image_reference":false,"layout":"standard","image_reference_figure":"","snippet":"","spotlight_name":"","section_title":"","position":"Right","spotlight_image":false},{"acf_fc_layout":"content","content":"<h3>Let&#8217;s find a place to eat<\/h3>\n<p>You&#8217;re now ready to test the style! When applied to a dataset with the expected attributes, you should see symbols generated for features based on your script&#8217;s logic for the input values. If you want to be extra smart, you can provide default values for when an expected input isn&#8217;t found (I&#8217;ll leave that for homework).<\/p>\n<ol>\n<li>Start ArcGIS Pro again and open the project you created earlier.<\/li>\n<li>Add a map with a layer for testing your dictionary symbology. For me, this was a dataset I found on ArcGIS Online of local restaurants. I published my <a href=\"https:\/\/services2.arcgis.com\/ZQgQTuoyBrtmoGdP\/ArcGIS\/rest\/services\/Redlands_Restaurants\/FeatureServer\/0\" target=\"_blank\" rel=\"noopener\">restaurant data as a hosted feature layer<\/a>, feel free to use that layer for testing if you like.<\/li>\n<\/ol>\n<p>I had to spend some time editing the data to include the attributes I needed, such as rating, price, hours, and so on to make sure all the inputs for my dictionary style was in place. If the attribute names match with the names in the configuration, the dictionary style will automatically use them. If not, don&#8217;t worry, you can point ArcGIS Pro (or your ArcGIS Runtime app) to the correct field for each expected input.<\/p>\n<ol start=\"3\">\n<li>Open the symbology panel for your layer (right-click the layer, choose Symbology).<\/li>\n<li>In the primary symbology dropdown list, choose Dictionary.<\/li>\n<li>Choose your dictionary style in the Dictionary dropdown. It will appear with the name you provided earlier for the <code>dictionary_name<\/code> field in the <code>meta<\/code> table. The dictionary symbology should immediately be applied.<\/li>\n<li>You&#8217;ll see all the values you provided in the configuration and dropdown lists for providing attributes for each.<\/li>\n<\/ol>\n"},{"acf_fc_layout":"image","image":{"ID":598262,"id":598262,"title":"Symbology_DictionarySettings","filename":"Symbology_DictionarySettings-1.jpg","filesize":46909,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/Symbology_DictionarySettings-1.jpg","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/create-custom-dictionary-styles-for-arcgis\/symbology_dictionarysettings-2","alt":"","author":"8512","description":"","caption":"A custom dictionary style applied to a layer in the map.","name":"symbology_dictionarysettings-2","status":"inherit","uploaded_to":595212,"date":"2019-08-29 23:30:11","modified":"2019-08-29 23:31:08","menu_order":0,"mime_type":"image\/jpeg","type":"image","subtype":"jpeg","icon":"https:\/\/www.esri.com\/arcgis-blog\/wp-includes\/images\/media\/default.png","width":718,"height":410,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/Symbology_DictionarySettings-1-213x200.jpg","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/Symbology_DictionarySettings-1.jpg","medium-width":457,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/Symbology_DictionarySettings-1.jpg","medium_large-width":718,"medium_large-height":410,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/Symbology_DictionarySettings-1.jpg","large-width":718,"large-height":410,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/Symbology_DictionarySettings-1.jpg","1536x1536-width":718,"1536x1536-height":410,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/Symbology_DictionarySettings-1.jpg","2048x2048-width":718,"2048x2048-height":410,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/Symbology_DictionarySettings-1.jpg","card_image-width":718,"card_image-height":410,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/Symbology_DictionarySettings-1.jpg","wide_image-width":718,"wide_image-height":410}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>Nicely done! If your symbols don\u2019t appear, you might want to try commenting out all of your Arcade script except code that returns a single key. If you can get that symbol to work, start uncommenting other portions of the code and return additional keys.<\/p>\n<p>Please feel free to email (ttilton@esri.com) if you have questions or problems. I\u2019ll do my best to help you troubleshoot. I\u2019d also love to hear about any interesting dictionary styles you implement!<\/p>\n"}],"authors":[{"ID":8512,"user_firstname":"Thad","user_lastname":"Tilton","nickname":"Thad Tilton","user_nicename":"ttilton","display_name":"Thad Tilton","user_email":"TTilton@esri.com","user_url":"","user_registered":"2018-11-05 21:12:45","user_description":"I'm a product engineer on the ArcGIS Maps SDKs for Native Apps team, where I help create and maintain developer guides and API reference documentation. I enjoy .NET programming, helping our customers solve problems, and exploring creative ways of using ArcGIS.","user_avatar":"<img alt='' src='https:\/\/secure.gravatar.com\/avatar\/ca357c472fe1cfc0327aad444d36ceff475526bff5e5afe118b7fba02dda2d14?s=96&#038;d=blank&#038;r=g' srcset='https:\/\/secure.gravatar.com\/avatar\/ca357c472fe1cfc0327aad444d36ceff475526bff5e5afe118b7fba02dda2d14?s=192&#038;d=blank&#038;r=g 2x' class='avatar avatar-96 photo' height='96' width='96' loading='lazy' decoding='async'\/>"}],"related_articles":"","card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/DictionaryStyle_CardImage_Map.jpg","wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/DictionaryStyle_WideImage2.jpg"},"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.9 (Yoast SEO v25.9) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Create custom dictionary styles for ArcGIS<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/create-custom-dictionary-styles-for-arcgis\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Create custom dictionary styles for ArcGIS\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/create-custom-dictionary-styles-for-arcgis\" \/>\n<meta property=\"og:site_name\" content=\"ArcGIS Blog\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/esrigis\/\" \/>\n<meta property=\"article:modified_time\" content=\"2020-09-30T23:50:40+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@ESRI\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":[\"Article\",\"BlogPosting\"],\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/create-custom-dictionary-styles-for-arcgis#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/create-custom-dictionary-styles-for-arcgis\"},\"author\":{\"name\":\"Thad Tilton\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/68e8fc10434ed22705c26033bc89f131\"},\"headline\":\"Create custom dictionary styles for ArcGIS\",\"datePublished\":\"2019-09-11T22:32:31+00:00\",\"dateModified\":\"2020-09-30T23:50:40+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/create-custom-dictionary-styles-for-arcgis\"},\"wordCount\":6,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"symbols and symbology\"],\"articleSection\":[\"Mapping\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/create-custom-dictionary-styles-for-arcgis\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/create-custom-dictionary-styles-for-arcgis\",\"name\":\"Create custom dictionary styles for ArcGIS\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2019-09-11T22:32:31+00:00\",\"dateModified\":\"2020-09-30T23:50:40+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/create-custom-dictionary-styles-for-arcgis#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/create-custom-dictionary-styles-for-arcgis\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/create-custom-dictionary-styles-for-arcgis#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Create custom dictionary styles for ArcGIS\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"name\":\"ArcGIS Blog\",\"description\":\"Get insider info from Esri product teams\",\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\",\"name\":\"Esri\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png\",\"width\":400,\"height\":400,\"caption\":\"Esri\"},\"image\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/esrigis\/\",\"https:\/\/x.com\/ESRI\",\"https:\/\/www.linkedin.com\/company\/5311\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/68e8fc10434ed22705c26033bc89f131\",\"name\":\"Thad Tilton\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/ca357c472fe1cfc0327aad444d36ceff475526bff5e5afe118b7fba02dda2d14?s=96&d=blank&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/ca357c472fe1cfc0327aad444d36ceff475526bff5e5afe118b7fba02dda2d14?s=96&d=blank&r=g\",\"caption\":\"Thad Tilton\"},\"description\":\"I'm a product engineer on the ArcGIS Maps SDKs for Native Apps team, where I help create and maintain developer guides and API reference documentation. I enjoy .NET programming, helping our customers solve problems, and exploring creative ways of using ArcGIS.\",\"sameAs\":[\"https:\/\/www.linkedin.com\/in\/thad-tilton-2ba4a92\/\"],\"url\":\"\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Create custom dictionary styles for ArcGIS","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/create-custom-dictionary-styles-for-arcgis","og_locale":"en_US","og_type":"article","og_title":"Create custom dictionary styles for ArcGIS","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/create-custom-dictionary-styles-for-arcgis","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","article_modified_time":"2020-09-30T23:50:40+00:00","twitter_card":"summary_large_image","twitter_site":"@ESRI","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":["Article","BlogPosting"],"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/create-custom-dictionary-styles-for-arcgis#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/create-custom-dictionary-styles-for-arcgis"},"author":{"name":"Thad Tilton","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/68e8fc10434ed22705c26033bc89f131"},"headline":"Create custom dictionary styles for ArcGIS","datePublished":"2019-09-11T22:32:31+00:00","dateModified":"2020-09-30T23:50:40+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/create-custom-dictionary-styles-for-arcgis"},"wordCount":6,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["symbols and symbology"],"articleSection":["Mapping"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/create-custom-dictionary-styles-for-arcgis","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/create-custom-dictionary-styles-for-arcgis","name":"Create custom dictionary styles for ArcGIS","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2019-09-11T22:32:31+00:00","dateModified":"2020-09-30T23:50:40+00:00","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/create-custom-dictionary-styles-for-arcgis#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/create-custom-dictionary-styles-for-arcgis"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-pro\/mapping\/create-custom-dictionary-styles-for-arcgis#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"Create custom dictionary styles for ArcGIS"}]},{"@type":"WebSite","@id":"https:\/\/www.esri.com\/arcgis-blog\/#website","url":"https:\/\/www.esri.com\/arcgis-blog\/","name":"ArcGIS Blog","description":"Get insider info from Esri product teams","publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.esri.com\/arcgis-blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization","name":"Esri","url":"https:\/\/www.esri.com\/arcgis-blog\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/","url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/Esri.png","width":400,"height":400,"caption":"Esri"},"image":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/esrigis\/","https:\/\/x.com\/ESRI","https:\/\/www.linkedin.com\/company\/5311\/"]},{"@type":"Person","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/68e8fc10434ed22705c26033bc89f131","name":"Thad Tilton","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/ca357c472fe1cfc0327aad444d36ceff475526bff5e5afe118b7fba02dda2d14?s=96&d=blank&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/ca357c472fe1cfc0327aad444d36ceff475526bff5e5afe118b7fba02dda2d14?s=96&d=blank&r=g","caption":"Thad Tilton"},"description":"I'm a product engineer on the ArcGIS Maps SDKs for Native Apps team, where I help create and maintain developer guides and API reference documentation. I enjoy .NET programming, helping our customers solve problems, and exploring creative ways of using ArcGIS.","sameAs":["https:\/\/www.linkedin.com\/in\/thad-tilton-2ba4a92\/"],"url":""}]}},"text_date":"September 11, 2019","author_name":"Thad Tilton","author_page":false,"custom_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/08\/DictionaryStyle_WideImage2.jpg","primary_product":"ArcGIS Pro","tag_data":[{"term_id":31301,"name":"symbols and symbology","slug":"symbology","term_group":0,"term_taxonomy_id":31301,"taxonomy":"post_tag","description":"","parent":0,"count":194,"filter":"raw"}],"category_data":[{"term_id":22941,"name":"Mapping","slug":"mapping","term_group":0,"term_taxonomy_id":22941,"taxonomy":"category","description":"","parent":0,"count":2691,"filter":"raw"}],"product_data":[{"term_id":36561,"name":"ArcGIS Pro","slug":"arcgis-pro","term_group":0,"term_taxonomy_id":36561,"taxonomy":"product","description":"","parent":0,"count":2037,"filter":"raw"},{"term_id":36871,"name":"ArcGIS Runtime SDK for .NET","slug":"api-net-win-desktop","term_group":0,"term_taxonomy_id":36871,"taxonomy":"product","description":"","parent":36601,"count":65,"filter":"raw"},{"term_id":36601,"name":"Developers","slug":"developers","term_group":0,"term_taxonomy_id":36601,"taxonomy":"product","description":"","parent":0,"count":763,"filter":"raw"}],"primary_product_link":"https:\/\/www.esri.com\/arcgis-blog\/?s=#&products=arcgis-pro","_links":{"self":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/595212","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog"}],"about":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/types\/blog"}],"author":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/users\/8512"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/comments?post=595212"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/595212\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=595212"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=595212"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=595212"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=595212"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=595212"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}