Java源码示例:mil.nga.sf.MultiLineString

示例1
/**
 * Test the MultiLineString conversion
 * 
 * @param converter
 * @param multiLineString
 */
private static void convertMultiLineString(
		GoogleMapShapeConverter converter, MultiLineString multiLineString) {

	MultiPolylineOptions polylines = converter.toPolylines(multiLineString);
	TestCase.assertNotNull(polylines);
	TestCase.assertFalse(polylines.getPolylineOptions().isEmpty());

	List<LineString> lineStrings = multiLineString.getLineStrings();
	compareLineStringsAndPolylines(converter, lineStrings,
			polylines.getPolylineOptions());

	MultiLineString multiLineString2 = converter
			.toMultiLineStringFromOptions(polylines);
	compareLineStrings(lineStrings, multiLineString2.getLineStrings());
}
 
示例2
/**
 * Convert a {@link MultiLineString} to a {@link MultiPolylineOptions}
 *
 * @param multiLineString multi line string
 * @return multi polyline options
 */
public MultiPolylineOptions toPolylines(MultiLineString multiLineString) {

    MultiPolylineOptions polylines = new MultiPolylineOptions();

    for (LineString lineString : multiLineString.getLineStrings()) {
        PolylineOptions polyline = toPolyline(lineString);
        polylines.add(polyline);
    }

    return polylines;
}
 
示例3
/**
 * Convert a list of {@link Polyline} to a {@link MultiLineString}
 *
 * @param polylineList polyline list
 * @param hasZ         has z flag
 * @param hasM         has m flag
 * @return multi line string
 */
public MultiLineString toMultiLineString(List<Polyline> polylineList,
                                         boolean hasZ, boolean hasM) {

    MultiLineString multiLineString = new MultiLineString(hasZ, hasM);

    for (Polyline polyline : polylineList) {
        LineString lineString = toLineString(polyline);
        multiLineString.addLineString(lineString);
    }

    return multiLineString;
}
 
示例4
/**
 * Convert a list of List<LatLng> to a {@link MultiLineString}
 *
 * @param polylineList polyline list
 * @param hasZ         has z flag
 * @param hasM         has m flag
 * @return multi line string
 */
public MultiLineString toMultiLineStringFromList(
        List<List<LatLng>> polylineList, boolean hasZ, boolean hasM) {

    MultiLineString multiLineString = new MultiLineString(hasZ, hasM);

    for (List<LatLng> polyline : polylineList) {
        LineString lineString = toLineString(polyline);
        multiLineString.addLineString(lineString);
    }

    return multiLineString;
}
 
示例5
/**
 * Convert a {@link MultiPolylineOptions} to a {@link MultiLineString}
 *
 * @param multiPolylineOptions multi polyline options
 * @param hasZ                 has z flag
 * @param hasM                 has m flag
 * @return multi line string
 */
public MultiLineString toMultiLineStringFromOptions(
        MultiPolylineOptions multiPolylineOptions, boolean hasZ,
        boolean hasM) {

    MultiLineString multiLineString = new MultiLineString(hasZ, hasM);

    for (PolylineOptions polyline : multiPolylineOptions
            .getPolylineOptions()) {
        LineString lineString = toLineString(polyline);
        multiLineString.addLineString(lineString);
    }

    return multiLineString;
}
 
示例6
/**
 * Validate Multi Line String
 *
 * @param topGeometry
 * @param multiLineString
 */
private static void validateMultiLineString(Geometry topGeometry,
                                            MultiLineString multiLineString) {

    TestCase.assertEquals(GeometryType.MULTILINESTRING,
            multiLineString.getGeometryType());

    validateZAndM(topGeometry, multiLineString);

    for (LineString lineString : multiLineString.getLineStrings()) {
        validateLineString(topGeometry, lineString);
    }

}
 
示例7
/**
 * Compare the two multi line strings for equality
 *
 * @param expected
 * @param actual
 * @parma delta
 */
private static void compareMultiLineString(MultiLineString expected,
                                           MultiLineString actual, double delta) {

    compareBaseGeometryAttributes(expected, actual);
    TestCase.assertEquals(expected.numLineStrings(),
            actual.numLineStrings());
    for (int i = 0; i < expected.numLineStrings(); i++) {
        compareLineString(expected.getLineStrings().get(i), actual
                .getLineStrings().get(i), delta);
    }
}
 
