{"id":680652,"date":"2019-12-13T07:32:50","date_gmt":"2019-12-13T15:32:50","guid":{"rendered":"https:\/\/www.esri.com\/arcgis-blog\/?post_type=blog&#038;p=680652"},"modified":"2020-06-17T06:18:12","modified_gmt":"2020-06-17T13:18:12","slug":"a-classical-visualization-of-earthquakes-using-arcgis-api-for-javascript","status":"publish","type":"blog","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/3d-gis\/a-classical-visualization-of-earthquakes-using-arcgis-api-for-javascript","title":{"rendered":"A classical visualization of earthquakes using ArcGIS API for JavaScript"},"author":7011,"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,525722,549072,29401],"industry":[],"product":[36831],"class_list":["post-680652","blog","type-blog","status-publish","format-standard","hentry","category-3d-gis","tag-3d","tag-earthquakes","tag-esrirdzurich","tag-web","product-js-api-arcgis"],"acf":{"short_description":"A blog post about creating an interactive 3D visualization of earthquakes using ArcGIS API for JavaScript","flexible_content":[{"acf_fc_layout":"content","content":"<p>USGS publishes a <a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/earthquake.usgs.gov\/earthquakes\/feed\/\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/earthquake.usgs.gov\/earthquakes\/feed\/\">live feed of earthquakes<\/a> from the last 30 days. In this blog post we will go through the steps of creating a globe visualization that displays these earthquakes and allows the user to filter and interact with them.<\/p>\n<p>So let\u2019s get started!<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":680672,"id":680672,"title":"intro_app","filename":"intro_app.png","filesize":44818,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/intro_app.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/3d-gis\/a-classical-visualization-of-earthquakes-using-arcgis-api-for-javascript\/intro_app","alt":"A screenshot of the live application","author":"7011","description":"A screenshot of the live application","caption":"See the live app: http:\/\/ralucanicola.github.io\/JSAPI_demos\/last-earthquakes\/","name":"intro_app","status":"inherit","uploaded_to":680652,"date":"2019-12-13 14:31:50","modified":"2019-12-13 14:32:46","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":800,"height":423,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/intro_app-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/intro_app.png","medium-width":464,"medium-height":245,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/intro_app.png","medium_large-width":768,"medium_large-height":406,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/intro_app.png","large-width":800,"large-height":423,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/intro_app.png","1536x1536-width":800,"1536x1536-height":423,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/intro_app.png","2048x2048-width":800,"2048x2048-height":423,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/intro_app.png","card_image-width":800,"card_image-height":423,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/intro_app.png","wide_image-width":800,"wide_image-height":423}},"image_position":"center","orientation":"horizontal","hyperlink":"http:\/\/ralucanicola.github.io\/JSAPI_demos\/last-earthquakes\/"},{"acf_fc_layout":"content","content":"<h2>Step 1. Define the goal of the visualization<\/h2>\n<p>We want to show the latest earthquakes classified in such a way that the user can immediately see which ones were extremely dangerous (major earthquakes that cause severe damage) and which ones were moderate (can cause damage but only to buildings which are not earthquake proof). For the sake of consistency, we will also show the minor earthquakes that generally don\u2019t cause any damage. To help the user get a better overview of earthquake magnitude distribution and where the earthquakes occur, we\u2019ll also add a histogram and a filter slider. In addition, we want to allow the user to get extra information about each earthquake by clicking on it.<\/p>\n"},{"acf_fc_layout":"content","content":"<h2>Step 2. Map\u00a0design<\/h2>\n<p>The look and feel of the app should remind us of a school atlas, with the advantage that everything is interactive. This effect is given by the wonderful vintage physical map that <a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/www.esri.com\/arcgis-blog\/author\/j_nelson\/\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/www.esri.com\/arcgis-blog\/author\/j_nelson\/\">John Nelson<\/a> created. You can read more about the creation process in this <a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-online\/mapping\/vintage-shaded-relief-basemap\/\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/www.esri.com\/arcgis-blog\/products\/arcgis-online\/mapping\/vintage-shaded-relief-basemap\/\">blog post<\/a>. We\u2019ll use this map as a basemap in our application.<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":680702,"id":680702,"title":"vibrant_basemap","filename":"vibrant_basemap.jpg","filesize":77705,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/vibrant_basemap.jpg","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/3d-gis\/a-classical-visualization-of-earthquakes-using-arcgis-api-for-javascript\/vibrant_basemap","alt":"","author":"7011","description":"","caption":"Vintage Shaded Relief Basemap by John Nelson: https:\/\/nation.maps.arcgis.com\/home\/webmap\/viewer.html?webmap=ccbfec91e19d4f9fb0769af361c31516","name":"vibrant_basemap","status":"inherit","uploaded_to":680652,"date":"2019-12-13 14:35:06","modified":"2019-12-13 14:36:12","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":768,"height":410,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/vibrant_basemap-213x200.jpg","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/vibrant_basemap.jpg","medium-width":464,"medium-height":248,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/vibrant_basemap.jpg","medium_large-width":768,"medium_large-height":410,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/vibrant_basemap.jpg","large-width":768,"large-height":410,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/vibrant_basemap.jpg","1536x1536-width":768,"1536x1536-height":410,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/vibrant_basemap.jpg","2048x2048-width":768,"2048x2048-height":410,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/vibrant_basemap.jpg","card_image-width":768,"card_image-height":410,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/vibrant_basemap.jpg","wide_image-width":768,"wide_image-height":410}},"image_position":"center","orientation":"horizontal","hyperlink":"https:\/\/nation.maps.arcgis.com\/home\/webmap\/viewer.html?webmap=ccbfec91e19d4f9fb0769af361c31516"},{"acf_fc_layout":"content","content":"<p>The symbology for the earthquakes is based on the classical concentrical circles symbol:<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":680722,"id":680722,"title":"earthquake_symbol","filename":"earthquake_symbol.png","filesize":4079,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/earthquake_symbol.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/3d-gis\/a-classical-visualization-of-earthquakes-using-arcgis-api-for-javascript\/earthquake_symbol","alt":"","author":"7011","description":"","caption":"","name":"earthquake_symbol","status":"inherit","uploaded_to":680652,"date":"2019-12-13 14:37:56","modified":"2019-12-13 14:37:56","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":96,"height":96,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/earthquake_symbol.png","thumbnail-width":96,"thumbnail-height":96,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/earthquake_symbol.png","medium-width":96,"medium-height":96,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/earthquake_symbol.png","medium_large-width":96,"medium_large-height":96,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/earthquake_symbol.png","large-width":96,"large-height":96,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/earthquake_symbol.png","1536x1536-width":96,"1536x1536-height":96,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/earthquake_symbol.png","2048x2048-width":96,"2048x2048-height":96,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/earthquake_symbol.png","card_image-width":96,"card_image-height":96,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/earthquake_symbol.png","wide_image-width":96,"wide_image-height":96}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<p>This symbol is intuitive because it reflects the seismic waves starting from the epicenter of the earthquake. The more concentrical circles, the higher the magnitude of the earthquake. When working in 3D with the ArcGIS API for JavaScript you can achieve this by using a <a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-symbols-PointSymbol3D.html\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-symbols-PointSymbol3D.html\">PointSymbol3D<\/a> with multiple symbol layers, each <a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-symbols-IconSymbol3DLayer.html\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-symbols-IconSymbol3DLayer.html\">IconSymbol3DLayer<\/a> representing a circle:<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":680732,"id":680732,"title":"symbol_layers","filename":"symbol_layers.png","filesize":23349,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/symbol_layers.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/3d-gis\/a-classical-visualization-of-earthquakes-using-arcgis-api-for-javascript\/symbol_layers","alt":"","author":"7011","description":"","caption":"Define IconSymbol3DLayers for a PointSymbol3DLayer ","name":"symbol_layers","status":"inherit","uploaded_to":680652,"date":"2019-12-13 14:38:56","modified":"2019-12-13 14:41:07","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":1200,"height":156,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/symbol_layers-213x156.png","thumbnail-width":213,"thumbnail-height":156,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/symbol_layers.png","medium-width":464,"medium-height":60,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/symbol_layers.png","medium_large-width":768,"medium_large-height":100,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/symbol_layers.png","large-width":1200,"large-height":156,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/symbol_layers.png","1536x1536-width":1200,"1536x1536-height":156,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/symbol_layers.png","2048x2048-width":1200,"2048x2048-height":156,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/symbol_layers-826x107.png","card_image-width":826,"card_image-height":107,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/symbol_layers.png","wide_image-width":1200,"wide_image-height":156}},"image_position":"center","orientation":"horizontal","hyperlink":"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-symbols-IconSymbol3DLayer.html"},{"acf_fc_layout":"content","content":"<p>As mentioned in Step 1, in this map we\u2019re using a data classification schema that will allow us to differentiate between earthquakes that cause extreme damage (even to earthquake resistant structures), moderate earthquakes and minor earthquakes that don\u2019t cause any damage. The minor ones are actually the big majority and they are interesting to map because they show the areas with a lot of tectonic activity.<\/p>\n<p>To visualize classified point data we\u2019ll use a <a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-renderers-ClassBreaksRenderer.html\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-renderers-ClassBreaksRenderer.html\">ClassBreaksRenderer<\/a>, where each class has a symbol with concentric circles, depending on the earthquake magnitude:<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":680742,"id":680742,"title":"classBreaksRenderer","filename":"classBreaksRenderer.png","filesize":32202,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/classBreaksRenderer.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/3d-gis\/a-classical-visualization-of-earthquakes-using-arcgis-api-for-javascript\/classbreaksrenderer","alt":"","author":"7011","description":"","caption":"Define classes for a ClassBreaksRenderer","name":"classbreaksrenderer","status":"inherit","uploaded_to":680652,"date":"2019-12-13 14:44:12","modified":"2019-12-13 14:44: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":1200,"height":328,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/classBreaksRenderer-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/classBreaksRenderer.png","medium-width":464,"medium-height":127,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/classBreaksRenderer.png","medium_large-width":768,"medium_large-height":210,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/classBreaksRenderer.png","large-width":1200,"large-height":328,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/classBreaksRenderer.png","1536x1536-width":1200,"1536x1536-height":328,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/classBreaksRenderer.png","2048x2048-width":1200,"2048x2048-height":328,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/classBreaksRenderer-826x226.png","card_image-width":826,"card_image-height":226,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/classBreaksRenderer.png","wide_image-width":1200,"wide_image-height":328}},"image_position":"center","orientation":"horizontal","hyperlink":"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-renderers-ClassBreaksRenderer.html"},{"acf_fc_layout":"content","content":"<p>The data is dynamic, every time a user opens or refreshes the application the data changes. Generally, the last class with earthquakes with magnitudes higher than 7 is likely to stay empty (we sure hope that\u2019s the case!). Having empty classes is not a best practice when classifying data because it confuses the user. We could reclassify the data, but these classes are based on the effects that earthquakes have, rather than clusters within the data. So we\u2019d like to keep the classes as they are and to give the user information about how many earthquakes are in each class, we use <code class=\"markup--code markup--p-code\"><a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-tasks-support-Query.html#outStatistics\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-tasks-support-Query.html#outStatistics\">outStatistics<\/a><\/code> with the <a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-layers-GeoJSONLayer.html#queryFeatures\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-layers-GeoJSONLayer.html#queryFeatures\">queryFeatures<\/a> method to obtain the number of earthquakes in each class. We set these numbers in the labels of each class, so that they are displayed nicely in the legend:<\/p>\n"},{"acf_fc_layout":"image","image":{"ID":680752,"id":680752,"title":"legend","filename":"legend.png","filesize":17061,"url":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/legend.png","link":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/3d-gis\/a-classical-visualization-of-earthquakes-using-arcgis-api-for-javascript\/legend-9","alt":"","author":"7011","description":"","caption":"","name":"legend-9","status":"inherit","uploaded_to":680652,"date":"2019-12-13 14:45:37","modified":"2019-12-13 14:45:37","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":342,"height":315,"sizes":{"thumbnail":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/legend-213x200.png","thumbnail-width":213,"thumbnail-height":200,"medium":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/legend.png","medium-width":283,"medium-height":261,"medium_large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/legend.png","medium_large-width":342,"medium_large-height":315,"large":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/legend.png","large-width":342,"large-height":315,"1536x1536":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/legend.png","1536x1536-width":342,"1536x1536-height":315,"2048x2048":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/legend.png","2048x2048-width":342,"2048x2048-height":315,"card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/legend.png","card_image-width":342,"card_image-height":315,"wide_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/legend.png","wide_image-width":342,"wide_image-height":315}},"image_position":"center","orientation":"horizontal","hyperlink":""},{"acf_fc_layout":"content","content":"<h2>Step 3. Earthquake data<\/h2>\n<p>As mentioned in the beginning, the data comes from <a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/earthquake.usgs.gov\/earthquakes\/feed\/\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/earthquake.usgs.gov\/earthquakes\/feed\/\">USGS earthquake live feed<\/a>. It comes in different formats, but for our app, we\u2019re going to get the <a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/earthquake.usgs.gov\/earthquakes\/feed\/v1.0\/summary\/all_month.geojson\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/earthquake.usgs.gov\/earthquakes\/feed\/v1.0\/summary\/all_month.geojson\">GeoJSON live feed for the last 30 days<\/a> and set it in the <a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-layers-GeoJSONLayer.html#url\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-layers-GeoJSONLayer.html#url\">url<\/a> of the <a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-layers-GeoJSONLayer.html\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-layers-GeoJSONLayer.html\">GeoJSONLayer<\/a>. And that\u2019s all there is to it, no server or data processing needed in this case.<\/p>\n<h2>Step 4. User interaction<\/h2>\n<p>A <a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-views-SceneView.html\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-views-SceneView.html\">SceneView<\/a> comes with default 3D navigation like pan, zoom and tilt. The user can freely navigate in the scene, but zooming in to city level doesn\u2019t really make sense for this app, so we\u2019re going to set a <a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-views-SceneView.html#constraints\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-views-SceneView.html#constraints\">constraint<\/a> to limit the min altitude to 400,000m. When the camera reaches that height, the user can\u2019t zoom in anymore.<\/p>\n<p class=\"graf graf--p\">The user can interact with the earthquakes by clicking on a symbol to get more information about the earthquake. For that we\u2019ve set a <a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-layers-GeoJSONLayer.html#popupTemplate\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-layers-GeoJSONLayer.html#popupTemplate\">popupTemplate<\/a> on the layer.<\/p>\n<p>When the user needs to focus on a certain data range, a useful technique is to only display those features in the data range. So if the user is interested in earthquakes between a certain magnitude range, then we filter out all the earthquakes with magnitude values outside of that range. With ArcGIS API for JavaScript we can use a <a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-widgets-HistogramRangeSlider.html\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-widgets-HistogramRangeSlider.html\">HistogramRangeSlider<\/a> as a filtering tool and use the <code class=\"markup--code markup--p-code\"><a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-views-layers-GeoJSONLayerView.html#filter\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-views-layers-GeoJSONLayerView.html#filter\">filter<\/a><\/code> property on the <a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-views-layers-GeoJSONLayerView.html\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-views-layers-GeoJSONLayerView.html\">GeoJSONLayerView<\/a> to hide features that don\u2019t satisfy the filter criteria.<\/p>\n<h2>Summary\u200a\u2014\u200aputting things together in JavaScript<\/h2>\n<p>So the final app has the following sections:<\/p>\n<ul>\n<li>Create the map: contains the vintage basemap from John Nelson loaded as a TileLayer. See the code for this on <a class=\"markup--anchor markup--li-anchor\" href=\"https:\/\/github.com\/RalucaNicola\/JSAPI_demos\/blob\/master\/last-earthquakes\/main.js#L18\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/github.com\/RalucaNicola\/JSAPI_demos\/blob\/master\/last-earthquakes\/main.js#L18\">Github<\/a> (lines 18\u201328).<\/li>\n<li>Create the <a class=\"markup--anchor markup--li-anchor\" href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-views-SceneView.html\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-views-SceneView.html\">SceneView<\/a> that the map will be rendered to. On the <a class=\"markup--anchor markup--li-anchor\" href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-views-SceneView.html\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-views-SceneView.html\">SceneView<\/a> there are several properties related to the user interaction, like the <a class=\"markup--anchor markup--li-anchor\" href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-views-SceneView.html#constraints\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-views-SceneView.html#constraints\">navigation constraints<\/a>, the color of the <a class=\"markup--anchor markup--li-anchor\" href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-views-SceneView.html#highlightOptions\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-views-SceneView.html#highlightOptions\">highlight<\/a> when the user clicks on an earthquake, the <a class=\"markup--anchor markup--li-anchor\" href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-views-SceneView.html#environment\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-views-SceneView.html#environment\">environment settings<\/a> for the lighting in the scene and removing the stars and the sky and making it transparent. See the code for this on <a class=\"markup--anchor markup--li-anchor\" href=\"https:\/\/github.com\/RalucaNicola\/JSAPI_demos\/blob\/master\/last-earthquakes\/main.js#L30\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/github.com\/RalucaNicola\/JSAPI_demos\/blob\/master\/last-earthquakes\/main.js#L30\">Github<\/a> (lines 30\u201360).<\/li>\n<li>Create the <a class=\"markup--anchor markup--li-anchor\" href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-layers-GeoJSONLayer.html\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-layers-GeoJSONLayer.html\">GeoJSONLayer<\/a> with the earthquakes. The<a class=\"markup--anchor markup--li-anchor\" href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-layers-GeoJSONLayer.html#popupTemplate\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-layers-GeoJSONLayer.html#popupTemplate\"> popupTemplate<\/a> sets the information that should be displayed when the user clicks on the earthquake. In this case, we want to show the magnitude of the earthquake, where it happened and what time it happened. We want the size to represent the magnitude of the earthquakes and no be influenced by perspective, so we\u2019re going to set <code class=\"markup--code markup--li-code\">screenSizePerspectiveEnabled<\/code> to <code class=\"markup--code markup--li-code\">false<\/code>. See the code for this on <a class=\"markup--anchor markup--li-anchor\" href=\"https:\/\/github.com\/RalucaNicola\/JSAPI_demos\/blob\/master\/last-earthquakes\/main.js#L68\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/github.com\/RalucaNicola\/JSAPI_demos\/blob\/master\/last-earthquakes\/main.js#L68\">Github<\/a> (lines 68\u201389).<\/li>\n<li>The next part of the code is about setting the renderer on the layer. The data is split into 3 classes based on magnitude as discussed in Step 1, so we\u2019re going to use a <a class=\"markup--anchor markup--li-anchor\" href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-renderers-ClassBreaksRenderer.html\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-renderers-ClassBreaksRenderer.html\">ClassBreaksRenderer<\/a>. For each of the classes we want to count how many earthquakes are in each class, so we define <a class=\"markup--anchor markup--li-anchor\" href=\"https:\/\/github.com\/RalucaNicola\/JSAPI_demos\/blob\/master\/last-earthquakes\/main.js#L93\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/github.com\/RalucaNicola\/JSAPI_demos\/blob\/master\/last-earthquakes\/main.js#L93\">outStatistics definitions<\/a> that we later on pass to the <a class=\"markup--anchor markup--li-anchor\" href=\"https:\/\/github.com\/RalucaNicola\/JSAPI_demos\/blob\/master\/last-earthquakes\/main.js#L139\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/github.com\/RalucaNicola\/JSAPI_demos\/blob\/master\/last-earthquakes\/main.js#L139\">layer query<\/a>. Once we get the results from the statistics, we define the renderer. See the code for this on <a class=\"markup--anchor markup--li-anchor\" href=\"https:\/\/github.com\/RalucaNicola\/JSAPI_demos\/blob\/master\/last-earthquakes\/main.js#L142\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/github.com\/RalucaNicola\/JSAPI_demos\/blob\/master\/last-earthquakes\/main.js#L142\">Github<\/a> (lines 142\u2013176).<\/li>\n<li>Finally, the <a class=\"markup--anchor markup--li-anchor\" href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-widgets-HistogramRangeSlider.html\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-widgets-HistogramRangeSlider.html\">HistogramRangeSlider<\/a> needs to know how many features are in each histogram bin. We can get that information using the smart mapping <a class=\"markup--anchor markup--li-anchor\" href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-renderers-smartMapping-statistics-histogram.html\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/developers.arcgis.com\/javascript\/latest\/api-reference\/esri-renderers-smartMapping-statistics-histogram.html\">histogram<\/a> method. Once the histogram slider is created, we define an event listener that will filter the data on the layer view when the user drags the thumbs of the slider. See the code for this on <a class=\"markup--anchor markup--li-anchor\" href=\"https:\/\/github.com\/RalucaNicola\/JSAPI_demos\/blob\/master\/last-earthquakes\/main.js#L193\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/github.com\/RalucaNicola\/JSAPI_demos\/blob\/master\/last-earthquakes\/main.js#L193\">Github<\/a> (lines 193\u200a\u2014\u200a233).<\/li>\n<\/ul>\n<p>You can have a look at the <a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/github.com\/RalucaNicola\/JSAPI_demos\/tree\/master\/last-earthquakes\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/github.com\/RalucaNicola\/JSAPI_demos\/tree\/master\/last-earthquakes\">full code on Github<\/a> or play around with <a class=\"markup--anchor markup--p-anchor\" href=\"https:\/\/ralucanicola.github.io\/JSAPI_demos\/last-earthquakes\/\" target=\"_blank\" rel=\"noopener\" data-href=\"https:\/\/ralucanicola.github.io\/JSAPI_demos\/last-earthquakes\/\">the live version<\/a>.<\/p>\n"}],"authors":[{"ID":7011,"user_firstname":"Raluca","user_lastname":"Nicola","nickname":"Raluca Nicola","user_nicename":"raluca_zurich","display_name":"Raluca Nicola","user_email":"RNicola@esri.com","user_url":"https:\/\/raluca-nicola.net\/","user_registered":"2018-03-02 00:19:07","user_description":"Raluca works as a web cartographer with the Geo Experience Center team at Esri. She loves to play around with web technologies and visualization styles. If she's not in front of the computer, she's probably somewhere up in the mountains.","user_avatar":"<img data-del=\"avatar\" src='https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/7VkWXsZ3_400x400.jpg' class='avatar pp-user-avatar avatar-96 photo ' height='96' width='96'\/>"}],"related_articles":"","card_image":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2019\/12\/card_classical_earthquakes2.png","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>A classical visualization of earthquakes using ArcGIS API for JavaScript<\/title>\n<meta name=\"description\" content=\"A blog post about creating an interactive 3D visualization of earthquakes using ArcGIS API for JavaScript\" \/>\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\/3d-gis\/a-classical-visualization-of-earthquakes-using-arcgis-api-for-javascript\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A classical visualization of earthquakes using ArcGIS API for JavaScript\" \/>\n<meta property=\"og:description\" content=\"A blog post about creating an interactive 3D visualization of earthquakes using ArcGIS API for JavaScript\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/3d-gis\/a-classical-visualization-of-earthquakes-using-arcgis-api-for-javascript\" \/>\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-06-17T13:18:12+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\/3d-gis\/a-classical-visualization-of-earthquakes-using-arcgis-api-for-javascript#article\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/3d-gis\/a-classical-visualization-of-earthquakes-using-arcgis-api-for-javascript\"},\"author\":{\"name\":\"Raluca Nicola\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/e8fe39abb687cde59f7f1296fbfb24a4\"},\"headline\":\"A classical visualization of earthquakes using ArcGIS API for JavaScript\",\"datePublished\":\"2019-12-13T15:32:50+00:00\",\"dateModified\":\"2020-06-17T13:18:12+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/3d-gis\/a-classical-visualization-of-earthquakes-using-arcgis-api-for-javascript\"},\"wordCount\":10,\"publisher\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#organization\"},\"keywords\":[\"3D\",\"earthquakes\",\"EsriRDZurich\",\"web\"],\"articleSection\":[\"3D Visualization &amp; Analytics\"],\"inLanguage\":\"en-US\"},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/3d-gis\/a-classical-visualization-of-earthquakes-using-arcgis-api-for-javascript\",\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/3d-gis\/a-classical-visualization-of-earthquakes-using-arcgis-api-for-javascript\",\"name\":\"A classical visualization of earthquakes using ArcGIS API for JavaScript\",\"isPartOf\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/#website\"},\"datePublished\":\"2019-12-13T15:32:50+00:00\",\"dateModified\":\"2020-06-17T13:18:12+00:00\",\"description\":\"A blog post about creating an interactive 3D visualization of earthquakes using ArcGIS API for JavaScript\",\"breadcrumb\":{\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/3d-gis\/a-classical-visualization-of-earthquakes-using-arcgis-api-for-javascript#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/3d-gis\/a-classical-visualization-of-earthquakes-using-arcgis-api-for-javascript\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/3d-gis\/a-classical-visualization-of-earthquakes-using-arcgis-api-for-javascript#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/www.esri.com\/arcgis-blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A classical visualization of earthquakes using ArcGIS API for JavaScript\"}]},{\"@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\/e8fe39abb687cde59f7f1296fbfb24a4\",\"name\":\"Raluca Nicola\",\"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\/2018\/04\/7VkWXsZ3_400x400.jpg\",\"contentUrl\":\"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/7VkWXsZ3_400x400.jpg\",\"caption\":\"Raluca Nicola\"},\"description\":\"Raluca works as a web cartographer with the Geo Experience Center team at Esri. She loves to play around with web technologies and visualization styles. If she's not in front of the computer, she's probably somewhere up in the mountains.\",\"sameAs\":[\"https:\/\/raluca-nicola.net\/\",\"https:\/\/www.linkedin.com\/in\/raluca-nicola-cartography\/\",\"https:\/\/x.com\/nicolaraluk\"],\"url\":\"https:\/\/www.esri.com\/arcgis-blog\/author\/raluca_zurich\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"A classical visualization of earthquakes using ArcGIS API for JavaScript","description":"A blog post about creating an interactive 3D visualization of earthquakes using ArcGIS API for JavaScript","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\/3d-gis\/a-classical-visualization-of-earthquakes-using-arcgis-api-for-javascript","og_locale":"en_US","og_type":"article","og_title":"A classical visualization of earthquakes using ArcGIS API for JavaScript","og_description":"A blog post about creating an interactive 3D visualization of earthquakes using ArcGIS API for JavaScript","og_url":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/3d-gis\/a-classical-visualization-of-earthquakes-using-arcgis-api-for-javascript","og_site_name":"ArcGIS Blog","article_publisher":"https:\/\/www.facebook.com\/esrigis\/","article_modified_time":"2020-06-17T13:18:12+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\/3d-gis\/a-classical-visualization-of-earthquakes-using-arcgis-api-for-javascript#article","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/3d-gis\/a-classical-visualization-of-earthquakes-using-arcgis-api-for-javascript"},"author":{"name":"Raluca Nicola","@id":"https:\/\/www.esri.com\/arcgis-blog\/#\/schema\/person\/e8fe39abb687cde59f7f1296fbfb24a4"},"headline":"A classical visualization of earthquakes using ArcGIS API for JavaScript","datePublished":"2019-12-13T15:32:50+00:00","dateModified":"2020-06-17T13:18:12+00:00","mainEntityOfPage":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/3d-gis\/a-classical-visualization-of-earthquakes-using-arcgis-api-for-javascript"},"wordCount":10,"publisher":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#organization"},"keywords":["3D","earthquakes","EsriRDZurich","web"],"articleSection":["3D Visualization &amp; Analytics"],"inLanguage":"en-US"},{"@type":"WebPage","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/3d-gis\/a-classical-visualization-of-earthquakes-using-arcgis-api-for-javascript","url":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/3d-gis\/a-classical-visualization-of-earthquakes-using-arcgis-api-for-javascript","name":"A classical visualization of earthquakes using ArcGIS API for JavaScript","isPartOf":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/#website"},"datePublished":"2019-12-13T15:32:50+00:00","dateModified":"2020-06-17T13:18:12+00:00","description":"A blog post about creating an interactive 3D visualization of earthquakes using ArcGIS API for JavaScript","breadcrumb":{"@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/3d-gis\/a-classical-visualization-of-earthquakes-using-arcgis-api-for-javascript#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/3d-gis\/a-classical-visualization-of-earthquakes-using-arcgis-api-for-javascript"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.esri.com\/arcgis-blog\/products\/js-api-arcgis\/3d-gis\/a-classical-visualization-of-earthquakes-using-arcgis-api-for-javascript#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/www.esri.com\/arcgis-blog\/"},{"@type":"ListItem","position":2,"name":"A classical visualization of earthquakes using ArcGIS API for JavaScript"}]},{"@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\/e8fe39abb687cde59f7f1296fbfb24a4","name":"Raluca Nicola","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\/2018\/04\/7VkWXsZ3_400x400.jpg","contentUrl":"https:\/\/www.esri.com\/arcgis-blog\/app\/uploads\/2018\/04\/7VkWXsZ3_400x400.jpg","caption":"Raluca Nicola"},"description":"Raluca works as a web cartographer with the Geo Experience Center team at Esri. She loves to play around with web technologies and visualization styles. If she's not in front of the computer, she's probably somewhere up in the mountains.","sameAs":["https:\/\/raluca-nicola.net\/","https:\/\/www.linkedin.com\/in\/raluca-nicola-cartography\/","https:\/\/x.com\/nicolaraluk"],"url":"https:\/\/www.esri.com\/arcgis-blog\/author\/raluca_zurich"}]}},"text_date":"December 13, 2019","author_name":"Raluca Nicola","author_page":"https:\/\/www.esri.com\/arcgis-blog\/author\/raluca_zurich","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":525722,"name":"earthquakes","slug":"earthquakes","term_group":0,"term_taxonomy_id":525722,"taxonomy":"post_tag","description":"","parent":0,"count":3,"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":29401,"name":"web","slug":"web","term_group":0,"term_taxonomy_id":29401,"taxonomy":"post_tag","description":"","parent":0,"count":17,"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"}],"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\/680652","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\/7011"}],"replies":[{"embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/comments?post=680652"}],"version-history":[{"count":0,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/blog\/680652\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/media?parent=680652"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/categories?post=680652"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/tags?post=680652"},{"taxonomy":"industry","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/industry?post=680652"},{"taxonomy":"product","embeddable":true,"href":"https:\/\/www.esri.com\/arcgis-blog\/wp-json\/wp\/v2\/product?post=680652"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}