Easy ArcObjects Turbocharging

Similar documents
EFFECTIVE GEODATABASE PROGRAMMING

Effective Geodatabase Programming. Colin Zwicker Erik Hoel

Topology in the Geodatabase: An Introduction

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

Effective Geodatabase Programming. Colin Zwicker Erik Hoel

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

Developers Road Map to ArcGIS Desktop and ArcGIS Engine

Design a Geodatabase. Rasu Muthurakku, Enterprise Solutions Architect / Consultant

Insight into the Utility Network. Erik Hoel and Tom Brown March 13, 2018

Topology in the Geodatabase an Introduction. Erik Hoel Doug Morgenthaler

ArcGIS for Server Michele Lundeen

What s New for Developers in ArcGIS Maura Daffern October 16

Streamlining Editing Workflows. Amber Bethell

ArcGIS Pro SDK for.net: An Overview of the Geodatabase API. Colin Zwicker Ling Zhang Nghiep Quang

Maintain Geodatabase

Integrating CAD Data with ArcGIS

Using Python with ArcGIS

Best Practices for Designing Effective Map Services

Moving Desktop Applications to ArcGIS Server

Create a personal geodatabase

The Road to Runtime. Mark Cederholm UniSource Energy Services Flagstaff, Arizona

Integration Services. Creating an ETL Solution with SSIS. Module Overview. Introduction to ETL with SSIS Implementing Data Flow

Learning What s New in ArcGIS 10.1 for Server: Administration

Effective Geodatabase Programming. Colin Zwicker Erik Hoel

Accessing and Administering your Enterprise Geodatabase through SQL and Python

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

ArcGIS 10.1 for Desktop Artie Robinson

What s s Coming in ArcGIS 10 Desktop

Web Editing in ArcGIS for Server. Gary MacDougall Ismael Chivite

Working with Feature Layers. Russell Brennan Gary MacDougall

Utility Network Management in ArcGIS: Migrating Your Data to the Utility Network. John Alsup & John Long

ModelBuilder: An Introduction. Kevin Armstrong

Automating Geodatabase Creation with Geoprocessing

Administering Your Microsoft SQL Server Geodatabase

Advanced Standard Basic Notes

ESRI Mobile GIS Solutions Overview. Justin Fan

Building tools with Python

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

Esri Best Practices: Implementing an Enterprise Geodatabase

Annotation/Labeling Workshop. Tim Rankin Pat Dolan

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

Developer's Guide to Geodata Access in ArcGIS. Craig Gillgrass Brent Pierce Colin Zwicker Russell Brennan Gary MacDougall

Building Java Apps with ArcGIS Runtime SDK

Programming and Design Patterns for the ArcGIS Mobile SDK

ESRI Technology Update. Joe Holubar Larry Young

Building Geoprocessing Tools with Python: Beyond the Basics. Dave Wynne

hereby recognizes that Timotej Verbovsek has successfully completed the web course 3D Analysis of Surfaces and Features Using ArcGIS 10

Best Practices for Designing Effective Map Services

ArcGIS Desktop: Introduction to Geoprocessing with ModelBuilder Kevin Armstrong ESRI

LAB 1: Introduction to ArcGIS 8

Apache Ignite - Using a Memory Grid for Heterogeneous Computation Frameworks A Use Case Guided Explanation. Chris Herrera Hashmap

ArcGIS Enterprise Extending Services. Bill Major

Python: Getting Started. Ben

Using Python with ArcGIS

Developing Add-Ins for ArcGIS Pro (.NET) Toronto Esri Canada UC Presented by: Gandhar Wazalwar & Kern Ranjitsingh October 11, 2018

Migration With Duda.

Performance Tuning for the BI Professional. Jonathan Stewart

Troubleshooting Performance Issues with Enterprise Geodatabases. Ben Lin, Nana Dei, Jim McAbee

Leveraging Collector & UtiliSync to Manage Utilities Better

OLAP Introduction and Overview

Extending ArcGIS for Server. Jon Satchwell, Esri Switzerland Cédric Despierre Corporon, Esri France

ArcGIS Runtime: Maximizing Performance of Your Apps. Will Jarvis and Ralf Gottschalk

MongoDB Web Architecture

Active Server Pages Architecture

Introduction to ArcGIS Server Architecture and Services. Amr Wahba