示例8
/**
 * Validate Multi Line String
 * 
 * @param topGeometry
 * @param multiLineString
 */
private static void validateMultiLineString(Geometry topGeometry,
		MultiLineString multiLineString) {

	TestCase.assertEquals(GeometryType.MULTILINESTRING,
			multiLineString.getGeometryType());

	validateZAndM(topGeometry, multiLineString);

	for (LineString lineString : multiLineString.getLineStrings()) {
		validateLineString(topGeometry, lineString);
	}

}
 
示例9
/**
 * Compare the two multi line strings for equality
 * 
 * @param expected
 * @param actual
 * @parma delta
 */
private static void compareMultiLineString(MultiLineString expected,
		MultiLineString actual, double delta) {

	compareBaseGeometryAttributes(expected, actual);
	TestCase.assertEquals(expected.numLineStrings(),
			actual.numLineStrings());
	for (int i = 0; i < expected.numLineStrings(); i++) {
		compareLineString(expected.getLineStrings().get(i), actual
				.getLineStrings().get(i), delta);
	}
}
 
示例10
/**
 * Convert a {@link Geometry} to a Map shape
 *
 * @param geometry geometry
 * @return google map shape
 */
@SuppressWarnings("unchecked")
public GoogleMapShape toShape(Geometry geometry) {

    GoogleMapShape shape = null;

    GeometryType geometryType = geometry.getGeometryType();
    switch (geometryType) {
        case POINT:
            shape = new GoogleMapShape(geometryType,
                    GoogleMapShapeType.LAT_LNG, toLatLng((Point) geometry));
            break;
        case LINESTRING:
            shape = new GoogleMapShape(geometryType,
                    GoogleMapShapeType.POLYLINE_OPTIONS,
                    toPolyline((LineString) geometry));
            break;
        case POLYGON:
            shape = new GoogleMapShape(geometryType,
                    GoogleMapShapeType.POLYGON_OPTIONS,
                    toPolygon((Polygon) geometry));
            break;
        case MULTIPOINT:
            shape = new GoogleMapShape(geometryType,
                    GoogleMapShapeType.MULTI_LAT_LNG,
                    toLatLngs((MultiPoint) geometry));
            break;
        case MULTILINESTRING:
            shape = new GoogleMapShape(geometryType,
                    GoogleMapShapeType.MULTI_POLYLINE_OPTIONS,
                    toPolylines((MultiLineString) geometry));
            break;
        case MULTIPOLYGON:
            shape = new GoogleMapShape(geometryType,
                    GoogleMapShapeType.MULTI_POLYGON_OPTIONS,
                    toPolygons((MultiPolygon) geometry));
            break;
        case CIRCULARSTRING:
            shape = new GoogleMapShape(geometryType,
                    GoogleMapShapeType.POLYLINE_OPTIONS,
                    toPolyline((CircularString) geometry));
            break;
        case COMPOUNDCURVE:
            shape = new GoogleMapShape(geometryType,
                    GoogleMapShapeType.MULTI_POLYLINE_OPTIONS,
                    toPolylines((CompoundCurve) geometry));
            break;
        case CURVEPOLYGON:
            shape = new GoogleMapShape(geometryType,
                    GoogleMapShapeType.POLYGON_OPTIONS,
                    toCurvePolygon((CurvePolygon) geometry));
            break;
        case POLYHEDRALSURFACE:
            shape = new GoogleMapShape(geometryType,
                    GoogleMapShapeType.MULTI_POLYGON_OPTIONS,
                    toPolygons((PolyhedralSurface) geometry));
            break;
        case TIN:
            shape = new GoogleMapShape(geometryType,
                    GoogleMapShapeType.MULTI_POLYGON_OPTIONS,
                    toPolygons((TIN) geometry));
            break;
        case TRIANGLE:
            shape = new GoogleMapShape(geometryType,
                    GoogleMapShapeType.POLYGON_OPTIONS,
                    toPolygon((Triangle) geometry));
            break;
        case GEOMETRYCOLLECTION:
            shape = new GoogleMapShape(geometryType,
                    GoogleMapShapeType.COLLECTION,
                    toShapes((GeometryCollection<Geometry>) geometry));
            break;
        default:
            throw new GeoPackageException("Unsupported Geometry Type: "
                    + geometryType.getName());
    }

    return shape;
}
 
