|
POST
|
Hi, RE: MPK Unpacking: The process follows your latter suggestion - it does not unpack if already unpacked and the data has not changed. The first time you access a Map Package via the ArcGIS Runtime (or other ArcGIS software) it will be unpacked to your user profile. The next time that same MPK is accessed the software will first check your user profile for the exploded Map Package and, if present, will confirm it is the same version/date. In this case the MPK will not be unpacked again. If the MPK being loaded by the Runtime is found to be a more recent version then it will be unpacked again. If you create a Map Package which includes the data (the default option) then the unpacking process will take marginally longer than if the Map Package just references the data. Once the MPK is unpacked the local map mapservice is then spun up. Currently this typically takes 5-15 seconds depending on the complexity of the map and the number of layers, but the benefit of the asynchronous API design is that this can be done in the background whilst your application is initializing other elements and/or the user can continue using the application. RE: MPKs versus TPKs: If you need to switch layers on and off at runtime then you likely need to use MPKs. We'll do some more investigation into your reported performance issues. Can you provide some information on: - Size of data (e.g. total size of source File GDB) - Total number of layers in map - Size of MPK - Rendering styles used in map (e.g. cartographic or simple symbols, representations, maplex labelling) - ... or perhaps you can share your map and a sample of the data? Regarding tile packaging advice - the tiles are stored in the most optimal manner, using the compact cache format introduced in ArcGIS Server at v10, but you can specify the image format to provide some control over the cache size/quality - for more information and advice see http://resourcesbeta.arcgis.com/en/help/runtime-wpf/help/#/About_tile_packages/01700000004w000000/. We greatly appreciate your feedback Cheers Mike
... View more
08-19-2011
12:28 AM
|
0
|
0
|
2096
|
|
POST
|
Hi, I've attached a picture of the sharing dialog in ArcMap to indicate how you specify that the Map Package should support the ArcGIS Runtime AND reference the data externally to the package - you should check the box to "Reference all data". If you don't see the "Make ArcGIS Runtime Compatible" option in that dialog you need to enable ArcGIS Runtime support in ArcMap: Customize > ArcMap Options... > Sharing. Cheers Mike
... View more
08-18-2011
11:30 PM
|
0
|
0
|
1711
|
|
POST
|
Hi, There is indeed no Color property on the ScaleLine - apologies for the misleading doc. Regarding bug submission, technical support are supporting the beta process but the beta site they refer to is the main beta community site (https://betacommunity.esri.com) through which you can also submit bugs. Once logged in to that site, select the Beta Program (e.g. ArcGIS Runtime for Desktop) you're part of, then choose Bug Report (under Send Feedback) and fill in the details. Cheers Mike
... View more
08-18-2011
01:23 AM
|
0
|
0
|
1005
|
|
POST
|
Hi, Many thanks for the feedback - and apologies for the trouble you had reporting the problem. I'll investigate. Cheers Mike
... View more
08-18-2011
12:49 AM
|
0
|
0
|
1005
|
|
POST
|
Hi, RE: GDB Performance: The File GDB generally offers excellent performance, particularly for larger datasets. As a side note - when creating Map Packages, if you choose not to reference the data (the default option) the packaging process will convert all your datasources to a File GDB anyway. To leave your data in it's original format, you should choose to reference the data. My first suggestion would be to look at what user interaction is required with your 11 layers (highway exits, institutions, landmarks, highways, railroad, streams, streets, parks, water, counties, and cities). If any of these are relatively static layers and could constitute a more seamless basemap then you should consider creating a map to specifically use as a basemap and generate a Tile Package (TPK) from that map. Then, layers which a more dynamic and need to be dunamically rendered on each pan/zoom or are required to support user interaction (identify, query, editing) should be added to a separate map which is saved as a Map Package. The 55 seconds, which sounds a long time) is actually just the initial local map service initialization time and it's possible to spin up these local services behind the scenes and add them to the map when ready. The following code, which you could put in the window constructor, will asynchronously kick off the LocalMapService initialization then once the service startup is complete the Action will execute which in this example creates a new LocalArcGISDynamicMapServiceLayer based on that LocalMapService and inserts it into the map (note the path below is relative to my app executable): LocalMapService.GetServiceAsync(@"Maps_and_Data\OperationalLayers.mpk", (localMapService) => { LocalArcGISDynamicMapServiceLayer localArcGISDynamicMapServiceLayer = new LocalArcGISDynamicMapServiceLayer() { Path = localMapService.Path, ID = "SpecialEventPlanning", ImageFormat = ArcGISDynamicMapServiceLayer.RestImageFormat.PNG32, PanBuffer = PanBufferSize.Medium }; MapControl.Layers.Insert(1, localArcGISDynamicMapServiceLayer); RE: Query Performance: I would expect it to be significantly faster than 40 seconds - do you have attribute indexes built on the fields that you are searching? Could you consider building an ArcGIS Locator for searching for street locations? RE: Specs: - Single CPU - is that multi core or single core? (You'll get more benefit from processors with multiple-cores / Hyper-threading, as well as multiple processors). - 1 GB RAM - do you know how much free memory you'll have after the OS and other business apps are taken into account? Cheers Mike
... View more
08-18-2011
12:47 AM
|
0
|
0
|
2096
|
|
POST
|
Hi, Yes - that correct - you can drop the esriBehaviors prefix and just use the esri prefix/namespace you have already declared. Cheers Mike
... View more
08-18-2011
12:02 AM
|
0
|
0
|
796
|
|
POST
|
Hi, Re Full Extent of Map Package: If you use the LocalMapService class to work with Map Packages then you have the access to the FullExtent property as soon as the local map service is initialized. Alternatively, you'll get the same extent value from the FullExtent property of the LocalArcGISDynamicMapServiceLayer which will be populated during the layer initialization. In this case, you can either use the LayersInitialized event as you have, or if you want to listen for a specific layer, you can use the Initialized event on the layer, for example: localArcGISDynamicMapServiceLayer.Initialized += (s, e) => { // Do something with localMapService.FullExtent. }; MapControl.Layers.Insert(1, localArcGISDynamicMapServiceLayer); Re Reference/Schema: Sorry - you shouldn't need xmlns:esriBehaviors="clr-namespace:ESRI.ArcGIS.Client.Behaviors;assembly=ESRI.ArcGIS.Client.Behaviors" - just xmlns:esri="http://schemas.esri.com/arcgis/client/2009" should work. Cheers Mike
... View more
08-17-2011
01:14 AM
|
0
|
0
|
796
|
|
POST
|
Hi, Following up on the question about limiting the pan extent and the maximum resolution <> map package question - you can use the ConstrainExtentBehaviour to achieve both goals: http://resourcesbeta.arcgis.com/en/help/runtime-wpf/apiref/ESRI.ArcGIS.Client.Behaviors~ESRI.ArcGIS.Client.Behaviors.ConstrainExtentBehavior.html Which you can implement by doing the following: 1. Add the required references: System.Windows.Interactivity.dll ESRI.ArcGIS.Client.Behaviors.dll 2. Declare the System.Windows.Interactivity.dll namespace in your window delcaration: xmlns:i="clr-namespace:System.Windows.Interactivity;assembly=System.Windows.Interactivity" 3. Add a behaviour collection to the map and specify a ConstrainExtentBehavior in XAML: <esri:Map x:Name="MyMap" Extent="-120,30,-60,60"> <i:Interaction.Behaviors> <esriBehaviors:ConstrainExtentBehavior ConstrainedExtent="-120,30,-60,60"/> </i:Interaction.Behaviors> </esri:Map> 4. Or do it in code: XAML: <i:Interaction.Behaviors> <esriBehaviors:ConstrainExtentBehavior x:Name="Constraint" /> </i:Interaction.Behaviors> Code: using System.Windows.Interactivity; using ESRI.ArcGIS.Client.Behaviors; Envelope env = new ESRI.ArcGIS.Client.Geometry.Envelope(-13046639, 4036241, -13045773, 4036769); Constraint.ConstrainedExtent = env; Cheers Mike
... View more
08-16-2011
07:04 AM
|
0
|
0
|
2462
|
|
POST
|
Hi, It's better to have the Map itself control the initialization of the layer rather than calling the Initialize() method directly. For example, try something along the following lines (assumes your Map's x:Name property is "MapControl"): MapControl.WrapAround = true; //Add a WGS84 tiled service: ArcGISTiledMapServiceLayer arcGISTiledMapServiceLayer = new ArcGISTiledMapServiceLayer() { Url = "http://services.arcgisonline.com/ArcGIS/rest/services/ESRI_Imagery_World_2D/MapServer", ID="WorldTopoMap" }; MapControl.Layers.Add(arcGISTiledMapServiceLayer); //Add a WGS84 Map Package asynchronously: LocalMapService.GetServiceAsync(@"PATH_TO_MAP_PACK", (localMapService) => { LocalArcGISDynamicMapServiceLayer localArcGISDynamicMapServiceLayer = new LocalArcGISDynamicMapServiceLayer() { Path = localMapService.Path, ID = "TheLayerID", ImageFormat = ArcGISDynamicMapServiceLayer.RestImageFormat.PNG32, PanBuffer = PanBufferSize.Medium }; MapControl.Layers.Add(localArcGISDynamicMapServiceLayer); }); I'm interested to hear your results. If you're still not seeing the WrapAround property work as you expect - perhaps you could post a small, shareable, sample of your data that I can test? Cheers Mike
... View more
08-16-2011
01:20 AM
|
0
|
0
|
2462
|
|
POST
|
Hi, The WrapAround property supports both the following coordinate systems: - WGS 1984 (WKID 4326) which is the same as your GCS_WGS_1984 map cordinate system - WGS 1984 Web Mercator Auxilliarty Sphere (WKID 3857 / 102100) The spatial reference property of the map control is determined by the coordinate system of the first valid layer added to the map. The map control does not support client-side projection-on-the-fly hence why the property is read-only. If you're adding the layer in XAML... or even code... and hitting a break point to check the spatial reference of the map before the LocalMapService has initialized then the spatial reference might simply not have been set yet? Cheers Mike
... View more
08-16-2011
12:42 AM
|
0
|
0
|
2462
|
|
POST
|
Hi, I'll look into the MaximumResolution <> Map Package question. Regarding limiting the pan - one very easy way to resolve this is setting the WrapAround property on the Map to True. Alternatively you could investigate listening for the map extent changed event then checking the requested extent against your restricted extent... but the overhead may be too great and/or getting the right user experience when they do try to navigate outside that extent may be tricky. Cheers Mike
... View more
08-16-2011
12:16 AM
|
0
|
0
|
2462
|
|
POST
|
Hi, I'm not sure exactly how you've set up your Geoprocessing model, but I'm surprised to see the raster layer as an input as that would usually be intermediate data given the likely size of the data. This leads me to wonder if you're trying to run the viewshed system tool as-is without including it in a model? I would expect the inputs of your model to be, for example, a point feature set for the input location (GPFeatureRecordSetLayer) and a linear unit value for the distance (GPLinearUnit). Typically in a Viewshed GP model which is then going to be published/shared as a package or service, the linear unit value is used in conjunction with the point feature set as the inputs to a buffer tool with the output from the buffer then being used to clip the raster on which the viewshed is finally run. You can also expose other parameters such as observer height. For example this service on SampleServer1 demonstrates the inputs and outputs I would expect to see: http://sampleserver1.arcgisonline.com/ArcGIS/rest/services/Elevation/ESRI_Elevation_World/GPServer/Viewshed Additionally, in beta 1 we do not support raster data as a tool input but do hope to support this in beta 2. Cheers Mike
... View more
08-16-2011
12:10 AM
|
0
|
0
|
997
|
|
POST
|
Hi, The best way to achieve this is almost certainly via Map Packages. They can either physically contains the data or can reference a File GDB or Enterprise GDB externally to the Map Package. If you wanted to produce multiple alternative map styles (e.g. day and night) with each map referencing the same underlying data you would choose to reference a GDB (File or Enterprise) from the Map Package. This would avoid any data duplication. The option to reference data from the package is specified within the map packaging dialog in ArcMap (File > Share As... > Map Package) or within the Geoprocessing tool. Additionally, if/when the customer updates their corporate map styling and produce new Layer Files and/or Map Documents, the use of Map Packages makes it very straightforward to pick up these changes, create new Map Packages and rollout to applications and users without having to code up new symbology styles. Any future functionality to provide API level control over symbology would include the ability to specify color (as per your request). Cheers Mike
... View more
08-12-2011
08:25 AM
|
0
|
0
|
1711
|
|
POST
|
Hi, ArcMap is certainly the best environment for defining the symbology/display of map layers. For example, if you take a look at some of the maps in the map template gallery (http://resources.arcgis.com/gallery/file/map-templates), I do not think you would ever want to attempt to programmatically replicate the level of cartography they contain. However, in the next beta release we're hoping to include functionality that would allow you to develop an application in which end users could define/choose their own symbology for a local map service. Even with that support, ArcMap will still be the default authoring environment for your map packages. Cheers Mike
... View more
08-12-2011
06:19 AM
|
0
|
0
|
1711
|
|
POST
|
Hey, Great - sounds like you're on the right track re Tile Package / Map Package / Feature Layer. The thing to bear in mind is that tile packages are pre-rendered (hence they take time to create) so the performance is incredibly fast. Map Packages are rendered dynamically but we're using the ArcGIS optimized drawing engine first seen in ArcGIS Server so it's still nice and fast and lastly feature layers are rendered client-side using an in memory graphics layer so you get great client-side control over how they display and over user interaction with the features/graphics but they can't perform as quickly as the tile package and the dynamic map layer with the same volumes of data. Cheers Mike
... View more
08-12-2011
06:02 AM
|
0
|
0
|
3093
|
| Title | Kudos | Posted |
|---|---|---|
| 1 | 04-14-2026 05:04 AM | |
| 1 | 02-20-2024 07:02 AM | |
| 1 | 01-19-2026 06:44 AM | |
| 1 | 12-10-2025 07:16 AM | |
| 1 | 11-21-2025 08:12 AM |
| Online Status |
Offline
|
| Date Last Visited |
3 weeks ago
|