/** * 通过deml来生成一个椭圆 * * @param DEML中对这个椭圆的属性的描述 * @param frame DartearthAppFrame */ @Override public void buildByDEML(Element e, DartEarthAppFrame frame) { String LayerName = e.element("LayerName").getText(); Element pointList = e.element("PointList"); Iterator<Element> i = pointList.elementIterator("Point"); List<Position> positions = new ArrayList<Position>(); while (i.hasNext()) { Element el = i.next(); String lat = el.attribute("Lat").getText(); String lng = el.attribute("Lng").getText(); Position p = Position.fromDegrees(Double.valueOf(lat), Double.valueOf(lng)); positions.add(p); } String centerLat = e.element("Attributes").element("CenterPoint").attribute("Lat").getText(); String centerLng = e.element("Attributes").element("CenterPoint").attribute("Lng").getText(); String majorRadius = e.element("Attributes").element("MajorRadius").getText(); String minorRadius = e.element("Attributes").element("MinorRadius").getText(); SurfaceEllipse ellipse = new SurfaceEllipse( LatLon.fromDegrees(Double.valueOf(centerLat), Double.valueOf(centerLng)), Double.valueOf(majorRadius), Double.valueOf(minorRadius)); ShapeAttributes attrs = new BasicShapeAttributes(); attrs.setOutlineOpacity( Double.valueOf(e.element("Attributes").element("OutlineOpacity").getText())); attrs.setOutlineWidth( Double.valueOf(e.element("Attributes").element("OutlineWidth").getText())); int red = Integer.valueOf( e.element("Attributes").element("InteriorMaterial").attribute("r").getText()); int green = Integer.valueOf( e.element("Attributes").element("InteriorMaterial").attribute("g").getText()); int blue = Integer.valueOf( e.element("Attributes").element("InteriorMaterial").attribute("b").getText()); Material im = new Material(new Color(red, green, blue)); attrs.setInteriorMaterial(im); red = Integer.valueOf( e.element("Attributes").element("OutlineMaterial").attribute("r").getText()); green = Integer.valueOf( e.element("Attributes").element("OutlineMaterial").attribute("g").getText()); blue = Integer.valueOf( e.element("Attributes").element("OutlineMaterial").attribute("b").getText()); Material om = new Material(new Color(red, green, blue)); attrs.setOutlineMaterial(om); ellipse.setAttributes(attrs); EllipseLayer layer = new EllipseLayer(frame, LayerName); layer.addRenderable(ellipse); layer.setEllipse(ellipse); layer.setPositions(positions); EllipseProperPanel panel = new EllipseProperPanel(layer, frame); layer.setPanel(panel); frame.getWwd().getModel().getLayers().add(0, layer); frame.getLayerPanelDialog().getLayerPanel().update(); frame.getPropertiesDialog().show(panel, layer.getName(), layer); }