/* * Geopaparazzi - Digital field mapping on Android based devices * Copyright (C) 2010 HydroloGIS (www.hydrologis.com) * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation, either version 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package eu.geopaparazzi.spatialite.database.spatial.core; /** * Geometry types. * * @author Andrea Antonello (www.hydrologis.com) */ public enum GeometryType { /* * XY */ GEOMETRY_XY(0), // POINT_XY(1), // LINESTRING_XY(2), // POLYGON_XY(3), // MULTIPOINT_XY(4), // MULTILINESTRING_XY(5), // MULTIPOLYGON_XY(6), // GEOMETRYCOLLECTION_XY(7), // /* * XYZ */ GEOMETRY_XYZ(1000), // POINT_XYZ(1001), // LINESTRING_XYZ(1002), // POLYGON_XYZ(1003), // MULTIPOINT_XYZ(1004), // MULTILINESTRING_XYZ(1005), // MULTIPOLYGON_XYZ(1006), // GEOMETRYCOLLECTION_XYZ(1007), // /* * XYM */ GEOMETRY_XYM(2000), // POINT_XYM(2001), // LINESTRING_XYM(2002), // POLYGON_XYM(2003), // MULTIPOINT_XYM(2004), // MULTILINESTRING_XYM(2005), // MULTIPOLYGON_XYM(2006), // GEOMETRYCOLLECTION_XYM(2007), // /* * XYZM */ GEOMETRY_XYZM(3000), // POINT_XYZM(3001), // LINESTRING_XYZM(3002), // POLYGON_XYZM(3003), // MULTIPOINT_XYZM(3004), // MULTILINESTRING_XYZM(3005), // MULTIPOLYGON_XYZM(3006), // GEOMETRYCOLLECTION_XYZM(3007);// private final int type; GeometryType( int type ) { this.type = type; } public int getType() { return type; } /** * Get the type from the int value in spatialite 4. * * @param value the type. * @return the {@link GeometryType}. */ public static GeometryType forValue( int value ) { switch( value ) { case 0: return GEOMETRY_XY; case 1: return POINT_XY; case 2: return LINESTRING_XY; case 3: return POLYGON_XY; case 4: return MULTIPOINT_XY; case 5: return MULTILINESTRING_XY; case 6: return MULTIPOLYGON_XY; case 7: return GEOMETRYCOLLECTION_XY; /* * XYZ */ case 1000: return GEOMETRY_XYZ; case 1001: return POINT_XYZ; case 1002: return LINESTRING_XYZ; case 1003: return POLYGON_XYZ; case 1004: return MULTIPOINT_XYZ; case 1005: return MULTILINESTRING_XYZ; case 1006: return MULTIPOLYGON_XYZ; case 1007: return GEOMETRYCOLLECTION_XYZ; /* * XYM */ case 2000: return GEOMETRY_XYM; case 2001: return POINT_XYM; case 2002: return LINESTRING_XYM; case 2003: return POLYGON_XYM; case 2004: return MULTIPOINT_XYM; case 2005: return MULTILINESTRING_XYM; case 2006: return MULTIPOLYGON_XYM; case 2007: return GEOMETRYCOLLECTION_XYM; /* * XYZM */ case 3000: return GEOMETRY_XYZM; case 3001: return POINT_XYZM; case 3002: return LINESTRING_XYZM; case 3003: return POLYGON_XYZM; case 3004: return MULTIPOINT_XYZM; case 3005: return MULTILINESTRING_XYZM; case 3006: return MULTIPOLYGON_XYZM; case 3007: return GEOMETRYCOLLECTION_XYZM; default: break; } throw new IllegalArgumentException("No geometry type of value: " + value); } /** * Get the {@link GeometryType} int value from the geometry type name as of spatialite 3. * * <b>WARNING: this returns just the basic geom types!</b> * * @param name the geometry type name. * @return the type. */ public static int forValue( String name ) { if (name.toUpperCase().startsWith("POINT")) { return POINT_XY.getType(); } else if (name.toUpperCase().startsWith("MULTIPOINT")) { return MULTIPOINT_XY.getType(); } else if (name.toUpperCase().startsWith("LINESTRING")) { return LINESTRING_XY.getType(); } else if (name.toUpperCase().startsWith("MULTILINESTRING")) { return MULTILINESTRING_XY.getType(); } else if (name.toUpperCase().startsWith("POLYGON")) { return POLYGON_XY.getType(); } else if (name.toUpperCase().startsWith("MULTIPOLYGON")) { return MULTIPOLYGON_XY.getType(); } throw new IllegalArgumentException("No geometry type of value: " + name); } }