ArcGIS Runtime- Editing Your Data Online and Offline Will Crick Justin Colville Euan Cameron ArcGIS Runtime Session Tracks at DevSummit 2017 ArcGIS Runtime SDKs share a common core, architecture and design • Functional sessions promote common capabilities and workflows • - An Introduction to the API and Architecture - Working with Your Portal .NET iOS macOS Android Java Qt - Building Great User Experiences - Styling Maps - Working with Maps Online and Offline - Editing Your Data Online and Offline ArcGIS Runtime core - Maximizing Performance of Your Apps - Analysis - Building 3D Applications Product sessions promote specific development experiences • Demo theaters highlight examples of specific technical capabilities • Shared workflows, any platform, any device Agenda Editing workflows • API overview • - Works for both online & offline editing - CRUD operation, attachments, templates, permissions Online editing • Offline editing • Static feature collection editing • Map package editing • Editing Workflows Online feature service editing 1. - Feature services Offline feature service editing and sync 2. - Sync-able mobile geodatabases - Created with the the GeodatabaseSyncTask (see the online and offline maps session) Static feature collection editing 3. - Feature collections (map and item based) Offline map package editing 4. - Map packages created in ArcMap - Use map packages in Local Server as a feature service - Editing code workflow same as 1. Mobile map packages from Pro are NOT EDITABLE • - Right now anyway… Feature Service Based Editing (Online and Offline) Data accessed via Feature Services • - Good for data that changes over time - Good for large data sets - Scalable (to a certain point) Simple features only • - Attachments are supported Clients modify features then push these changes back to the service • - Apply edits or sync Last in wins conflict detection • Static Feature Collection Editing Data accessed via feature collections • - In the map - As their own portal items Good for data that does not change very often • - Will not update unless map/item is reloaded Slow initial load • - Loads ALL features Scalable for viral applications • - No backend server resources required - Data retrieval from storage only ArcGIS FeatureTable API getRenderer() FeatureLayer setDefintionExpression() geometry() attributes() GeoElement addF…(), updateF…(), deleteF…() FeatureTable queryFeatures() FeatureTable() Feature getLayerInfo() ArcGISFeatureTable getTypes/Templates() Attachments() ArcGISFeature Loadable() applyEdits() ServiceFeatureTable GeodatabaseFeatureTable getGeodatabase() Editing API Overview Features are by-value objects with respect to their table • Step 1. perform CRUD operations on the table • - Create/get a feature - update it - then call a method to update the feature in the table Generic pattern for both online and offline – up next… • Step 2. Apply/sync the edits to the source service • - Online workflow – apply edits - Offline workflow – sync - Static feature collection workflow – save map, or save item Specific sections on each later on… • Creating New Features Check you can add new features • - FeatureTable.canAdd() Create a new feature from the table • - FeatureTable.createNewFeature() -> Feature - ArcGISFeatureTable.createNewFeature(FeatureType/FeatureTemplate) -> ArcGISFeature Update attributes • - Some incorrect data types will error client side as you change them (if we can) FeatureTable.addFeature(feature) • - Async method - Returns error if validation fails - e.g. feature from different table or non-nullable fields still null Updating Existing Features Get feature (query, select or identify) • Check feature can be updated • - FeatureTable.canUpdate(feature) – checks table ownership, attribute types and more... Update attributes • - Some incorrect data types will error client side as you change them (if we can) FeatureTable.updateFeature(feature) • - Async method - Returns error if validation fails - e.g. feature from different table or non-nullable fields still null
Description: