{"id":82521,"date":"2018-02-13T03:10:22","date_gmt":"2018-02-13T03:10:22","guid":{"rendered":"http:\/\/www.esri.com\/arcgis-blog\/products\/product\/uncategorized\/scene-layer-performance-on-arcgis-online\/"},"modified":"2020-01-29T01:57:08","modified_gmt":"2020-01-29T09:57:08","slug":"scene-layer-performance-on-arcgis-online","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/3d-gis\/3d-gis\/scene-layer-performance-on-arcgis-online","title":{"rendered":"Scene Layer Performance in Scene Viewer, Part 1"},"author":7061,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","format":"standard","meta":{"_acf_changed":false,"_searchwp_excluded":""},"categories":[23771],"tags":[25781,549072,27491,31911,25791],"industry":[],"product":[36831,36551,36601],"class_list":["post-82521","blog","type-blog","status-publish","format-standard","hentry","category-3d-gis","tag-3d","tag-esrirdzurich","tag-jsapi4","tag-scene-layers","tag-scene-viewer","product-js-api-arcgis","product-arcgis-online","product-developers"],"acf":{"short_description":"You can use 3D object and integrated mesh scene layers based on the OGC\u00ae I3S Community Standard  to create compelling visualizations dir...","flexible_content":[{"acf_fc_layout":"content","content":"<p>You can use 3D object and integrated mesh scene layers based on the <a href=\"http:\/\/www.opengeospatial.org\/standards\/i3s\">OGC\u00ae I3S Community Standard <\/a> to create compelling visualizations directly in your browser. We are using various techniques to make the user experience as smooth as possible on this limited platform. In this post, I will describe three improvements <!--more--> we introduced in the <a href=\"https:\/\/blogs.esri.com\/esri\/arcgis\/2017\/12\/07\/whats-new-in-scene-viewer-december-2017-2\/\">December 2017 release of ArcGIS Online<\/a> and the <a href=\"https:\/\/blogs.esri.com\/esri\/arcgis\/2017\/12\/14\/arcgis-api-for-javascript-version-4-6-released\/\">ArcGIS API for JavaScript version 4.6<\/a>:<\/p>\n<ol>\n<li><strong>IndexedDB cache<\/strong>: Once 3D data is downloaded and processed we cache it in IndexedDB so we can reload it quicker.<\/li>\n<li><strong>Streaming<\/strong>: We optimized parallel streaming of i3s nodes and data so scene layers load faster and in priority order.<\/li>\n<li><strong>Progressive loading<\/strong>: Integrated mesh scene layers now download an intermediate level of detail (LOD) first then refine to more detailed LOD.<\/li>\n<\/ol>\n<p><a href=\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/Helsinki.jpg\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-large wp-image-99822\" src=\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/Helsinki-1024x588.jpg\" alt=\"Helsinki 3D buildings colored by ground elevation\" width=\"640\" height=\"367\" \/><\/a><\/p>\n<p>&nbsp;<\/p>\n<h2><strong>IndexedDB cache<\/strong><\/h2>\n<p>There are already many cache levels for scene layers: Data is cached in CDNs and on the client where the web browser automatically caches all requests. However, the geometry data for scene layers is usually in a geographic coordinate system and we need to convert it to an earth centered coordinate system for global scenes. Also, for optimal rendering performance we want to convert the data to a GPU friendly format with interleaved positions, texture coordinates, colors, etc.<\/p>\n<p>Ideally, we would keep all geometry data on the GPU and render only the visible parts. However, GPU memory is very limited and we have to remove invisible nodes. To avoid repeating these transformations when displaying parts of a scene layer that we have looked at before, we store the geometry data in a format we can directly upload to the GPU in an additional cache level. This cache uses the IndexedDB API to store temporary data, so we refer to it as the IndexedDB cache. The following diagram illustrates the cache hierarchy on the client:<\/p>\n<p><a href=\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/IndexedDBcache.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-99830\" src=\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/IndexedDBcache.png\" alt=\"Flow diagram of client side cache hierarchy\" width=\"770\" height=\"717\" \/><\/a><\/p>\n<p>The diagram ends where we send out a request to the server. If you are interested further in what happens next, take a look at <a title=\"Scalable hosted feature layers in ArcGIS Online: Tile queries and response caching\" href=\"https:\/\/blogs.esri.com\/esri\/arcgis\/2017\/12\/12\/scalable-hosted-feature-layers-in-arcgis-online-tile-queries-and-response-caching\/\">Paul&#8217;s excellent blog on caching in ArcGIS Online<\/a>.<\/p>\n<p>&nbsp;<\/p>\n<h2><strong>Streaming<\/strong><\/h2>\n<p>To create an optimal user experience it is very important to load the right data at the right time. Data that is in the center of the screen or right in front of the viewer should be loaded before data at the border of the screen or in the background. However, network latency makes it hard to use the full bandwidth of the connection and still maintain a strict ordering of requests. The following diagram shows that serial ordering of requests wastes some bandwidth due to the latency of requests (illustrated in green). On the other hand, parallel requests use the full available bandwidth, but don&#8217;t preserve the order of requests:<\/p>\n<p><a href=\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/Requests.png\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-99513 noIMGBackground\" src=\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2020\/12\/Requests.png\" alt=\"Illustration of tradeoff between parallel and serial requests\" width=\"730\" height=\"237\" \/><\/a><\/p>\n<p>The optimal number of parallel requests depends roughly on three parameters: network latency, network bandwidth, and size of the requested data. In i3s services there are two main resources:<\/p>\n<ol>\n<li><strong>Index Nodes:<\/strong> The spatial index, which tells us where the data of the service is located. This consists of many small requests.<\/li>\n<li><strong>Geometry Data:<\/strong> The data we want to display on the screen. These are generally few but very large requests.<\/li>\n<\/ol>\n<p>For those two different types of resources, different strategies are needed. For the small index nodes it is very important to request many nodes in parallel to hide network latency and optimally use the bandwidth. On the other hand, for the large geometry data the bandwidth of your connection is easily saturated, but requesting many in parallel makes loading individual nodes slower.<\/p>\n<p>In this release, we individually tuned the parameters for these two kinds of requests to make optimal use of your bandwidth while still keeping the order in which we draw data close to the optimal order. As a result of these improvements, you can see that the loading order is very close to the optimal order (front-to-back) in the following video:<\/p>\n<p style=\"text-align: center;\"><iframe  id=\"_ytid_49834\"  width=\"480\" height=\"270\"  data-origwidth=\"480\" data-origheight=\"270\" src=\"https:\/\/www.youtube.com\/embed\/rlyiHcb0Gew?enablejsapi=1&autoplay=0&cc_load_policy=0&cc_lang_pref=&iv_load_policy=3&loop=0&rel=0&fs=1&playsinline=0&autohide=2&theme=dark&color=red&controls=1&\" class=\"__youtube_prefs__  no-lazyload\" title=\"YouTube player\"  allow=\"fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen data-no-lazy=\"1\" data-skipgform_ajax_framebjll=\"\"><\/iframe><\/p>\n<p>&nbsp;<\/p>\n<h2><strong>Progressive loading<\/strong><\/h2>\n<p>Sometimes displaying a less detailed version of your data quickly is better than waiting for the details to load, even though in the end slightly more data is being downloaded. Our level of detail system is based on the screen resolution, so we can simulate a lower resolution and first download all the nodes we would display in this case. This gives us a quick overview of the layer, and we can then start to refine the display with more detailed data.<\/p>\n<p>The loading order between those two levels of detail is another interesting topic. In general, we want to download the low detail geometries first, however, we want to start refining data in the center of the display while still downloading low detailed background nodes. To do this we add a penalty dependent on the scale of the current view to our node ordering priority, which is based on the distance to a point of interest.<\/p>\n<p>We tested this with various scene layers\u00a0 and concluded that this is a big improvement for integrated mesh scene layers, as can be seen in the following video:<\/p>\n<p style=\"text-align: center;\"><iframe  id=\"_ytid_21030\"  width=\"480\" height=\"270\"  data-origwidth=\"480\" data-origheight=\"270\" src=\"https:\/\/www.youtube.com\/embed\/n4RoEs2ucTA?enablejsapi=1&autoplay=0&cc_load_policy=0&cc_lang_pref=&iv_load_policy=3&loop=0&rel=0&fs=1&playsinline=0&autohide=2&theme=dark&color=red&controls=1&\" class=\"__youtube_prefs__  no-lazyload\" title=\"YouTube player\"  allow=\"fullscreen; accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture\" allowfullscreen data-no-lazy=\"1\" data-skipgform_ajax_framebjll=\"\"><\/iframe><\/p>\n<p>In the top right corner of this video, you can see that even if we don&#8217;t have the current view in cache already, the progressive loading downloads an overview of the scene&#8217;s content very quickly. While the total loading time is slightly longer than the non-progressive loading on the left side, the difference can only be noticed in the background and overall the progressive loading feels much faster.<\/p>\n<p>&nbsp;<\/p>\n<h2><strong>What&#8217;s next<\/strong><\/h2>\n<p>I hope you like the performance of 3D scene layers in Scene Viewer. I&#8217;m looking forward to many web scenes and apps being created that really showcase your data. There are still many opportunities where we can do better and this is an exciting topic that we will keep working on. Stay tuned for the next release to see even more improvements in this area.<\/p>\n<p><em>Screenshots and videos:<\/em><\/p>\n<ul>\n<li><a href=\"http:\/\/www.arcgis.com\/home\/item.html?id=5ecba5273b2d41ff9f6f1eb33f238d18\">3D model of Helsinki<\/a> by <a href=\"http:\/\/www.hri.fi\/en\/dataset\/helsingin-3d-kaupunkimalli\">City of Helsinki<\/a> | <a href=\"http:\/\/creativecommons.org\/licenses\/by\/4.0\/deed.fi\">Terms of use<\/a><\/li>\n<li><a href=\"http:\/\/www.arcgis.com\/home\/item.html?id=c4054b475e60472f8d24585287ceebca\">NYC 3-D Building Model<\/a> by <a href=\"http:\/\/www1.nyc.gov\/site\/doitt\/initiatives\/3d-building.page\">NYC DoITT<\/a> | <a href=\"http:\/\/www1.nyc.gov\/site\/doitt\/initiatives\/3d-building.page\">Terms of use<\/a><\/li>\n<li><a href=\"http:\/\/www.arcgis.com\/home\/item.html?id=1f97ba887fd4436c8b17a14d83584611\">Yosemite Valley<\/a> by <a href=\"https:\/\/www.vricon.com\/\">VRICON<\/a> | <a href=\"http:\/\/www.arcgis.com\/home\/item.html?id=5618776e04be41a68b349b8751a9cdb6\">Terms of use<\/a><\/li>\n<\/ul>\n"}],"authors":[{"ID":7061,"user_firstname":"Simon","user_lastname":"Reinhard","nickname":"simo8332","user_nicename":"simo8332","display_name":"Simon Reinhard","user_email":"sreinhard@esri.com","user_url":"","user_registered":"2018-03-02 00:19:11","user_description":"","user_avatar":"<img alt='' src='https:\/\/secure.gravatar.com\/avatar\/bc2caf25032c1eca71db76a28027faf1b0528e524419e33dfdc5cb0f1c0b6260?s=96&#038;d=blank&#038;r=g' srcset='https:\/\/secure.gravatar.com\/avatar\/bc2caf25032c1eca71db76a28027faf1b0528e524419e33dfdc5cb0f1c0b6260?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":false,"wide_image":false},"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>Scene Layer Performance in Scene Viewer, Part 1<\/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\/3d-gis\/3d-gis\/scene-layer-performance-on-arcgis-online\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Scene Layer Performance in Scene Viewer, Part 1\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/3d-gis\/3d-gis\/scene-layer-performance-on-arcgis-online\" \/>\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-01-29T09:57:08+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\/3d-gis\/3d-gis\/scene-layer-performance-on-arcgis-online#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/3d-gis\/3d-gis\/scene-layer-performance-on-arcgis-online\"},\"author\":{\"name\":\"Simon Reinhard\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/d210909c511f89c5986e3db181b4dba2\"},\"headline\":\"Scene Layer Performance in Scene Viewer, Part 1\",\"datePublished\":\"2018-02-13T03:10:22+00:00\",\"dateModified\":\"2020-01-29T09:57:08+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/3d-gis\/3d-gis\/scene-layer-performance-on-arcgis-online\"},\"wordCount\":7,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"3D\",\"EsriRDZurich\",\"jsapi4\",\"scene layers\",\"scene viewer\"],\"articleSection\":[\"3D Visualization &amp; Analytics\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/3d-gis\/3d-gis\/scene-layer-performance-on-arcgis-online\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/3d-gis\/3d-gis\/scene-layer-performance-on-arcgis-online\",\"name\":\"Scene Layer Performance in Scene Viewer, Part 1\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2018-02-13T03:10:22+00:00\",\"dateModified\":\"2020-01-29T09:57:08+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/3d-gis\/3d-gis\/scene-layer-performance-on-arcgis-online#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/3d-gis\/3d-gis\/scene-layer-performance-on-arcgis-online\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/3d-gis\/3d-gis\/scene-layer-performance-on-arcgis-online#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Scene Layer Performance in Scene Viewer, Part 1\"}]},{\"@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\/d210909c511f89c5986e3db181b4dba2\",\"name\":\"Simon Reinhard\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/bc2caf25032c1eca71db76a28027faf1b0528e524419e33dfdc5cb0f1c0b6260?s=96&d=blank&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/bc2caf25032c1eca71db76a28027faf1b0528e524419e33dfdc5cb0f1c0b6260?s=96&d=blank&r=g\",\"caption\":\"Simon Reinhard\"},\"url\":\"\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Scene Layer Performance in Scene Viewer, Part 1","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\/3d-gis\/3d-gis\/scene-layer-performance-on-arcgis-online","og_locale":"en_US","og_type":"article","og_title":"Scene Layer Performance in Scene Viewer, Part 1","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/3d-gis\/3d-gis\/scene-layer-performance-on-arcgis-online","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","article_modified_time":"2020-01-29T09:57:08+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\/3d-gis\/3d-gis\/scene-layer-performance-on-arcgis-online#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/3d-gis\/3d-gis\/scene-layer-performance-on-arcgis-online"},"author":{"name":"Simon Reinhard","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/d210909c511f89c5986e3db181b4dba2"},"headline":"Scene Layer Performance in Scene Viewer, Part 1","datePublished":"2018-02-13T03:10:22+00:00","dateModified":"2020-01-29T09:57:08+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/3d-gis\/3d-gis\/scene-layer-performance-on-arcgis-online"},"wordCount":7,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["3D","EsriRDZurich","jsapi4","scene layers","scene viewer"],"articleSection":["3D Visualization &amp; Analytics"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/3d-gis\/3d-gis\/scene-layer-performance-on-arcgis-online","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/3d-gis\/3d-gis\/scene-layer-performance-on-arcgis-online","name":"Scene Layer Performance in Scene Viewer, Part 1","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2018-02-13T03:10:22+00:00","dateModified":"2020-01-29T09:57:08+00:00","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/3d-gis\/3d-gis\/scene-layer-performance-on-arcgis-online#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/3d-gis\/3d-gis\/scene-layer-performance-on-arcgis-online"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/3d-gis\/3d-gis\/scene-layer-performance-on-arcgis-online#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"Scene Layer Performance in Scene Viewer, Part 1"}]},{"@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\/d210909c511f89c5986e3db181b4dba2","name":"Simon Reinhard","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/bc2caf25032c1eca71db76a28027faf1b0528e524419e33dfdc5cb0f1c0b6260?s=96&d=blank&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/bc2caf25032c1eca71db76a28027faf1b0528e524419e33dfdc5cb0f1c0b6260?s=96&d=blank&r=g","caption":"Simon Reinhard"},"url":""}]}},"text_date":"February 13, 2018","author_name":"Simon Reinhard","author_page":false,"custom_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2025\/08\/Newsroom-Keyart-Wide-1920-x-1080.jpg","primary_product":"ArcGIS Maps SDK for JavaScript","tag_data":[{"term_id":25781,"name":"3D","slug":"3d","term_group":0,"term_taxonomy_id":25781,"taxonomy":"post_tag","description":"","parent":0,"count":342,"filter":"raw"},{"term_id":549072,"name":"EsriRDZurich","slug":"esrirdzurich","term_group":0,"term_taxonomy_id":549072,"taxonomy":"post_tag","description":"","parent":0,"count":96,"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":31911,"name":"scene layers","slug":"scene-layers","term_group":0,"term_taxonomy_id":31911,"taxonomy":"post_tag","description":"","parent":0,"count":16,"filter":"raw"},{"term_id":25791,"name":"scene viewer","slug":"scene-viewer","term_group":0,"term_taxonomy_id":25791,"taxonomy":"post_tag","description":"","parent":0,"count":51,"filter":"raw"}],"category_data":[{"term_id":23771,"name":"3D Visualization &amp; Analytics","slug":"3d-gis","term_group":0,"term_taxonomy_id":23771,"taxonomy":"category","description":"","parent":0,"count":686,"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":36551,"name":"ArcGIS Online","slug":"arcgis-online","term_group":0,"term_taxonomy_id":36551,"taxonomy":"product","description":"","parent":0,"count":2419,"filter":"raw"},{"term_id":36601,"name":"Developers","slug":"developers","term_group":0,"term_taxonomy_id":36601,"taxonomy":"product","description":"","parent":0,"count":761,"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\/82521","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\/7061"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/comments?post=82521"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/82521\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=82521"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=82521"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=82521"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=82521"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=82521"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}