ArcGIS for Developers. Kevin Deege Educational Services Washington DC

Similar documents
Developing Web Applications with ArcGIS Server. Kevin Deege Educational Services ESRI-Washington DC

Moving Desktop Applications to ArcGIS Server

Developers Road Map to ArcGIS Desktop and ArcGIS Engine

Extending ArcGIS Desktop Applications with.net

Goals Give you an overview of development with ArcGIS Server Give you a roadmap to other sessions Cover the breadth of the software Not a deep dive se

Introductions Who are we? Who are you? Development D l t experience i with ith ArcObjects A Obj t Development experience with ASP.NET Basic understand

ESRI-RedlandsRedlands

Developing with ArcGIS controls

Applications. ArcGIS Mobile. ArcGIS Desktop. ArcGIS Explorer. ArcGIS Engine. Web Application. Services. Data (Geodatabases) Desktop Developer Kit.

EUCOM/AFRICOM DEFENSE USER GROUP MEETING MARCH 2010 STUTTGART WELCOME!

Desktop. ArcGIS Server. ArcGIS

Strategies for Packaging and Deploying Your ArcGIS Solutions. Mita Shah Dara Hughes Brian Goldin

ESRI Software Evolution

Advanced Standard Basic Notes

What's New in ArcGIS 9.2 Service Packs

What's New in ArcGIS 9.2 Service Packs

ArcGIS for Server Michele Lundeen

Cross-product Development with ArcGIS. Allan Laframboise

Getting Started with ArcGIS for Server. Charmel Menzel and Ken Gorton

Answer the following general questions: 1. What happens when you right click on an icon on your desktop? When you left double click on an icon?

ICIT. Brian Hiller ESRI Account Manger. What s new in ArcGIS 10

This document outlines the changes in platform and functionality in the ArcGIS 10.0 and the upcoming ArcGIS 10.1 releases.

ArcGIS software architecture

Building Web Services with ArcGIS Server and Java. Eric Miller Antony Jayaprakash Jay Theodore Steven Citron-Pousty

New ArcGIS Server Application Developers? Experience in Programming with Java? Knowledge of Web Technologies? Experience with the Java WebADF?

ArcGIS. Server. Comprehensive Server-Based GIS

Security overview Setup and configuration Securing GIS Web services. Securing Web applications. Web ADF applications

Introduction to ArcGIS Server Architecture and Services. Amr Wahba

Developer scenarios. Throughout this book, you have been introduced to several programming concepts

Developing ArcGIS Server applications

Cartographic Techniques and Representations

Visualization with ArcGlobe. Brady Hoak

Introductions Who are we? ArcGIS Engine Java Dev team members. Who are you? ArcGIS Desktop developers? MapObjects Java developers? Current ArcGIS Engi

Tools ส าหร บพ ฒนา GIS อย างม ออาช พ (ArcGIS Engine: Engine for developer)

Finding Your Way with ArcGIS Network Analyst. Frederic Schettini Michael Rice

What s s Coming in ArcGIS 10 Desktop

Building Windows Applications with.net. Allan Laframboise Shelly Gill

Developing.NET Applications for ArcGIS Engine. Deep Dhanasekaran and John Hauck

Configuring and Customizing the ArcGIS Viewer for Silverlight. Katy Dalton

ArcGIS Pro: What s New in Editing and Data Management

ArcGIS Desktop The Road Ahead. Amadea Azerki

S s y t s em e s s Ar A ch c i h tec e t c ur u e e De D s e i s gn g, n C o C n o f n igu g r u at a ion o, n a n a d n D p e l p oy o m y en e t

What s New for Developers in ArcGIS Maura Daffern October 16

Introduction to ArcSDE 8. John Calkins

Schedule. 75 minute session. Cell phones and pagers. Please complete the session survey we take your feedback very seriously!

Architecting ArcGIS Server Solutions for Performance and Scalability

Deploying and Using ArcGIS Explorer for Petroleum Users Bern Szukalski ESRI Redlands

MIGRATING AV 3.X TO AV 8.X? Jaishankar J, Md Jafrullah, Arindam Basu

What s New in ArcGIS Server 10

ArcGIS Viewer for Microsoft Silverlight An Introduction

An Introduction to GIS for developers

Configuring, Tuning and Managing ArcGIS Server. Dan O Leary James Cardona Owen Evans

ArcGIS Viewer for Silverlight Advanced Topics

Enterprise Architecture Deployment Options. Mark Causley Sandy Milliken Sue Martin

Web Mapping Applications with ArcGIS. Bernie Szukalski Derek Law