Project 1, 467. (Note: This is not a graphics class. It is ok if your rendering has some flaws, like those gaps in the teapot image above ;-)

Best Practices with ArcSDE Technology. Katja Krivoruchko CA/NV/HI Technical Marketing ESRI

What s New in ArcGIS Server 10

Rsyslog: going up from 40K messages per second to 250K. Rainer Gerhards

Esri Geodatabase (File Geodatabase API) Reader/Writer

Oracle APEX 18.1 New Features

Store and Manage Data in a DBMS With ArcView Database Access. Presented By: Andrew Arana & Canserina Kurnia

ArcGIS Runtime SDK for WPF

ArcGIS for Developers: An Introduction. Moey Min Ken

Leveraging SAP HANA and ArcGIS. Melissa Jarman Eugene Yang

Designing and Using Basemaps. Jennifer Hughey

ArcGIS Enterprise: An Introduction. Philip Heede

Administering Your Oracle Geodatabase. Jim McAbee Mandar Purohit

Leveraging OGC Services in ArcGIS Server. Satish Sankaran, Esri Yingqi Tang, Esri

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

MS Access Part 1 (One Day Workshop) Khader Shaik

Visual Studio Schema Compare Does Not Support The Specified Database

Esri Production Mapping An Introduction

Planning Enterprise Geodatabase Solutions

ArcGIS Pro Editing. Jennifer Cadkin & Phil Sanchez

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

ArcGIS Runtime: Styling Maps. Ralf Gottschalk, Daniel Lee, Lucas Danzinger

Learning from Bad Examples. CSCI 5828: Foundations of Software Engineering Lecture 25 11/18/2014

EF6 - Version: 1. Entity Framework 6

Digitising a map in arcgis desktop 10.3

ArcMap Editing Tips and Tricks. Sean Jones

ArcGIS Desktop The Road Ahead. Amadea Azerki

Leveraging Relationship Classes in the Geodatabase

Esri s ArcGIS Enterprise. Today s Topics. ArcGIS Enterprise. IT4GIS Keith T. Weber, GISP GIS Director ISU GIS Training and Research Center

FME / ArcGIS 9 Data Interoperability Extension

Implementing ArcGIS Mobile Applications for the Enterprise

Tables. Tables. Physical Organization: SQL Server Partitions

Implementing and Optimizing ArcGIS Server Map Caches

Release notes for version 3.7.2

Physical Organization: SQL Server 2005

Transcription:

Easy ArcObjects Turbocharging Brian Goldin Erik Hoel

Purpose of this talk How to get things done quick while your boss thinks it s hard agonizing work Save time Be efficient Write less code Separate the model builders from the coders

IDEs

Visual Studio IDE Visual Studio IDE integration makes life easy Implements that boiler plate code for you Licensing Implement common interfaces Base classes Adding references over and over again Preconfigured templates All applications start in the same place use this as your foundation Prototype code not typing boiler plate code If you like to hack things the framework is very extensible check it out

JAVA IDE Lots of templates Very slick help system Code snippets Lots of wizards

Configure your app with ArcMap Author maps its fun and easy Use layer files Create a FeatureLayer or use a layer file Some layers can be excessively complicated Work with symbols Roll your own use one that you ve configured

Geoprocessing

Geoprocessing Geoprocessing has many benefits Lots of functionality is encapsulated into a single tool Tool implementation is robust and efficient Great opportunity to delete code and simplify implementation

4 Ways to Leverage Geoprocessing Use Existing Tools Build Models Write Scripts Create new tools

Execute, Execute, Execute Tools are grouped into logical collections Analysis - extract, overlay, proximity etc. Data Management - create and manage data Conversion - load data Network Analysis Spatial Analysis Cartography And the list goes on.

Geoprocessing Example Buffer Fine grain ArcObjects call to Buffer Features Huge learning curve Painful Error Prone Appropriate when you need to fine control but not unnecessary Using Geoprocessing to Buffer Features Simpler Easier to debug and understand Bullet proof code

Execute more than just tools Build workflow with model

Execute More than Tools cont. There s Logic in using scripts

Create your own geoprocessing tools It s easy to extend geoprocessing with your own tools Script Tool Model Tool Custom Tool

How do you get started Read the desktop help for a conceptual understanding API Reference

Cursors

