ArcGIS for Android offline data editing principles 0 rating/11 read 2012-04-19CSDN
Implementation principle of ArcGIS for Android offline data editing
To edit offline data on ArcGIS for Android, follow these steps:
I. Environment preparation
1. Software Environment
1) ArcGIS Server10 is used to publish the map service.
2) ArcGIS Destop10 is used to cut the cached image.
3) Eclipse3.6.2 + integrated development environment
4) JDK1.6
5) Android SDK
6) Android Development Tools
7) ArcGIS API for Android1.1 plug-in
8) ArcSDE for Oracle11g
9) Oracle11g
2. Prepare the map service
1) After all software environments have been installed, we must first release two editable map services through ArcGIS Server, namely the map service of FeatureServer, the two services are used for online data download and data upload respectively. (When uploading data, you cannot directly upload the data to the actually downloaded service. A review process is required after data editing. Therefore, another service is required for temporary data storage, we can upload the downloaded service after the review is passed)
2) When offline, we also need a cached slice map, which uses ArcCatalog to cut a cached image for offline map display at the device end (the map slice must be compact ).
II. Implementation steps
1. Create a project
Use eclipse to create an ArcGIS for Android project and export the folder of cached images cut through ArcCatalog to your device SD card.
2. Add a map service
Add three map services to the Activity in the project. One is the ArcGISLocalTiledLayer service for offline map display, and the other two are the ArcGISFeatureLayer service for data download and upload; in addition, a GraphicsLayer layer is added to display the queried data.
3. sqlite Database
The sqlite database is used to store offline data, and SQLiteOpenHelper is extended to create databases and tables. When creating tables, the table structure should be basically the same as the table structure used in the FeatureServer service we released (add another mark field to mark the operation status ). In this case, the key lies in the storage of the spatial shape field. sqlite does not have the concept of a spatial field. Therefore, when the data queried by the map service is stored in sqlite, you should customize the format of the inserted data. when entering the local database, we can customize and assemble the data according to the spatial data types: points, lines, and surfaces, for example, Point types can be combined into Point (X, Y) during warehouse receiving. You can parse and assemble the space objects according to this format, after customizing the representation of various spatial data types, it is best to write a tool class that is responsible for parsing and assembling data formats (because the Demo I Want To Do only involves vertex data, there is no shape field in the database table, the X and Y fields are added to store the coordinate information ).
4. Data Editing
When editing data, we can edit the data in two aspects: attribute editing and space editing.
When we query data through ArcGISFeatureLayer and insert sqlite data through our custom data format, we can perform offline data operations.
1) EDIT attributes
Attribute Modification is nothing more than modifying the attributes in the Graphic object. Graphic cannot add event listening. Therefore, adding a click event like a button does not pop up the relevant information of this element, we can use GraphicsLayer'sGetGraphicIDs(float x, float y,int tolerance)
To obtain the attributes of elements and their elements,
Sadly, Graphic does not provide an interface for modifying attributes. You can only create a new Graphic object and add the updated attributes in its constructor or use GraphicsLayer'supdateGraphic
(int id,
Map<String,
Object> attributes)
To update the attributes of Graphic.
And update the modified element attributes to the local sqlite database and the status of the mark field in the modification table.。
2) Space editing
For a Graphic object, we can not only change its attributes, but also modify its spatial location information. The changes to points, lines, and surfaces are slightly different.
You can directly update the Geometry of Graphic when you click Modify. However, Graphic does not provide an interface to modify the Geometry.UpdateGraphic(int id,
Geometry geometry)
Method to update its space location.
The spatial location change of the line and plane mainly refers to the location change of the line or plane node. We can click a node on the line or plane to drag and use GeometryEngine. getNearestVertex () can be used to obtain the vertex we clicked, closest to the node of the ry, and return a Proximity2DResult object. Through this object, we can obtain the Index position of this node, and then through the line or plane objectSetPoint(int index,
Point point)
Method to update the node, then our graphics can be changed, and the updated Graphic space object will be re-parsed into a defined format for receiving the database
And modify the status of the mark field in the table。
5.
Data submission
In the above steps, the offline data editing function is basically complete. Finally, when we are online, we only need
ArcGISFeatureLayer submits data to the temporary table for review.