ArcGIS software architecture

ESRI Mobile GIS Solutions Overview. Justin Fan

Integrating CAD Data with ArcGIS

Learning What s New in ArcGIS 10.1 for Server: Administration

Implementing Security for ArcGIS Server Java Solutions

ArcGIS for Developers: An Introduction. Moey Min Ken

ArcGIS Runtime SDK for WPF

Mobile Solutions. Christopher Grasteit CA/NV/HI Technical Marketing ESRI

Introduction to Geodatabase and Spatial Management in ArcGIS. Craig Gillgrass Esri

What is coming in. ArcGIS Server 10. Ismael Chivite ArcGIS Server Product Manager James Cardona Technical Marketing

ArcGIS Server Success Stories. Danny Krouk 2008 ESRI Regional User Group Sacramento, CA

Annotation/Labeling Workshop. Tim Rankin Pat Dolan

ArcGIS Pro. Terminology Guide

ArcGIS Runtime SDK for.net Getting Started. Jo Fraley

Esri UC2013. Technical Workshop. Type Presentation Name Here

Network Analyst extension. Oi Origin-Destination i (OD) Cost Matrix

Editing Versioned Geodatabases : An Introduction

ArcGIS and ArcGIS Pro Enterprise Deployment. An Esri Technical Paper July 2015

ArcGIS Enterprise Extending Services. Bill Major

Creating.NET Add-ins for ArcGIS for Desktop

Migrating to ArcGIS 10.2 for Server. Student Edition

Building Applications with the ArcGIS Runtime SDK for WPF

Building Desktop Applications with Java. Eric Bader Vishal Agarwal

ArcSDE 8.1 Questions and Answers

Getting Started with the ArcGIS Server JavaScript API

Subject: Migration Information for ArcIMS, ArcSDE, and ArcGIS Server Users

ArcGIS and ArcGIS Pro 1.3 Enterprise Deployment. An Esri Technical Paper August 2016

ArcGIS 4: Sharing Content on the Web STUDENT EDITION

ArcGIS Pro Terminology Guide

ArcGIS Pro Terminology Guide

Introduction to ArcGIS Server 10.1

Working with the ArcGIS Viewer for Flex Application Builder

Building and Deploying Enterprise ArcGIS Server Solutions (Best Practices) Wittaker Mathot Developer Summit

Enterprise GIS Architecture

LAB 1: Introduction to ArcGIS 8

ArcGIS 10.5, ArcGIS Pro 1.4, and ArcGIS Earth 1.4 Enterprise Deployment. An Esri Technical Paper March 2017

Tasks. actions and generate results. Encapsulate a workflow. UI for gathering input. Generate results

Building Powerful, Integrated Mobile Applications with ArcGIS Mobile

Author. Publish. Use

ArcGIS Runtime SDK for Java: A Beginner s Guide. Mark Baird JC Malott

Creating Great Labels Using Maplex

Working with Feature Layers. Russell Brennan Gary MacDougall

ArcGIS 9.2 Works as a Complete System

ArcSDE architecture and connections

Installing ArcIMS 9.1 on Windows

Transcription:

ArcGIS for Developers Kevin Deege Educational Services Washington DC

Introductions Who am I? Who are you? ESRI Product Development Experience? What development languages are you using? What types of applications are you developing?

Session Overview The ArcGIS System ArcGIS Developer Resources ArcGIS Desktop Application Framework Extend with custom components ArcGIS Engine Application Framework Visual and console applications Extend with custom components ArcGIS Server Web Application Developer Framework (ADF)

ArcGIS and ArcObjects ArcGIS is built on ArcObjects Software components ESRI uses ArcObjects to: develop the software and applications Developers use ArcObjects to: customize the software build custom applications ArcObjects is the core of ArcGIS

ArcGIS products share ArcObjects ArcGIS Desktop ArcGIS Engine ArcGIS Server

ArcObjects APIs ArcObjects components are C++ objects Accessible through different APIs COM,.NET, Java and C++ Native interface is COM

The ArcGIS System Supported ArcGIS Product APIs Desktop APIs (COM and.net) VBA (customize documents using MXDs and MXTs) Custom components (commands, tools, windows, extensions) Engine APIs (COM,.NET, Java, and C++) Build custom standalone applications Embed into existing applications Server APIs (.NET, Java) Build and deploy Web services and Web applications

ArcGIS Developer Resources ArcGIS Developer Kit Help resources and tools to build ArcGIS applications ArcObjects Help System Developer documentation Productivity tools and utilities Object Model diagrams Sample code

