// ********************************************************************** // // <copyright> // // BBN Technologies // 10 Moulton Street // Cambridge, MA 02138 // (617) 873-8000 // // Copyright (C) BBNT Solutions LLC. All rights reserved. // // </copyright> // ********************************************************************** // // $Source: /cvs/distapps/openmap/src/openmap/com/bbn/openmap/proj/LLXYLoader.java,v $ // $RCSfile: LLXYLoader.java,v $ // $Revision: 1.5 $ // $Date: 2008/09/19 14:20:14 $ // $Author: dietrick $ // // ********************************************************************** package com.bbn.openmap.proj; import java.awt.geom.Point2D; import java.util.Properties; import com.bbn.openmap.proj.coords.DatumShiftGCT; import com.bbn.openmap.proj.coords.LatLonPoint; import com.bbn.openmap.util.Debug; import com.bbn.openmap.util.PropUtils; /** * ProjectionLoader to add the LLXY projection to an OpenMap application. * * @see BasicProjectionLoader */ public class LLXYLoader extends BasicProjectionLoader implements ProjectionLoader { public LLXYLoader() { super(LLXY.class, LLXY.LLXYName, "Equivalent projection, used for many web data sources."); } /** * Create the projection with the given parameters. * * @throws ProjectionException if a parameter is missing or invalid */ public Projection create(Properties props) throws ProjectionException { try { LatLonPoint llp = convertToLLP((Point2D) props.get(ProjectionFactory.CENTER)); float scale = PropUtils.floatFromProperties(props, ProjectionFactory.SCALE, 10000000); int height = PropUtils.intFromProperties(props, ProjectionFactory.HEIGHT, 100); int width = PropUtils.intFromProperties(props, ProjectionFactory.WIDTH, 100); GeoProj proj = new LLXY(llp, scale, width, height); Ellipsoid ellps = (Ellipsoid) props.get(ProjectionFactory.DATUM); if ((ellps != null) && (ellps != Ellipsoid.WGS_84)) { proj = new DatumShiftProjection(proj, new DatumShiftGCT(ellps)); } return proj; } catch (Exception e) { if (Debug.debugging("proj")) { Debug.output("LLXYLoader: problem creating LLXY projection " + e.getMessage()); } } throw new ProjectionException("LLXYLoader: problem creating LLXY projection"); } }