Geomtery子類(lèi)圖
文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-421867.html
創(chuàng)建Geometry
GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory();
// 點(diǎn)
Coordinate coord = new Coordinate(1, 1);
Point point = geometryFactory.createPoint(coord);
// 線(xiàn)
Coordinate[] coordinates = new Coordinate[] {new Coordinate(0, 2), new Coordinate(2, 0), new Coordinate(8, 6) };
LineString line = geometryFactory.createLineString(coordinates);
// 面
Coordinate[] coords = new Coordinate[] {new Coordinate(4, 0), new Coordinate(2, 2), new Coordinate(4, 4), new Coordinate(6, 2), new Coordinate(4, 0) };
LinearRing ring = geometryFactory.createLinearRing(coords);
LinearRing holes[] = null; // use LinearRing[] to represent holes
Polygon polygon = geometryFactory.createPolygon(ring, holes);
// 圓
CurvedGeometryFactory curvedFactory = new CurvedGeometryFactory(geometryFactory, Double.MAX_VALUE);
CoordinateSequence coords = PackedCoordinateSequenceFactory.DOUBLE_FACTORY.create(new double[] {10, 14, 6, 10, 14, 10}, 2);
CircularString arc = (CircularString) curvedFactory.createCurvedGeometry(coords);
Geometry轉(zhuǎn)換坐標(biāo)系
CoordinateReferenceSystem sourceCRS = CRS.decode("EPSG:4326");
CoordinateReferenceSystem targetCrs = CRS.decode("EPSG:4490");
boolean lenient = true; // allow for some error due to different datums
MathTransform transform = CRS.findMathTransform(sourceCRS, targetCrs, lenient);
Geometry geometry2 = JTS.transform(geometry, transform);
Geometry方法
// 空間判斷
// 不相交
boolean disjoint = geometry.disjoint(geometry2);
// 相交
boolean intersects = geometry.intersects(geometry2);
// 相切,內(nèi)部不相交
boolean touches = geometry.touches(geometry2);
// 被包含
boolean within = geometry.within(geometry2);
//包含,只針對(duì)幾何內(nèi)部而言,不計(jì)算邊界
boolean contains = geometry.contains(geometry2);
//覆蓋,不區(qū)分集合邊界與內(nèi)部
boolean covers = geometry.covers(geometry);
//相交,不能是相切或者包含
boolean crosses = geometry.crosses(geometry);
//相交
boolean overlaps = geometry.overlaps(geometry2);
// 兩個(gè)幾何的空間關(guān)系
IntersectionMatrix relate1 = geometry.relate(geometry2);
//空間計(jì)算
//求交集
Geometry intersection = geometry.intersection(geometry2);
//求并集
Geometry union = geometry.union(geometry);
//geometry-交集
Geometry difference = geometry.difference(geometry2);
// 并集-交集
Geometry symDifference = geometry.symDifference(geometry);
// 幾何緩沖生成新幾何,單位與geometry坐標(biāo)系一致
Geometry buffer1 = geometry.buffer(2);
// 生成包含幾何的最小凸多邊形
Geometry convexHull = geometry.convexHull();
// 兩個(gè)幾何的最小距離
double distance = geometry.distance(geometry);
// 面積
double area = geometry.getArea();
//幾何類(lèi)型
String geometryType = geometry.getGeometryType();
// 邊界
Geometry boundary = geometry.getBoundary();
// 獲取中心點(diǎn)
Point centroid = geometry.getCentroid();
Geometry 與 WKT 轉(zhuǎn)換
// geometry轉(zhuǎn)wkt
//方法一
WKTWriter2 wktWriter2 = new WKTWriter2()
String wkt = wktWriter2.write(geometry)
//方法二
String text = geometry.toText();
// wkt轉(zhuǎn)geometry
WKTReader2 wktReader2 = WKTReader2()
Point point = (Point) wktReader2.read("POINT (1 1)");
LineString line = (LineString) wktReader2.read("LINESTRING(0 2, 2 0, 8 6)");
Polygon polygon = (Polygon) wktReader2.read("POLYGON((20 10, 30 0, 40 10, 30 20, 20 10))");
pom.xml文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-421867.html
<dependencies>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-shapefile</artifactId>
<version>${geotools.version}</version>
</dependency>
<dependency>
<groupId>org.geotools</groupId>
<artifactId>gt-epsg-hsql</artifactId>
<version>${geotools.version}</version>
</dependency>
</dependencies>
<repositories>
<repository>
<id>osgeo</id>
<name>OSGeo Release Repository</name>
<url>https://repo.osgeo.org/repository/release/</url>
<snapshots><enabled>false</enabled></snapshots>
<releases><enabled>true</enabled></releases>
</repository>
<repository>
<id>osgeo-snapshot</id>
<name>OSGeo Snapshot Repository</name>
<url>https://repo.osgeo.org/repository/snapshot/</url>
<snapshots><enabled>true</enabled></snapshots>
<releases><enabled>false</enabled></releases>
</repository>
</repositories>
到了這里,關(guān)于JTS空間坐標(biāo)Geometry使用的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!