ESRI Developer Network (EDN) Access to the ArcGIS Development Platform The Developer Product ArcGIS Server (all Levels and Editions) ArcGIS Image Server ArcIMS ArcGIS Engine ArcGIS Desktop* Software Developers Kits.NET and JAVA Website for Developers http://edn.esri.com

The ArcGIS System Overview Desktop GIS Embedded GIS Server GIS ArcGIS Desktop ArcGIS Engine ArcGIS Server ArcEditor ArcView ArcInfo Desktop Developer Kit Engine Developer Kit Server Developer Kit.NET COM.NET C++ COM Java Java ADF.NET ADF COM ArcObjects ArcSDE Geodatabase File-based DBMS XML

ArcGIS Desktop Framework The Basics ArcGIS Desktop Applications ArcCatalog ArcMap ArcScene ArcGlobe Generic common framework Extensible and customizable Documents and templates (MXD, MXT, etc) Customization options Customize Dialog Visual Basic for Applications (VBA) Custom components (COM,.NET)

ArcGIS Desktop Framework Framework Components Visual Components (extending the user interface) 1) Commands and Tools 2) Menus and Toolbars 3) Embedded Windows Dockable Windows, Contents Views, etc. Non-visual Components 1) Application Extensions 2) Undo/Redo Operations 3) Command keyboard shortcuts

ArcGIS Desktop Framework Developing custom components Create a COM object and plug it into an application Steps 1.Create a COM/.NET project 2.Create a COM class 3.Reference the ArcGIS libraries 4.Implement an interface 5.Compile 6.Register in a component category ICommand esricontrolcommands mylibrary ControlsMap ZoominTool IUnknown IUnknown ICommand MyZoomClass

Useful development tools New Project templates Base classes Add Class wizard Code Snippets Quickly adding Imports/Using statements

.Net new project templates Available when new VS.Net project is started ArcGIS Project Wizard - select ArcGIS References

.Net base classes Inherit from commonly used interfaces Less implementation for users to code Public Public NotInheritable NotInheritable Class Class RouteFinderCmd RouteFinderCmd Inherits Inherits BaseCommand BaseCommand Public Public Sub Sub New() New() MyBase.New() MyBase.New() MyBase.m_caption MyBase.m_caption = "RouteWindow "RouteWindow VB" VB" MyBase.m_category MyBase.m_category = = "ArcObjects "ArcObjects.NET.NET Tools" Tools" MyBase.m_message MyBase.m_message = = "Toggles "Toggles view view for for the the RouteFinder RouteFinder window" window" MyBase.m_name MyBase.m_name = = "ArcObjects "ArcObjects.NET.NET Tools_RouteFinderCmd" Tools_RouteFinderCmd" MyBase.m_toolTip MyBase.m_toolTip = = "Displays "Displays or or hides hides Route Route Finder" Finder" MyBase.m_bitmap MyBase.m_bitmap = = New New System.Drawing.Bitmap System.Drawing.Bitmap (Me.GetType.Assembly.GetManifestResourceStream (Me.GetType.Assembly.GetManifestResourceStream ("ESRI.ArcObjects.AAON.RouteFinderVB.RouteFinder.bmp")) ("ESRI.ArcObjects.AAON.RouteFinderVB.RouteFinder.bmp")) End End Sub Sub Public Public Overrides Overrides Sub Sub OnCreate(ByVal OnCreate(ByVal hook hook As As Object) Object) End End Sub Sub Public Public Overrides Overrides Sub Sub OnClick() OnClick() End End Sub Sub

How does ArcMap know to use my class? ArcMap application start up cycle starts 1.Accesses the appropriate component category 1. Application Starts ESRI Component Categories ESRI Mx Commands ESRI Mx CommandBars

Application start up cycle ArcMap starts 1.Accesses the appropriate component category 2.Creates an internal objects that implements ICommand 1. Application Starts 2. Command Created ESRI Component Categories ICommandItem Cmd ESRI Mx Commands ESRI Mx CommandBars

Application start up cycle ArcMap starts 1.Accesses the appropriate component category 2.Creates an internal objects that implements ICommand 3.Creates your UI component (command, tool, toolbar, or menu) 1. Application Starts 2. Command 3. Creates UI Created Components Cmd ESRI Component Categories ICommandItem Cmd Tool ESRI Mx Commands ESRI Mx CommandBars Menu

