Subversion Repositories mkgmap

Rev

Rev 3408 | View as "text/plain" | Blame | Compare with Previous | Last modification | View Log | RSS feed

package uk.me.parabola.mkgmap.osmstyle.function;

import java.text.DecimalFormat;
import java.text.DecimalFormatSymbols;
import java.util.Locale;

import uk.me.parabola.mkgmap.reader.osm.Element;
import uk.me.parabola.mkgmap.reader.osm.MultiPolygonRelation;
import uk.me.parabola.mkgmap.reader.osm.Way;

/**
 * Calculates the area size of a polygon in garmin units ^ 2.
 * @author WanMil
 */

public class AreaSizeFunction extends CachedFunction {

        private final DecimalFormat nf = new DecimalFormat("0.0#####################", DecimalFormatSymbols.getInstance(Locale.US));

        public AreaSizeFunction() {
                super(null);
        }

        protected String calcImpl(Element el) {
                if (el instanceof Way) {
                        Way w = (Way)el;
                        // a non closed way has size 0
                        if (w.hasEqualEndPoints() == false) {
                                return "0";
                        }
                        return nf.format(MultiPolygonRelation.calcAreaSize(((Way) el).getPoints()));
                }
                return null;
        }

        public String getName() {
                return "area_size";
        }
       
        public boolean supportsWay() {
                return true;
        }

}