Cursors Used when searching a table Cursor is returned as result of applying a QueryFilter to a Table Client then iterates through the returned rows in the cursor Cursors come in different flavors Search, update, and insert Update cursors take an argument Recycling or non-recycling

Cursors Search cursors return rows as specified by the QueryFilter Update cursors used to update or delete rows specified in the QueryFilter Insert cursors used to insert new rows into a table Good for bulk loading simple data Slower for non-simple data Consider object loader

Recycling vs. Non-recycling Recycling Allocate a single row object (re-load on each fetch) Should only be used for reading data Performance advantages Recycling Update Cursor can be faster then calling Store() on rows from a Search Cursor Non-Recycling Different row object on each fetch Always has full set of fields

Cursors vs. get_feature In ArcObjects, there are often several ways to accomplish the same task some are much faster than others Retrieving features given a set of ObjectIDs Significant performance differences

QueryDefs vs. OpenTable IFW::OpenTable() Acquires schema lock on data source costly serialized process; many SQL statements Serialization kills scalability, can create queues with many (e.g., 100s) users QueryDefs No schema locks Fast creation of rowset Pabst vs. Heineken

Component Burn

Component Burn Easy to consume the ArcObjects fine grained components in an unoptimized manner Many ways to do the same task Unnecessarily cocreating small components can whack performance Use coarse grained components when possible

Data Models

Data Models Data model structure is critical Minimize the number of feature classes Cursors are expensive Utilize subtypes Subtypes not for you? Consider fat classes handle unpopulated attributes Avoid classes containing small number of large features Nation or state polygon

Data Models Model only those relationships that are important Event notification can have impact relationship classes feature linked annotation workspace and class extensions editor events

Data Models Dense features (high vertex count) impact E.g., 8 million vertex polygons Display pipeline, geoprocessing, updating, etc. Extremely large features (extent) impact Nation or state polygon Topology, networks

Prototyping

Prototyping Largest mistake made with the geodatabase Structure is critical data quantity is not Prototype as soon as a first pass model is available general structure; small details unimportant load a modest amount of data (on versioned SDE) empty classes are OK Try editing, observe system performance Repeat this process as necessary

Extensibility and Customization

Levels of GDB Customization Custom Applications Subtypes & defaults Built-in Functionality Domains & validation Connectivity & topo rules VBA Class & workspace extensions Programming starts here

Levels of GDB Customization Application level Pros Business Logic is stored within application Can access data without customization Cons Only available when application is running Users do not always interact with application customization

Levels of GDB Customization Database level Pros Business Logic is stored with data Always available, regardless of application Cons One class extension per feature class All users require dll to even view data Database is unusable if code fails Impacts on performance

GDB Extensibility Five mechanisms Workspace extensions Filtering, edit events, version events Class extensions Drawing, split policies, property inspector, related object creation notification Plug-in data sources OLE DB providers Custom features

Class extension uses Schema generation Custom drawing Custom property inspection and validation Custom split policies Related object creation notification PlugIn Data Sources

Miscellaneous Stuff

Workflows Workflow is critical with versioning Recommended workflow: Load data Define the dataset (e.g., topology, GN) Build or process the entire dataset (e.g., validate entire topology, build the GN) Register the dataset as versioned

Caching Spatial cache Features E.g., network editing Schema cache GDB schema tables E.g., creating a checkout version programmatically

GP Tools Consider periodic GP tools for QA/QC Not everything has to be in the data model or in code Avoidance of large polygons (e.g., nation or state Run Integrate to ensure data planarity and cluster your vertices Not necessary to create a topology

Is your PC worth > $10 on ebay? Would people buy it only to create a novelty fishtank? Run on a decent PC e.g., spend $500 at Walmart

Questions?

Emilio Largo Rosa Klebb Auric Goldfinger Ernst Blofeld 1 Ernst Blofeld 2 Ernst Blofeld 3 Best Villain?

No, Mr. Bond. I expect you to die. Emilio Largo Rosa Klebb Auric Goldfinger Ernst Blofeld 1 Ernst Blofeld 2 Ernst Blofeld 3 Best Villain?

No, Mr. Bond. I expect you to die. Emilio Largo Rosa Klebb Best Villain Ernst Blofeld 1 Ernst Blofeld 2 Ernst Blofeld 3 Best Villain? Goldfinger