FIFA World Cup 2018 Stadium Guide – Russia

FIFA World Cup 2018 Stadium Guide – Russia

The background story…

The motivation to create this story map series application is sourced from my true love for soccer (or as some like to call it, ‘football’).  I have always watched and loved soccer, and have a key interest for the English, Spanish, German, and South African leagues.

After following the 2017 FIFA Confederations Cup, which was hosted in Russia, I was interested in how the different host stadiums looked, and where they are located. This interest comes from my GIS (Geographical Information Systems) background – and now to fuse my two passions together, this was an exciting activity for me to complete.

Map soccer ball
How I like to see the world…

The goal…

The purpose of the ‘FIFA World Cup 2018 Stadium Guide’ application is for the public to be able to get thorough insights about each of the host stadiums, see how they look, obtain game fixtures, and explore each of the surrounding host stadium’s locations.

The method…

Firstly, I had to collect spatial and attribute information from the Internet, via various sources, to have enough of a foundation to create the source dataset, including the locations and information for each stadium.

The next step which I followed was to create customized (3D looking) stadium icons with Adobe Photoshop, as I wanted to include a picture of each stadium in the location markers for better effect.

Mordovia Stadium location marker icon
An example of the customized location marker icon for Mordovia Stadium

Once this process was complete, the stadium dataset had to be created, packaged, published to the web, hosted and ultimately be processed so that it could be used in the ‘FIFA World Cup 2018 Stadium Guide’ application.

I used a variety of Esri’s ArcGIS products to create this story map series application, namely:

ArcGIS Pro (Desktop)

This is where the file geodatabase, which included all the stadium locations and attribute data was created. Additionally, I created the 3D multipatches as well using ArcGIS Pro, for those stadiums which I could get existing 3D models. ArcGIS Pro was also used to create scene layer packages of the source data, which could be hosted in ArcGIS Online for the application.

Luzhniki Stadium 3D model
The 3D model used for the Luzhniki Stadium

 

 

 

 

 

 

 

 

 

ArcGIS Pro
Creating a scene layer package in ArcGIS Pro

ArcGIS Online

This is where I could use the hosted scene layer packages as input for web scenes, and then link these web scenes to the story map series template, to ultimately create the application. This application is hosted on ArcGIS Online.

Esri’s ArcGIS products give the user a great amount of flexibility, interoperability and a variety of configurations which can be altered to create a unique application. ArcGIS Online allows for the user to be able to host, author, and share one’s data, web maps, web scenes, and applications on the web.

The next step…

The future for this application would be to link it to a related application, depicting up-to-date progress, results, and news of the FIFA World Cup 2018.

You can access the FIFA World Cup 2018 Stadium Guide – Russia by clicking here.

Esri and the 3rd dimension

With Esri’s ever expanding software stack it is sometimes difficult to keep track of the variety of software solutions available. One of the main areas of growth is Esri’s collection is its answer to 3D GIS. Fully utilising the extra dimension has come difficult to the GIS sector in the past (which is historically mostly two-dimensional in terms of application). Esri’s recent focus on developing a 3D stack which fully embraces three-dimensional analysis, content generation and visualisation with the emphasis on sharing 3D scenes with non-technical users has led to mainly two desktop applications, ArcGIS Pro and CityEngine. This blog post will have a look at both of these applications by discussing the capabilities and when to use them through a typical use-case for an area around central Johannesburg.

Intro
CityEngine or ArcGIS Pro

ArcGIS Pro:

ArcGISPro

ArcGIS Pro allows users to seamlessly integrate traditional two-dimensional GIS with 3D data in a single application interface. Using the 3D Analyst extension a user can perform various 3D analysis on GIS data including line of sight, volumetric calculations, viewshed calculations as well as working with LAS datasets, as well as the traditional GIS analysis methods like proximity, overlay and statistical analysis. For more information regarding the 3D Analyst extension visit: http://www.esri.com/software/arcgis/extensions/3danalyst.

