Amp up Your Apps with Maps

What can you do with Esri technology?

 

 

Data Visualization

3D

Routing 

Public Information

Traffic Alerts

Native 3D Interactive Analysis

Native Open Source Example Applications

Jupyter Notebook

Getting Started

ArcGIS Developer Resources

Sign up for a developer account:

Voucher Code: BITCAMP2019

developers.arcgis.com

developers.arcgis.com

 

Voucher Code: BITCAMP2019

BITCAMP2019

Building Web Apps

Intro to the ArcGIS API for JavaScript

  • Guide
  • API Reference
  • Many Samples

Hello World + Examples

Hands-on Lab

Why Map + MapView?

Class: esri/Map

  • Storing, managing 2D and 3D layers
  • One map can referenced by multiple views

Constructor & Properties

  • Consistent across the API

  • All properties of a class can be set within the constructor

  • Or, directly on the Class.

  • Demo

Why Map + MapView?

Class: esri/views/MapView

  • Displays a 2D view of a Map and its elements
  • Contains a Map instance and a <DIV>

MapView Properties

  • Includes center, extent, graphics…

Using the View Programmatically

  • MapView.extent

  • MapView.scale

  • MapView.zoom

  • MapView.viewpoint

  • MapView.goTo()

 

Using the View for Navigation

  • User navigation is enabled by default

 

Hands-on Lab

Handling View Events

Promises

someAsyncFunction().then(callback, errback);

//And we use .when() in the JS API:

someAsyncFunction().when(callback, errback);

Promises

  • Many methods in the API return promises

  • Some classes return a promise

  • Similar to an event listener…but, maintains state

  • Can be called well after initialization

Promises when

Promises Chaining

Autocasting

Long-hand approach

Autocasting

Watching Properties

  • watch (property, callback)

Widgets

Popup Widget

  • All Views have a default group

  • Default popup can display generic content

Directions Widget

  • Wraps pre-built search and routing functionality

Hands-on Lab

Hands-on Lab

Add FeatureLayer to WebMap

Hands-on Lab

Renderers

Three Types of Renderers

Arcade

Python

Why Python?

  • Popularity
  • Productivity
  • Interoperability
  • Solves the “two-language” problem
  • Scientific Python ecosystem
  • Community

What is the ArcGIS API for Python

ArcGIS

Intro to the ArcGIS API for Python

  • Guide
  • API Reference
  • Many Samples

Quick Overview of the ArcGIS API for Python

  • A Pythonic GIS API
    • Corresponds to best practices
    • Uses standard Python constructs
    • Data structures with clean,                              readable idioms
  • Easy for a Python programmer to use ArcGIS
  • Easy for an ArcGIS user to script and              automate their GIS

ArcGIS API for Python vs ArcPy

  • ArcGIS API for Python
    • Script against a portal
    • ArcGIS Online or ArcGIS Enterprise
    • Python 3.x
  • Analysis, Portal Admin, Content Creation, Big Data Analysis
  • ArcPy
    • ArcGIS Desktop
      • ArcMap - Python 2.x
      • ArcGIS Pro - 3.x
  • Mostly Geoprocessing
  • Some map automation

ArcGIS + Jupyter = 

Four Different Personas

  • Analysts and Data Scientists

  • Power Users/Developers

  • Content Publishers

  • Org Adminstrators

Introducing the GIS Module 

Your gateway to scripting a Web GIS

Install the ArcGIS API for Python

How do I get the API

  • By using Conda
  • What is Conda?

You can install the Python API with or without ArcGIS Pro

If you have Pro on your machine, Conda and Jupyter Notebook is already install for you

Install using ArcGIS Pro

Python Package Manager

If you don't have ArcGIS Pro

Install ArcGIS Package

  • Type the following into the python command prompt or command prompt
    • -conda install -c esri arcgis

Upgrade from Older  ArcGIS Package

  • Type the following into the python command prompt or command prompt
    • -conda upgrade -c esri arcgis

Install the API on a machine without internet access

Start Jupyter Notebook

  • Type the following into the python command prompt
    • jupyter notebook

Test the Install

from arcgis.gis import GIS
my_gis = GIS()
my_gis.map()

Hands-on Lab

Hands-on Lab

Working with the Map

Features

  • Feature individual point
  • FeatureSet a collection of Feature objects
  • FeatureLayer a published service called feature service
  • FeatureLayerCollection collection of layers

Hands-on Lab

Hands-on Lab

Geocoding

arcgis.geocoding module

Geocoding

Points of Interest

  • Cultural or geographic landmarks
  • Businesses by name or category
  • Administrative divisions

Batch Geocoding

Geocode an entire list

Reverse Geocoding

Determines address at a particular x/y location

Hands-on Lab

Network Analysis

arcgis.network.analysis module

Commercial grade, traffic aware routing and directions for multiple travel modes

Network Analysis - Service Areas

Hands-on Lab

Building Native Apps

