1 package fr.ifremer.quadrige2.core.dao.technical; 2 3 /*- 4 * #%L 5 * Quadrige2 Core :: Quadrige2 Core Shared 6 * $Id:$ 7 * $HeadURL:$ 8 * %% 9 * Copyright (C) 2017 Ifremer 10 * %% 11 * This program is free software: you can redistribute it and/or modify 12 * it under the terms of the GNU Affero General Public License as published by 13 * the Free Software Foundation, either version 3 of the License, or 14 * (at your option) any later version. 15 * 16 * This program is distributed in the hope that it will be useful, 17 * but WITHOUT ANY WARRANTY; without even the implied warranty of 18 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 19 * GNU General Public License for more details. 20 * 21 * You should have received a copy of the GNU Affero General Public License 22 * along with this program. If not, see <http://www.gnu.org/licenses/>. 23 * #L% 24 */ 25 26 27 import com.vividsolutions.jts.geom.*; 28 import com.vividsolutions.jts.io.ParseException; 29 import com.vividsolutions.jts.io.WKTReader; 30 import com.vividsolutions.jts.io.WKTWriter; 31 import fr.ifremer.quadrige2.core.exception.Quadrige2TechnicalException; 32 import org.apache.commons.logging.Log; 33 import org.apache.commons.logging.LogFactory; 34 35 /** 36 * Utility Class for Geometry 37 * <p/> 38 * Created by Ludovic on 16/04/2015. 39 */ 40 public class Geometries { 41 42 /** 43 * Logger. 44 */ 45 private static final Log log = LogFactory.getLog(Geometries.class); 46 47 /** 48 * <p>Constructor for Geometries.</p> 49 */ 50 protected Geometries() { 51 // helper class does not instantiate 52 } 53 54 private static GeometryFactory geometryFactory = new GeometryFactory(); 55 56 /** 57 * <p>createPoint.</p> 58 * 59 * @param x a {@link java.lang.Double} object. 60 * @param y a {@link java.lang.Double} object. 61 * @return a {@link com.vividsolutions.jts.geom.Point} object. 62 */ 63 public static Point createPoint(Double x, Double y) { 64 return geometryFactory.createPoint(new Coordinate(x, y)); 65 } 66 67 /** 68 * <p>createLine.</p> 69 * 70 * @param minX a {@link java.lang.Double} object. 71 * @param minY a {@link java.lang.Double} object. 72 * @param maxX a {@link java.lang.Double} object. 73 * @param maxY a {@link java.lang.Double} object. 74 * @return a {@link com.vividsolutions.jts.geom.LineString} object. 75 */ 76 public static LineString createLine(Double minX, Double minY, Double maxX, Double maxY) { 77 return geometryFactory.createLineString(new Coordinate[]{ 78 new Coordinate(minX, minY), 79 new Coordinate(maxX, maxY)}); 80 } 81 82 /** 83 * <p>createPolygon.</p> 84 * 85 * @param minX a {@link java.lang.Double} object. 86 * @param minY a {@link java.lang.Double} object. 87 * @param maxX a {@link java.lang.Double} object. 88 * @param maxY a {@link java.lang.Double} object. 89 * @return a {@link com.vividsolutions.jts.geom.Polygon} object. 90 */ 91 public static Polygon createPolygon(Double minX, Double minY, Double maxX, Double maxY) { 92 return geometryFactory.createPolygon(new Coordinate[]{ 93 new Coordinate(minX, minY), 94 new Coordinate(minX, maxY), 95 new Coordinate(maxX, maxY), 96 new Coordinate(maxX, minY), 97 new Coordinate(minX, minY)}); 98 } 99 100 /** 101 * <p>getGeometry.</p> 102 * 103 * @param wktString a {@link java.lang.String} object. 104 * @return a {@link com.vividsolutions.jts.geom.Geometry} object. 105 */ 106 public static Geometry getGeometry(String wktString) { 107 try { 108 return new WKTReader(geometryFactory).read(wktString); 109 } catch (ParseException e) { 110 log.error(e.getLocalizedMessage()); 111 throw new Quadrige2TechnicalException(e); 112 } 113 } 114 115 /** 116 * <p>getWKTString.</p> 117 * 118 * @param geometry a {@link com.vividsolutions.jts.geom.Geometry} object. 119 * @return a {@link java.lang.String} object. 120 */ 121 public static String getWKTString(Geometry geometry) { 122 return new WKTWriter().write(geometry); 123 } 124 125 }