The image below shows a Johannesburg scene showing 3D textured buildings, analytical representation of trees and extruded polygons showing the various zones and height restrictions of the buildings. This gives the user the ability to quickly see which building exceed their height restrictions.

ArcGISPro001
Overlay 3D buildings and zonal restrictions in ArcGIS Pro

Next we need to calculate how the shadows in the city change over course of a specific day, and share the result with external users.

Use the Sun Shadow Volume geoprocessing tool (3D Analyst) to calculate the shadow volumes. In the example below the analysis were done between 08:00 and 16:00 for every two hours.

ArcGISPro002
Sun shadow volume tool

The resulting multipatch represents the shadow volumes created by each building at a specific time. ArcGIS Pro has the ability to cycle through these time-enabled data to create a seamless animation of the shadow movement.

Webp.net-gifmaker (1)
Shadow movement over the course of the day

Share the scene to either ArcGIS Online or Portal with ease. An example web scene for of the shadow analysis mentioned above can be viewed here.

*The next blog post will focus on the various 3D sharing techniques available in the ArcGIS Platform

ArcGIS Pro is a powerful tool for performing 3 dimensional analysis on GIS data. However, although ArcGIS Pro has 3D editing capabilities, its primary function is not 3D content creation. CityEngine on the other hand was designed especially for quick content generation on a large scale.

CityEngine:

CE

CityEngine’s ability to dynamically create and compare urban scenarios quickly makes it a favourite among urban developers, local governmental authorities, township planners as well as the entertainment industry.

The key behind CityEngine’s quick content generation is its own procedural scripting language called CGA. These scripts or rules are basically a set of sequential tasks that guides the software to create accurate 3D geometries.

By applying different rules to the same datasets, we are able to generate various 3D representations. In the example below, we can see that in the larger view a more realistic scenario is generated displaying textured buildings and highly detailed trees. The inserted image shows the same datasets represented differently to produce a more analytical scenario of the data.

2017-06-27 08-05-47 AM
Using CGA rules creates multiple scenarios quickly using the same data

In another example, an urban designer might want to compare scenarios for a redevelopment project. In the image below CityEngine is used to compare high rising buildings, office spaces and apartment building designs.

Webp.net-gifmaker
Comparing redevelopment strategies in CityEngine

A CityEninge scene can be easily shared in a variety of ways. These include:

A CityEngine webscene is a static version of the CityEngine scene. All models, terrains and networks generated in CityEngine is compressed into a single .3ws file. This file can then be added as an item in ArcGIS Online or Portal, and when opened creates a browser based 3D environment that allows user-driven navigation and interaction. An example of the CityEngine web scene can be found here.

The image above shows examples of:

  • comparing real-world and analytical scenes (top left)
  • comparing redevelopment scenarios (top right)
  • adding HTML embedded attributes such as Google Streetview (bottom)

Datasets can also be exported to a Scene layer package. A Scene layer package has the ability to publish hosted scene layers which represents 3D data as a feature service, when added to either ArcGIS Online or Portal.

CityEngine also has the ability to share a scene as a 360 Virtual Reality experience. This creates a .3vr file which can be shared to ArcGIS online. Using a Samsung Gear VR headset along with the ArcGIS 360 VR app from Esri Labs, you are able to explore scenes in a fully immersive 3D virtual reality.

Find the Johannesburg 360 virtual reality scene here.

VR

For more information about creating a 360 VR experience in CityEngine go to the Esri CityEngine Help.

Make your own 3D web app

jsapiWe all know that ArcGIS comes with a very large number of out of the box apps that seemingly do just about everything! Surprisingly though, we often come across the problem of finding an app that “fits just right” with what you need to achieve. The solution to this is to build your own app using an API or Runtime. The beauty of the ArcGIS APIs and Runtimes is that they extend the platform – meaning you can leverage all the power of ArcGIS such as Server, map services, web maps, popups, geoprocessing, etc all in a front-end that suits your workflow, user needs and styling choices. This may seem daunting, but don’t be fooled, anyone can do it!