示例11
/**
 * Convert a {@link Geometry} to a Map shape and add it
 *
 * @param map      google map
 * @param geometry geometry
 * @return google map shape
 */
@SuppressWarnings("unchecked")
public GoogleMapShape addToMap(GoogleMap map, Geometry geometry) {

    GoogleMapShape shape = null;

    GeometryType geometryType = geometry.getGeometryType();
    switch (geometryType) {
        case POINT:
            shape = new GoogleMapShape(geometryType, GoogleMapShapeType.MARKER,
                    addLatLngToMap(map, toLatLng((Point) geometry)));
            break;
        case LINESTRING:
            shape = new GoogleMapShape(geometryType,
                    GoogleMapShapeType.POLYLINE, addPolylineToMap(map,
                    toPolyline((LineString) geometry)));
            break;
        case POLYGON:
            shape = new GoogleMapShape(geometryType,
                    GoogleMapShapeType.POLYGON, addPolygonToMap(map,
                    toPolygon((Polygon) geometry)));
            break;
        case MULTIPOINT:
            shape = new GoogleMapShape(geometryType,
                    GoogleMapShapeType.MULTI_MARKER, addLatLngsToMap(map,
                    toLatLngs((MultiPoint) geometry)));
            break;
        case MULTILINESTRING:
            shape = new GoogleMapShape(geometryType,
                    GoogleMapShapeType.MULTI_POLYLINE, addPolylinesToMap(map,
                    toPolylines((MultiLineString) geometry)));
            break;
        case MULTIPOLYGON:
            shape = new GoogleMapShape(geometryType,
                    GoogleMapShapeType.MULTI_POLYGON, addPolygonsToMap(map,
                    toPolygons((MultiPolygon) geometry)));
            break;
        case CIRCULARSTRING:
            shape = new GoogleMapShape(geometryType,
                    GoogleMapShapeType.POLYLINE, addPolylineToMap(map,
                    toPolyline((CircularString) geometry)));
            break;
        case COMPOUNDCURVE:
            shape = new GoogleMapShape(geometryType,
                    GoogleMapShapeType.MULTI_POLYLINE, addPolylinesToMap(map,
                    toPolylines((CompoundCurve) geometry)));
            break;
        case CURVEPOLYGON:
            shape = new GoogleMapShape(geometryType,
                    GoogleMapShapeType.POLYGON, addPolygonToMap(map,
                    toCurvePolygon((CurvePolygon) geometry)));
            break;
        case POLYHEDRALSURFACE:
            shape = new GoogleMapShape(geometryType,
                    GoogleMapShapeType.MULTI_POLYGON, addPolygonsToMap(map,
                    toPolygons((PolyhedralSurface) geometry)));
            break;
        case TIN:
            shape = new GoogleMapShape(geometryType,
                    GoogleMapShapeType.MULTI_POLYGON, addPolygonsToMap(map,
                    toPolygons((TIN) geometry)));
            break;
        case TRIANGLE:
            shape = new GoogleMapShape(geometryType,
                    GoogleMapShapeType.POLYGON, addPolygonToMap(map,
                    toPolygon((Triangle) geometry)));
            break;
        case GEOMETRYCOLLECTION:
            shape = new GoogleMapShape(geometryType,
                    GoogleMapShapeType.COLLECTION, addToMap(map,
                    (GeometryCollection<Geometry>) geometry));
            break;
        default:
            throw new GeoPackageException("Unsupported Geometry Type: "
                    + geometryType.getName());
    }

    return shape;
}
 
示例12
/**
 * Test shapes
 * 
 * @param geoPackage
 * @throws SQLException
 */
