javaandroidspatialitearcgis-runtimearcgis-android-api

Are Circular Arcs supported in ArcGIS Android API 10.X or 100.X?


I see that the class com.esri.arcgis.geometry.CircularArc is supported in ArcGIS Enterprise .NET API but it seems that a similar class isn't contained in com.esri.arcgisruntime.geometry.

I am developing an android application which contains trivial CAD features like drawing a polygon between points with known coordinates (lat, lon, easting, northing), polyline, line, Arc, ...

And since the features are trivial, I don't want to use Autodesk Android API or any other CAD Android API at the time being

The app behaves the arc as line segments now and this causes some complexity in staking out.

It also consumes time. For example if I want to draw an arc with a step of 1 degrees, 361 points should be stored in the database and for each point easting, northing, latitude and longitude should be calculated.

I want the user to be able to draw a schematic arc on the map storing 7 properties.

1- Radius
2- Center Easting
3- Center Northing
4- Center Latitude 5- Center Longitude
6- Start Gisement
7- End Gisement

And whenever the user wants to stake out a point on the arc, the coordinates of that point can be calculated as follows:

Easting = Center Easting + Radius * sin (Start Gisement + Theta)
Northing = Center Northing + Radius * cos(Start Gisement + Theta)

*Theta: the angle from the start

Then Easting and Northing can be converted to latitude and longitude and the user can stake out the point.

Is ther any solution using just ArcGIS Android API?


Solution

  • We are currently building out Runtime's support for curves, and the next release of Runtime in August (version 100.12) is expected to include APIs for working with elliptical arcs, which includes circular arcs.

    One observation: you probably shouldn't store properties 2/3 (Easting/Northing) AND 4/5 (Latitude/Longitude). That introduces redundancy. By using one of GeometryEngine's project methods, you can convert from one projection to the other as needed and only store a single point.

    If you are just presenting the coordinates for display, you could also consider using CoordinateFormatter.