JavaXT
|
|
MultiLine Classpackage javaxt.geospatial.geometry; //****************************************************************************** //** MultiLine Class - By Peter Borissow //****************************************************************************** /** * Enter class description * ******************************************************************************/ public class MultiLine implements Geometry { private String srs = "EPSG:4326"; private java.util.Vector Lines = new java.util.Vector(); //************************************************************************** //** Creates a new instance of MultiLine //************************************************************************** public MultiLine(){ } //************************************************************************** //** 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(); } //************************************************************************** //** addLine //************************************************************************** //** Used to add a line to the MultiLine Geometry */ public void addLine(Line line){ if (line!=null) Lines.add(line); } //************************************************************************** //** getLines //************************************************************************** //** Used to retrieve an array of lines that comprise this Geometry */ public Line[] getLines(){ Object[] arr = Lines.toArray(); Line[] ret = new Line[arr.length]; for (int i=0; i<arr.length; i++){ ret[i] = (Line) arr[i]; } return ret; } //************************************************************************** //** toString //************************************************************************** /** Used to return a Well-known Text (WKT) representation of the lines. */ public String toString(){ Line[] Lines = getLines(); if (Lines==null || Lines.length<=0) return null; else{ StringBuffer Coordinates = new StringBuffer(); Coordinates.append("MULTILINESTRING("); for (int i=0; i<Lines.length; i++){ Coordinates.append("((" + Lines[i].toString(" ", ", ") + "))"); if (i<Lines.length-1) Coordinates.append(","); } Coordinates.append(")"); return Coordinates.toString().trim(); } } //************************************************************************** //** toGML //************************************************************************** /** Used to convert a MultiLine to GML (xml fragment) */ public String toGML(){ Line[] Lines = getLines(); if (Lines==null) return ""; else{ String srsName = " srsName=\"" + srs + "\""; if (srs.length()==0) srsName = ""; StringBuffer Coordinates = new StringBuffer(); Coordinates.append("<gml:MultiLineString" + srsName + ">"); for (int i=0; i<Lines.length; i++){ Line line = Lines[i]; Coordinates.append("<gml:lineStringMember>"); Coordinates.append("<gml:LineString>"); Coordinates.append("<gml:coordinates>"); Coordinates.append(line.toString(",", " ")); Coordinates.append("</gml:coordinates>"); Coordinates.append("</gml:LineString>"); Coordinates.append("</gml:lineStringMember>"); } Coordinates.append("</gml:MultiLineString>"); return Coordinates.toString().trim(); } } } |