public static void testShapes(GeoPackage geoPackage) throws SQLException {

	GeometryColumnsDao geometryColumnsDao = geoPackage
			.getGeometryColumnsDao();

	if (geometryColumnsDao.isTableExists()) {
		List<GeometryColumns> results = geometryColumnsDao.queryForAll();

		for (GeometryColumns geometryColumns : results) {

			FeatureDao dao = geoPackage.getFeatureDao(geometryColumns);

			GoogleMapShapeConverter converter = new GoogleMapShapeConverter(
					dao.getProjection());
			converter.setExteriorOrientation(null);
			converter.setHoleOrientation(null);

			// Query for all
			FeatureCursor cursor = dao.queryForAll();
			while (cursor.moveToNext()) {
				FeatureRow featureRow = cursor.getRow();

				GeoPackageGeometryData geometryData = featureRow
						.getGeometry();

				if (geometryData != null) {
					Geometry geometry = geometryData.getGeometry();
					GeometryType geometryType = geometry.getGeometryType();

					switch (geometryType) {
					case POINT:
						convertPoint(converter, (Point) geometry);
						break;
					case LINESTRING:
						convertLineString(converter, (LineString) geometry);
						break;
					case POLYGON:
						convertPolygon(converter, (Polygon) geometry);
						break;
					case MULTIPOINT:
						convertMultiPoint(converter, (MultiPoint) geometry);
						break;
					case MULTILINESTRING:
						convertMultiLineString(converter,
								(MultiLineString) geometry);
						break;
					case MULTIPOLYGON:
						convertMultiPolygon(converter,
								(MultiPolygon) geometry);
						break;
					case CIRCULARSTRING:
						convertLineString(converter,
								(CircularString) geometry);
						break;
					case COMPOUNDCURVE:
						convertCompoundCurve(converter,
								(CompoundCurve) geometry);
						break;
					case POLYHEDRALSURFACE:
						convertMultiPolygon(converter,
								(PolyhedralSurface) geometry);
						break;
					case TIN:
						convertMultiPolygon(converter, (TIN) geometry);
						break;
					case TRIANGLE:
						convertPolygon(converter, (Triangle) geometry);
						break;
					default:
					}
				}

			}
			cursor.close();

		}
	}

}
 
示例13
/**
 * Draw the geometry on the canvas
 *
 * @param simplifyTolerance simplify tolerance in meters
 * @param boundingBox       bounding box
 * @param transform         projection transform
 * @param canvas            feature tile canvas
 * @param featureRow        feature row
 * @param geometry          feature geometry
 * @return true if drawn
 */
private boolean drawShape(double simplifyTolerance, BoundingBox boundingBox, ProjectionTransform transform, FeatureTileCanvas canvas, FeatureRow featureRow, Geometry geometry) {

    boolean drawn = false;

    GeometryType geometryType = geometry.getGeometryType();
    FeatureStyle featureStyle = getFeatureStyle(featureRow, geometryType);

    switch (geometryType) {

        case POINT:
            Point point = (Point) geometry;
            drawn = drawPoint(boundingBox, transform, canvas, point, featureStyle);
            break;
        case LINESTRING:
        case CIRCULARSTRING:
            LineString lineString = (LineString) geometry;
            Path linePath = new Path();
            addLineString(simplifyTolerance, boundingBox, transform, linePath, lineString);
            drawn = drawLinePath(canvas, linePath, featureStyle);
            break;
        case POLYGON:
        case TRIANGLE:
            Polygon polygon = (Polygon) geometry;
            Path polygonPath = new Path();
            addPolygon(simplifyTolerance, boundingBox, transform, polygonPath, polygon);
            drawn = drawPolygonPath(canvas, polygonPath, featureStyle);
            break;
        case MULTIPOINT:
            MultiPoint multiPoint = (MultiPoint) geometry;
            for (Point pointFromMulti : multiPoint.getPoints()) {
                drawn = drawPoint(boundingBox, transform, canvas, pointFromMulti, featureStyle) || drawn;
            }
            break;
        case MULTILINESTRING:
            MultiLineString multiLineString = (MultiLineString) geometry;
            Path multiLinePath = new Path();
            for (LineString lineStringFromMulti : multiLineString.getLineStrings()) {
                addLineString(simplifyTolerance, boundingBox, transform, multiLinePath, lineStringFromMulti);
            }
            drawn = drawLinePath(canvas, multiLinePath, featureStyle);
            break;
        case MULTIPOLYGON:
            MultiPolygon multiPolygon = (MultiPolygon) geometry;
            Path multiPolygonPath = new Path();
            for (Polygon polygonFromMulti : multiPolygon.getPolygons()) {
                addPolygon(simplifyTolerance, boundingBox, transform, multiPolygonPath, polygonFromMulti);
            }
            drawn = drawPolygonPath(canvas, multiPolygonPath, featureStyle);
            break;
        case COMPOUNDCURVE:
            CompoundCurve compoundCurve = (CompoundCurve) geometry;
            Path compoundCurvePath = new Path();
            for (LineString lineStringFromCompoundCurve : compoundCurve.getLineStrings()) {
                addLineString(simplifyTolerance, boundingBox, transform, compoundCurvePath, lineStringFromCompoundCurve);
            }
            drawn = drawLinePath(canvas, compoundCurvePath, featureStyle);
            break;
        case POLYHEDRALSURFACE:
        case TIN:
            PolyhedralSurface polyhedralSurface = (PolyhedralSurface) geometry;
            Path polyhedralSurfacePath = new Path();
            for (Polygon polygonFromPolyhedralSurface : polyhedralSurface.getPolygons()) {
                addPolygon(simplifyTolerance, boundingBox, transform, polyhedralSurfacePath, polygonFromPolyhedralSurface);
            }
            drawn = drawPolygonPath(canvas, polyhedralSurfacePath, featureStyle);
            break;
        case GEOMETRYCOLLECTION:
            @SuppressWarnings("unchecked")
            GeometryCollection<Geometry> geometryCollection = (GeometryCollection) geometry;
            List<Geometry> geometries = geometryCollection.getGeometries();
            for (Geometry geometryFromCollection : geometries) {
                drawn = drawShape(simplifyTolerance, boundingBox, transform, canvas, featureRow, geometryFromCollection) || drawn;
            }
            break;
        default:
            throw new GeoPackageException("Unsupported Geometry Type: "
                    + geometry.getGeometryType().getName());
    }

    return drawn;
}
 
