arcgis for developers - esri€¦ · arcgis for developers: an introduction jim barry @jimbarry...
TRANSCRIPT
Technical Workshops |
Esri International User Conference San Diego, California
ArcGIS for Developers: An Introduction Jim Barry @jimbarry
Andy Gup @agup
July 24, 2012
Goals
• Cover all of ArcGIS, high pass, developer's angle • What is there? • What can I do with it? • What resources are available to get the most from it all? • Where is the community?
• How do I get started?
Who are you?
• Are you a GIS pro? - new to dev?
• Are you an experienced developer - new to ArcGIS?
• Are you a Project Lead? - what’s available?
Agenda
• ArcGIS as a developer's toolbox - Desktop applications
- ArcGIS Explorer Desktop, ArcGIS Desktop, ArcGIS Engine
- Geoprocessing - Geodatabase - Client-Server applications
- ArcGIS Server - ArcGIS Online - Web APIs - ArcGIS Runtime for Devices
• Developer Resources
• Online • Desktop • Server • Mobile
Cloud
Server Mobile
Desktop
Web
ArcGIS Explorer Desktop
ArcGIS Explorer Desktop
Free to use, develop against, and deploy For Developers 1. Application Configuration
- Customize UI and functions, no code necessary
2. ArcGIS Explorer SDK - Create Add-ins with Visual Studio
• Portable files, easy to share
ArcGIS Explorer Desktop Application Configuration
ArcGIS Explorer Desktop SDK
ArcGIS Explorer Desktop Creating Add-Ins
Templates
www.arcgis.com
upload, download share, groups
tools, maps, apps
Demo Theater
Configuring and Customizing ArcGIS Explorer Desktop
• Tuesday @ 12:00 noon • Thursday @ 11:00am
• SDK Demo Theater
ArcGIS Desktop
ArcGIS Desktop
The professional GIS workstation For Developers 1. Customization of UI and functionality 2. ArcObjects SDK
- .NET, VC++
3. Add-ins - .NET, Java (Eclipse)
4. Script Tools - Python
ArcGIS Desktop Customizing
ArcGIS Desktop ArcObjects
ArcGIS Desktop Creating add-ins
• Create or share - *.esriAddin • Copy into well-known location - local or network • Install wizard • Use
• Key advantages over classic ArcObjects dev pattern
Templates
ArcGIS Desktop Creating add-ins
ArcGIS Desktop Creating add-ins
Assemblies/JARs
.esriAddIn File (zipped folder)
.esriAddIn
XML Metadata Resources • Buttons • Tools • ComboBoxes • Multi-items • Menus • Content Menus • Toolbars • Tool Palettes • Dockable Windows • Application Extensions • Editor Extensions
ArcGIS Desktop Creating add-ins
ArcGIS Desktop Creating add-ins
Finding, Using Add-ins
• www.arcgis.com
ArcGIS Engine
ArcGIS Engine
Embeddable and Extensible GIS Components For Developers • ArcObjects SDK
- .NET, Java, VC++, Cross-platform C++ - 1000s of classes, interfaces, methods - 10+ controls
• Compiled and deployed stand-alone applications
Geoprocessing
Interrogating, manipulating, managing map data For Developers Interactive scripting window Use Modelbuilder then export as a script
Portable files, easy to share • .py, .gpk, .esriAddIn
Geodatabase
• Components • ArcObjects • File Geodatabase API
Geodatabase
• Components
Geodatabase
• ArcObjects
Geodatabase
• File Geodatabase API (v 1.2)
- C++ - .NET wrapper - Mac
Agenda
• ArcGIS as a developer's toolbox - Desktop applications
- ArcGIS Explorer Desktop, ArcGIS Desktop, ArcGIS Engine
- Geoprocessing - Geodatabase - Client-Server applications
- ArcGIS Server - ArcGIS Online - Web APIs - ArcGIS Runtime for Devices
• Developer Resources
ArcGIS Server – An end-to-end GIS system
Developer architecture Services APIs Demos
ArcGIS Server – Works with many different clients
Flex/Flash
Google Earth
ArcGIS Online
PHP
iPhone
Open Street Map
Android
Microsoft Silverlight
Windows Phone
Ruby
Python .Net
Java
OpenLayers
ArcGIS Runtime SDKs
ArcGIS Explorer
JavaScript
ArcGIS Desktop
ArcGIS Web APIs Including…
http://www.esri.com/services/disaster-response/floods/latest-news-map.html
http://gis.greeleygov.com/origin/propinfo.html
http://edn1.esri.com/antarctica
http://maps.bouldercounty.org/boco/emapping/
ArcGIS Server - Architecture
Client APIs
Web Services
GIS Services
Data
Map Services
Geoprocessor Services
Query Services
Filesystems
Geodatabases
REST
SOAP
OGC
Runtime SDKS
JavaScript
Flex
Silverlight
HTTP
What is a GIS Service?
Edit
Use
Display
Map Service Endpoint
ArcGIS Server Map Service
ArcGIS Server – GIS Services
Mapping
Feature
Geocode
Geoprocessing
Globe
Geodata
Geometry
Image
Network Analysis
Search
ArcGIS Server
OGC
KML
How do I get my data into an app? Web Services!
REST
SOAP
OGC
*Image from Microsoft Clip Art
Example ArcGIS REST API Architecture
JSON, XML etc
Geodatabase
ArcGIS Desktop
lyr, msd, mxd, etc.
ArcGIS Server
ArcGIS Web API
Web Server
REST
Your App
Example REST API usage
http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer/export?bbox=-127.8,15.4,-63.5,60.5&f=pjson
URL-based requests (GET or POST) Format works with all client-side application languages
ArcGIS REST Services Directory
http://server.arcgisonline.com/ArcGIS/rest/services/World_Topo_Map/MapServer
ArcGIS Online
• Viewer • Templates • ArcGIS Portal API
ArcGIS.com Map Viewer
Configurable Templates
• ArcGIS.com Configurable Templates • Create maps using online tools • Download template to your web server • Config files • Modify code directly
Basic Template Configuration – index.html
function init() { //get the localization strings i18n = dojo.i18n.getLocalization("esriTemplate", "template"); console.log(i18n); configOptions = { //The ID for the map from ArcGIS.com webmap: "dbd1c6d52f4e447f8c01d14a691a70fe",
ArcGIS Portal API
http://www.arcgis.com/apidocs/rest/
In the browser: ArcGIS Web APIs
JavaScript
Apache Flex
Microsoft Silverlight
JavaScript Compact (mobile)
ArcGIS Web API capabilities include……
Editing
FeatureLayers Time-awareness
Query
Geoprocessing
Graphics
GraphicsLayer
Routing
Map
Extents
Symbols
Geometries
Why use the Web APIs?
Let’s you focus on rapid application development!
map.addLayer(basemap)
vs.
http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Specialty/ESRI_StateCityHighway_USA/MapServer/export?bbox=-127.8,15.4,-63.5,60.5&f=pjson
Why use the Web APIs?
<div id="mapDiv" style="width:800px; height:600px; border:1px solid #000;"> </div>
vs.
dojo.io.script.jsonp_dojoIoScript2._jsonpCallback({"serviceDescription":"","mapName":"Layers","description":"","copyrightText":"","layers":[{"id":0,"name":"arcgis2.DBO.custinfo","parentLayerId":-1,"defaultVisibility":true,"subLayerIds":null},{"id":1,"name":"arcgis2.DBO.DenverCO_CensusTracts","parentLayerId":-1,"defaultVisibility":true,"subLayerIds":null}],"tables":[],"spatialReference":{"wkid":4326},"singleFusedMapCache":false,"initialExtent":{"xmin":-105.170917848995,"ymin":39.5124265894988,"xmax":-104.556422044239,"ymax":40.0144928617289,"spatialReference":{"wkid":4326}},"fullExtent":{"xmin":-105.13659819355,"ymin":39.55113300385,"xmax":-104.57486577945,"ymax":39.9313831191501,"spatialReference":{"wkid":4326}},"units":"esriDecimalDegrees","supportedImageFormatTypes":"PNG24,PNG,JPG,DIB,TIFF,EMF,PS,PDF,GIF,SVG,SVGZ,AI,BMP","documentInfo":{"Title":"","Author":"","Comments":"","Subject":"","Category":"","Keywords":"","Credits":""},"capabilities":"Map,Query,Data"});
API “Syntax”
queryTask.execute(query,queryTaskComplete,queryTaskError);
JavaScript (.js)
queryTask.ExecuteCompleted += QueryTask_ExecuteCompleted;
Silverlight (C#.NET)
queryTask.execute(query, new AsyncResponder(onResult, onFault));
Flex (ActionScript)
API Patterns
var queryTask = new esri.tasks.QueryTask(“http://someserver/arcgis/...”);
dojo.connect(queryTask, "onComplete", doSomething);
query = new esri.tasks.Query();
query.spatialRelationship = esri.tasks.Query.SPATIAL_REL_INTERSECTS;
queryTask.execute(query);
function doSomething(event){
};…
JavaScript (.js) Example
1
2
3
4
5
Demo of Web APIs
Framework for Integrating Multiple Services
ArcGIS Online
ArcGIS Server
Want an out-of-the-box we solution?
ArcGIS.com Web Map Viewer ArcGIS Viewer for Flex (Source on Github) ArcGIS Viewer for Flex Application Builder ArcGIS API for Silverlight Toolkit (Source on Github) ArcGIS API for Silverlight Template Gallery
Devices
• Intro - Trends - Overview
• ArcGIS Runtime for Smartphones and Tablets - iOS - Windows Phone - Android
• ArcGIS Runtime for Desktop Devices - WPF - Java
• Wrap up - Q and A
Apps and SDKs
Windows Mobile
Windows/
iOS Android
Runtime SDK • .NET CF
Runtime SDKs • WPF, Java
Linux
Runtime SDK • Java
Runtime SDK • Objective C
Runtime SDK • Java
Windows Phone 7
Runtime SDK • Silverlight
Apps • .ArcGIS
Apps • ArcGIS • ArcGIS Explorer
Apps • ArcGIS
Apps • ArcGIS for iOS
Apps • ArcGIS
Mobile Trends = Greater access to GIS
Source: The Nielson Company
Feature Phones
Smartphones
U.S. Smartphone Market Penetration
%
ArcGIS Runtime SDKs iOS, Android, Windows Phone
• Native developer toolkit
• Build focused mapping applications
• Embed ArcGIS in to existing apps
• Leverage the ArcGIS system
• Designed for touch-screen phones
• One handed use
XCode
Eclipse
Visual Studio
ArcGIS API for iOS
Native Objective C/Cocoa API
REST–Based
Requires Mac
ArcGIS for iOS on iTunes
ArcGIS for Windows Phone
C#/Silverlight API
Visual Studio 2010 Integration
REST-based
ArcGIS for WindowsPhone on Marketplace
ArcGIS API for Android
Native Java API
Eclipse IDE - Windows, Mac OS X (Intel), Linux
Runs on many devices
REST-based
ArcGIS for Android on Google Play
ArcGIS on Rugged Devices Windows and Windows Mobile Devices
• Designed for harsh field conditions
• One handed/vehicle-mounted use
• Occasionally connected workflows
• High accuracy data collection - GPS integration - Laser integration
• Replace Paper Surveys - Intelligent forms - Barcode integration
Water Facilities Mapping
Asset Maintenance/Inspection First Responders
Land Management
ArcGIS Mobile SDK
.NET API (C#, VB.NET, WPF) Windows Mobile (notebooks/tablets)
Pocket PC/.NET Compact Framework Connected or Disconnected
ArcPad
.NET and XML based
Windows Mobile
High accuracy
Field data collection
Disconnected Use
Special considerations for mobile!
Various Screens
Touch-based workflows
Multiple form factors Battery life
Inconsistent internet
Slower connections
Slower CPU
*Image from Microsoft Clip Art
Different OS Versions
Memory constraints
Apps and SDKs
Windows Mobile
Windows/
iOS Android
Runtime SDK • .NET CF
Runtime SDKs • WPF, Java
Linux
Runtime SDK • Java
Runtime SDK • Objective C
Runtime SDK • Java
Windows Phone 7
Runtime SDK • Silverlight
Apps • .ArcGIS
Apps • ArcGIS • ArcGIS Explorer
Apps • ArcGIS
Apps • ArcGIS for iOS
Apps • ArcGIS
resources.arcgis.com
blogs.esri.com/esri/arcgis
forums.arcgis.com
video.arcgis.com
ideas.arcgis.com
www.arcgis.com
Esri Developer Network (EDN)
• Annual Subscription - Standard or Advanced
• Developer license • ArcGIS platform
- products, extensions - desktop, server, web, mobile - full functionality - it's everything
• Design, prototype, test, build • Defer production costs until deployment
edn.esri.com
training.arcgis.com
support.esri.com
esri.com/DevSummit
esri.com/devsummiteurope
esri.com/devmeetup
twitter.com/ESRIUC #esriuc
facebook.com/ESRIDeveloperNetwork
esriurl.com/LinkedInEDN
#devsummit
wiki.GIS.com
stackoverflow.com
gis.stackexchange.com
Welcome to the Esri User Conference!
• Developer Track - 30 sessions, meetings
• Product Islands - Meet the engineers and developers - Demo Theaters
• Tech Support Island - Discuss good ideas, solve tough problems
New Developer Activities at the UC
• Hackers’ Sandbox - Tuesday – Thursday 8:30am – 12pm (Hall F)
• UX Design Summit - Tuesday 1:00pm – 5pm (Ballroom 20)
• Speed Geeking - Tuesday 6:30pm – 8:30pm (Ballroom 20)
• Dev Meet Up - Wednesday 5:30pm – 9pm - Registration Required
sold out, find one near you: esri.com/devmeetup
How to get started with Microsoft Visual Studio
• Express editions are free - VB, C#, substantial capabilities - online training, beginner's books
• MS site - tutorials, videos, sample code
Visual Studio Community
vbforums.com xtremevbtalk.com
http://www.python.org/about/gettingstarted/
Getting Started With Adobe Flex
IDE: Flash Builder ArcGIS API for Flex: resources.arcgis.com Flash Player (debug): Flash Player Support Center Online Resources: help.adobe.com Training: Flex.org, Adobe Video Training Community: actionscript.org
Getting Started with JavaScript
IDE (free!): Notepad++, Aptana ArcGIS API for JavaScript: resources.arcgis.com Online Resources : dojotoolkit.org Tutorials: w3schools.com Community: dojotoolkit.org/community
Getting Started with Silverlight (Web)
IDE: Visual Studio Express (free!) ArcGIS API for Microsoft Silverlight: help.arcgis.com Silverlight SDK: silverlight.net/getting started Online Resources : MSDN.microsoft.com Community: silverlight.net/community
Getting Started with Android
IDE: Eclipse ArcGIS API for Android: resources.arcigs.com Online Resources: developer.android.com Community: developer.android.com Misc: Mobile device for testing!
Getting Started with iOS
IDE, SDK: Xcode 4 + iOS 6 SDK ArcGIS API for iOS: resources.arcgis.com Online Resources: iOS Developer Library Community: developer.apple.com Misc: Mobile device for testing
Getting Started with Windows Phone
IDE: Visual Studio Express (free!) ArcGIS for Windows Phone: resources.arcgis.com Online Resources/Community: App Hub Misc: Mobile device for testing
Open Source Initiatives –
Session Survey
• esri.com/ucsessionsurveys • Session ID: Tue 625; Wed 747