This post will take you through some basic steps to create your own custom web application using a 3D scene. We will use the ArcGIS JavaScript API 4.0 to make the app.

1. Getting started – setting up your environment

Like I said, this is really simple. There are only two things you need. Firstly, you will need an ArcGIS Online subscription to make a web scene that we will load into our custom app

Secondly, you will need is a JavaScript IDE (editor) such as Notepad++ or WebStorm (link).

And that’s it, we are ready to go!

2. Creating the web scene

Log in to your ArcGIS Online account and click the menu option entitled “Scene”. This is a familiar interface very similar to the “Map” tool that lets you other webmaps. Use this tool to create a web scene with your own data layers, popups and symbology. In my example, I have added the provinces of South Africa as a layer and extruded them to show some 3D.

blog1
Creating a web scene in ArcGIS Online

Make sure to save the scene when you are done and take note (copy into notepad) of the item id for the web scene. You can grab this from the address bar in your browser. My id is “0390e2ec01fa488a847d4e413f015cd0”.

blog2
Getting the web scene’s ID

Note that to make things easier, you can share your web scene publically. This will avoid your app needing to authenticate you when opening it (i.e. logging in). In future, you can add security to your app as required.

More info on how to create a web scene, go to this link.

3. Creating your web page structure

Open up a new, empty html file in your IDE of choice. We will first put in the basic structure of the HTML page to get us going (TIP: I have created myself a template that I can re-use as a starting point each time I want to create a new app – saving me the time of creating the structure). An HTML page consists of some mandatory sections:

  • HTML doctype declaration – so that a web browser knows that the page is an HTML file (and what version – we are using 5)
  • Head – this includes all necessary ‘meatadata’ for the web page including the styling and logic (javascript)
    • Title – be sure to set a readbale title that you will see on your browser tab
    • CSS – this is the styling file and its easiest to pull in the CDN hosted Esri stylesheet
    • Javascript libraries – this is the ‘core’ JS library that will enable all kinds of web mapping goodness, we will pull in the CDN hosted JSAPI from Esri (link)
    • Javascript – this is the logic of your won app, here will enter our code to load a scene view and any other logic we want from the page
  • Body – this is the HTML which provides the structure of the page using HTML tags (link)

Here is my basic skeleton template including the links to the CDN CSS and JavaScript libraries that make up the ArcGIS JavaScript API (v4.0):

<!DOCTYPE html>
<html>
<head>

<title>My First 3D Web App</title>

<link rel="stylesheet" href="https://js.arcgis.com/4.0/esri/css/main.css">
<script src="https://js.arcgis.com/4.0/"></script>

<script>
/* section for my custom code */

</script>

<body>
<!-- page layout will go here --> 

</body>
</html>

More info on creating HTML pages, go to this link.

4. Building the HTML page structure

Before we can add a map (or other elements) to the UI, we need to create the structure of the page itself. Now, there are many ways to skin this cat which I wont go into in this post, but I am going to use a couple of layers (“DIV”s in HTML parlance) to layout my page. This is where you can really start to have fun – since you are in full control of everything, you can choose layout, colours, fonts, graphics, etc to make you page look great!

Here is the HTML layout code that is inserted into the “body” section:

<div id="wrapper" style="position: absolute; top: 0; bottom: 0; left: 0; right: 0; background-color: rgb(200,200,200)">

  <div id="mapPanel" style="position: relative; float: left; width: 60%; height: 100%">
  </div>

  <div id="mapDescription" style="position: relative; float: left; width: 40%; height: 100%; background-color: rgb(220,220,220)">
    <p style="margin: 10px; font: normal 10pt verdana;">Welcome to my very first 3D web app! You can click around and navigate the scene.</p>
  </div>

</div>

5. Adding the JavaScript “Scene View”

Since v4.0 of the ArcGIS JavaScript API, Esri now uses a new pattern for adding maps to the view. This is done by first creating the map (which is a container) and then adding a view to that map.