示例14
/**
 * Validate the geometry
 *
 * @param geometryType
 * @param geometry
 */
private static void validateGeometry(GeometryType geometryType,
                                     Geometry geometry) {

    switch (geometryType) {
        case POINT:
            TestCase.assertTrue(geometry instanceof Point);
            Point point = (Point) geometry;
            validatePoint(point, point);
            break;
        case LINESTRING:
            TestCase.assertTrue(geometry instanceof LineString);
            LineString lineString = (LineString) geometry;
            validateLineString(lineString, lineString);
            break;
        case POLYGON:
            TestCase.assertTrue(geometry instanceof Polygon);
            Polygon polygon = (Polygon) geometry;
            validatePolygon(polygon, polygon);
            break;
        case MULTIPOINT:
            TestCase.assertTrue(geometry instanceof MultiPoint);
            MultiPoint multiPoint = (MultiPoint) geometry;
            validateMultiPoint(multiPoint, multiPoint);
            break;
        case MULTILINESTRING:
            TestCase.assertTrue(geometry instanceof MultiLineString);
            MultiLineString multiLineString = (MultiLineString) geometry;
            validateMultiLineString(multiLineString, multiLineString);
            break;
        case MULTIPOLYGON:
            TestCase.assertTrue(geometry instanceof MultiPolygon);
            MultiPolygon multiPolygon = (MultiPolygon) geometry;
            validateMultiPolygon(multiPolygon, multiPolygon);
            break;
        case GEOMETRYCOLLECTION:
            TestCase.assertTrue(geometry instanceof GeometryCollection);
            GeometryCollection<?> geometryCollection = (GeometryCollection<?>) geometry;
            validateGeometryCollection(geometryCollection, geometryCollection);
            break;
        default:

    }
}
 
