Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.compat.cdc / org.gvsig.fmap.geometry / org.gvsig.fmap.geometry.jts / src / main / java / org / gvsig / fmap / geom / jts / DefaultGeometryLibrary.java @ 45634

History | View | Annotate | Download (19 KB)

1
/**
2
 * gvSIG. Desktop Geographic Information System.
3
 *
4
 * Copyright (C) 2007-2013 gvSIG Association.
5
 *
6
 * This program is free software; you can redistribute it and/or
7
 * modify it under the terms of the GNU General Public License
8
 * as published by the Free Software Foundation; either version 3
9
 * of the License, or (at your option) any later version.
10
 *
11
 * This program is distributed in the hope that it will be useful,
12
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14
 * GNU General Public License for more details.
15
 *
16
 * You should have received a copy of the GNU General Public License
17
 * along with this program; if not, write to the Free Software
18
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston,
19
 * MA  02110-1301, USA.
20
 *
21
 * For any additional information, do not hesitate to contact us
22
 * at info AT gvsig.com, or visit our website www.gvsig.com.
23
 */
24

    
25
package org.gvsig.fmap.geom.jts;
26

    
27
import org.gvsig.fmap.geom.DataTypes;
28
import org.gvsig.fmap.geom.Geometry.SUBTYPES;
29
import org.gvsig.fmap.geom.Geometry.TYPES;
30
import org.gvsig.fmap.geom.GeometryLibrary;
31
import org.gvsig.fmap.geom.GeometryLocator;
32
import org.gvsig.fmap.geom.GeometryManager;
33
import org.gvsig.fmap.geom.jts.aggregate.DefaultMultiCurve;
34
import org.gvsig.fmap.geom.jts.aggregate.DefaultMultiSurface;
35
import org.gvsig.fmap.geom.jts.aggregate.MultiLine2D;
36
import org.gvsig.fmap.geom.jts.aggregate.MultiLine2DM;
37
import org.gvsig.fmap.geom.jts.aggregate.MultiLine3D;
38
import org.gvsig.fmap.geom.jts.aggregate.MultiLine3DM;
39
import org.gvsig.fmap.geom.jts.aggregate.MultiPoint2D;
40
import org.gvsig.fmap.geom.jts.aggregate.MultiPoint2DM;
41
import org.gvsig.fmap.geom.jts.aggregate.MultiPoint3D;
42
import org.gvsig.fmap.geom.jts.aggregate.MultiPoint3DM;
43
import org.gvsig.fmap.geom.jts.aggregate.MultiPolygon2D;
44
import org.gvsig.fmap.geom.jts.aggregate.MultiPolygon2DM;
45
import org.gvsig.fmap.geom.jts.aggregate.MultiPolygon3D;
46
import org.gvsig.fmap.geom.jts.aggregate.MultiPolygon3DM;
47
import org.gvsig.fmap.geom.jts.coerce.CoerceToByteArray;
48
import org.gvsig.fmap.geom.jts.coerce.CoerceToEnvelope;
49
import org.gvsig.fmap.geom.jts.coerce.CoerceToGeometry;
50
import org.gvsig.fmap.geom.jts.coerce.CoerceToString;
51
import org.gvsig.fmap.geom.jts.json.GeometryTypeJsonSerializer;
52
import org.gvsig.fmap.geom.jts.operation.fromjts.FromJTS;
53
import org.gvsig.fmap.geom.jts.operation.fromwkb.FromPostGISEWKB;
54
import org.gvsig.fmap.geom.jts.operation.fromwkb.FromWKB;
55
import org.gvsig.fmap.geom.jts.operation.fromwkt.FromWKT;
56
import org.gvsig.fmap.geom.jts.operation.tojts.ToJTS;
57
import org.gvsig.fmap.geom.jts.operation.towkb.ToPostGISEWKB;
58
import org.gvsig.fmap.geom.jts.operation.towkb.ToOGCWKB;
59
import org.gvsig.fmap.geom.jts.operation.towkt.ToWKT;
60
import org.gvsig.fmap.geom.jts.persistence.GeometryPersistenceFactory;
61
import org.gvsig.fmap.geom.jts.persistence.GeometryTypePersistenceFactory;
62
import org.gvsig.fmap.geom.jts.primitive.DefaultEnvelope;
63
import org.gvsig.fmap.geom.jts.primitive.DefaultNullGeometry;
64
import org.gvsig.fmap.geom.jts.primitive.Envelope2D;
65
import org.gvsig.fmap.geom.jts.primitive.Envelope3D;
66
import org.gvsig.fmap.geom.jts.primitive.Geometry2D;
67
import org.gvsig.fmap.geom.jts.primitive.Geometry2DM;
68
import org.gvsig.fmap.geom.jts.primitive.Geometry3D;
69
import org.gvsig.fmap.geom.jts.primitive.Geometry3DM;
70
import org.gvsig.fmap.geom.jts.primitive.curve.arc.Arc2D;
71
import org.gvsig.fmap.geom.jts.primitive.curve.arc.Arc2DZ;
72
import org.gvsig.fmap.geom.jts.primitive.curve.circumference.Circumference2D;
73
import org.gvsig.fmap.geom.jts.primitive.curve.circumference.Circumference2DZ;
74
import org.gvsig.fmap.geom.jts.primitive.curve.line.Line2D;
75
import org.gvsig.fmap.geom.jts.primitive.curve.line.Line2DM;
76
import org.gvsig.fmap.geom.jts.primitive.curve.line.Line3D;
77
import org.gvsig.fmap.geom.jts.primitive.curve.line.Line3DM;
78
import org.gvsig.fmap.geom.jts.primitive.curve.periellipse.PeriEllipse2D;
79
import org.gvsig.fmap.geom.jts.primitive.curve.periellipse.PeriEllipse2DZ;
80
import org.gvsig.fmap.geom.jts.primitive.curve.spline.Spline2D;
81
import org.gvsig.fmap.geom.jts.primitive.curve.spline.Spline2DM;
82
import org.gvsig.fmap.geom.jts.primitive.curve.spline.Spline3D;
83
import org.gvsig.fmap.geom.jts.primitive.curve.spline.Spline3DM;
84
import org.gvsig.fmap.geom.jts.primitive.point.Point2DGeometryType;
85
import org.gvsig.fmap.geom.jts.primitive.point.Point2DM;
86
import org.gvsig.fmap.geom.jts.primitive.point.Point3DGeometryType;
87
import org.gvsig.fmap.geom.jts.primitive.point.Point3DM;
88
import org.gvsig.fmap.geom.jts.primitive.ring.Ring2D;
89
import org.gvsig.fmap.geom.jts.primitive.ring.Ring2DM;
90
import org.gvsig.fmap.geom.jts.primitive.ring.Ring3D;
91
import org.gvsig.fmap.geom.jts.primitive.ring.Ring3DM;
92
import org.gvsig.fmap.geom.jts.primitive.surface.circle.Circle2D;
93
import org.gvsig.fmap.geom.jts.primitive.surface.circle.Circle2DZ;
94
import org.gvsig.fmap.geom.jts.primitive.surface.ellipse.Ellipse2D;
95
import org.gvsig.fmap.geom.jts.primitive.surface.ellipse.Ellipse2DZ;
96
import org.gvsig.fmap.geom.jts.primitive.surface.ellipticarc.EllipticArc2D;
97
import org.gvsig.fmap.geom.jts.primitive.surface.ellipticarc.EllipticArc2DZ;
98
import org.gvsig.fmap.geom.jts.primitive.surface.filledspline.FilledSpline2D;
99
import org.gvsig.fmap.geom.jts.primitive.surface.filledspline.FilledSpline2DM;
100
import org.gvsig.fmap.geom.jts.primitive.surface.filledspline.FilledSpline3D;
101
import org.gvsig.fmap.geom.jts.primitive.surface.filledspline.FilledSpline3DM;
102
import org.gvsig.fmap.geom.jts.primitive.surface.polygon.Polygon2D;
103
import org.gvsig.fmap.geom.jts.primitive.surface.polygon.Polygon2DM;
104
import org.gvsig.fmap.geom.jts.primitive.surface.polygon.Polygon3D;
105
import org.gvsig.fmap.geom.jts.primitive.surface.polygon.Polygon3DM;
106
import org.gvsig.fmap.geom.operation.GeometryOperation;
107
import org.gvsig.json.Json;
108
import org.gvsig.tools.ToolsLocator;
109
import org.gvsig.tools.dataTypes.DataTypesManager;
110
import org.gvsig.tools.library.AbstractLibrary;
111
import org.gvsig.tools.library.LibraryException;
112
import org.gvsig.tools.persistence.PersistenceManager;
113

    
114
/**
115
 * Registers the default implementation for {@link GeometryManager}
116
 *
117
 * @author <a href="mailto:jpiera@gvsig.org">Jorge Piera</a>
118
 */
