Esri has fully embraced Python for ArcGIS and sees Python as the language that fulfills the needs of the user community. Previous versions of ArcGIS Desktop (ArcMap and ArcGIS Pro up to version 1.2) used Python 2. Since the ArcGIS Pro 1.3 release, ArcGIS Desktop has made use of Python 3, bringing with it some changes to the tools.
ArcPy is a Python site package that, when used with Python, provides a useful and productive way to perform geographic data analysis, data conversion, data management, and map automation. By default ArcPy is installed as part of ArcGIS Desktop.
The ArcGIS API is another Python library focused on Web GIS. It provides powerful tools that can be used for vector and raster analysis, geocoding, map making as well as managing an ArcGIS Enterprise system.
In a lot of cases, one might need to use both of these packages in the same script in order to automate a specific workflow.
The online help documentation has a lot of tips, tricks and other bits of information to help you get started, including methods of installing the API. The easiest way to install the ArcGIS API is through the ArcGIS Pro Python Package Manager, however, this needs internet connectivity in order to download the package from the internet. So, what happens when I am in a disconnected environment?
According to the online help, the API can still be installed to the Anaconda instance of Python if you have downloaded the package beforehand. The challenge here is that now one can use the ArcGIS API, but only through the Anaconda Python installation. However, the Anaconda version of Python does not have the ArcPy package installed.
In the same way, I can use the Python instance installed with ArcGIS Pro in order to utilise the ArcPy capabilities, but I will be unable to access the ArcGIS API functionality.
A quick workaround
The default install location for ArcGIS Pro Python is installed at:
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.
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.
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.
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.
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’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.
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.
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.
Comparing Real world and Analytical representations
Compare redevelopment scenarios
Add HTML embedded attributes
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.
For more information about creating a 360 VR experience in CityEngine go to the Esri CityEngine Help.
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.
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.
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:
Note that the Width and HorizontalRotation attributes derive their values by calling the getWidth and getRealDirection functions, respectively.
The getWidthfunction uses a Pythagorean algorithm to calculate the width (length of the opposite triangle side) by using the CameraAngle and ViewLength attributes.
The getRealDirectionfunction 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.
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.
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.
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.
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.
By combining CityEngine with ArcGIS Pro we were not only able to realistically model reality, but also perform accurate 3D spatial analysis.