示例15
private static void createNonLinearGeometryTypesExtension(
        GeoPackage geoPackage) throws SQLException {

    SpatialReferenceSystemDao srsDao = geoPackage
            .getSpatialReferenceSystemDao();

    SpatialReferenceSystem srs = srsDao.getOrCreateCode(
            ProjectionConstants.AUTHORITY_EPSG,
            (long) ProjectionConstants.EPSG_WORLD_GEODETIC_SYSTEM);

    GeometryExtensions extensions = new GeometryExtensions(geoPackage);

    String tableName = "non_linear_geometries";

    List<Geometry> geometries = new ArrayList<>();
    List<String> geometryNames = new ArrayList<>();

    CircularString circularString = new CircularString();
    circularString.addPoint(new Point(-122.358, 47.653));
    circularString.addPoint(new Point(-122.348, 47.649));
    circularString.addPoint(new Point(-122.348, 47.658));
    circularString.addPoint(new Point(-122.358, 47.658));
    circularString.addPoint(new Point(-122.358, 47.653));

    for (int i = GeometryCodes.getCode(GeometryType.CIRCULARSTRING); i <= GeometryCodes.getCode(GeometryType.SURFACE); i++) {

        GeometryType geometryType = GeometryCodes.getGeometryType(i);
        extensions.getOrCreate(tableName, GEOMETRY_COLUMN, geometryType);

        Geometry geometry = null;
        String name = geometryType.getName().toLowerCase();

        switch (geometryType) {
            case CIRCULARSTRING:
                geometry = circularString;
                break;
            case COMPOUNDCURVE:
                CompoundCurve compoundCurve = new CompoundCurve();
                compoundCurve.addLineString(circularString);
                geometry = compoundCurve;
                break;
            case CURVEPOLYGON:
                CurvePolygon<CircularString> curvePolygon = new CurvePolygon<>();
                curvePolygon.addRing(circularString);
                geometry = curvePolygon;
                break;
            case MULTICURVE:
                MultiLineString multiCurve = new MultiLineString();
                multiCurve.addLineString(circularString);
                geometry = multiCurve;
                break;
            case MULTISURFACE:
                MultiPolygon multiSurface = new MultiPolygon();
                Polygon polygon = new Polygon();
                polygon.addRing(circularString);
                multiSurface.addPolygon(polygon);
                geometry = multiSurface;
                break;
            case CURVE:
                CompoundCurve curve = new CompoundCurve();
                curve.addLineString(circularString);
                geometry = curve;
                break;
            case SURFACE:
                CurvePolygon<CircularString> surface = new CurvePolygon<>();
                surface.addRing(circularString);
                geometry = surface;
                break;
            default:
                throw new GeoPackageException("Unexpected Geometry Type: "
                        + geometryType);
        }

        geometries.add(geometry);
        geometryNames.add(name);

    }

    createFeatures(geoPackage, srs, tableName, GeometryType.GEOMETRY,
            geometries, geometryNames);

}
 
示例16
/**
 * Compare two geometries and verify they are equal
 *
 * @param expected
 * @param actual
 * @param delta
 */
public static void compareGeometries(Geometry expected, Geometry actual,
                                     double delta) {
    if (expected == null) {
        TestCase.assertNull(actual);
    } else {
        TestCase.assertNotNull(actual);

        GeometryType geometryType = expected.getGeometryType();
        switch (geometryType) {

            case GEOMETRY:
                TestCase.fail("Unexpected Geometry Type of "
                        + geometryType.name() + " which is abstract");
            case POINT:
                comparePoint((Point) expected, (Point) actual, delta);
                break;
            case LINESTRING:
                compareLineString((LineString) expected, (LineString) actual,
                        delta);
                break;
            case POLYGON:
                comparePolygon((Polygon) expected, (Polygon) actual, delta);
                break;
            case MULTIPOINT:
                compareMultiPoint((MultiPoint) expected, (MultiPoint) actual,
                        delta);
                break;
            case MULTILINESTRING:
                compareMultiLineString((MultiLineString) expected,
                        (MultiLineString) actual, delta);
                break;
            case MULTIPOLYGON:
                compareMultiPolygon((MultiPolygon) expected,
                        (MultiPolygon) actual, delta);
                break;
            case GEOMETRYCOLLECTION:
                compareGeometryCollection((GeometryCollection<?>) expected,
                        (GeometryCollection<?>) actual, delta);
                break;
            case CIRCULARSTRING:
                compareCircularString((CircularString) expected,
                        (CircularString) actual, delta);
                break;
            case COMPOUNDCURVE:
                compareCompoundCurve((CompoundCurve) expected,
                        (CompoundCurve) actual, delta);
                break;
            case CURVEPOLYGON:
                compareCurvePolygon((CurvePolygon<?>) expected,
                        (CurvePolygon<?>) actual, delta);
                break;
            case MULTICURVE:
                TestCase.fail("Unexpected Geometry Type of "
                        + geometryType.name() + " which is abstract");
            case MULTISURFACE:
                TestCase.fail("Unexpected Geometry Type of "
                        + geometryType.name() + " which is abstract");
            case CURVE:
                TestCase.fail("Unexpected Geometry Type of "
                        + geometryType.name() + " which is abstract");
            case SURFACE:
                TestCase.fail("Unexpected Geometry Type of "
                        + geometryType.name() + " which is abstract");
            case POLYHEDRALSURFACE:
                comparePolyhedralSurface((PolyhedralSurface) expected,
                        (PolyhedralSurface) actual, delta);
                break;
            case TIN:
                compareTIN((TIN) expected, (TIN) actual, delta);
                break;
            case TRIANGLE:
                compareTriangle((Triangle) expected, (Triangle) actual, delta);
                break;
            default:
                throw new GeoPackageException("Geometry Type not supported: "
                        + geometryType);
        }
    }
}
 
