ArcGIS API for Silverlight – Advanced Topics

Report 15 Downloads 122 Views
Esri International User Conference San Diego, California

Technical Workshops | July 25-26, 2012

ArcGIS API for Silverlight – Advanced Topics Rex Hansen Jennifer Nery

Agenda



Introductions and overview



Graphics data sources



ArcGIS Portal API



High-Quality Printing



Deep dive into image services



Editing workflow



Dynamic Layers with Query Statistics

Graphics Data Sources Jennifer Nery

Adding Graphics to GraphicsLayer

foreach(Graphic g in myGraphics) graphicsLayer.Graphics.Add(myGraphics); or

read-only when GraphicsSource is used!

graphicsLayer.GraphicsSource = myGraphics;

can by any IEnumerable

Adding Custom Data to a GraphicsLayer public class MyData { public double Longitude { get; set; } public double Latitude { get; set; } } … foreach(MyData in dataList) myGraphicsLayer.Graphics.Add( new Graphic() { new MapPoint(Longitude, Latitude) } );

…Simpler with PointDataSource

<esri:GraphicsLayer> <esri:GraphicsLayer.GraphicsSource> <esri:PointDataSource XCoordinateBinding="{Binding Longitude}" YCoordinateBinding="{Binding Latitude}" ItemsSource="{StaticResource dataList}" />

ArcGIS Portal API Jennifer Nery

using ESRI.ArcGIS.Client.Portal var portal = new ArcGISPortal(“http://serverURL”); var parameters = new SearchParameters { QueryString = query.Text, Limit = 5 }; portal.SearchItemsAsync(parameters, (result, error) => { if(error == null) Results.ItemsSource = result.Results; };

<StackPanel>

…with IdentityManager IdentityManager.Current.RegisterServers( new ServerInfo[ ] { new ServerInfo() { ServerURL = “http://serverURL”, TokenServiceURL = “http://tokenURL” } }); IdentityManager.Current.ChallengeMethod = Challenge;

Sign in IdentityManager.Current.GenerateCredentialAsync( “http://serverURL”, username, password, (credential, error) => { if(error == null) { IdentityManager.AddCredential(credential); Portal.InitializeAsync(“http://serverURL”, (crd, ex) => {…} ); } } );

Sign out var credential = IdentityManager.Current.FindCredential( “http://serverURL”, username); IdentityManager.Current.RemoveCredential(credential ); portal.InitializeAsync(“http://serverURL”, (crd, ex) => {…});

High-Quality Printing Jennifer Nery

using ESRI.ArcGIS.Client.Printing var printTask = new PrintTask(“http://taskUrl”); printTask.ExecuteCompleted += (s, e) => { if (e.Error == null) HtmlPage.Window.Navigate(e.PrintResult.Url, “_blank”); }; printTask.ExecuteAsync(new PrintParameters(MyMap)); or printTask.StatusUpdated += (s, e) => {…}; printTask.JobCompleted += (s, e) => {…}; printTask.SubmitJob(…);

<StackPanel x:Name=“PrintPanel”> printTask.GetServiceInfoCompleted += (s, e) => { PrintPanel.DataContext = e.ServiceInfo; }; printTask.GetServiceInfoAsync();

var printParams= new PrintParameters(MyMap); printParams.LayoutTemplate = (string) Templates.SelectedItem; printParams.Format = (string) Formats.SelectedItem; printParams.LayoutOptions = new LayoutOptions() { Title = MapTitle.Text, LegendOptions = new LegendOptions() {…}, ScaleBarOptions = new ScaleBarOptions() {…}, … }; printParams.MapOptions = new MapOptions() {…}; printParams.ExportOptions = new ExportOptions() {…} printTask.ExecuteAsync(printParams);

PrintTask: Known Limitations in v3.0



Custom symbols/renderers



Clustering



KmlLayer does not support visibleFolders



GraphicsLayer with mixed geometries



FeatureLayer selection/geometry require ObjectID

Related Session



Supporting High-Quality Printing in Web Applications with ArcGIS 10.1 Server



Thursday, July 26, 2012



8:30 AM – 9:45 AM



Room 07 A/B

Diving into Image Services Rex Hansen

Image Server Editing Add, update and delete rasters in a mosaic dataset public class ArcGISImageServiceLayer : Layer { AddRasters( ImageServiceAddParameters, Action) UpdateRaster( ImageServiceUpdateParameters, Action) DeleteRasters( IEnumerable, Action) }

Upload Task



Great for upload of large files



Provides progress, cancellation and deletion



Great for large geoprocessing input or raster uploads

Mensuration Task •

New task for measuring length, height, area etc. based on imagery data

public class MensurationTask : TaskBase { Point ( … ) DistanceAndAngle ( … ) HeightFromBaseToTop ( … ) HeightFromBaseAndTopShadow ( … ) HeightFromTopAndTopShadow ( … ) AreaAndPerimeter ( … ) Centroid ( … ) }

Raster Functions •

Common and custom functions to change how a raster is rendered

RasterFuctionsComboBox.ItemsSource = imgLayer.RasterFunctionInfos; var rasterFunction = RasterFuctionsComboBox.SelectedItem as RasterFunctionInfo; RenderingRule renderingRule = new RenderingRule() { RasterFunctionName = rasterFunction.Name }; imgLayer.RenderingRule = renderingRule; imgLayer.Refresh();

Editing Workflow Rex Hansen

Editor Tracking Feature last edited by another user

Feature moved, last edited user and date updated

Ownership Can’t update or delete, don’t own the feature

Created feature, can update and delete

Attribute-only editing

Feature is not allowed for delete or geometry edit.

Feature Service – Editor Tracking FeatureLayer.EditUserName Client side validation FeatureLayer.IsUpdateAllowed(graphic) Check if feature can be updated FeatureLayer.IsGeometryUpdateAllowed(graphic) Check if feature’s geometry can be updated

FeatureLayerInfo.EditFieldsInfo Owner, editor, date FeatureLayerInfo.OwnershipBasedAccessControl If others can update, delete FeatureLayerInfo.AllowGeometryUpdates Attribute only editing

Dynamic Layers with Query Statistics Rex Hansen

Change the renderers

LayerDrawingOptions: •

Allows you to override the renderer for each layer.



Use GenerateRendererTask helper to create good class breaks.

DynamicLayerInfos: •

Reorder the layers



Change the source data -

Map layers, workspaces, tables, joins…

DynamicLayerInfos



LayerMapSource -



reference layers already in map service

LayerDataSource: -

TableDataSource (workspaces & GDB versions)

-

QueryDataSource (query layers)

-

RasterDataSource (raster data)

-

JoinDataSource (join the above sources)

Note: When you use DynamicLayerInfos, you replace all existing layer infos.

QueryTask - Statistics •

Sum, Average, Min, Max, Count, Standard Deviation, Variance

var query = new Query() { GroupByFieldsForStatistics = new List<string> { "SUB_REGION" }, OutStatistics = new List { new OutStatistic() { OnStatisticField = "POP2000", OutStatisticFieldName = "SubRegionPopulation", StatisticType = StatisticType.Sum ...

• Thank you for attending • Have fun at UC2012 • Open for Questions • Please fill out the evaluation: www.esri.com/ucsessionsurveys First Offering ID: 787 Second Offering ID: 1936