Application start up cycle 1.Accesses the appropriate component category 2.Creates an internal objects that implements ICommand 3.Creates your UI component (command, tool, toolbar, or menu) 4.Adds the CommandItem to the CommandItem list 1. Application Starts 2. Command 3. Creates UI Created Components 4. ICommandItem Cmd Cmd ESRI Component Categories ICommandItem Cmd Tool ICommandItem Tool ESRI Mx Commands ESRI Mx CommandBars Menu ICommandItem Menu

Register in a component category Manual registration ArcMap Customize dialog box Add from file (.tlb tlb) CategoryManager.exe Developer tools Visual Studio Project > Add Component Category #Region #Region "ArcGIS "ArcGIS Component Component Category Category Registrar Registrar generated generated code" code" Private Private Shared Shared Sub Sub ArcGISCategoryRegistration(ByVal ArcGISCategoryRegistration(ByVal registertype registertype As As Type) Type) Dim Dim regkey regkey As As String String = = String.Format("HKEY_CLASSES_ROOT\CLSID\{{{0}}}", String.Format("HKEY_CLASSES_ROOT\CLSID\{{{0}}}", registertype.guid) registertype.guid) MxCommands.Register(regKey) MxCommands.Register(regKey) End End Sub Sub Private Private Shared Shared Sub Sub ArcGISCategoryUnregistration(ByVal ArcGISCategoryUnregistration(ByVal registertype registertype As As Type) Type) Dim Dim regkey regkey As As String String = = String.Format("HKEY_CLASSES_ROOT\CLSID\{{{0}}}", String.Format("HKEY_CLASSES_ROOT\CLSID\{{{0}}}", registertype.guid) registertype.guid) MxCommands.Unregister(regKey) MxCommands.Unregister(regKey) End End Sub Sub #End #End Region Region

Using component categories Folders in the registry Desktop Component Categories ESRI MxCommands ESRI MxCommandBars ESRI Mx Extensions View component categories with Categories.exe Engine Component Categories ESRI Controls Commands ESRI Controls Menus ESRI Controls Toolbars ESRI Controls Palettes Can register your components in these categories

The ArcGIS System Overview Desktop GIS Embedded GIS Server GIS ArcGIS Desktop ArcGIS Engine ArcGIS Server ArcEditor ArcView ArcInfo Desktop Developer Kit Engine Developer Kit Server Developer Kit.NET COM.NET C++ COM Java Java ADF.NET ADF COM ArcObjects ArcSDE Geodatabase File-based DBMS XML

ArcGIS Engine for Developers Overview Consist of two products: ArcGIS Engine Developer Kit For development use only ArcGIS Engine Runtime The platform for custom solutions Included with the ArcGIS Desktop Install Designed for easy: Development Testing Deployment

ArcGIS Engine for Developers Supported Extensions The available extensions for ArcGIS Engine Runtime are Spatial extension 3D extension Geodatabase Update extension Network extension Data Interoperability Schematics Maplex Tracking

ArcGIS Engine Applications GUI-based - visual Console Embedded applications Federal

Engine Controls MapControl PageLayoutControl ToolbarControl TOCControl LicenseControl SceneControl GlobeControl SymbologyControl

Building ArcGIS Engine applications 1. Start with the IDE integration tools 2. License the application 3. Add custom buttons and tools as necessary 4. Use code snippets where possible

Engine application licensing An Engine application runs with: Existing ArcGIS Desktop 9 license ArcGIS Engine Runtime license Application Developer has control over what license is required to run an application

ArcGIS Product Licensing Engine and Desktop are functionally similar Two levels of licensing Product Desktop Engine Runtime ArcGIS Desktop Engine standard Standard ArcView Standard Engine Engine GDB Update Extension ArcSDE Edit ArcEditor Geodatabase Update Spatial, 3D, Network,etc. Option 3DAnalyst 3D Extensions

Engine customizations A number of different development options Similar customizations to ArcGIS Desktop Tool Tool Toolbar Extension Menu Property Page TOC Buddy Control Read/Write Application Data

The ArcGIS System Overview Desktop GIS Embedded GIS Server GIS ArcGIS Desktop ArcGIS Engine ArcGIS Server ArcInfo ArcEditor ArcView Desktop Developer Kit Engine Developer Kit Server Developer Kit.NET COM.NET C++ COM Java Java ADF.NET ADF COM ArcObjects ArcSDE Geodatabase File-based DBMS XML

ArcGIS 9.2 ADF Highlights ArcGIS Server Manager Create Services, Manage servers Build Web Applications Supports multiple data sources ArcGIS Server, ArcIMS, ArcWeb,, WMS custom, etc. Multi-source controls Map image blending (browser, web tier) AJAX enabled (cache tile retrieval, map refresh) Seamless navigation Task Framework Object oriented, AJAX-enabled JavaScript library IDE Integration