示例17
/**
 * Validate the geometry
 * 
 * @param geometryType
 * @param geometry
 */
private static void validateGeometry(GeometryType geometryType,
		Geometry geometry) {

	switch (geometryType) {
	case POINT:
		TestCase.assertTrue(geometry instanceof Point);
		Point point = (Point) geometry;
		validatePoint(point, point);
		break;
	case LINESTRING:
		TestCase.assertTrue(geometry instanceof LineString);
		LineString lineString = (LineString) geometry;
		validateLineString(lineString, lineString);
		break;
	case POLYGON:
		TestCase.assertTrue(geometry instanceof Polygon);
		Polygon polygon = (Polygon) geometry;
		validatePolygon(polygon, polygon);
		break;
	case MULTIPOINT:
		TestCase.assertTrue(geometry instanceof MultiPoint);
		MultiPoint multiPoint = (MultiPoint) geometry;
		validateMultiPoint(multiPoint, multiPoint);
		break;
	case MULTILINESTRING:
		TestCase.assertTrue(geometry instanceof MultiLineString);
		MultiLineString multiLineString = (MultiLineString) geometry;
		validateMultiLineString(multiLineString, multiLineString);
		break;
	case MULTIPOLYGON:
		TestCase.assertTrue(geometry instanceof MultiPolygon);
		MultiPolygon multiPolygon = (MultiPolygon) geometry;
		validateMultiPolygon(multiPolygon, multiPolygon);
		break;
	case GEOMETRYCOLLECTION:
		TestCase.assertTrue(geometry instanceof GeometryCollection);
		GeometryCollection<?> geometryCollection = (GeometryCollection<?>) geometry;
		validateGeometryCollection(geometryCollection, geometryCollection);
		break;
	default:

	}
}
 
示例18
private static void createNonLinearGeometryTypesExtension(
		GeoPackage geoPackage) throws SQLException {

	SpatialReferenceSystemDao srsDao = geoPackage
			.getSpatialReferenceSystemDao();

	SpatialReferenceSystem srs = srsDao.getOrCreateCode(
			ProjectionConstants.AUTHORITY_EPSG,
			(long) ProjectionConstants.EPSG_WORLD_GEODETIC_SYSTEM);

	GeometryExtensions extensions = new GeometryExtensions(geoPackage);

	String tableName = "non_linear_geometries";

	List<Geometry> geometries = new ArrayList<>();
	List<String> geometryNames = new ArrayList<>();

	CircularString circularString = new CircularString();
	circularString.addPoint(new Point(-122.358, 47.653));
	circularString.addPoint(new Point(-122.348, 47.649));
	circularString.addPoint(new Point(-122.348, 47.658));
	circularString.addPoint(new Point(-122.358, 47.658));
	circularString.addPoint(new Point(-122.358, 47.653));

	for (int i = GeometryCodes
			.getCode(GeometryType.CIRCULARSTRING); i <= GeometryCodes
					.getCode(GeometryType.SURFACE); i++) {

		GeometryType geometryType = GeometryCodes.getGeometryType(i);
		extensions.getOrCreate(tableName, GEOMETRY_COLUMN, geometryType);

		Geometry geometry = null;
		String name = geometryType.getName().toLowerCase();

		switch (geometryType) {
		case CIRCULARSTRING:
			geometry = circularString;
			break;
		case COMPOUNDCURVE:
			CompoundCurve compoundCurve = new CompoundCurve();
			compoundCurve.addLineString(circularString);
			geometry = compoundCurve;
			break;
		case CURVEPOLYGON:
			CurvePolygon<CircularString> curvePolygon = new CurvePolygon<>();
			curvePolygon.addRing(circularString);
			geometry = curvePolygon;
			break;
		case MULTICURVE:
			MultiLineString multiCurve = new MultiLineString();
			multiCurve.addLineString(circularString);
			geometry = multiCurve;
			break;
		case MULTISURFACE:
			MultiPolygon multiSurface = new MultiPolygon();
			Polygon polygon = new Polygon();
			polygon.addRing(circularString);
			multiSurface.addPolygon(polygon);
			geometry = multiSurface;
			break;
		case CURVE:
			CompoundCurve curve = new CompoundCurve();
			curve.addLineString(circularString);
			geometry = curve;
			break;
		case SURFACE:
			CurvePolygon<CircularString> surface = new CurvePolygon<>();
			surface.addRing(circularString);
			geometry = surface;
			break;
		default:
			throw new GeoPackageException(
					"Unexpected Geometry Type: " + geometryType);
		}

		geometries.add(geometry);
		geometryNames.add(name);

	}

	createFeatures(geoPackage, srs, tableName, GeometryType.GEOMETRY,
			geometries, geometryNames);

}
 
