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);
}