ArcGIS Runtime Overview

  • Esri’s developer product for native app development
    • Incorporate ArcGIS functionality into mobile and desktop applications
    • Web service client and local (offline) capabilities
    • SDKs for .NET (including Xamarin), Android, iOS, Java, Qt, and macOS

         

 

ArcGIS Runtime Overview

  • High-performance 2D and 3D mapping
  • Integration with Portal, ArcGIS Online, and ArcGIS Server
    • Load, edit, and save web maps
    • Use map, image, and feature services
    • Geoprocessing for complex custom analyses
  • Work offline with local data and functionality
    • Read local data (.mmpk, .tpk, etc)
    • Geocode and Routing
    • Geometric operations (buffer, etc)
    • Take web maps offline
    • Feature service editing and sync

         

 

ArcGIS Runtime Overview

Architecture

  • ArcGIS Runtime APIs – public APIs for multiple platforms
    • Same capabilities across all APIs
    • API surface is tailored to the relevant dev stack

The ArcGIS Runtime SDKs

ArcGIS Runtime SDKs for .NET

What is it?

  • Esri’s developer product for cross-platform .NET app development
    • Supports C#, Visual Basic (WPF and UWP only), and XAML
  • Visual Studio Integration
    • Project templates
    • Designer preview
    • Intellisense
    • Local NuGet repository
    • NuGet package available
  • Build cross-platforms applications for Windows, iOS and Android
    • Supports WPF, UWP, Xamarin iOS, Xamarin Android, and Xamarin Forms

ArcGIS Runtime SDKs for iOS/macOS

What is it?

  • Esri’s developer products for iOS/macOS app development
    • Support Swift and Objective-C
  • ​Xcode integration
    • Documentation
    • Autocomplete
    • Playgrounds Support
  • CocoaPods Available

ArcGIS Runtime SDK for Android

What is it?

  • Esri’s developer product for Android app development
    • Supports Java and Kotlin
  • Access via Esri’s Bintray repository
    • Install and use with Gradle tools
    • Android Studio
    • IntelliJ

ArcGIS Runtime SDK for Java

What is it?

 

  • Esri’s developer product for JavaFX client applications
    • Supports Java and Kotlin
  • Access via Esri’s Bintray repository
    • Standard dependency management with Gradle or Maven
    • Install and use with ArcGIS Gradle plugin
    • Eclipse
    • IntelliJ
    • Netbeans
    • Java IDE that supports Java 8 or 9
  • Can use Gluon’s Scene Builder for UI development

ArcGIS Runtime SDK for Qt

What is it?

 

  • Esri’s developer product for Qt client applications
    • Support C++, QML
  • Full integration with Qt Creator
  • Build cross-platform apps for Windows, Linux, Android, iOS and macOS
  • Used by AppStudio (esri.com/appstudio)

Coding 101

Best Practices

Offline vs Online

Performance vs Availability

  • Offline Data and Services
    • Sideload data/geocoders/network models for highly interactive performance
    • No round-trip to a server
    • Consider hybrid online + offline if appropriate
  • Consider Network Availability & Data Qualities:
    • Do you need to edit? If not, perhaps side-loading is an option.
    • Will many people get the same data? Maybe generate once, sideload often.
    • Lots of data changing often? Try to sync when on WiFi.
    • How fast is the network in the field?
    • How consistent is the network in the field? Patchy?

Perfomance

Work on the device

  • GeometryEngine
    • Manipulate geometry on the device
    • Buffer, Union, Difference etc.
    • Projection
  • Offline Data
    • Data on the device for highly interactive performance
    • No round-trip to a server
  • Graphics Overlays
    • Dynamic Mode (smaller number of moving graphics – good interactive performance)
    • Static Mode (large number of graphics – less interactive performance)

ArcGIS Runtime and you

ArcGIS Runtime SDKs

Where to start?

DevLabs

 

  • Step-by-step labs
  • Less than 20 minutes
  • No experience needed
  • Learn in any order

 

Example Apps

 

  • ArcGIS Runtime in real apps

  • Best practices

  • Kick-start your new app

  • Take what you want

  • Open Source

Example Apps

Example Apps

Adopting the ArcGIS Runtime in Your Apps

How to add it to my existing app?

  • Guide Docs
    • Step-by-step instructions for adding the Runtime SDK
    • Manually add
    • Package Managers
  • Samples at github.com/esri (search for arcgis-runtime-samples)
    • Focused, standalone code snippets
    • Functionality-focused
  • DevLabs

Adopting the ArcGIS Runtime in Your Apps

Starting a new app?

  • IDE Templates where possible (e.g. .NET, Xamarin)
  • Guide Docs
    • Step-by-step instructions for adding the Runtime SDK
    • Manually add
    • Package Managers
  • Example Apps
  • DevLabs
  • Samples

Getting Data

Living Atlas

Open Data

Amp up Your Apps with Maps

By dmart

Amp up Your Apps with Maps

Workshop for hackathons

  • 1,933