119
public class DefaultGeometryLibrary extends AbstractLibrary {
120

    
121
    @Override
122
    public void doRegistration() {
123
        registerAsImplementationOf(GeometryLibrary.class);
124
    }
125

    
126
    @Override
127
    protected void doInitialize() throws LibraryException {
128
        // Register the default GeometryManager
129
        GeometryLocator.registerGeometryManager(DefaultGeometryManager.class);
130
    }
131

    
132
    @Override
133
    protected void doPostInitialize() throws LibraryException {
134

    
135
        GeometryManager geometryManager = GeometryLocator.getGeometryManager();
136

    
137
        DataTypesManager dataTypesManager = ToolsLocator.getDataTypesManager();
138

    
139
        dataTypesManager.addCoercion(DataTypes.GEOMETRY, new CoerceToGeometry());
140
        dataTypesManager.addCoercion(DataTypes.ENVELOPE, new CoerceToEnvelope());
141
        dataTypesManager.addCoercion(DataTypes.STRING, new CoerceToString());
142
        dataTypesManager.addCoercion(DataTypes.BYTEARRAY,new CoerceToByteArray());
143

    
144
        GeometryOperation.OPERATION_INTERSECTS_CODE =
145
            geometryManager.getGeometryOperationCode(GeometryOperation.OPERATION_INTERSECTS_NAME);
146

    
147
        GeometryOperation.OPERATION_CONTAINS_CODE =
148
            geometryManager.getGeometryOperationCode(GeometryOperation.OPERATION_CONTAINS_NAME);
149

    
150
        // Register the geometries in 2D
151
        geometryManager.registerGeometryType(DefaultNullGeometry.class, "Null", TYPES.NULL, SUBTYPES.GEOM2D);
152

    
153
        geometryManager.registerGeometryType(Geometry2D.class, "Geometry2D", TYPES.UNKNOWN, SUBTYPES.UNKNOWN);
154
        
155
        geometryManager.registerGeometryType(Geometry2D.class, "Geometry2D", TYPES.UNKNOWN, SUBTYPES.GEOM2D);
156
        geometryManager.registerGeometryType(Geometry3D.class, "Geometry3D", TYPES.UNKNOWN, SUBTYPES.GEOM3D);
157
        geometryManager.registerGeometryType(Geometry2DM.class, "Geometry2DM", TYPES.UNKNOWN, SUBTYPES.GEOM2DM);
158
        geometryManager.registerGeometryType(Geometry3DM.class, "Geometry3DM", TYPES.UNKNOWN, SUBTYPES.GEOM3DM);
159

    
160
        geometryManager.registerGeometryType(Geometry2D.class, "Geometry2D", TYPES.GEOMETRY, SUBTYPES.GEOM2D);
161
        geometryManager.registerGeometryType(Geometry3D.class, "Geometry3D", TYPES.GEOMETRY, SUBTYPES.GEOM3D);
162
        geometryManager.registerGeometryType(Geometry2DM.class, "Geometry2DM", TYPES.GEOMETRY, SUBTYPES.GEOM2DM);
163
        geometryManager.registerGeometryType(Geometry3DM.class, "Geometry3DM", TYPES.GEOMETRY, SUBTYPES.GEOM3DM);
164

    
165
        // Register points in 2D
166
        geometryManager.registerGeometryType(new Point2DGeometryType());
167
//        geometryManager.registerGeometryType(Point2D.class, "Point2D", TYPES.POINT, SUBTYPES.GEOM2D);
168
        geometryManager.registerGeometryType(Point2DM.class, "Point2DM", TYPES.POINT, SUBTYPES.GEOM2DM);
169

    
170
        // Register curves in 2D
171
        geometryManager.registerGeometryType(Line2D.class, "Line2D", TYPES.LINE, SUBTYPES.GEOM2D, TYPES.CURVE);
172
        geometryManager.registerGeometryType(Line2D.class, "Curve2D", TYPES.CURVE, SUBTYPES.GEOM2D, TYPES.CURVE);
173
        geometryManager.registerGeometryType(Arc2D.class, "Arc2D", TYPES.ARC, SUBTYPES.GEOM2D, TYPES.CURVE);
174
        geometryManager.registerGeometryType(Spline2D.class, "Spline2D", TYPES.SPLINE, SUBTYPES.GEOM2D, TYPES.CURVE);
175
        geometryManager.registerGeometryType(Circumference2D.class, "Circumference2D", TYPES.CIRCUMFERENCE, SUBTYPES.GEOM2D, TYPES.CURVE);
176
        geometryManager.registerGeometryType(PeriEllipse2D.class, "PeriEllipse2D", TYPES.PERIELLIPSE, SUBTYPES.GEOM2D, TYPES.CURVE);
177

    
178
        // Register surfaces in 2D
179
        geometryManager.registerGeometryType(Polygon2D.class, "Polygon2D", TYPES.POLYGON, SUBTYPES.GEOM2D, TYPES.SURFACE);
180
        geometryManager.registerGeometryType(Polygon2D.class, "Surface2D", TYPES.SURFACE, SUBTYPES.GEOM2D, TYPES.SURFACE);
181

    
182
        geometryManager.registerGeometryType(Circle2D.class, "Circle2D", TYPES.CIRCLE, SUBTYPES.GEOM2D, TYPES.SURFACE);
183
        geometryManager.registerGeometryType(Ellipse2D.class, "Ellipse2D", TYPES.ELLIPSE, SUBTYPES.GEOM2D, TYPES.SURFACE);
184
        geometryManager.registerGeometryType(Ring2D.class, "Ring2D", TYPES.RING, SUBTYPES.GEOM2D, TYPES.SURFACE);
185
        geometryManager.registerGeometryType(FilledSpline2D.class, "FilledSpline2D", TYPES.FILLEDSPLINE, SUBTYPES.GEOM2D, TYPES.SURFACE);
186
        geometryManager.registerGeometryType(EllipticArc2D.class, "EllipticArc2D", TYPES.ELLIPTICARC, SUBTYPES.GEOM2D, TYPES.SURFACE);
187

    
188
        // Register curves in 2DM
189
        geometryManager.registerGeometryType(Line2DM.class, "Line2DM", TYPES.LINE, SUBTYPES.GEOM2DM, TYPES.CURVE);
190
        geometryManager.registerGeometryType(Line2DM.class, "Curve2DM", TYPES.CURVE, SUBTYPES.GEOM2DM, TYPES.CURVE);
191
        geometryManager.registerGeometryType(Spline2DM.class, "Spline2DM", TYPES.SPLINE, SUBTYPES.GEOM2DM, TYPES.CURVE);
192

    
193
        // Register surfaces in 2DM
194
        geometryManager.registerGeometryType(Polygon2DM.class, "Polygon2DM", TYPES.POLYGON, SUBTYPES.GEOM2DM, TYPES.SURFACE);
195
        geometryManager.registerGeometryType(Polygon2DM.class, "Surface2DM", TYPES.SURFACE, SUBTYPES.GEOM2DM, TYPES.SURFACE);
196
        geometryManager.registerGeometryType(Ring2DM.class, "Ring2DM", TYPES.RING, SUBTYPES.GEOM2DM, TYPES.SURFACE);
197
        geometryManager.registerGeometryType(FilledSpline2DM.class, "FilledSpline2DM", TYPES.FILLEDSPLINE, SUBTYPES.GEOM2DM, TYPES.SURFACE);
198

    
199
        // Register multigeometries in 2D
200
//        geometryManager.registerGeometryType(BaseMultiPrimitive2D.class, "MultiPrimitive2D", TYPES.AGGREGATE,
201
//            SUBTYPES.GEOM2D);
202
        geometryManager.registerGeometryType(MultiPoint2D.class, "MultiPoint2D", TYPES.MULTIPOINT, SUBTYPES.GEOM2D, TYPES.AGGREGATE);
203
        geometryManager.registerGeometryType(DefaultMultiCurve.class, "MultiCurve", TYPES.MULTICURVE, SUBTYPES.GEOM2D, TYPES.AGGREGATE);
204
        geometryManager.registerGeometryType(MultiLine2D.class, "MultiLine2D", TYPES.MULTILINE, SUBTYPES.GEOM2D, new int[]{TYPES.AGGREGATE, TYPES.MULTICURVE});
205
        geometryManager.registerGeometryType(DefaultMultiSurface.class, "MultiSurface", TYPES.MULTISURFACE, SUBTYPES.GEOM2D, TYPES.AGGREGATE);
206
        geometryManager.registerGeometryType(MultiPolygon2D.class, "MultiPolygon2D", TYPES.MULTIPOLYGON, SUBTYPES.GEOM2D, new int[]{TYPES.AGGREGATE, TYPES.MULTISURFACE});
207

    
208
        // Register multigeometries in 2DM
209
        geometryManager.registerGeometryType(MultiPoint2DM.class, "MultiPoint2DM", TYPES.MULTIPOINT, SUBTYPES.GEOM2DM, TYPES.AGGREGATE);
210
        geometryManager.registerGeometryType(DefaultMultiCurve.class, "MultiCurve", TYPES.MULTICURVE, SUBTYPES.GEOM2DM, TYPES.AGGREGATE);
211
        geometryManager.registerGeometryType(MultiLine2DM.class, "MultiLine2DM", TYPES.MULTILINE, SUBTYPES.GEOM2DM, new int[]{TYPES.AGGREGATE, TYPES.MULTICURVE});
212
        geometryManager.registerGeometryType(DefaultMultiSurface.class, "MultiSurface", TYPES.MULTISURFACE, SUBTYPES.GEOM2DM, TYPES.AGGREGATE);
213
        geometryManager.registerGeometryType(MultiPolygon2DM.class, "MultiPolygon2DM", TYPES.MULTIPOLYGON, SUBTYPES.GEOM2DM, new int[]{TYPES.AGGREGATE, TYPES.MULTISURFACE});
214

    
215
        // Register the geometries in 3D
216
        geometryManager.registerGeometryType(DefaultNullGeometry.class, TYPES.NULL, SUBTYPES.GEOM3D);
217

    
218
        // Register points in 3D
219
        geometryManager.registerGeometryType(new Point3DGeometryType());
220
//        geometryManager.registerGeometryType(Point3D.class, "Point3D", TYPES.POINT, SUBTYPES.GEOM3D);
221
        geometryManager.registerGeometryType(Point3DM.class, "Point3DM", TYPES.POINT, SUBTYPES.GEOM3DM);
222

    
223
        // Register curves in 3D
224
        geometryManager.registerGeometryType(Line3D.class, "Line3D", TYPES.LINE, SUBTYPES.GEOM3D, TYPES.CURVE);
225
        geometryManager.registerGeometryType(Line3D.class, "Curve3D", TYPES.CURVE, SUBTYPES.GEOM3D, TYPES.CURVE);
226
        geometryManager.registerGeometryType(Arc2DZ.class, "Arc3D", TYPES.ARC, SUBTYPES.GEOM3D, TYPES.CURVE);
227
        geometryManager.registerGeometryType(Spline3D.class, "Spline3D", TYPES.SPLINE, SUBTYPES.GEOM3D, TYPES.CURVE);
228
        geometryManager.registerGeometryType(Circumference2DZ.class, "Circumference2DZ", TYPES.CIRCUMFERENCE, SUBTYPES.GEOM3D, TYPES.CURVE);
229
        geometryManager.registerGeometryType(PeriEllipse2DZ.class, "PeriEllipse2DZ", TYPES.PERIELLIPSE, SUBTYPES.GEOM3D, TYPES.CURVE);
230

    
231
        // Register surfaces in 3D
232
        geometryManager.registerGeometryType(Polygon3D.class, "Polygon3D", TYPES.POLYGON, SUBTYPES.GEOM3D, TYPES.SURFACE);
233
        geometryManager.registerGeometryType(Polygon3D.class, "Surface3D", TYPES.SURFACE, SUBTYPES.GEOM3D, TYPES.SURFACE);
234
        geometryManager.registerGeometryType(Ring3D.class, "Ring3D", TYPES.RING, SUBTYPES.GEOM3D, TYPES.SURFACE);
235
        geometryManager.registerGeometryType(FilledSpline3D.class, "FilledSpline3D", TYPES.FILLEDSPLINE, SUBTYPES.GEOM3D, TYPES.SURFACE);
236

    
237
        geometryManager.registerGeometryType(Circle2DZ.class, "Circle2DZ", TYPES.CIRCLE, SUBTYPES.GEOM3D, TYPES.SURFACE);
238
        geometryManager.registerGeometryType(Ellipse2DZ.class, "Ellipse2DZ", TYPES.ELLIPSE, SUBTYPES.GEOM3D, TYPES.SURFACE);
239

    
240
        geometryManager.registerGeometryType(EllipticArc2DZ.class, "EllipticArc3D", TYPES.ELLIPTICARC, SUBTYPES.GEOM3D, TYPES.SURFACE);
241

    
242
        // Register curves in 3DM
243
        geometryManager.registerGeometryType(Line3DM.class, "Line3DM", TYPES.LINE, SUBTYPES.GEOM3DM, TYPES.CURVE);
244
        geometryManager.registerGeometryType(Line3DM.class, "Curve3DM", TYPES.CURVE, SUBTYPES.GEOM3DM, TYPES.CURVE);
245
        geometryManager.registerGeometryType(Spline3DM.class, "Spline3DM", TYPES.SPLINE, SUBTYPES.GEOM3DM, TYPES.CURVE);
246

    
247
        // Register surfaces in 3DM
248
        geometryManager.registerGeometryType(Polygon3DM.class, "Polygon3DM", TYPES.POLYGON, SUBTYPES.GEOM3DM, TYPES.SURFACE);
249
        geometryManager.registerGeometryType(Polygon3DM.class, "Surface3DM", TYPES.SURFACE, SUBTYPES.GEOM3DM, TYPES.SURFACE);
250
        geometryManager.registerGeometryType(Ring3DM.class, "Ring3DM", TYPES.RING, SUBTYPES.GEOM3DM, TYPES.SURFACE);
251
        geometryManager.registerGeometryType(FilledSpline3DM.class, "FilledSpline3DM", TYPES.FILLEDSPLINE, SUBTYPES.GEOM3DM, TYPES.SURFACE);
252

    
253

    
254
        // Register multigeometries in 3D
255
        geometryManager.registerGeometryType(MultiPoint3D.class, "MultiPoint3D", TYPES.MULTIPOINT, SUBTYPES.GEOM3D, TYPES.AGGREGATE);
256
        geometryManager.registerGeometryType(DefaultMultiCurve.class, "MultiCurve", TYPES.MULTICURVE, SUBTYPES.GEOM3D, TYPES.AGGREGATE);
257
        geometryManager.registerGeometryType(MultiLine3D.class, "MultiLine3D", TYPES.MULTILINE, SUBTYPES.GEOM3D, new int[]{TYPES.AGGREGATE, TYPES.MULTICURVE});
258
        geometryManager.registerGeometryType(DefaultMultiSurface.class, "MultiSurface", TYPES.MULTISURFACE, SUBTYPES.GEOM3D, TYPES.AGGREGATE);
259
        geometryManager.registerGeometryType(MultiPolygon3D.class, "MultiPolygon3D", TYPES.MULTIPOLYGON, SUBTYPES.GEOM3D, new int[]{TYPES.AGGREGATE, TYPES.MULTISURFACE});
260

    
261
        // Register multigeometries in 3DM
262
        geometryManager.registerGeometryType(MultiPoint3DM.class, "MultiPoint3DM", TYPES.MULTIPOINT, SUBTYPES.GEOM3DM, TYPES.AGGREGATE);
263
        geometryManager.registerGeometryType(DefaultMultiCurve.class, "MultiCurve", TYPES.MULTICURVE, SUBTYPES.GEOM3DM, TYPES.AGGREGATE);
264
        geometryManager.registerGeometryType(MultiLine3DM.class, "MultiLine3DM", TYPES.MULTILINE, SUBTYPES.GEOM3DM, new int[]{TYPES.AGGREGATE, TYPES.MULTICURVE});
265
        geometryManager.registerGeometryType(DefaultMultiSurface.class, "MultiSurface", TYPES.MULTISURFACE, SUBTYPES.GEOM3DM, TYPES.AGGREGATE);
266
        geometryManager.registerGeometryType(MultiPolygon3DM.class, "MultiPolygon3DM", TYPES.MULTIPOLYGON, SUBTYPES.GEOM3DM, new int[]{TYPES.AGGREGATE, TYPES.MULTISURFACE});
267

    
268
        // Register solids
269
//        geometryManager.registerGeometryType(Solid2DZ.class, "Solid3D", TYPES.SOLID, SUBTYPES.GEOM3D);
270
//        geometryManager.registerGeometryType(MultiSolid2DZ.class, "MultiSolid3D", TYPES.MULTISOLID, SUBTYPES.GEOM3D,
271
//            TYPES.AGGREGATE);
272

    
273
        // Persistence
274
        DefaultEnvelope.registerPersistent();
275
        Envelope2D.registerPersistent();
276
        Envelope3D.registerPersistent();
277

    
278
        PersistenceManager persistenceManager = ToolsLocator.getPersistenceManager();
279

    
280
        persistenceManager.registerFactory(new GeometryPersistenceFactory());
281
        persistenceManager.registerFactory(new GeometryTypePersistenceFactory());
282

    
283
        geometryManager.registerGeometryOperation(ToJTS.NAME, new ToJTS());
284
        geometryManager.registerGeometryOperation(FromJTS.NAME, new FromJTS());
285
        geometryManager.registerGeometryOperation(ToPostGISEWKB.NAME, new ToPostGISEWKB());
286
        geometryManager.registerGeometryOperation(FromWKB.NAME, new FromWKB());
287
        geometryManager.registerGeometryOperation(FromPostGISEWKB.NAME, new FromPostGISEWKB());
288
        geometryManager.registerGeometryOperation(ToOGCWKB.NAME, new ToOGCWKB());
289
        geometryManager.registerGeometryOperation(ToWKT.NAME, new ToWKT());
290
        geometryManager.registerGeometryOperation(FromWKT.NAME, new FromWKT());
291
        
292
        Json.registerSerializer(new GeometryTypeJsonSerializer());
293
    }
294
}