Here is the code for loading my map which is inserted directly into the <script> section:

require([
  "esri/views/SceneView",
  "esri/WebScene",
  "dojo/domReady!"
], function(SceneView, WebScene) {

  var scene = new WebScene({
    portalItem: {
      id: "0390e2ec01fa488a847d4e413f015cd0" // replace with your web scene's ID
    }
  });

  var view = new SceneView({
    container: "mapPanel",
    map: scene
  });

});

Note that I have entered the Item ID from the web scene I created earlier as the reference. This means that the logic will now create a scene container, find the scene item by its id and load that into the scene as a view. Too easy!

More info on the ArcGIS JavaScript API, go to this link.

6. Revel in your mastery

And that’s it! You have created your first 3D web app. To view it, simply open the HTML page in your favourite browser (JSAPI v4.0 is supported in Chrome, Firefox, and IE 11).

Here is a screenshot of my first app:

blog3
My First 3D Web App!

Happy coding!

– Richard

CityEngine & ArcGIS Pro combine to show CCTV coverage in 3D

As part of our Modelling Reality in 3D series, this post looks at the Esri Africa User Conference demonstration of CCTV camera placement in 3D.

Modelling reality in 3D

A prominent United Nations study notes that the share of Africans living in urban areas is projected to grow from almost 40% in 2010 to over 60% by 2050. With the expected rate of population growth on the continent. This increase in urbanisation can lead to economic growth, transformation, and poverty reduction. However, without proper planning the possibility of increased inequality, urban poverty and associated crime exists.

One of the areas to address is crime and this needs to be done in a more systematic way. Applying geography will help us do that.

The aim of the demonstration was to show the location and coverage of CCTV cameras in downtown Johannesburg. The objective was to find the optimal coverage area in 3D by altering some of the camera attributes such as angle, direction and length. CityEngine was used to create the CCTV coverage rules, and ArcGIS Pro’s analysis abilities were utilised to determine the covered areas.

pic1

CityEngine:

Step 1 was to create a CityEngine rule that creates 3-dimensional shapes representing the visible area of each camera. The CGA rule is shown in the images below:

Attributes

pic2
Note that the Width and HorizontalRotation attributes derive their values by calling the getWidth and getRealDirection functions, respectively.
The getWidth function uses a Pythagorean algorithm to calculate the width (length of the opposite triangle side) by using the CameraAngle and ViewLength attributes.

The getRealDirection function converts the azimuth attribute (N= 0, E = 90, S = 180, W = 270) so that the coverage area has the correct real-world direction. See how altering these attributes effects the coverage areas in the video below.

 

Rules

The image below show the rules used to generate the viewing area:

  • Object: The Object rule uses the i-function to transform the CCTV point to an existing triangular Collada shape and then calls the Rotate rule.
  • Rotate: The rotate function uses the VerticalRotation and HorizontalRotation attributes to change the angle of the viewing area, before calling the Scale rule.
  • Scale: Finally the s function scales the viewing area according to the Width, VerticalHeight and ViewLength attributes. The rule then centres, colours and changes the transparency of the 3D viewing area.
pic3

ArcGIS Pro

The second part of the presentation showed how these CityEngine rules can be implemented in ArcGIS Pro for further analysis. Some of the analytical capabilities of ArcGIS Pro are listed below

  • Display the 3D view areas alongside existing 3D content (such as buildings) in ArcGIS Pro.

 

pro004
  • View feature information in a pop-up. This can include attributes, pictures, videos or HTML attributes such as an i-frame of the Google Street View.
pro001

 

  • Calculate the % of the area covered by the cameras. The image below shows the Before and After scenes after additional cameras (blue spheres) were added. We can analyse the coverage of the new additions and compare the calculated values to the previous scenario.
www.progif
By combining CityEngine with ArcGIS Pro we were not only able to realistically model reality, but also perform accurate 3D spatial analysis.