Hi,
The ArcGIS Runtime API for WPF builds on the existing ArcGIS API for WPF to provide local data support via local services (i.e. map, feature, geoprocessing, etc). In order to be able to create a local service referencing a feature class, that feature class must first have been added to a Map Document (MXD) then shared as a Map Package (.MPK). The reason for this is two fold: 1) because the Runtime uses the optimised map rendering engine and 2) to keep the Runtime footprint as small as possible (through minimising the components required).
Over time, the existing ArcGIS API for WPF product will become the basic product level within the ArcGIS Runtime API for WPF, with a standard level offering local services support (inc approx ArcView level geoprocessing) and an advanced level providing extended geoprocessing capabilities.
In the application you are writing / are going to write, is one of your key requirements to support the end user being able to add feature classes in an adhoc manner?
Cheers
Mike
Hi Mike,
We are trying to use ArcGIS Runtime to rewrite one of our important product lines which was developed based on MapObjects 10 years ago. Currently most of the end users are from other countries and sometimes don't even have ESRI software installed. They access the data from local driver or ArcSDE directly. So yes, it is crucial to allow our programs to access the Data directly instead of going through ArcGIS Server's services.
Best regards,
Fayu Lai
Principal Software Engineer
Innovyze
618 Michillinda Ave, Tel: +1 626 568 6605
Suite 200 Fax: +1 626 568 6870
Arcadia, CA 91007
USA
fayu.lai@innovyze.com
www.innovyze.com
Hi Fayu,
The ArcGIS Runtime does not require a connection through ArcGIS Server's services, it can run entirely disconnected from ArcGIS Server. As Mike said you would create a Map Package in ArcMap that either contains the data you want to use, or a reference to data that you want to use. You could then load this Map Package in the ArcGIS Runtime and use the data.
The ArcGIS Runtime does not allow you to author data within it and there is no way to add an ArcGIS feature class directly. The current workflow is to use ArcMap and author a package and then consume this package in the Runtime. Programmatically the way you consume these packages is very similar to the way you would consume ArcGIS Server Services through the existing Web APIs.
It sounds like this workflow would work for what you are trying to do, you could create a map package that references your SDE data and then consume that Map Package in the Runtime to do your work. I don't know enough about the local driver that you are using or how it relates to MapObjects, so I can't comment on how you would consume that in the Runtime.
If it doesn't it would be great to hear how it falls short, any feedback you could provide for this would be very helpful. It is a different API and to some degree a different overall design, so a direct one-to-one migration might not be possible. But, that doesn't mean that you would not be able to accomplish the same functionality in a slightly different way.
Hi,
1) Map Packages can either contain the data within a File GDB within the Package, or reference File GDBs which are external to the Map Package. There is an option in the Sharing dialog in ArcMap to specify this behaviour. You could create multiple Map Documents (.MXDs) in ArcMap which reference the same data (e.g. within a File GDB) but with each map displaying the data differently, with different symbols/styles. Then you could package each map Document choosing to reference the data source rather than include it in the package. That way, you would have multiple Maps Packages, each with a different style, but pointing at the same data source to avoid data duplication.
2) Yes, the premise of Map Packages is that they make maps and data very easy to share/deploy with applications. The ArcGIS Runtime will resolve relative paths to Packages so you can ship the package alongside your application.
3) Exactly what data the user edits is up to you. Map Packages are a compressed bundle of files, a "package", so are therefore unpacked into the users profile to be used within the ArcGIS Runtime. In Beta 1 this is always the user profile (\My Documents\ArcGIS\Packages) but after Beta 1 we hope to allow the developer to specify this location via the API. If you choose to include the data within the Map Package the data will be edited in the unpacked location within the user profile. The Package will not be unpacked a second time if it already exists in the user profile so the user will continue to see any edits they have made. However, if you choose to reference the data externally to the package then edits will be made against the external File GDB.
4) The spatial reference of the map control in the ArcGIS Runtime API can be changed - but it does not support reprojection on the fly. If you do not explicitly set the map control spatial reference, it is determined by the first layer added to the map. All subsequent layers must match that spatial reference. When creating Map Packages, the spatial reference of the Map Document can be different to the spatial reference of the data - the LocalMapService will perform reprojection. You can reproject GIS data using Geoprocessing within the ArcGIS Runtime - but the data would need to be referenced by a Map Package in order for it to be added to the Map Control.
Cheers
Mike