|
POST
|
Hi, The system requirements are posted here: 10.1.1: http://resources.arcgis.com/en/help/system-requirements/10.1/#/ArcGIS_Runtime_SDK_10_1_1_for_WPF/015100000092000000/ 1.0: http://resources.arcgis.com/en/help/system-requirements/10.1/#/ArcGIS_Runtime_SDK_1_0_for_WPF/01510000008s000000/ The deployment machine needs a graphics card with: #. Dedicated chipset (NVidia or ATI recommended). #. Support for DirectX 9 #. Good amount of memory (ideally >512MB) #. Shader Model 2.0 or greater #. Latest drivers (try laptop/desktop vendor for approved drivers or check with graphics card vendor) Cheers Mike
... View more
03-14-2013
01:30 AM
|
0
|
0
|
1657
|
|
POST
|
Hi, You've got a couple of options... #1. FindGraphicsInHostCoordinates method: This performs a hittest operation on the GraphicsLayer based on a point (i.e. click point) in UI coordinates. http://resources.arcgis.com/en/help/runtime-wpf/apiref/index.html?ESRI.ArcGIS.Client~ESRI.ArcGIS.Client.GraphicsLayer~FindGraphicsInHostCoordinates(Point,Int32).html #2. GeometryService task: Use a local or online Geometry server in conjunction with the GeometryService task. There are a variety of operations available which might give you some more flexibility - you probably want to use the RelationAsync() operation. http://resources.arcgis.com/en/help/runtime-wpf/apiref/index.html?ESRI.ArcGIS.Client~ESRI.ArcGIS.Client.Tasks.GeometryService_members.html Cheers Mike
... View more
03-13-2013
01:25 AM
|
0
|
0
|
1499
|
|
POST
|
Hi, You need to go to http://customers.esri.com/ and log in with an ESRI global ID that has an EDN subscription associated with it and you'll be able to download all the EDN software, including the ArcGIS Runtime SDK for WPF. Cheers Mike
... View more
03-12-2013
02:22 AM
|
0
|
0
|
4285
|
|
POST
|
Hi, Here's a QueryTask sample: http://resources.arcgis.com/en/help/runtime-wpf/samples/index.html#/Spatial_Query_Online/02q2000000m7000000/. It sounds like you're using the DynamicLayers capability to add Shapefiles - if this is the case you'll need to set the Source property on the Query object (http://resources.arcgis.com/en/help/runtime-wpf/apiref/index.html?ESRI.ArcGIS.Client~ESRI.ArcGIS.Client.Tasks.Query~Source.html). Also - you mentioned that the Shapefiles are added in different colours each time? - you can set the renderer on the layer so the colour is up to you... at the current release unfortunately you'll need to make a manual request to get the geometry type, but for the next release we've extended the GetAllDetails method to support DynnamicLayers. e.g.
/*
* Apply a renderer for vector layers.
* Note: It is always necessary to provide a renderer when the layer being added (represented by a DynamicLayerInfo) is part of a new
* DynamicLayerInfoCollection as opposed to using the CreateDynamicLayerInfosFromLayerInfos() method which creates a DynamicLayerInfoCollection
* containing the existing layers in the map service.
*/
// Create a new LayerDrawingOptions object to hold the renderer information.
var layerDrawOpt = new LayerDrawingOptions()
{
// Match up the LayerID to the ID of the layer within the service.
LayerID = counter,
};
// We need to determine the geometry type of the new feature class.
// To do this, we will submit a request to the ..\MapServer\dynamicLayer?.. endpoint which will return the service level metadata,
// Allowing us to identify the geometry type and create an appropriate renderer.
// Create a new WebClient instance to make the request and download the response.
WebClient webClient = new WebClient();
// Register an asynchronous handler in which to create the renderers and apply the to the dynamic map service layer.
webClient.DownloadDataCompleted += (client, downloadDataEventArgs) =>
{
// Read the JSON response as XML
XmlReader reader = System.Runtime.Serialization.Json.JsonReaderWriterFactory.CreateJsonReader(downloadDataEventArgs.Result, new XmlDictionaryReaderQuotas());
// Get the root XML element
XElement root = XElement.Load(reader);
// Query for the "geometryType" element
XElement geometryType = root.XPathSelectElement("//geometryType");
// Create the render based on the geometry type
switch (geometryType.Value)
{
case "esriGeometryPoint":
layerDrawOpt.Renderer = new SimpleRenderer() { Symbol = new SimpleMarkerSymbol() { Color = new SolidColorBrush(GetRandomColor()), Size=8 } };
break;
case "esriGeometryPolyline":
layerDrawOpt.Renderer = new SimpleRenderer() { Symbol = new SimpleLineSymbol() { Color = new SolidColorBrush(GetRandomColor()) } };
break;
case "esriGeometryPolygon":
layerDrawOpt.Renderer = new SimpleRenderer() { Symbol = new SimpleFillSymbol() { Fill = new SolidColorBrush(GetRandomColor()), BorderBrush = new SolidColorBrush(GetRandomColor()) } };
break;
}
// Set the LayerDrawingOptions property on the local dynamic map service layer (the LayerID property ties this to the DynamicLayerInfo object).
layerDrawingOptionsCollection.Add(layerDrawOpt);
// Update the layer drawing options property on the dynamic map service layer.
arcGisLocalDynamicMapServiceLayer.LayerDrawingOptions = layerDrawingOptionsCollection;
// Need to refresh the layer after the renderer(s) have been applied.
arcGisLocalDynamicMapServiceLayer.Refresh();
};
// Make the request for the service metadata
// e.g. http://127.0.0.1:<PORT>/arcgis/rest/services/<MPK_NAME>/MapServer/dynamicLayer?layer={"id":0,"source":{"type":"dataLayer","dataSource":{"type":"table","workspaceId":"MyWorkspace","dataSourceName":"MyFeatureClassName"}}}
webClient.DownloadDataAsync(new Uri(arcGisLocalDynamicMapServiceLayer.Url
+ "/dynamicLayer?layer={'id':" + counter.ToString() + ","
+ "'source':{'type':'dataLayer','dataSource':{"
+ "'type':'table',"
+ "'workspaceId':'"+ workspaceInfo.Id + "',"
+ "'dataSourceName':'" + fileName + "'"
+ "}}}"));
Cheers Mike
... View more
03-11-2013
07:04 AM
|
0
|
0
|
1450
|
|
POST
|
Hi, You've actually got several options here... #1. QueryTask:- Probably the best option... set the search geometry via the Query Class (http://resources.arcgis.com/en/help/runtime-wpf/apiref/index.html?ESRI.ArcGIS.Client~ESRI.ArcGIS.Client.Tasks.Query_members.html). #2. GeometryService task:- The GeometryService is typically very quick/efficient but this route would require first retrieving the polygon geometries to submit as graphics which may incur an overhead (you'd need to submit a query first). Take a look at the Relation operation: API ref: http://resources.arcgis.com/en/help/runtime-wpf/apiref/index.html?ESRI.ArcGIS.Client~ESRI.ArcGIS.Client.Tasks.GeometryService~Relation.html Sample: http://resources.arcgis.com/en/help/runtime-wpf/samples/index.html#/Relation/02q200000056000000/ #3. Geoprocessor task:- This would require creating a model/script and packaging as a GPK but you could craft the GP tool to give you the exact response you want (e.g. just a boolean yes/no). Cheers Mike
... View more
03-08-2013
02:19 AM
|
0
|
0
|
1450
|
|
POST
|
Hi, To use our API within the ElementHost you'll need to add the line below in order that the System.Windows.Application.Current is set (the API expects a WPF application). Just adding this line is enough. ... new System.Windows.Application(); ... Cheers Mike
... View more
03-08-2013
12:45 AM
|
2
|
0
|
1483
|
|
POST
|
Hi, Are these Access / SQL Server databases actually Geodatabases? Or would you like to join a non-spatial table from the database to a spatial dataset in another datasource? I'm assuming it's the latter... you could take a look at this earlier post which discusses using the JoinDataSource: http://forums.arcgis.com/threads/74686-Joining-Database-with-Map-Layer? Cheers Mike
... View more
02-22-2013
05:05 AM
|
0
|
0
|
997
|
|
POST
|
Hi, Although the Editor is selecting the graphics/features, the actual selections exist in the layers. You can use the Editor.GraphicsLayers property to get a list of all the GraphicsLayers/FeatureLayers with which the Editor control is interacting then iterate their selection sets. Cheers Mike
... View more
02-20-2013
06:04 AM
|
0
|
0
|
1245
|
|
POST
|
The only thing I haven't been able to do with shapefiles is use the Editor toolkit control to select features on it. If anyone has any suggestions, please let me know. Hi, To get selections to work you'll need to make sure the Editor control has it's Map property set, and do this in code because the binding does not work in WPF when done in XAML. You'll also need to add the ID of your new layer to the LayerIDs property of the Editor control. Then selections should just work... To test this I combined the code from earlier in this thread which involves a changing the datasource of a FeatureLayer and binding that to the FeatureDataGrid, with the code from one of the Edit tools samples (EditToolsAutoSave) which demonstrates a custom toolbar of selection tools and it worked fine. The key things I did were:- In the Map.Loaded event I set the Editor.Map property:
ESRI.ArcGIS.Client.Editor myEditor = LayoutRoot.Resources["MyEditor"] as ESRI.ArcGIS.Client.Editor;
myEditor.Map = MyMap;
Then in the FeatureLayer.Initialized event handler I set the LayerIDs property:
Editor editor = LayoutRoot.Resources["MyEditor"] as Editor;
editor.LayerIDs = new List<String>() { featureLayer.ID };
Let me know if you have any issues. Cheers Mike
... View more
02-20-2013
05:41 AM
|
0
|
0
|
2496
|
|
POST
|
Hi, If this is just for display then it's very simple to add all those layers to the desktop GUI (ArcMap), apply some symbols and rasterize them as tiles for use in a client application. But if you actually want a raster grid of cells with calculated values then you're getting into the realms of what we call "geoprocessing". ArcGIS has a library of geoprocessing tools which perform many functions - the idea being that you build up a model in the desktop GUI (ArcMap) by tying together multiple tools and then export that as a Geoprocessing Package for use in our ArcGIS Runtime SDK for WPF. You can also use Python to create that model which opens up access to some of the additional Python libraries included with ArcGIS. There is lots of help in the main ArcGIS for Desktop help which might be a good place to start: http://resources.arcgis.com/en/help/main/10.1/#/What_is_geoprocessing/002s00000001000000/. You'll probably first need to convert each individual vector dataset (roads, rivers, etc) into a raster dataset, perhaps using the "Feature to Raster" tool (http://resources.arcgis.com/en/help/main/10.1/index.html#//00120000002v000000). Then you'll need to combine them - there are many tools for working with rasters in the Spatial Analyst toolbox (note this requires an extension license when deploying your app). Here's an intro to the Spatial Analyst tools: http://resources.arcgis.com/en/help/main/10.1/index.html#/An_overview_of_the_Spatial_Analyst_toolbox/009z00000003000000/. One of the key things to note is that not all of the tools are supported in our WPF SDK - here's a list of the ones that are: http://resources.arcgis.com/en/help/runtime-wpf/concepts/index.html#/Supported_geoprocessing_tools/01700000006r000000/ We do have a similar but much smaller set of similar help in the SDK help which covers more of the topics you need to consider when you want to make your geoprocessing tool/model available in an ArcGIS Runtime application: http://resources.arcgis.com/en/help/runtime-wpf/concepts/index.html#/What_is_geoprocessing/01700000009z000000/. Cheers Mike
... View more
02-20-2013
05:32 AM
|
0
|
0
|
1017
|
|
POST
|
Hi, Yes, apologies if the previous answers weren't clear, if your app has for example a folder browser dialog which returns a folder name you can enumerate the files in that folder looking for .TPK (Tile Packages) and .MPK (Map Packages) then create ArcGISLocalTiledLayer and ArcGISLocalDynamicMapServiceLayers from those by setting the Path property in each case. If it's a fairly simple view-only affair then you can just instantiate the layer object, set the Path property and add it to the map. The map will kick off the layer initialization which in turn will start a RuntimeLocalServer instance if required and create/start the LocalMapService as required. In that scenario you don't necessarily need to work with the LocalServer/LocalService classes directly. If you need a little more functionality from your layers then for example you might need to ask the user whether they want to edit, in which case you'll need to create an ArcGISLocalFeatureLayer from that MapPackage (which will start both a LocalMapService and a LocalFeatureService because the latter is a sub type of the MapServer). There are a few other properties on the local service objects you might need to consider setting as well, such as MaxRecords - which typically for a local service you can set very high but by default it's a 1000 like ArcGIS for Server. In this scenario you will need to work with the LocalService classes directly to set those properties. Cheers Mike
... View more
02-20-2013
05:13 AM
|
0
|
0
|
393
|
|
POST
|
Hi, Although the ArcGIS Runtime SDK for WPF uses a "local server" to host local content for offline use, there is not one central local server on the client machine which may be hosting any number of services. When you deploy your application, you also deploy an ArcGISRuntime deployment folder. That folder contains and number of ArcGIS Runtime components, including what will become an instance of the RuntimeLocalServer. That instance is only used by your application, hence the port numbering and unique prefix (both of which you can control via the LocalServerUtility tool). There may be multiple WPF applications on the machine, but each will be using it's own RuntimeLocalServer instance. Therefore, the only services you'll be accessing are the ones your application has created. Each local server is seeded from a package (Map, Locator, Geoprocessing) and therefore when working with offline content your application really works with packages and the local Layer types that expose them. Although it is important to understand the architecture, the fact there's a local server is really just an implementation detail. Cheers Mike
... View more
02-19-2013
07:37 AM
|
0
|
0
|
2310
|
|
POST
|
Hi, Actually the API is there for enumerating local services running on the RuntimeLocalServer (http://resources.arcgis.com/en/help/runtime-wpf/apiref/index.html?ESRI.ArcGIS.Client.Local~ESRI.ArcGIS.Client.Local.LocalServer~Services.html). But what I was really trying to say is that the only local services running would be the ones your application has already explicitly started via the API and therefore I coudn't easily envisage a scenario where you would need to access the service catalog as you might want to for an online server where there are a published set of services. Cheers Mike
... View more
02-19-2013
12:57 AM
|
0
|
0
|
2310
|
|
POST
|
Hi, For local content, the RuntimeLocalServer just should really be considered just implementation detail, not necessarily something you address directly. When supporting offline workflows the content you're working with comprises Map Packages, Tile Packages, Locator Packages, and Geoprocessing Packages. Therefore I'd advise using the API rather than making RESt calls directly. Having said that, you do need to be aware of the underlying RuntimeLocalServer infrastructure because you're effectively a local server admin. Some of the settings a server admin would normally configure in ArcGIS for Server, you set via the API for local services. Cheers Mike
... View more
02-19-2013
12:26 AM
|
0
|
0
|
2310
|
|
POST
|
Hi, Apologies for the delay. Here's an example of creating a FeatureSet in order to pass both geometry and attributes into a GP service:
/*
* Build the GP Parameters...
*/
// We want to specify input attributes - create a new FeatureSet.
FeatureSet featureSet = new FeatureSet();
// Create the Fields and add one called "VALUE".
featureSet.Fields = new List<Field> { new Field() { FieldName = "VALUE", Type = Field.FieldType.String, Alias = "VALUE" } };
// Create the graphic to submit.
Graphic g = new Graphic() { Geometry = e.MapPoint };
// Add the graphic to the FeatureSet
featureSet.Features.Add(g);
// Set the graphic's attribute
featureSet.Features[0].Attributes["VALUE"] = "Hello";
// Create a new list of GPParameters
List<GPParameter> parameters = new List<GPParameter>();
// Add a new GPFeatureRecordSetLayer to the parameter list, passing in the FeatureSet created above.
parameters.Add(new GPFeatureRecordSetLayer("Input_Features",featureSet));
The above code ensures the input feature has both geometry and attributes. In order to have the input attributes persisted on your output features you'll additional steps within your model/script. Cheers Mike
... View more
02-12-2013
04:22 AM
|
0
|
0
|
1997
|
| 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 |
07-02-2026
06:07 AM
|