1 package fr.ifremer.quadrige3.core.dao.technical;
2
3 /*-
4 * #%L
5 * Quadrige3 Core :: Quadrige3 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.quadrige3.core.exception.QuadrigeTechnicalException;
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 public static final int DEFAULT_SRID = 4326;
43
44 /**
45 * Logger.
46 */
47 private static final Log log = LogFactory.getLog(Geometries.class);
48
49 /**
50 * <p>Constructor for Geometries.</p>
51 */
52 protected Geometries() {
53 // helper class does not instantiate
54 }
55
56 private static final GeometryFactory geometryFactory = new GeometryFactory();
57
58 /**
59 * <p>createPoint.</p>
60 *
61 * @param x a {@link java.lang.Double} object.
62 * @param y a {@link java.lang.Double} object.
63 * @return a {@link com.vividsolutions.jts.geom.Point} object.
64 */
65 public static Point createPoint(Double x, Double y) {
66 return geometryFactory.createPoint(new Coordinate(x, y));
67 }
68
69 /**
70 * <p>createLine.</p>
71 *
72 * @param minX a {@link java.lang.Double} object.
73 * @param minY a {@link java.lang.Double} object.
74 * @param maxX a {@link java.lang.Double} object.
75 * @param maxY a {@link java.lang.Double} object.
76 * @return a {@link com.vividsolutions.jts.geom.LineString} object.
77 */
78 public static LineString createLine(Double minX, Double minY, Double maxX, Double maxY) {
79 return geometryFactory.createLineString(new Coordinate[]{
80 new Coordinate(minX, minY),
81 new Coordinate(maxX, maxY)});
82 }
83
84 /**
85 * <p>createPolygon.</p>
86 *
87 * @param minX a {@link java.lang.Double} object.
88 * @param minY a {@link java.lang.Double} object.
89 * @param maxX a {@link java.lang.Double} object.
90 * @param maxY a {@link java.lang.Double} object.
91 * @return a {@link com.vividsolutions.jts.geom.Polygon} object.
92 */
93 public static Polygon createPolygon(Double minX, Double minY, Double maxX, Double maxY) {
94 return geometryFactory.createPolygon(new Coordinate[]{
95 new Coordinate(minX, minY),
96 new Coordinate(minX, maxY),
97 new Coordinate(maxX, maxY),
98 new Coordinate(maxX, minY),
99 new Coordinate(minX, minY)});
100 }
101
102 /**
103 * <p>getGeometry.</p>
104 *
105 * @param wktString a {@link java.lang.String} object.
106 * @return a {@link com.vividsolutions.jts.geom.Geometry} object.
107 */
108 public static Geometry getGeometry(String wktString) {
109 try {
110 return new WKTReader(geometryFactory).read(wktString);
111 } catch (ParseException e) {
112 log.error(e.getLocalizedMessage());
113 throw new QuadrigeTechnicalException(e);
114 }
115 }
116
117 /**
118 * <p>getWKTString.</p>
119 *
120 * @param geometry a {@link com.vividsolutions.jts.geom.Geometry} object.
121 * @return a {@link java.lang.String} object.
122 */
123 public static String getWKTString(Geometry geometry) {
124 return new WKTWriter().write(geometry);
125 }
126
127 }