All Downloads are FREE. Search and download functionalities are using the official Maven repository.

de.micromata.opengis.kml.v_2_2_0.Point Maven / Gradle / Ivy

Go to download

This is JavaAPIforKMml, Micromata's library for use with applications that want to parse, generate and operate on KML. It is an implementation of the OGC KML 2.2 standard. It is written entirely in Java and makes heavy use of JAXB.

There is a newer version: 3.0.4
Show newest version

package de.micromata.opengis.kml.v_2_2_0;

import de.micromata.opengis.kml.v_2_2_0.annotations.Obvious;
import jakarta.xml.bind.annotation.*;
import jakarta.xml.bind.annotation.adapters.XmlJavaTypeAdapter;

import java.util.ArrayList;
import java.util.List;


/**
 * {@code }
 * 

* A geographic location defined by longitude, latitude, and (optional) altitude. When * a Point is contained by a Placemark, the point itself determines the position of * the Placemark's name and icon. When a Point is extruded, it is connected to the * ground with a line. This "tether" uses the current LineStyle. *

*

* ThePoint element acts as aPoint inside a {@code } element. It draws an * icon to mark the position of the PhotoOverlay. The icon drawn is specified by the * {@code } and {@code } fields, just as it is for {@code }. *

* * Syntax: *
<Point id="ID">
 *   <!-- specific to Point -->
 *   <extrude>0</extrude>                        <!-- boolean -->
 *   <altitudeMode>clampToGround</altitudeMode>  
 * 	      <!-- kml:altitudeModeEnum: clampToGround, relativeToGround, or absolute -->
 *         <!-- or, substitute gx:altitudeMode: clampToSeaFloor, relativeToSeaFloor -->
 *   <coordinates>...</coordinates>              <!-- lon,lat[,alt] -->
 * </Point>
* * Extends: * * * Contained By: * * * * * */ @XmlAccessorType(XmlAccessType.FIELD) @XmlType(name = "PointType", propOrder = { "extrude", "altitudeMode", "coordinates", "pointSimpleExtension", "pointObjectExtension" }) @XmlRootElement(name = "Point", namespace = "http://www.opengis.net/kml/2.2") public class Point extends Geometry implements Cloneable { /** * {@code } *

* Boolean value. Specifies whether to connect the LineString to the ground. To extrude * a LineString, the altitude mode must be either relativeToGround, relativeToSeaFloor, * or absolute. The vertices in the LineString are extruded toward the center of the * Earth's sphere. *

*

* Boolean value. Specifies whether to connect the LinearRing to the ground. To extrude * this geometry, the altitude mode must be either relativeToGround, relativeToSeaFloor, * or absolute. Only the vertices of the LinearRing are extruded, not the center of * the geometry. The vertices are extruded toward the center of the Earth's sphere. *

*

* Boolean value. Specifies whether to connect the Polygon to the ground. To extrude * a Polygon, the altitude mode must be either relativeToGround, relativeToSeaFloor, * or absolute. Only the vertices are extruded, not the geometry itself (for example, * a rectangle turns into a box with five faces. The vertices of the Polygon are extruded * toward the center of the Earth's sphere. *

*

* Boolean value. Specifies whether to connect the point to the ground with a line. * To extrude a Point, the value for altitudeMode must be either relativeToGround, * relativeToSeaFloor, or absolute. The point is extruded toward the center of the * Earth's sphere. *

* * * */ @XmlElement(defaultValue = "0") @XmlJavaTypeAdapter(BooleanConverter.class) protected Boolean extrude; /** * AltitudeMode *

* clampToGround, relativeToGround, absolute *

* * See Also: * See LookAt and {@code } * * * */ @XmlElement(defaultValue = "clampToGround") protected AltitudeMode altitudeMode; /** * coordinates (required) *

* A single tuple consisting of floating point values for longitude, latitude, and * altitude (in that order). Longitude and latitude values are in degrees, where longitude * gteq −180 and lteq 180 latitude gteq −90 and lteq 90 altitude values (optional) are in meters * above sea level *

*

* Do not include spaces between the three values that describe a coordinate. *

*

* Two or more coordinate tuples, each consisting of floating point values for longitude, * latitude, and altitude. The altitude component is optional. Insert a space between * tuples. Do not include spaces within a tuple. *

* * * */ @XmlElement(namespace = "http://www.opengis.net/kml/2.2", type = String.class) @XmlJavaTypeAdapter(CoordinatesConverter.class) protected List coordinates; @XmlElement(name = "PointSimpleExtensionGroup") @XmlSchemaType(name = "anySimpleType") protected List pointSimpleExtension; /** * {@code } *

* This is an abstract base class and cannot be used directly in a KML file. It provides * the id attribute, which allows unique identification of a KML element, and the targetId * attribute, which is used to reference objects that have already been loaded into * Google Earth. The id attribute must be assigned if the Update mechanism is to * be used. *

* * Syntax: *
<!-- abstract element; do not create -->
     * <!-- Object id="ID" targetId="NCName" -->
     * <!-- /Object> -->
* * * */ @XmlElement(name = "PointObjectExtensionGroup") protected List pointObjectExtension; public Point() { super(); } /** * * @return * possible object is * {@link Boolean} * */ public Boolean isExtrude() { return extrude; } /** * * * @param value * allowed object is * {@link Boolean} * */ public void setExtrude(Boolean value) { this.extrude = value; } /** * * * @return * possible object is * {@code <}{@link Object}{@code >} * {@code <}{@link de.micromata.opengis.kml.v_2_2_0.AltitudeMode}{@code >} * * */ public AltitudeMode getAltitudeMode() { return altitudeMode; } /** * * * @param value * allowed object is * {@code <}{@link Object}{@code >} * {@code <}{@link de.micromata.opengis.kml.v_2_2_0.AltitudeMode}{@code >} * * */ public void setAltitudeMode(AltitudeMode value) { this.altitudeMode = value; } /** * * */ public List getPointSimpleExtension() { if (pointSimpleExtension == null) { pointSimpleExtension = new ArrayList(); } return this.pointSimpleExtension; } /** * * */ public List getPointObjectExtension() { if (pointObjectExtension == null) { pointObjectExtension = new ArrayList(); } return this.pointObjectExtension; } /** * * */ public List getCoordinates() { if (coordinates == null) { coordinates = new ArrayList(); } return coordinates; } @Override public int hashCode() { final int prime = 31; int result = super.hashCode(); result = ((prime*result)+((extrude == null)? 0 :extrude.hashCode())); result = ((prime*result)+((altitudeMode == null)? 0 :altitudeMode.hashCode())); result = ((prime*result)+((coordinates == null)? 0 :coordinates.hashCode())); result = ((prime*result)+((pointSimpleExtension == null)? 0 :pointSimpleExtension.hashCode())); result = ((prime*result)+((pointObjectExtension == null)? 0 :pointObjectExtension.hashCode())); return result; } @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (super.equals(obj) == false) { return false; } if ((obj instanceof Point) == false) { return false; } Point other = ((Point) obj); if (extrude == null) { if (other.extrude!= null) { return false; } } else { if (extrude.equals(other.extrude) == false) { return false; } } if (altitudeMode == null) { if (other.altitudeMode!= null) { return false; } } else { if (altitudeMode.equals(other.altitudeMode) == false) { return false; } } if (coordinates == null) { if (other.coordinates!= null) { return false; } } else { if (coordinates.equals(other.coordinates) == false) { return false; } } if (pointSimpleExtension == null) { if (other.pointSimpleExtension!= null) { return false; } } else { if (pointSimpleExtension.equals(other.pointSimpleExtension) == false) { return false; } } if (pointObjectExtension == null) { if (other.pointObjectExtension!= null) { return false; } } else { if (pointObjectExtension.equals(other.pointObjectExtension) == false) { return false; } } return true; } public void setCoordinates(final List coordinates) { this.coordinates = coordinates; } /** * add a value to the coordinates property collection * * @param longitude * required parameter * @param latitude * required parameter * @return * true (as general contract of Collection.add). */ public Point addToCoordinates(final double longitude, final double latitude) { this.getCoordinates().add(new Coordinate(longitude, latitude)); return this; } /** * add a value to the coordinates property collection * * @param longitude * required parameter * @param latitude * required parameter * @param altitude * required parameter * @return * true (as general contract of Collection.add). */ public Point addToCoordinates(final double longitude, final double latitude, final double altitude) { this.getCoordinates().add(new Coordinate(longitude, latitude, altitude)); return this; } /** * add a value to the coordinates property collection * * @param coordinates * required parameter * @return * true (as general contract of Collection.add). */ public Point addToCoordinates(final String coordinates) { this.getCoordinates().add(new Coordinate(coordinates)); return this; } /** * * * @param pointSimpleExtension * Objects of the following type are allowed in the list: {@link Object} */ public void setPointSimpleExtension(final List pointSimpleExtension) { this.pointSimpleExtension = pointSimpleExtension; } /** * add a value to the pointSimpleExtension property collection * * @param pointSimpleExtension * Objects of the following type are allowed in the list: {@link Object} * @return * true (as general contract of Collection.add). */ public Point addToPointSimpleExtension(final Object pointSimpleExtension) { this.getPointSimpleExtension().add(pointSimpleExtension); return this; } /** * * * @param pointObjectExtension * Objects of the following type are allowed in the list: {@link AbstractObject} */ public void setPointObjectExtension(final List pointObjectExtension) { this.pointObjectExtension = pointObjectExtension; } /** * add a value to the pointObjectExtension property collection * * @param pointObjectExtension * Objects of the following type are allowed in the list: {@link AbstractObject} * @return * true (as general contract of Collection.add). */ public Point addToPointObjectExtension(final AbstractObject pointObjectExtension) { this.getPointObjectExtension().add(pointObjectExtension); return this; } /** * * */ @Obvious @Override public void setObjectSimpleExtension(final List objectSimpleExtension) { super.setObjectSimpleExtension(objectSimpleExtension); } @Obvious @Override public Point addToObjectSimpleExtension(final Object objectSimpleExtension) { super.getObjectSimpleExtension().add(objectSimpleExtension); return this; } /** * * */ @Obvious @Override public void setGeometrySimpleExtension(final List geometrySimpleExtension) { super.setGeometrySimpleExtension(geometrySimpleExtension); } @Obvious @Override public Point addToGeometrySimpleExtension(final Object geometrySimpleExtension) { super.getGeometrySimpleExtension().add(geometrySimpleExtension); return this; } /** * * */ @Obvious @Override public void setGeometryObjectExtension(final List geometryObjectExtension) { super.setGeometryObjectExtension(geometryObjectExtension); } @Obvious @Override public Point addToGeometryObjectExtension(final AbstractObject geometryObjectExtension) { super.getGeometryObjectExtension().add(geometryObjectExtension); return this; } /** * fluent setter * * * @param extrude * required parameter */ public Point withExtrude(final Boolean extrude) { this.setExtrude(extrude); return this; } /** * fluent setter * * * @param altitudeMode * required parameter */ public Point withAltitudeMode(final AltitudeMode altitudeMode) { this.setAltitudeMode(altitudeMode); return this; } /** * fluent setter * * * @param coordinates * required parameter */ public Point withCoordinates(final List coordinates) { this.setCoordinates(coordinates); return this; } /** * fluent setter * * * @param pointSimpleExtension * required parameter */ public Point withPointSimpleExtension(final List pointSimpleExtension) { this.setPointSimpleExtension(pointSimpleExtension); return this; } /** * fluent setter * * * @param pointObjectExtension * required parameter */ public Point withPointObjectExtension(final List pointObjectExtension) { this.setPointObjectExtension(pointObjectExtension); return this; } @Obvious @Override public Point withObjectSimpleExtension(final List objectSimpleExtension) { super.withObjectSimpleExtension(objectSimpleExtension); return this; } @Obvious @Override public Point withId(final String id) { super.withId(id); return this; } @Obvious @Override public Point withTargetId(final String targetId) { super.withTargetId(targetId); return this; } @Obvious @Override public Point withGeometrySimpleExtension(final List geometrySimpleExtension) { super.withGeometrySimpleExtension(geometrySimpleExtension); return this; } @Obvious @Override public Point withGeometryObjectExtension(final List geometryObjectExtension) { super.withGeometryObjectExtension(geometryObjectExtension); return this; } /** * Creates a new instance of {@link List}{@code <}{@link Coordinate}{@code >} and set it to this.coordinates. * * This method is a short version for: * {@code * List newValue = new List(); * this.setCoordinates(newValue); } * * */ public List createAndSetCoordinates() { List newValue = new ArrayList(); this.setCoordinates(newValue); return newValue; } @Override public Point clone() { Point copy; copy = ((Point) super.clone()); copy.coordinates = new ArrayList((getCoordinates().size())); for (Coordinate iter: coordinates) { copy.coordinates.add(iter.clone()); } copy.pointSimpleExtension = new ArrayList((getPointSimpleExtension().size())); for (Object iter: pointSimpleExtension) { copy.pointSimpleExtension.add(iter); } copy.pointObjectExtension = new ArrayList((getPointObjectExtension().size())); for (AbstractObject iter: pointObjectExtension) { copy.pointObjectExtension.add(iter.clone()); } return copy; } }