{"id":323662,"date":"2018-10-03T08:00:57","date_gmt":"2018-10-03T15:00:57","guid":{"rendered":"http:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=323662"},"modified":"2024-11-11T12:37:13","modified_gmt":"2024-11-11T20:37:13","slug":"smart-mapping-with-arcade-exploring-age","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/smart-mapping-with-arcade-exploring-age","title":{"rendered":"Smart Mapping with Arcade: Exploring age"},"author":6561,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"_searchwp_excluded":""},"categories":[777102,22941],"tags":[32521,34601,30111,27491,24581],"industry":[],"product":[36831,36601],"class_list":["post-323662","blog","type-blog","status-publish","format-standard","hentry","category-arcade","category-mapping","tag-arcade-expressions","tag-data-exploration","tag-data-visualization","tag-jsapi4","tag-smart-mapping","product-js-api-arcgis","product-developers"],"acf":{"short_description":"Use the Smart Mapping renderer creator modules to build apps for exploring age in layers containing date fields.","flexible_content":[{"acf_fc_layout":"content","content":"<p>In <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/guide\/release-notes\/index.html\">September 2018<\/a>, the <a href=\"https:\/\/developers.arcgis.com\/javascript\/\">ArcGIS API for JavaScript<\/a> (JS API) added support for generating age visualizations with the <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/guide\/visualization-overview\/index.html#smart-mapping-apis\">Smart Mapping modules<\/a>. In this post, <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-renderers-smartMapping-creators-color.html#createAgeRenderer\">age<\/a> refers to the time elapsed between two dates. I&#8217;ll demonstrate several examples of this.<\/p>\n<p>Mapping age can be useful for any layer with at least one date field. For example, you may want to visualize the age of assets or the time elapsed since their last maintenance inspection. <a href=\"https:\/\/ekenes.github.io\/esri-ts-samples\/visualization\/smart-mapping\/age\/\">Check out the following app<\/a>, which visualizes streets in Minneapolis, Minnesota based on the time elapsed since their last inspection.<\/p>\n"},{"acf_fc_layout":"storymap","title":"","description":"","static":false,"storymap_url":"<a href=\"https:\/\/ekenes.github.io\/esri-ts-samples\/visualization\/smart-mapping\/age\/\">https:\/\/ekenes.github.io\/esri-ts-samples\/visualization\/smart-mapping\/age\/<\/a>"},{"acf_fc_layout":"content","content":"<p>The renderer used to visualize this is generated with the <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-renderers-smartMapping-creators-color.html#createAgeRenderer\">createAgeRenderer<\/a> method in the <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-renderers-smartMapping-creators-color.html\">color smart mapping creator module<\/a>. Simply provide a layer, basemap, and the field name recording the time of the last inspection, along with the <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-views-MapView.html\">MapView<\/a> instance as parameters of the method. <\/p>\n<pre><code\r\n style=\"display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; -webkit-text-size-adjust: none;\">\r\n<span\r\n style=\"color: #333; font-weight: bold;\">const<\/span> ageParams = {\r\n  layer: layer,\r\n  view: view,\r\n  basemap: map.basemap,\r\n  startTime: <span\r\n style=\"color: #d14;\">\"INSPECTION_DATE\"<\/span>,\r\n  endTime: <span\r\n style=\"color: #0086b3;\">Date<\/span>.now(),\r\n  theme: <span\r\n style=\"color: #d14;\">\"above-and-below\"<\/span>\r\n};\r\n\r\n<span\r\n style=\"color: #333; font-weight: bold;\">const<\/span> rendererResponse = <span\r\n style=\"color: #333; font-weight: bold;\">await<\/span> colorRendererCreator.createAgeRenderer(ageParams);\r\nlayer.renderer = rendererResponse.renderer;\r\n<\/code><\/pre>\n<p>This method determines the best temporal unit (e.g. years, months, weeks, days, and hours) to use as the basis of the visualization based on the average age returned from the given field or fields. If you&#8217;re already familiar with the data, you can specify your own unit. Otherwise, the renderer will determine the most appropriate temporal unit. In this example, <code>years<\/code> is used because the average age of the features is relatively high.<\/p>\n<p>The method then <a href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/generate-arcade-expressions-for-data-exploration-web-apps\/\">generates an Arcade expression<\/a> that calculates the difference between today\u2019s date and the date of the final inspection. It uses the result of the expression to calculate statistics, which are then used to map colors to data values that make sense for the initial visualization.<\/p>\n<p>The final Arcade expression looks like the following, which I logged in the console of the application.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":322162,"id":322162,"title":"age-arcade","filename":"age-arcade.png","filesize":37684,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/10\/age-arcade.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/generating-arcade-expressions-what-smart-mapping-does-for-you\/age-arcade","alt":"","author":"6561","description":"","caption":"The Arcade expression generated by the ageRendererCreator() method. The lines boxed in green represent input directly set by the user. The parameter in blue is determined by an internal Smart Mapping method based on statistics returned from the date fields.","name":"age-arcade","status":"inherit","uploaded_to":321742,"date":"2018-09-18 22:14:47","modified":"2018-09-25 19:54:02","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":475,"height":221,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/10\/age-arcade.png","thumbnail-width":213,"thumbnail-height":99,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/10\/age-arcade.png","medium-width":464,"medium-height":216,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/10\/age-arcade.png","medium_large-width":475,"medium_large-height":221,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/10\/age-arcade.png","large-width":475,"large-height":221,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/10\/age-arcade.png","1536x1536-width":475,"1536x1536-height":221,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/10\/age-arcade.png","2048x2048-width":475,"2048x2048-height":221,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/10\/age-arcade.png","card_image-width":475,"card_image-height":221,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/10\/age-arcade.png","wide_image-width":475,"wide_image-height":221}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>The key part of the expression generated by <code>createAgeRenderer()<\/code> is the <a href=\"https:\/\/developers.arcgis.com\/arcade\/function-reference\/date_functions\/#datediff\">DateDiff()<\/a> Arcade function, which subtracts the <code>endTime<\/code> parameter from the <code>startTime<\/code> using the parsed time unit. You can use this same expression in a renderer you construct on your own, or even in the ArcGIS Online Map Viewer. <\/p>\n<pre><code\r\n style=\"display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; -webkit-text-size-adjust: none;\">\r\nDateDiff($feature.INSPECTION_DATE, <span\r\n style=\"color: #0086b3;\">Date<\/span>(<span\r\n style=\"color: #008080;\">1537477651175<\/span>), <span\r\n style=\"color: #d14;\">\"years\"<\/span>);\r\n<\/code><\/pre>\n<p>What the <code>createAgeRenderer()<\/code> method does for you is construct the expression on your behalf so you don\u2019t have to worry about writing Arcade syntax.<\/p>\n<h2>Subtract two date fields<\/h2>\n<p>Rather than calculate age between a date field and today\u2019s date, you can also pass a second date field to the <code>endTime<\/code> parameter to visualize how long it took to accomplish a particular task. In the snippet below, for example, the output renderer will indicate how many days overdue an incident was resolved passed the due date.<\/p>\n<pre><code\r\n style=\"display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; -webkit-text-size-adjust: none;\">\r\n<span\r\n style=\"color: #333; font-weight: bold;\">const<\/span> ageParams = {\r\n  layer: layer,\r\n  view: view,\r\n  basemap: map.basemap,\r\n  startTime: <span\r\n style=\"color: #d14;\">\"DUE_DATE\"<\/span>,\r\n  endTime: <span\r\n style=\"color: #d14;\">\"COMPLETED_DATE\"<\/span>,\r\n};\r\n\r\n<span\r\n style=\"color: #333; font-weight: bold;\">const<\/span> rendererResponse = <span\r\n style=\"color: #333; font-weight: bold;\">await<\/span> colorRendererCreator.createAgeRenderer(ageParams);\r\nlayer.renderer = rendererResponse.renderer;\r\n<\/code><\/pre>\n<h2>When you don&#8217;t have date fields<\/h2>\n<p>The <code>createAgeRenderer<\/code> only supports date fields. You can, however, still use the <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-renderers-smartMapping-creators-color.html#createContinuousRenderer\">createContinuousRenderer<\/a> method on either the <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-renderers-smartMapping-creators-color.html\">color<\/a> or <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-renderers-smartMapping-creators-size.html\">size<\/a> renderer creator modules to create an age visualization with that data. You just need to construct the Arcade expression yourself, casting the numbers to dates as necessary, and pass it to the <code>valueExpression<\/code> parameter of the method. <a href=\"https:\/\/ekenes.github.io\/esri-ts-samples\/visualization\/smart-mapping\/age-buildings\/\">See the example below<\/a>, which visualizes the age of buildings in New York City based on a numeric field for the construction year of each building.<\/p>\n<pre><code\r\n style=\"display: block; overflow-x: auto; padding: 0.5em; color: #333; background: #f8f8f8; -webkit-text-size-adjust: none;\">\r\n<span\r\n style=\"color: #333; font-weight: bold;\">const<\/span> ageParams = {\r\n  layer: layer,\r\n  view: view,\r\n  basemap: map.basemap,\r\n  <span\r\n style=\"color: #998; font-style: italic;\">\/\/ subtracts the current year from the construction year<\/span>\r\n  valueExpression: <span\r\n style=\"color: #d14;\">\"Year(Date()) - $feature.CNSTRCT_YR\"<\/span>,\r\n  theme: <span\r\n style=\"color: #d14;\">\"above-and-below\"<\/span>\r\n};\r\n\r\n<span\r\n style=\"color: #333; font-weight: bold;\">const<\/span> rendererResponse = <span\r\n style=\"color: #333; font-weight: bold;\">await<\/span> colorRendererCreator.createContinuousRenderer(ageParams);\r\nlayer.renderer = rendererResponse.renderer;\r\n<\/code><\/pre>\n"},{"acf_fc_layout":"storymap","title":"","description":"","static":false,"storymap_url":"<a href=\"https:\/\/ekenes.github.io\/esri-ts-samples\/visualization\/smart-mapping\/age-buildings\/\">https:\/\/ekenes.github.io\/esri-ts-samples\/visualization\/smart-mapping\/age-buildings\/<\/a>"},{"acf_fc_layout":"content","content":"<p>The <code>createAgeRenderer<\/code> method exists on both the <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-renderers-smartMapping-creators-color.html#createAgeRenderer\">color<\/a> and <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-renderers-smartMapping-creators-size.html#createAgeRenderer\">size<\/a> renderer creator modules. Keep in mind this method is particularly useful for data exploration apps where data is likely to change frequently or users are seeking to gain familiarity with unknown data.<\/p>\n<p>This and other smart mapping modules allow you to generate complex visualizations with minimal code. However, if you intend to share your work amongst various apps, then our recommendation is to create web maps and web scenes authored in ArcGIS Online with the <a href=\"https:\/\/doc.arcgis.com\/en\/arcgis-online\/create-maps\/change-style.htm\">built-in smart mapping tools<\/a>. They are built using the same Smart Mapping modules described here and in the <a href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/guide\/visualization-overview\/index.html#smart-mapping-apis\">JS API documentation<\/a>.<\/p>\n"}],"authors":[{"ID":6561,"user_firstname":"Kristian","user_lastname":"Ekenes","nickname":"Kristian Ekenes","user_nicename":"kekenes","display_name":"Kristian Ekenes","user_email":"KEkenes@esri.com","user_url":"https:\/\/github.com\/ekenes","user_registered":"2018-03-02 00:18:32","user_description":"Kristian Ekenes is a Principal Product Engineer at Esri specializing in data visualization on the web. He works on the ArcGIS Maps SDK for JavaScript, ArcGIS Arcade, and Map Viewer in ArcGIS Online. Kristian's work focuses on researching and developing new and innovative data visualization capabilities of geospatial data in web maps, Arcade integration in web maps, and applications of generative AI assistants in web maps. Prior to joining Esri, he worked as a GIS Specialist for an environmental consulting company. Kristian has degrees from Brigham Young University and Arizona State University.","user_avatar":"<img data-del=\"avatar\" src='https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/10\/ekenes-zurich-213x200.png' class='avatar pp-user-avatar avatar-96 photo ' height='96' width='96'\/>"}],"related_articles":[{"ID":321742,"post_author":"6561","post_date":"2018-10-01 08:00:52","post_date_gmt":"2018-10-01 15:00:52","post_content":"","post_title":"Generating Arcade expressions: what Smart Mapping does for you","post_excerpt":"","post_status":"publish","comment_status":"closed","ping_status":"closed","post_password":"","post_name":"generating-arcade-expressions-what-smart-mapping-does-for-you","to_ping":"","pinged":"","post_modified":"2024-11-11 12:37:22","post_modified_gmt":"2024-11-11 20:37:22","post_content_filtered":"","post_parent":0,"guid":"http:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=321742","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"},{"ID":199072,"post_author":"6561","post_date":"2018-06-05 08:00:08","post_date_gmt":"2018-06-05 08:00:08","post_content":"","post_title":"Generate Arcade expressions for data exploration web apps","post_excerpt":"","post_status":"publish","comment_status":"closed","ping_status":"closed","post_password":"","post_name":"generate-arcade-expressions-for-data-exploration-web-apps","to_ping":"","pinged":"","post_modified":"2024-11-11 12:37:33","post_modified_gmt":"2024-11-11 20:37:33","post_content_filtered":"","post_parent":0,"guid":"http:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=199072","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"},{"ID":71481,"post_author":"6561","post_date":"2016-03-28 08:00:39","post_date_gmt":"2016-03-28 08:00:39","post_content":"","post_title":"Using Smart Mapping in custom web apps","post_excerpt":"","post_status":"publish","comment_status":"closed","ping_status":"closed","post_password":"","post_name":"using-smart-mapping-in-custom-web-apps","to_ping":"","pinged":"","post_modified":"2018-05-25 22:44:29","post_modified_gmt":"2018-05-25 22:44:29","post_content_filtered":"","post_parent":0,"guid":"http:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/using-smart-mapping-in-custom-web-apps\/","menu_order":0,"post_type":"blog","post_mime_type":"","comment_count":"0","filter":"raw"}],"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/10\/age-card.png","wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/10\/age-banner-final.png"},"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>Smart Mapping with Arcade: Exploring age<\/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\/js-api-arcgis\/mapping\/smart-mapping-with-arcade-exploring-age\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Smart Mapping with Arcade: Exploring age\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/smart-mapping-with-arcade-exploring-age\" \/>\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=\"2024-11-11T20:37:13+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\/js-api-arcgis\/mapping\/smart-mapping-with-arcade-exploring-age#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/smart-mapping-with-arcade-exploring-age\"},\"author\":{\"name\":\"Kristian Ekenes\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/5469f723fbfb78138efbb1da56e6aa9b\"},\"headline\":\"Smart Mapping with Arcade: Exploring age\",\"datePublished\":\"2018-10-03T15:00:57+00:00\",\"dateModified\":\"2024-11-11T20:37:13+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/smart-mapping-with-arcade-exploring-age\"},\"wordCount\":6,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"arcade expressions\",\"data exploration\",\"data visualization\",\"jsapi4\",\"smart mapping\"],\"articleSection\":[\"Arcade\",\"Mapping\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/smart-mapping-with-arcade-exploring-age\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/smart-mapping-with-arcade-exploring-age\",\"name\":\"Smart Mapping with Arcade: Exploring age\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2018-10-03T15:00:57+00:00\",\"dateModified\":\"2024-11-11T20:37:13+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/smart-mapping-with-arcade-exploring-age#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/smart-mapping-with-arcade-exploring-age\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/smart-mapping-with-arcade-exploring-age#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Smart Mapping with Arcade: Exploring age\"}]},{\"@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\/5469f723fbfb78138efbb1da56e6aa9b\",\"name\":\"Kristian Ekenes\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/10\/ekenes-zurich-213x200.png\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/10\/ekenes-zurich-213x200.png\",\"caption\":\"Kristian Ekenes\"},\"description\":\"Kristian Ekenes is a Principal Product Engineer at Esri specializing in data visualization on the web. He works on the ArcGIS Maps SDK for JavaScript, ArcGIS Arcade, and Map Viewer in ArcGIS Online. Kristian's work focuses on researching and developing new and innovative data visualization capabilities of geospatial data in web maps, Arcade integration in web maps, and applications of generative AI assistants in web maps. Prior to joining Esri, he worked as a GIS Specialist for an environmental consulting company. Kristian has degrees from Brigham Young University and Arizona State University.\",\"sameAs\":[\"https:\/\/github.com\/ekenes\",\"https:\/\/www.linkedin.com\/in\/kristian-ekenes\/\",\"https:\/\/x.com\/kekenes\"],\"gender\":\"male\",\"jobTitle\":\"Principal Product Engineer\",\"worksFor\":\"Esri\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/author\/kekenes\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Smart Mapping with Arcade: Exploring age","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\/js-api-arcgis\/mapping\/smart-mapping-with-arcade-exploring-age","og_locale":"en_US","og_type":"article","og_title":"Smart Mapping with Arcade: Exploring age","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/smart-mapping-with-arcade-exploring-age","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","article_modified_time":"2024-11-11T20:37:13+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\/js-api-arcgis\/mapping\/smart-mapping-with-arcade-exploring-age#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/smart-mapping-with-arcade-exploring-age"},"author":{"name":"Kristian Ekenes","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/5469f723fbfb78138efbb1da56e6aa9b"},"headline":"Smart Mapping with Arcade: Exploring age","datePublished":"2018-10-03T15:00:57+00:00","dateModified":"2024-11-11T20:37:13+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/smart-mapping-with-arcade-exploring-age"},"wordCount":6,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["arcade expressions","data exploration","data visualization","jsapi4","smart mapping"],"articleSection":["Arcade","Mapping"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/smart-mapping-with-arcade-exploring-age","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/smart-mapping-with-arcade-exploring-age","name":"Smart Mapping with Arcade: Exploring age","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2018-10-03T15:00:57+00:00","dateModified":"2024-11-11T20:37:13+00:00","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/smart-mapping-with-arcade-exploring-age#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/smart-mapping-with-arcade-exploring-age"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/mapping\/smart-mapping-with-arcade-exploring-age#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"Smart Mapping with Arcade: Exploring age"}]},{"@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\/5469f723fbfb78138efbb1da56e6aa9b","name":"Kristian Ekenes","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/","url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/10\/ekenes-zurich-213x200.png","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2021\/10\/ekenes-zurich-213x200.png","caption":"Kristian Ekenes"},"description":"Kristian Ekenes is a Principal Product Engineer at Esri specializing in data visualization on the web. He works on the ArcGIS Maps SDK for JavaScript, ArcGIS Arcade, and Map Viewer in ArcGIS Online. Kristian's work focuses on researching and developing new and innovative data visualization capabilities of geospatial data in web maps, Arcade integration in web maps, and applications of generative AI assistants in web maps. Prior to joining Esri, he worked as a GIS Specialist for an environmental consulting company. Kristian has degrees from Brigham Young University and Arizona State University.","sameAs":["https:\/\/github.com\/ekenes","https:\/\/www.linkedin.com\/in\/kristian-ekenes\/","https:\/\/x.com\/kekenes"],"gender":"male","jobTitle":"Principal Product Engineer","worksFor":"Esri","url":"https:\/\/www.esri.com\/arcgis-blog\/author\/kekenes"}]}},"text_date":"October 3, 2018","author_name":"Kristian Ekenes","author_page":"https:\/\/www.esri.com\/arcgis-blog\/author\/kekenes","custom_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/10\/age-banner-final.png","primary_product":"ArcGIS Maps SDK for JavaScript","tag_data":[{"term_id":32521,"name":"arcade expressions","slug":"arcade-expressions","term_group":0,"term_taxonomy_id":32521,"taxonomy":"post_tag","description":"","parent":0,"count":27,"filter":"raw"},{"term_id":34601,"name":"data exploration","slug":"data-exploration","term_group":0,"term_taxonomy_id":34601,"taxonomy":"post_tag","description":"","parent":0,"count":14,"filter":"raw"},{"term_id":30111,"name":"data visualization","slug":"data-visualization","term_group":0,"term_taxonomy_id":30111,"taxonomy":"post_tag","description":"","parent":0,"count":97,"filter":"raw"},{"term_id":27491,"name":"jsapi4","slug":"jsapi4","term_group":0,"term_taxonomy_id":27491,"taxonomy":"post_tag","description":"","parent":0,"count":111,"filter":"raw"},{"term_id":24581,"name":"smart mapping","slug":"smart-mapping","term_group":0,"term_taxonomy_id":24581,"taxonomy":"post_tag","description":"","parent":0,"count":81,"filter":"raw"}],"category_data":[{"term_id":777102,"name":"Arcade","slug":"arcade","term_group":0,"term_taxonomy_id":777102,"taxonomy":"category","description":"","parent":0,"count":98,"filter":"raw"},{"term_id":22941,"name":"Mapping","slug":"mapping","term_group":0,"term_taxonomy_id":22941,"taxonomy":"category","description":"","parent":0,"count":2686,"filter":"raw"}],"product_data":[{"term_id":36831,"name":"ArcGIS Maps SDK for JavaScript","slug":"js-api-arcgis","term_group":0,"term_taxonomy_id":36831,"taxonomy":"product","description":"","parent":36601,"count":361,"filter":"raw"},{"term_id":36601,"name":"Developers","slug":"developers","term_group":0,"term_taxonomy_id":36601,"taxonomy":"product","description":"","parent":0,"count":762,"filter":"raw"}],"primary_product_link":"https:\/\/www.esri.com\/arcgis-blog\/?s=#&products=js-api-arcgis","_links":{"self":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/323662","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\/6561"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/comments?post=323662"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/323662\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=323662"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=323662"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=323662"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=323662"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=323662"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}