Developing.NET Applications for ArcGIS Engine Deep Dhanasekaran and J ohn Hauck Agenda Introduction to Engine Runtime Binding and Licensing Authoring Content for Engine Adding Functionality to Engine.
Developing.NET Applications for ArcGIS Engine Deep Dhanasekaran and J ohn Hauck Agenda Introduction to Engine Runtime Binding and Licensing Authoring Content for Engine Adding Functionality to Engine.
ArcGIS Engine Deep Dhanasekaran and J ohn Hauck Agenda Introduction to Engine Runtime Binding and Licensing Authoring Content for Engine Adding Functionality to Engine ArcGIS Engine and New Runtime for ArcGIS ArcGIS 10 A Complete System Easier More Powerful and Everywhere Cloud Enterprise Local Discover Create Manage Visualize Analyze Collaborate Mobile Desktop Web What is ArcGIS Engine? What is ArcGIS Engine? Product used to build custom standalone GIS solutions - ArcObjects and ArcGIS Engine Controls Leverage the power of ArcGIS Desktop and Server - Use Desktop to author content - Consume Maps, Models, Geodatabases, Layers, Layer Packages, Query Layers, Services, and more What is ArcGIS Engine? Engine Controls - Components that can be added to windows forms - Add mapping and supporting GIS functionality to your custom application - 8 Controls - Over 200 built in commands - Editing, Add Data, Open Document, Select, Find, and more What is needed to Develop .NET Engine Applications? Visual Studio 2008 sp1 VS Express 2008 Visual Studio 2010 .NET Framework 3.5 sp1 ArcGIS Requirements - ArcGIS Engine Runtime - ArcObjects .NET SDK - ArcGIS Engine Developer Kit License 10.0 What is needed to Develop .NET Engine Applications? Visual Studio 2010 Visual Studio 2010 Express .NET Framework 3.5 sp1 ArcGIS Requirements - ArcGIS Engine Runtime - ArcObjects SDK - ArcGIS Engine Developer Kit License 10.1 .NET Framework .NET Framework 3.5 is min requirement - Guaranteed to be installed with Engine or Desktop
.NET Framework 4.0 is fully supported - Need to handle distribution - Desktop developer Add-ins install without Admin requirements?
Do NOT embed iterop types
ArcGIS Engine Resources IDE Integration - Tools to make development easier and faster ArcObjects .NET SDK - Walkthroughs, samples, code snippets, Object Model Diagrams, API reference ArcGIS Desktop Help - GIS and data concepts Resource Centers, Blogs, and Forums - http://resources.arcgis.com - http://resourcesbeta.arcgis.com Support Center - Technical Articles, white papers, downloads ArcGIS Engine Controls and SDK Tools Runtime Binding and Licensing Runtime Binding At ArcGIS 10 each product has its own runtime - Products have separate install locations - Service pack products separately - Uninstall service packs ArcObjects must be pointed to a runtime to work - Before any other ArcObjects calls - Required for all standalone applications - Engine applications can bind to either Desktop or Engine Runtimes What is Runtime Binding? Runtime Binding Add reference to: ESRI.ArcGIS.Version
Bind using the RuntimeManager static class
How to bind to a runtime ESRI.ArcGIS.RuntimeManager.Bind(ESRI.ArcGIS.ProductCode.Engine) ; Runtime Binding Before any other ArcObjects calls - Preferably in your main method (C#) - Preferably in your application events StartUp method (VB)
Tip: - The Assembly is called ESRI.ArcGIS.Version - The Namespace is ESRI.ArcGIS - Bind method returns a Boolean that you can use to handle binding errors When to bind to a runtime? Runtime Binding RuntimeManager.BindLicense - Bind and License with one method RuntimeCollection - Identify Installed Runtimes RuntimeInfo - Identify the Path, Product, & Version ActiveRuntime - Currently bound runtime Additional Functionality and uses Licensing Engine applications must check out a license at runtime - Either Desktop or Engine License - Product Licenses are checked out for the life of the application - Extensions can be checked out and returned as needed At ArcGIS 10 Engine concurrent Engine licenses are available Licensing is not the same as binding - Binding specifies the runtime - Licensing specifies product functionality
Single Use Concurrent Use Binding and Licensing Binding and Deployment ArcGIS Engine is not required on the target machine - Engine applications work with either a Desktop or Engine Runtime
Can mix and match Licensing and runtime for flexible Engine applications - Leverage existing Desktop licenses and runtime on clients machine
Authoring Content for Engine Working with Packages Packages are a single file that contains a map or layer[s] and supporting data - Also can contain references to SDE data Easy to share - Single file ArcGIS 10.0 supports - Layer Packages (*.lpk) - Map Packages (*.mpk) ArcGIS 10.1 adds additional support for - Geoprocessing Packages (*.gpk) - Locator Packages (*.apk) - Tile Packages (*.tpk)
What are packages? Working with Packages At ArcGIS 10 sp1 - Programmatically consume packages IMapDocument.Open - Map Packages - Layer Packages - Web Maps ILayerFile.Open - Layer Packages Just point to the path of the package
Using Packages in Engine Working with Packages Using Packages in Engine Opening Layer Packages
Opening Map Packages Working with Packages Consume data on ArcGIS Online - Pass in a URL with the id as the filename http://www.arcgis.com/home/item.html?id=a50c645f83bb4f5dbdddd457df29d639
Using Online Content Working with Packages Add reference to: ESRI.ArcGIS.EngineCore
Unpack using IPackageFile.Unpack
Using IPackageFile at 10.1 Working with Packages Easily deploy maps, data, and functionality with your Engine solution - Simple deployment of a single file - Easy to update off cycle
Packages can be uploaded to ArcGIS Online - Once a package is downloaded it can be used locally - Use ArcGIS Online groups to manages access
Why use Packages in Engine? Adding Functionality to Engine Adding Functionality to Engine Leverage existing commands and tools included with the Engine SDK - On a ToolbarControl - Programmatically Build your own components - Such as Commands, Tools, Extensions, Custom Layers, etc - Specific to your Engine Application - Generic for all Engine applications - Work in both Engine and Desktop applications
Adding Functionality to Engine Using Geoprocessing in Engine Why use geoprocessing in Engine? - Why reinvent the wheel? - ArcGIS comes with hundreds of Geoprocessing tools - Developed by specialists in their field
Provides a framework to author Model and Script tools in ArcGIS Desktop - Consume these tools in Engine Using Geoprocessing in Engine Using system tools Using Geoprocessing in Engine Using custom tools Using Background Geoprocessing in Engine Framework to allow Geoprocessing tools to execute in a separate process Great alternative to multi-threaded applications Allows User Interface to remain responsive while processing What is Background Geoprocessing Background Geoprocessing Execute tool using ExecuteAsync method on the Geoprocessor object Wire in the events - ToolExcuted - Must handle to know when tools complete - ProgressChanged - MessagesCreated - ToolExecuting Run system tools, models, and script tools
What is Background Geoprocessing Using Geoprocessing in Engine Background Geoprocessing Tips: - Set OverwriteOutput = True - Tools require different license levels or extensions - Desktop help is your friend - Understand GP Messaging - Learn about the Result Object
Tips for working with the Geoprocessor Graphic Tracker GraphicTracker Simple API - Add, remove, update, and move graphics - Pass in a geometry and symbol - Works with Points, Lines, and Polygons Same API for MAP, Globe, and Dynmic Display - GraphicTracker manages the display All objects passed in ByValue - Objects managed by the GraphicTracker
What is the GraphicTracker? GraphicTracker Pause with IGraphicTracker.SuspendUpdate - For adding groups of items IGraphicTracker.Add method returns an integer to reference the graphic - Store this integer into a table for easy reference to use later - GraphicTracker ids may not be set sequential Use multiple GraphicTrackers - Separate GraphicTrackers for points, lines, and polygons
Tips when using the GraphicTracker GraphicTracker Demo GraphicTracker How many graphics does the GraphicTracker support? - Number of graphics - Complexity of the graphics and symbols - Complexity of your map - Update interval for moving graphics - Using labels
Performance Considerations New Runtime for ArcGIS New Runtime for ArcGIS New Architecture Easy to Deploy Solutions - Software, maps and data 64 bit Native Support Modern API - WPF and Java Reduced Memory and Disk Footprint New Runtime for ArcGIS Not a functional equivalent to Engine Not an ArcObjects replacement New APIs - Code will need to be re-written - Should leverage general patterns for data sharing and distribution Questions?
Please dont forget to fill out the surveys
Additional Tips 64 Bit Support ArcGIS Engine is a 32 bit application - Run as a 32 bit application on 64 bit OS - Set platform to x86 in Visual Studio Configuration Manager - Default is Any CPU At Version 10 Engine applications are Large Address Aware - On 64 Bit OS 32 Bit processes can take up to 4 GB of RAM (if available) When compiling VS 2010 applications on a x64 machine - Follow KB 37879 UAC and Engine Applications User Account Control (UAC) on Windows - UAC restricts access to certain parts of the system - Program Files directory - Parts of the registry Can be changed in the application Manifest - Enables application to be run as an administrator