ArcGIS Server Web Services Server Objects exposed as web services Types Map service Geocode service Globe service Geodata service Geoprocessing service More at 9.3 (Image Service) Capabilities Map/Data/Query Geocode/Reverse Geocode 3D Visualization Data Replication Geospatial Analysis Consumed by both Java and.net Federal

Server Development Guidelines: Use the Web ADF Create a Web Application that consumes GIS Services Resource Management Controls Map, Geocode, Geoprocessing Leverage AJAX Enabled ASP.Net or JSF Web Controls Extend with Custom Tools Work with GIS Web Services using the SOAP API Work with GIS Server Objects using either The SOAP API Finer Grained ArcObjects API API

Web ADF Development Paths Increasing complexity and functionality Developer Paths I II III IV Web Controls Generic Common Data Source API Data Source Implementations Data Source (GIS Server) Specific APIs

Creating Web ADF applications 1. Use ArcGIS Server Manager Web site builder Modify in Visual Studio 2005 2. Use a template Same template used by ArcGIS Server Manager Visual Studio, Eclipse 3. Create using Web controls

Web ADF controls Core Web controls Task Framework Web controls Task Web controls Toc ZoomLevel PageLayout Toolbar Navigation FloatingPanel OverviewMap ContextMenu ScaleBar Magnifier TreeViewPlus MapTips MapResourceManager Map EditorTask SearchAttributesTask QueryAttributesTask TaskResults TaskManager GeoprocessingResourceManager GeoprocessingTask ASP.NET Navigation Controls GeocodeResourceManager FindAddressTask FindPlaceTask

Common Data Source API Resource Managers Web ADF Controls Web ADF Controls IGISDataSource IGISResource IGISFunctionality Generic IMapResouce IGeocodeResouce IGeocodeFunctionality IMapFunctionality IMapTocFunctionality IQueryFunctionality ITileFunctionality IScalebarFunctionality IGeoprocessingResouce IGeoprocessingFunctionality Implementations ArcGIS Server ArcIMS

Web ADF Tasks Configurable from Manager Out of the box tasks Navigation Geoprocessing Search by attributes Editing Find direction Predefined query Find place Print Task (9.3) Custom tasks

ArcGIS Server APIs SOAP Available for services and server object extensions Designed for stateless interaction ArcObjects Available for Local ArcGIS Server services Designed for stateless and stateful interaction

The ArcGIS Server SOAP API Composed of a number of value and proxy objects Objects work with both Internet and local resources Value objects Geometry, symbology, query filters, spatial reference Proxy objects Emulate functionality provided by coarse - grained server objects (MapServer,GeocodeServer)

Value and Proxy objects? Value objects: native.net classes Use proxies to communicate with server end points Proxy objects perform two main tasks: Serializing Value objects to SOAP that is sent to resource Deserializing SOAP responses to Value objects for client Value object Color object Polygon object Web Application Web Service Proxy DCOM Proxy Web server Web Service end point SOM/SOC object RgbColor Polygon IRequestHandler Server object (end point)

Using a SOAP service Work with raw SOAP XML (rare) -or- Create and utilize Value objects and proxies Generated from a WSDL using a SOAP toolkit Value objects model server objects Proxies pass information from value objects to web service Client Application SOAP Toolkit Get WSDL Server Application WSDL Generate End Point Value object Value object Value object Proxy object object object object

Web ADF implementation ArcGIS Server MapResource types: MapResourceInternet Connect to a Web service endpoint MapResourceLocal Connect to the Server Object Manager Access ServerContext Use ArcObjects Each ArcGIS Server service type provides: Web Services Description Language (WSDL) <ArcGIS Install>\XMLSchema Web service proxy Distributed Component Object Model (DCOM) proxy Value objects are shared for different service types

Using ArcObjects COM utility objects Initialized when required by the GIS server May happen several times Not registered with a specific server object instance Created ad-hoc using the server context Server object extensions ArcGIS Server 9.2 Initialized once during server object startup Can benefit from caching logic Registered with specific server objects (Map Services) Configurable in ArcCatalog through custom property page

Where do you go from here? Instructor Led Training Desktop: Introduction to Programming ArcObjects (VBA,.NET, JAVA) Extending ArcGIS Desktop Applications Engine: Developing Applications with ArcGIS Engine (.NET, Java) ArcGIS Server Introduction to ArcGIS Server Developing Applications with ArcGIS Server (.NET, Java)