[OpenMap Users] circle to polygon conversion problem

From: Whanger, Thomas <thomas.whanger_at_zeltech.com>
Date: Mon, 1 Nov 2004 15:02:42 -0500



The com.bbn.openmap.dataAccess.shape.EsriPolygonList.convert(OMCircle,
Projection) method converts the given OMCircle to an OMPoly using the given
Projection, and it works great for circles with a larger radius.


However, if the radius is less than approximately 0.2 decimal degrees, then
the converted OMPoly is a rectangle or triangle (not a circular shaped
polygon). In addition, if the radius is less than 0.04 decimal degrees,
then the converted OMPoly is a vertical line (not a circular shaped


Does anyone know why this method fails for these circles with a smaller
radius and/or how to get the method to work with these circles with a
smaller radius? Any help is greatly appreciated.





Here is the method's code:


    //converts circles into polygons

    public static OMPoly convert(OMCircle omCircle, Projection proj) {

        GeneralPath shape = omCircle.getShape();


        //get the PathIterator that defines the outline of the circle

        PathIterator circle = shape.getPathIterator(null);

        Vector initialPoints = new Vector();

        float[] segPoints = new float[2];


        while (!circle.isDone()) {

            //by passing segpoints the array is filled with each x\y point

            //iterated by the circle

            int segType = circle.currentSegment(segPoints);

            initialPoints.add(new Float(segPoints[0]));

            initialPoints.add(new Float(segPoints[1]));




        float[] circlePoints = new float[initialPoints.size()];


        if (proj == null) {

            return null;



        //convert the x/y points to lat/lon points

        for (int p = 0; p < initialPoints.size(); p += 2) {

            LatLonPoint llp = proj.inverse(


                    ((Float)initialPoints.elementAt(p + 1)).intValue());


            circlePoints[p] = llp.getLatitude();

            circlePoints[p + 1] = llp.getLongitude();



        //using the circle data create an OMPoly

        OMPoly poly = new OMPoly(circlePoints, OMGraphic.DECIMAL_DEGREES,


        DrawingAttributes da = new DrawingAttributes();



        return poly;



[To unsubscribe to this list send an email to "majdart_at_bbn.com"
with the following text in the BODY of the message "unsubscribe openmap-users"]
Received on Mon Nov 01 2004 - 14:50:44 EST

This archive was generated by hypermail 2.3.0 : Tue Mar 28 2017 - 23:25:06 EDT