Java Code Examples for mil.nga.sf.CircularString

The following examples show how to use mil.nga.sf.CircularString. These examples are extracted from open source projects. You can vote up the ones you like or vote down the ones you don't like, and go to the original project or source file by following the links above each example. You may check out the related API usage on the sidebar.
Example 1
Source Project: geopackage-android   Source File: GeoPackageGeometryDataUtils.java    License: MIT License 5 votes vote down vote up
/**
 * Compare the two circular strings for equality
 *
 * @param expected
 * @param actual
 * @parma delta
 */
private static void compareCircularString(CircularString expected,
                                          CircularString actual, double delta) {

    compareBaseGeometryAttributes(expected, actual);
    TestCase.assertEquals(expected.numPoints(), actual.numPoints());
    for (int i = 0; i < expected.numPoints(); i++) {
        comparePoint(expected.getPoints().get(i),
                actual.getPoints().get(i), delta);
    }
}
 
Example 2
Source Project: geopackage-java   Source File: GeoPackageGeometryDataUtils.java    License: MIT License 5 votes vote down vote up
/**
 * Compare the two circular strings for equality
 * 
 * @param expected
 * @param actual
 * @parma delta
 */
private static void compareCircularString(CircularString expected,
		CircularString actual, double delta) {

	compareBaseGeometryAttributes(expected, actual);
	TestCase.assertEquals(expected.numPoints(), actual.numPoints());
	for (int i = 0; i < expected.numPoints(); i++) {
		comparePoint(expected.getPoints().get(i),
				actual.getPoints().get(i), delta);
	}
}
 
Example 3
Source Project: geopackage-android-map   Source File: GoogleMapShapeConverter.java    License: MIT License 4 votes vote down vote up
/**
 * 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;
}
 
Example 4
Source Project: geopackage-android-map   Source File: GoogleMapShapeConverter.java    License: MIT License 4 votes vote down vote up
/**
 * 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;
}
 
Example 5
/**
 * 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();

		}
	}

}
 
Example 6
Source Project: geopackage-android   Source File: GeoPackageExample.java    License: MIT License 4 votes vote down vote up
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);

}
 
Example 7
Source Project: geopackage-android   Source File: GeoPackageGeometryDataUtils.java    License: MIT License 4 votes vote down vote up
/**
 * 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);
        }
    }
}
 
Example 8
Source Project: geopackage-java   Source File: GeoPackageExample.java    License: MIT License 4 votes vote down vote up
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);

}
 
Example 9
Source Project: geopackage-java   Source File: GeoPackageGeometryDataUtils.java    License: MIT License 4 votes vote down vote up
/**
 * 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);
		}
	}
}
 
Example 10
Source Project: geopackage-android-map   Source File: GoogleMapShapeConverter.java    License: MIT License 3 votes vote down vote up
/**
 * Convert a list of {@link LatLng} to a {@link CircularString}
 *
 * @param latLngs lat lngs
 * @param hasZ    has z flag
 * @param hasM    has m flag
 * @return circular string
 */
public CircularString toCircularString(List<LatLng> latLngs, boolean hasZ,
                                       boolean hasM) {

    CircularString circularString = new CircularString(hasZ, hasM);

    populateLineString(circularString, latLngs);

    return circularString;
}
 
Example 11
Source Project: geopackage-android-map   Source File: GoogleMapShapeConverter.java    License: MIT License 2 votes vote down vote up
/**
 * Convert a list of {@link LatLng} to a {@link CircularString}
 *
 * @param latLngs lat lngs
 * @return circular string
 */
public CircularString toCircularString(List<LatLng> latLngs) {
    return toCircularString(latLngs, false, false);
}