001package sec.geo.kml;
002
003//import java.util.StringTokenizer;
004
005import sec.geo.GeoPoint;
006import sec.geo.shape.Circle;
007import sec.geo.shape.Line;
008import sec.geo.shape.Orbit;
009import sec.geo.shape.Polyarc;
010import sec.geo.shape.Polygon;
011import sec.geo.shape.Radarc;
012import sec.geo.shape.Route;
013import sec.geo.shape.AExtObject;
014import sec.geo.shape.Ellipse;
015import java.util.ArrayList;
016public class XsltCoordinateWrapper {
017        public static Line getLine(String[] points, KmlOptions.AltitudeMode altitudeMode, double minAltitude, double maxAltitude) {
018                Line line = new Line();
019                line.setAltitudeMode(altitudeMode);
020                line.setMinAltitude(minAltitude);
021                line.setMaxAltitude(maxAltitude);               
022                AExtObject aext=new AExtObject(line);
023                addPoints(points, aext);
024                          return line;
025        }
026        
027        public static Circle getCircle(double pivotX, double pivotY, KmlOptions.AltitudeMode altitudeMode, double radius, double minAltitude,
028                        double maxAltitude) {
029
030                Circle circle = new Circle();
031                circle.setAltitudeMode(altitudeMode);
032                circle.setPivot(new GeoPoint(pivotX, pivotY));
033                circle.setRadius(radius);
034                circle.setMinAltitude(minAltitude);
035                circle.setMaxAltitude(maxAltitude);
036                return circle;
037        }
038        public static Ellipse getEllipse(double pivotX, double pivotY, KmlOptions.AltitudeMode altitudeMode, double semiMajor, double semiMinor, double minAltitude,
039                        double maxAltitude, double rotation) {
040
041                Ellipse ellipse = new Ellipse(semiMajor,semiMinor,rotation);
042                ellipse.setAltitudeMode(altitudeMode);
043                ellipse.setPivot(new GeoPoint(pivotX, pivotY));
044                ellipse.setMinAltitude(minAltitude);
045                ellipse.setMaxAltitude(maxAltitude);
046                return ellipse;
047        }
048        
049        public static Orbit getOrbit(double point1X, double point1Y, double point2X, double point2Y, KmlOptions.AltitudeMode altitudeMode, double width,
050                        double minAltitude, double maxAltitude) {
051                
052                Orbit orbit = new Orbit();
053                orbit.addPoint(new GeoPoint(point1X, point1Y));
054                orbit.addPoint(new GeoPoint(point2X, point2Y));
055                orbit.setAltitudeMode(altitudeMode);
056                orbit.setWidth(width);
057                orbit.setMinAltitude(minAltitude);
058                orbit.setMaxAltitude(maxAltitude);
059                
060                return orbit;
061        }
062        
063        public static Route getRoute(String[] points, KmlOptions.AltitudeMode altitudeMode, double leftWidth, double rightWidth, double minAltitude, double maxAltitude) {
064                
065                Route route = new Route();
066                //addPoints(points, route);
067                //addPoints(points, aext);
068                route.setAltitudeMode(altitudeMode);
069                route.setLeftWidth(leftWidth);
070                route.setRightWidth(rightWidth);
071                route.setMinAltitude(minAltitude);
072                route.setMaxAltitude(maxAltitude);
073                AExtObject aext=new AExtObject(route);
074                addPoints(points, aext);
075
076                return route;
077        }
078        
079        public static Polygon getPolygon(String[] points, KmlOptions.AltitudeMode altitudeMode, double minAltitude, double maxAltitude) {
080                Polygon polygon = new Polygon();
081                //addPoints(points, polygon);
082                polygon.setAltitudeMode(altitudeMode);
083                polygon.setMinAltitude(minAltitude);
084                polygon.setMaxAltitude(maxAltitude);
085                AExtObject aext=new AExtObject(polygon);
086                addPoints(points, aext);
087                return polygon;
088        }
089        
090        public static Radarc getRadarc(double pivotX, double pivotY, KmlOptions.AltitudeMode altitudeMode, double innerRadius, double outerRadius,
091                        double leftAzimuth, double rightAzimuth, double minAltitude, double maxAltitude) {
092                Radarc radarc = new Radarc();
093                radarc.setAltitudeMode(altitudeMode);
094                radarc.setPivot(new GeoPoint(pivotX, pivotY));
095                radarc.setMinRadius(innerRadius);
096                radarc.setRadius(outerRadius);
097                radarc.setLeftAzimuthDegrees(leftAzimuth);
098                radarc.setRightAzimuthDegrees(rightAzimuth);
099                radarc.setMinAltitude(minAltitude);
100                radarc.setMaxAltitude(maxAltitude);
101                
102                return radarc;
103        }
104        
105        public static Polyarc getPolyarc(String[] points, double pivotX, double pivotY, KmlOptions.AltitudeMode altitudeMode, double radius,
106                        double leftAzimuth, double rightAzimuth, double minAltitude, double maxAltitude) {
107                Polyarc polyarc = new Polyarc();
108                //addPoints(points, polyarc);
109                polyarc.setAltitudeMode(altitudeMode);
110                polyarc.setPivot(new GeoPoint(pivotX, pivotY));
111                polyarc.setRadius(radius);
112                polyarc.setLeftAzimuthDegrees(leftAzimuth);
113                polyarc.setRightAzimuthDegrees(rightAzimuth);
114                polyarc.setMinAltitude(minAltitude);
115                polyarc.setMaxAltitude(maxAltitude);
116                AExtObject aext=new AExtObject(polyarc);
117                addPoints(points,aext);
118                return polyarc;
119        }
120        
121        //==========================================================================================
122        //==========================================================================================
123        //==========================================================================================
124        
125        public static String getLineKml(String[] points, String id, String name, String description, String lineColor, String fillColor, KmlOptions.AltitudeMode altitudeMode, double minAltitude, double maxAltitude) {
126                KmlRenderer renderer = new KmlRenderer();               
127                return renderer.getKml(getLine(points, altitudeMode, minAltitude, maxAltitude), id, name, description, lineColor, fillColor);
128        
129        }
130        
131        public static String getCircleKml(double pivotX, double pivotY, String id, String name, String description, String lineColor, String fillColor, KmlOptions.AltitudeMode altitudeMode, double radius, double minAltitude,
132                        double maxAltitude) {
133                KmlRenderer renderer = new KmlRenderer();
134                return renderer.getKml(getCircle(pivotX, pivotY, altitudeMode, radius, minAltitude, maxAltitude), id, name, description, lineColor, fillColor);
135        }
136        
137        public static ArrayList<GeoPoint> getEllipsePoints(double pivotX, double pivotY, KmlOptions.AltitudeMode altitudeMode, double semiMajor, double semiMinor, double minAltitude,
138                        double maxAltitude, double rotation)
139        {
140                Ellipse ellipse=getEllipse(pivotX, pivotY, altitudeMode, semiMajor, semiMinor, minAltitude, maxAltitude, rotation); 
141                ArrayList<GeoPoint> pts=ellipse.getEllipsePoints();
142                return pts;
143        }
144        
145        public static String getOrbitKml(double point1X, double point1Y, double point2X, double point2Y, String id, String name, String description, String lineColor, String fillColor, KmlOptions.AltitudeMode altitudeMode, double width,
146                        double minAltitude, double maxAltitude) {
147                KmlRenderer renderer = new KmlRenderer();
148                return renderer.getKml(getOrbit(point1X, point1Y, point2X, point2Y, altitudeMode, width, minAltitude, maxAltitude), id, name, description, lineColor, fillColor);
149        }
150        
151        public static String getRouteKml(String[] points, String id, String name, String description, String lineColor, String fillColor, KmlOptions.AltitudeMode altitudeMode, double leftWidth, double rightWidth, double minAltitude, double maxAltitude) {
152                KmlRenderer renderer = new KmlRenderer();               
153                return renderer.getKml(getRoute(points, altitudeMode, leftWidth, rightWidth, minAltitude, maxAltitude), id, name, description, lineColor, fillColor);                           
154        }
155        
156        public static String getPolygonKml(String[] points, String id, String name, String description, String lineColor, String fillColor, KmlOptions.AltitudeMode altitudeMode, double minAltitude, double maxAltitude) {
157                KmlRenderer renderer = new KmlRenderer();
158                return renderer.getKml(getPolygon(points, altitudeMode, minAltitude, maxAltitude), id, name, description, lineColor, fillColor);
159        }
160        
161        public static String getRadarcKml(double pivotX, double pivotY, String id, String name, String description, String lineColor, String fillColor, KmlOptions.AltitudeMode altitudeMode, double innerRadius, double outerRadius,
162                        double leftAzimuth, double rightAzimuth, double minAltitude, double maxAltitude) {
163                KmlRenderer renderer = new KmlRenderer();
164                return renderer.getKml(getRadarc(pivotX, pivotY, altitudeMode, innerRadius, outerRadius, leftAzimuth, rightAzimuth, minAltitude, maxAltitude), id, name, description, lineColor, fillColor);
165        }
166        
167        public static String getPolyarcKml(String[] points, double pivotX, double pivotY, String id, String name, String description, String lineColor, String fillColor, KmlOptions.AltitudeMode altitudeMode, double radius,
168                        double leftAzimuth, double rightAzimuth, double minAltitude, double maxAltitude) {
169                KmlRenderer renderer = new KmlRenderer();
170                return renderer.getKml(getPolyarc(points, pivotX, pivotY, altitudeMode, radius, leftAzimuth, rightAzimuth, minAltitude, maxAltitude), id, name, description, lineColor, fillColor);
171        }
172        
173        
174        //==========================================================================================
175        //==========================================================================================
176        //==========================================================================================
177        
178        
179        public static String[] plotLine(String[] points, KmlOptions.AltitudeMode altitudeMode, double minAltitude, double maxAltitude) {
180                KmlRenderer renderer = new KmlRenderer();
181                return renderer.getCoords(getLine(points, altitudeMode, minAltitude, maxAltitude));
182        }
183        
184        public static String[] plotCircle(double pivotX, double pivotY, KmlOptions.AltitudeMode altitudeMode, double radius, double minAltitude,
185                        double maxAltitude) {
186                KmlRenderer renderer = new KmlRenderer();
187                return renderer.getCoords(getCircle(pivotX, pivotY, altitudeMode, radius, minAltitude, maxAltitude));
188        }
189        
190        public static String[] plotOrbit(double point1X, double point1Y, double point2X, double point2Y, KmlOptions.AltitudeMode altitudeMode, double width,
191                        double minAltitude, double maxAltitude) {
192                KmlRenderer renderer = new KmlRenderer();
193                return renderer.getCoords(getOrbit(point1X, point1Y, point2X, point2Y, altitudeMode, width, minAltitude, maxAltitude));
194        }
195        
196        public static String[] plotRoute(String[] points, KmlOptions.AltitudeMode altitudeMode, double leftWidth, double rightWidth, double minAltitude, double maxAltitude) {
197                KmlRenderer renderer = new KmlRenderer();
198                return renderer.getCoords(getRoute(points, altitudeMode, leftWidth, rightWidth, minAltitude, maxAltitude));
199        }
200        
201        public static String[] plotPolygon(String[] points, KmlOptions.AltitudeMode altitudeMode, double minAltitude, double maxAltitude) {
202                KmlRenderer renderer = new KmlRenderer();
203                return renderer.getCoords(getPolygon(points, altitudeMode, minAltitude, maxAltitude));
204        }
205        
206        public static String[] plotRadarc(double pivotX, double pivotY, KmlOptions.AltitudeMode altitudeMode, double innerRadius, double outerRadius,
207                        double leftAzimuth, double rightAzimuth, double minAltitude, double maxAltitude) {
208                KmlRenderer renderer = new KmlRenderer();
209                return renderer.getCoords(getRadarc(pivotX, pivotY, altitudeMode, innerRadius, outerRadius, leftAzimuth, rightAzimuth, minAltitude, maxAltitude));
210        }
211        
212        public static String[] plotPolyarc(String[] points, double pivotX, double pivotY, KmlOptions.AltitudeMode altitudeMode, double radius,
213                        double leftAzimuth, double rightAzimuth, double minAltitude, double maxAltitude) {
214                KmlRenderer renderer = new KmlRenderer();
215                          return renderer.getCoords(getPolyarc(points, pivotX, pivotY, altitudeMode, radius, leftAzimuth, rightAzimuth, minAltitude, maxAltitude));
216        }
217                
218        private static void addPoints(String[] points, AExtObject path) {
219            String[]coords=null;
220            for (String sPoint : points) 
221                {
222                    coords=sPoint.split(",");
223                    double longitude=Double.parseDouble(coords[0]);
224                    double latitude=Double.parseDouble(coords[1]);
225                    path.addPoint(new GeoPoint(longitude, latitude));
226                }
227        }
228}