JTS Topology Suite An API for Processing Linear

  • Slides: 15
Download presentation
JTS Topology Suite An API for Processing Linear Geometry Martin Davis, Senior Technical Architect

JTS Topology Suite An API for Processing Linear Geometry Martin Davis, Senior Technical Architect mbdavis@vividsolutions. com JTS Topology Suite

JTS Topology Suite • Core API for processing Geometry • Full implementation of Open.

JTS Topology Suite • Core API for processing Geometry • Full implementation of Open. GIS Consortium Simple Features for SQL specification • Open Source, 100% Java • Design Features: Ø Ø Fast, production quality Robust Explicit precision model All basic geometry operations • History Ø JTS 1. 0 released Feb 2002 Ø JTS 1. 4 released Nov 2003 JTS Topology Suite

Geometry Model • Complete model for 2 -D linear geometry (following OGC SFS model)

Geometry Model • Complete model for 2 -D linear geometry (following OGC SFS model) Ø Ø Ø • Point Line. String, Linear. Ring Polygon (with holes) Multi. Point, Multi. Line. String, Multi. Polygon Geometry. Collection Supports user-defined coordinate representation JTS Topology Suite

Explicit Precision Model • JTS provides ability to specify Precision Model of coordinates Ø

Explicit Precision Model • JTS provides ability to specify Precision Model of coordinates Ø Floating - Double & Single Precision (IEEE-754) Ø Fixed - specified # of decimal places • Ensures constructive geometry operations are closed over the specified coordinate space Floating POLYGON ((3 2, 1 3, 3 2. 33333333, 3 2)) Fixed POLYGON ((3 2, 1 3, 3 2)) JTS Topology Suite

Spatial Predicates • • Computes the spatial relationship of 2 Geometries JTS implements the

Spatial Predicates • • Computes the spatial relationship of 2 Geometries JTS implements the full Dimensionally Extended 9 -Intersection Model (DE-9 IM) Ø Computes dimension of intersection of Interior, Boundary, Exterior Ø General function: Relate( pattern ) Ø Named predicates: Equals, Disjoint, Intersects, Touches, Crosses, Within, Contains, Overlaps JTS Topology Suite

Overlay Methods • Overlay methods = Boolean set-theoretic functions Ø Intersection, Union, Difference, Symmetric

Overlay Methods • Overlay methods = Boolean set-theoretic functions Ø Intersection, Union, Difference, Symmetric Difference Intersection • Union Difference Symmetric Difference Heterogeneous – all geometry types supported JTS Topology Suite

Buffering • Both Positive & Negative buffers Ø All Geometry types Ø Robust, efficient

Buffering • Both Positive & Negative buffers Ø All Geometry types Ø Robust, efficient algorithm • Choice of End Cap Styles Ø Round, Square, Butt • Curve Densification is usercontrollable JTS Topology Suite

Other Constructive Methods • Convex Hull Ø Standard Computational Geometry algorithm • Centroid &

Other Constructive Methods • Convex Hull Ø Standard Computational Geometry algorithm • Centroid & Interior. Point Ø Centroid is center of mass (not necessarily in interior) Ø Interior point always in interior, as close to centre as possible Ø all Geometry types supported JTS Topology Suite

Metric Methods • Area, Length Ø Length = Perimeter, for Area geometries • Distance

Metric Methods • Area, Length Ø Length = Perimeter, for Area geometries • Distance Ø Constructive – computes location of points providing minimum distance • Within. Distance Ø “Limited predicate” allows optimized computation JTS Topology Suite

Geometry Validation • Validation of Geometry topology essential to ensure correct spatial processing Ø

Geometry Validation • Validation of Geometry topology essential to ensure correct spatial processing Ø Polygons in particular – many possible invalid situations • JTS provides full Validation of Topology Ø is. Valid provides simple good/bad test Ø Valid. Op class provides detailed error information, including location Self-intersection Overlapping Rings Hole intersects shell JTS Topology Suite

Line Merging & Polygonization • Line Merging Ø Removes 2 -nodes from set of

Line Merging & Polygonization • Line Merging Ø Removes 2 -nodes from set of Line. Strings • Polygonization Ø Including finding Dangles and Cutlines JTS Topology Suite

Spatial Algorithms & Structures • Numerous basic Computational Geometry algorithms Ø Line segment intersection,

Spatial Algorithms & Structures • Numerous basic Computational Geometry algorithms Ø Line segment intersection, Ring orientation, Point-Line orientation, Point-line distance, etc. • Spatial Indexes Ø Quadtree, STRtree, Bintree, Monotone. Chains, Sweep. Line • Line segment Noding Ø i. e. find and create all intersections in set of Line Segments • Planar Graph framework • Precision Reduction JTS Topology Suite

JTS Test. Builder • Create/edit/view geometry • Compute & view results of all JTS

JTS Test. Builder • Create/edit/view geometry • Compute & view results of all JTS methods JTS Topology Suite

JTS In Use • JTS used for core geometry processing in numerous open source

JTS In Use • JTS used for core geometry processing in numerous open source and commercial geo-spatial applications Ø Ø Ø Ø JUMP BC Gov’t Electronic Submission Framework Internet Mapping Framework Geo. Server / Geo. Tools Deegree Post. GIS (as GEOS) Tlogica (Bulgaria) • Other interesting applications Ø Font Creator (Rob. Meek. com) JTS Topology Suite

Future Work • Fully robust Overlay Operations • Improve performance Ø e. g. line

Future Work • Fully robust Overlay Operations • Improve performance Ø e. g. line noding, distance computation • Optimize repeated method calls on single Geometry Ø e. g. “find all geometries which intersect this geometry” • Improve internal structure • Geometry simplification / generalization methods Ø Douglas-Peucker line simplification, etc • Generalized Distance methods Ø Hausdorff distance, Frechet distance, etc • User-defined Geometry representation Ø Allows easier adaptation to other Geometry APIs, database structures • Affine Transform • Linear Referencing operations • Improved/Extended Spatial Indexes Ø Updatable Quadtree, R-tree, Visitor pattern, performance… • Coverage datatype JTS Topology Suite