JavaXT
|
|
MultiPolygon Classpackage javaxt.geospatial.geometry; //****************************************************************************** //** MultiPolygon Class - By Peter Borissow //****************************************************************************** /** * Enter class description * ******************************************************************************/ public class MultiPolygon implements Geometry { private java.util.Vector Polygons = new java.util.Vector(); private String srs = "EPSG:4326"; //************************************************************************** //** Creates a new instance of MultiPolygon //************************************************************************** public MultiPolygon(){ } public MultiPolygon(Polygon[] polygons){ for (int i=0; i<polygons.length; i++){ if (polygons[i]!=null) Polygons.add(polygons[i]); } } //************************************************************************** //** addPolygon //************************************************************************** //** Used to add a polygon to the MultiPolygon Geometry */ public void addPolygon(Polygon polygon){ if (polygon!=null) Polygons.add(polygon); } //************************************************************************** //** getSRS //************************************************************************** //** Sets the srs attribute for this Geometry. */ public void setSRS(String srsName){ if (srsName==null) srs = ""; else srs = srsName.trim(); } //************************************************************************** //** getSRS //************************************************************************** //** Returns the srs name of this Geometry. */ public String getSRS(){ return srs; } //************************************************************************** //** getName //************************************************************************** //** Returns the name of this Geometry. */ public String getName(){ return new Geometry.Name(this).toString(); } //************************************************************************** //** getPolygons //************************************************************************** /** Returns an array of Polygons that compose a MultiPolygon */ public Polygon[] getPolygons(){ Object[] arr = Polygons.toArray(); Polygon[] ret = new Polygon[arr.length]; for (int i=0; i<arr.length; i++){ ret[i] = (Polygon) arr[i]; } return ret; } //************************************************************************** //** toString //************************************************************************** /** Used to return a Well-known Text (WKT) representation of the polygon. */ public String toString(){ Polygon[] Polygons = getPolygons(); if (Polygons==null || Polygons.length<=0) return null; else{ StringBuffer Coordinates = new StringBuffer(); Coordinates.append("MULTIPOLYGON("); for (int i=0; i<Polygons.length; i++){ Coordinates.append("((" + Polygons[i].toString(" ", ", ") + "))"); if (i<Polygons.length-1) Coordinates.append(","); } Coordinates.append(")"); return Coordinates.toString().trim(); } } //************************************************************************** //** toGML //************************************************************************** /** Used to convert a MultiPolygon to GML (xml fragment) */ public String toGML(){ Polygon[] Polygons = getPolygons(); if (Polygons==null) return ""; else{ String srsName = " srsName=\"" + srs + "\""; if (srs.length()==0) srsName = ""; StringBuffer Coordinates = new StringBuffer(); Coordinates.append("<gml:MultiPolygon" + srsName + ">"); for (int i=0; i<Polygons.length; i++){ Polygon polygon = Polygons[i]; Coordinates.append("<gml:polygonMember>"); Coordinates.append("<gml:Polygon>"); Coordinates.append("<gml:LinearRing>"); Coordinates.append("<gml:coordinates>"); Coordinates.append(polygon.toString(",", " ")); Coordinates.append("</gml:coordinates>"); Coordinates.append("</gml:LinearRing>"); Coordinates.append("</gml:Polygon>"); Coordinates.append("</gml:polygonMember>"); } Coordinates.append("</gml:MultiPolygon>"); return Coordinates.toString().trim(); } } } |