示例19
/**
 * Compare two geometries and verify they are equal
 * 
 * @param expected
 * @param actual
 * @param delta
 */
public static void compareGeometries(Geometry expected, Geometry actual,
		double delta) {
	if (expected == null) {
		TestCase.assertNull(actual);
	} else {
		TestCase.assertNotNull(actual);

		GeometryType geometryType = expected.getGeometryType();
		switch (geometryType) {

		case GEOMETRY:
			TestCase.fail("Unexpected Geometry Type of "
					+ geometryType.name() + " which is abstract");
		case POINT:
			comparePoint((Point) expected, (Point) actual, delta);
			break;
		case LINESTRING:
			compareLineString((LineString) expected, (LineString) actual,
					delta);
			break;
		case POLYGON:
			comparePolygon((Polygon) expected, (Polygon) actual, delta);
			break;
		case MULTIPOINT:
			compareMultiPoint((MultiPoint) expected, (MultiPoint) actual,
					delta);
			break;
		case MULTILINESTRING:
			compareMultiLineString((MultiLineString) expected,
					(MultiLineString) actual, delta);
			break;
		case MULTIPOLYGON:
			compareMultiPolygon((MultiPolygon) expected,
					(MultiPolygon) actual, delta);
			break;
		case GEOMETRYCOLLECTION:
			compareGeometryCollection((GeometryCollection<?>) expected,
					(GeometryCollection<?>) actual, delta);
			break;
		case CIRCULARSTRING:
			compareCircularString((CircularString) expected,
					(CircularString) actual, delta);
			break;
		case COMPOUNDCURVE:
			compareCompoundCurve((CompoundCurve) expected,
					(CompoundCurve) actual, delta);
			break;
		case CURVEPOLYGON:
			compareCurvePolygon((CurvePolygon<?>) expected,
					(CurvePolygon<?>) actual, delta);
			break;
		case MULTICURVE:
			TestCase.fail("Unexpected Geometry Type of "
					+ geometryType.name() + " which is abstract");
		case MULTISURFACE:
			TestCase.fail("Unexpected Geometry Type of "
					+ geometryType.name() + " which is abstract");
		case CURVE:
			TestCase.fail("Unexpected Geometry Type of "
					+ geometryType.name() + " which is abstract");
		case SURFACE:
			TestCase.fail("Unexpected Geometry Type of "
					+ geometryType.name() + " which is abstract");
		case POLYHEDRALSURFACE:
			comparePolyhedralSurface((PolyhedralSurface) expected,
					(PolyhedralSurface) actual, delta);
			break;
		case TIN:
			compareTIN((TIN) expected, (TIN) actual, delta);
			break;
		case TRIANGLE:
			compareTriangle((Triangle) expected, (Triangle) actual, delta);
			break;
		default:
			throw new GeoPackageException("Geometry Type not supported: "
					+ geometryType);
		}
	}
}
 
示例20
/**
 * Convert a list of {@link Polyline} to a {@link MultiLineString}
 *
 * @param polylineList polyline list
 * @return multi line string
 */
public MultiLineString toMultiLineString(List<Polyline> polylineList) {
    return toMultiLineString(polylineList, false, false);
}
 
示例21
/**
 * Convert a list of List<LatLng> to a {@link MultiLineString}
 *
 * @param polylineList polyline list
 * @return multi line string
 */
public MultiLineString toMultiLineStringFromList(
        List<List<LatLng>> polylineList) {
    return toMultiLineStringFromList(polylineList, false, false);
}
 
示例22
/**
 * Convert a {@link MultiPolylineOptions} to a {@link MultiLineString}
 *
 * @param multiPolylineOptions multi polyline options
 * @return multi line string
 */
public MultiLineString toMultiLineStringFromOptions(
        MultiPolylineOptions multiPolylineOptions) {
    return toMultiLineStringFromOptions(multiPolylineOptions, false, false);
}