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}