SlideShare a Scribd company logo
1 of 41
Download to read offline
State of JTS
Presented by:
James, Jody, Rob, (Martin)
Welcome
Martin Davis James Hughes Jody Garnett Rob Emanuele
Vivid Solutions CCRi Boundless Azavea
2
Introducing
JTS Topology Suite
uDig Introduction 3
What is JTS Topology Suite?
4
Java API for working with 2D Geometries
1.9
1.3
JTS Project History
5
2005 2006 2007 2008 2009
2004 2003 2002 2001 2000
1.0
2014 2013 2012 2011 2010
2015 2016 2017 2018 2020
JTS 1.14 1.15
1.11.21.4
1.5 1.6 1.7 1.8 1.10
1.111.121.13
JTS is EVERYWHERE
6
JTS
GEOS
GeoMesa
GeoTrellis
GeoWave
Sptial4J
JSTS
Net Topology
Suite
Representations:
OGC Simple Features
● Point
● LineString
● LinearRing
● Polygon
● MultiPoint
● MultiLineString
● MultiPolygon
● GeometryCollection
7
JTS Topology Suite
8
Predicates (DE-9IM)
● Equals
● Disjoin
● Intersects
● Touches
● Crosses
● Within
● Contains
● Overlaps
● Covers
● CoveredBy
JTS Topology Suite
9
Overlays
● Intersection
● Union
● Difference
● SymDifference
JTS Topology Suite
JTS Topology Suite
Measurements
● Length
● Area
● Distance
10
JTS Topology Suite
IO:
● WKT
● WKB
● GeoJSON
● KML
● GML2
11
JTS Topology Suite
12
Algorithms
● Convex Hull
● Buffer
● Validation
● Dissolve
● Polygonization
● Simplification
● Triangulation
● Voronoi
● Linear Referencing
● and more...
JTS Topology Suite
13
Applications
● TestBuilder
● TestRunner
JTS 1.14
JTS 1.14 Released
January 2016
• LineDissolver
• edgegraph package
• Visvalingam-Whyatt simplification
Improvements:
● Improved thread-safety
● Fixed Java 7 compatibility
● Added Spatialite WKB
● CoordinateSequence
● many bug fixes and performance
improvements
JTS I/O
• KML Writer
• GeoJsonReader/Writer
• Oracle SDO Performance
15
Visvalingam-Whyatt
vs
Douglas-Peucker
JTS 1.14 with Maven
JTS 1.14
16
<dependency>
<groupId>com.vividsolutions</groupId>
<artifactId>jts-core</artifactId>
<version>1.14.0</version>
</dependency>
Published
Official release on SF
• Install into local repo
On Maven Central
• We do not know
who did this!
JTS 1.15
JTS 1.15
• Focus on codebase
• organization and packaging
• Some functionality improvements
• K Nearest Neighbor search for STR-Tree
• Improve handling of Quadtree queries with null Envelope
• Intersects now supports GeometryCollection
• JTSTestRunnerCmd command-line app
Sourceforge → GitHub
19
• Moving from SVN to GIT
• https://github.com/locationtech/jts
Why choose GitHub?
• High Visibility
• Great tools
• Git tools
• Issue tracking
• Pull Requests
• Continuous Integration
• Website
• Easier for contributions
• Where the action is!
20
GitHub: JTS Project Activity
• Pull Requests
• 76 accepted, 8 open
• Issues
• 7 closed, 25 open
21
Mavenization
• Build chain now uses Maven instead of Ant
• Easier to build and use
• Easy Eclipse IDE configuration
• Unit tests run by Maven build
• including XML tests
• Better release story
• Code artifacts will be hosted on Maven Central
• Apps built as fat-jars (TestBuilder, TestRunner)
• To Do
• Work on packaging a distro with source, scripts, etc...
22
Modular Codebase
• Codebase organized into modules
• jts-core - geometry implementation for use
• jts-tests - extensive testing for correctness and stability
• jts-io - read and write geometry
• jts-example - examples of using the jts api
• jts-lab - experimental playground use at your own risk
• jts-app - test builder application for defining tests
• better clarity of internal dependencies
23
JTS Joins LocationTech
• LocationTech offers
• project infrastructure
• project visibility
• stability, governance
• Immediate benefits
• More team members
• Synergy with other
LocationTech projects
• In-depth legal review for IP
(Intellectual Property) cleanliness
24
• Initial Work
• Project Application
• License Change
• LocationTech Incubation
• Long term hopes
• Additional Contributors
• Funding for JTS 2.0
• Build Infrastructure
• Official Maven Deployment
LocationTech Incubation
A new home:
• Project Website
• Mailing List
• Build Server
• GitHub repo
25
A new License
• Eclipse Public License
• Eclipse Distribution License
(BSD-3 Clause License)
Challenges:
• Contact assorted contributors
(because we did not have a CLA)
• changing package names
• Opportunity to work together
• Maintaining codebase history
• www.locationtech.org/projects/technology.jts
LocationTech Project Site
26
JTS 1.15-SNAPSHOT
• Packaging
• org.locationtech.jts
• GitHub repo
• https://github.com/locationtech/jts
• Snapshots Available via LT Nexus
• https://repo.locationtech.org/
27
Using JTS 1.15 with Maven
JTS 1.14
28
<dependency>
<groupId>com.vividsolutions</groupId>
<artifactId>jts-core</artifactId>
<version>1.14.0</version>
</dependency>
JTS 1.15.0-SNAPSHOT
<dependency>
<groupId>org.locationtech.jts</groupId>
<artifactId>jts-core</artifactId>
<version>1.15.0-SNAPSHOT</version>
</dependency>
….
<repositories>
<repository>
<id>locationtech-snapshots</id>
<url>https://repo.locationtech.org/content/groups/snapshots</url>
<snapshots>
<enabled>true</enabled>
</snapshots>
</repository>
</repositories>
Migration to JTS 1.15
• New module structure
• jts-core
• jts-io-common - GeoJSON
• jts-io-ora - Oracle support
• jts-io-sde - SDE support
• jts-tests - XML Tests & TestRunner
• Change package names
• org.locationtech.jts.*
• Change Maven reference
• To be determined…
•
Team Code Sprints
• Dates
• January 25-27, 2016
• November 3-4, 2016
• Achievements
• Sourceforge → GitHub
• Mavenization
• New Committers
• Addressed IP review questions
31
JTS 1.15 Coming Soon!
• Coming soon to a repo near you!
• Incubation is nearly complete
• LocationTech Release process
• Final IP issues being resolved
(checking in new icons for the test builder application)
• Two week release review
• Deploy to Maven Central (and LocationTech repo)
32
Roadmap / Wishlist
uDig Introduction 33
Algorithm Improvements
• Goal: improve some key JTS algorithms
• Overlay
• Snap-rounding (no more TopologyExceptions!)
• Support PreparedGeometry for caching
• Fast & robust Clip to Rectangle
• Spatial Predicate improvements
• Streaming / Lazy evaluation with short-circuiting
• User-defined precision model
• Less sensitive to valid geometry (e.g. Intersects)
• Distance
• Support cached PreparedGeometry
34
New Algorithms
• Concave Hull
• Polygon Triangulation
• Polygon Cleaning (“MakeValid”)
• Split Geometry by Line
• Polygon Coverage Simplification
35
Concave Hull
Polygon Triangulation
New API - JTS 2.0
• Concept for a redesign of JTS
• Key Goals
• Interface-based Geometry access
• Immutable Geometry objects
• Geodetic (WGS84) support, with some basic algorithms
• Pluggable/discoverable Geometry operation framework
• Coordinate extensions (XY, XY+M)
• Non-goals
• Backwards compatibility
• Improving geometry algorithms
36
Shape the Future
Join JTS Topology Suite
Contributing to JTS
• Register as a Contributor
• Sign the Eclipse Contributor Agreement
• https://www.eclipse.org/legal/ECA.php
• Develop a patch, making sure to include
• Javadoc
• Unit Tests - JUnit and/or JTS XML tests
• Make a Pull Request on GitHub
• Acknowledge code is IP clean by signing-off each Git commit
• Make sure the Travis CI validation tests pass
See also https://github.com/locationtech/jts/blob/master/CONTRIBUTING.md
38
Questions?
uDig Introduction 39
Project Resources
• Source Code repo
• https://github.com/locationtech/jts
• Issue Tracker
• https://github.com/locationtech/jts/issues
• Mailing List
• https://dev.locationtech.org/mailman/listinfo/jts-dev
• Project website
• https://locationtech.github.io/jts
• Javadoc
• https://locationtech.github.io/jts/javadoc
40
Thank you from the JTS Team

More Related Content

Similar to State of JTS 2017

State of GeoServer, GeoTools and Friends 2014
State of GeoServer, GeoTools and Friends 2014State of GeoServer, GeoTools and Friends 2014
State of GeoServer, GeoTools and Friends 2014
Jody Garnett
 
Pg intro part1-theory_slides
Pg intro part1-theory_slidesPg intro part1-theory_slides
Pg intro part1-theory_slides
lasmasi
 

Similar to State of JTS 2017 (20)

State of GeoServer 2015
State of GeoServer 2015State of GeoServer 2015
State of GeoServer 2015
 
LocationTech Projects
LocationTech ProjectsLocationTech Projects
LocationTech Projects
 
LocationTech Projects
LocationTech ProjectsLocationTech Projects
LocationTech Projects
 
Adopting OpenTelemetry
Adopting OpenTelemetryAdopting OpenTelemetry
Adopting OpenTelemetry
 
Jozi-JUG JDK 9 Unconference
Jozi-JUG JDK 9 UnconferenceJozi-JUG JDK 9 Unconference
Jozi-JUG JDK 9 Unconference
 
Foresight
ForesightForesight
Foresight
 
A Journey through the JDKs (Java 9 to Java 11)
A Journey through the JDKs (Java 9 to Java 11)A Journey through the JDKs (Java 9 to Java 11)
A Journey through the JDKs (Java 9 to Java 11)
 
Automation: The Good, The Bad and The Ugly with DevOpsGuys - AppD Summit Europe
Automation: The Good, The Bad and The Ugly with DevOpsGuys - AppD Summit EuropeAutomation: The Good, The Bad and The Ugly with DevOpsGuys - AppD Summit Europe
Automation: The Good, The Bad and The Ugly with DevOpsGuys - AppD Summit Europe
 
DevOpsGuys - DevOps Automation - The Good, The Bad and The Ugly
DevOpsGuys - DevOps Automation - The Good, The Bad and The UglyDevOpsGuys - DevOps Automation - The Good, The Bad and The Ugly
DevOpsGuys - DevOps Automation - The Good, The Bad and The Ugly
 
What we do with Go
What we do with GoWhat we do with Go
What we do with Go
 
Join the Java Evolution GIDS Bangalore & Pune
Join the Java Evolution GIDS Bangalore & PuneJoin the Java Evolution GIDS Bangalore & Pune
Join the Java Evolution GIDS Bangalore & Pune
 
State of GeoServer, GeoTools and Friends 2014
State of GeoServer, GeoTools and Friends 2014State of GeoServer, GeoTools and Friends 2014
State of GeoServer, GeoTools and Friends 2014
 
MicroProfile for MicroServices
MicroProfile for MicroServicesMicroProfile for MicroServices
MicroProfile for MicroServices
 
Lucene solr 4 spatial extended deep dive
Lucene solr 4 spatial   extended deep diveLucene solr 4 spatial   extended deep dive
Lucene solr 4 spatial extended deep dive
 
Implementing your own Google App Engine
Implementing your own Google App Engine Implementing your own Google App Engine
Implementing your own Google App Engine
 
SSJS, NoSQL, GAE and AppengineJS
SSJS, NoSQL, GAE and AppengineJSSSJS, NoSQL, GAE and AppengineJS
SSJS, NoSQL, GAE and AppengineJS
 
Efficient use of Standards-based Interfaces and Encodings in Geospatial Intel...
Efficient use of Standards-based Interfaces and Encodings in Geospatial Intel...Efficient use of Standards-based Interfaces and Encodings in Geospatial Intel...
Efficient use of Standards-based Interfaces and Encodings in Geospatial Intel...
 
Pg intro part1-theory_slides
Pg intro part1-theory_slidesPg intro part1-theory_slides
Pg intro part1-theory_slides
 
Building Location Aware Apps - Get Started with PostGIS, PART I
Building Location Aware Apps - Get Started with PostGIS, PART IBuilding Location Aware Apps - Get Started with PostGIS, PART I
Building Location Aware Apps - Get Started with PostGIS, PART I
 
Gerrit + Jenkins = Continuous Delivery For Big Data
Gerrit + Jenkins = Continuous Delivery For Big DataGerrit + Jenkins = Continuous Delivery For Big Data
Gerrit + Jenkins = Continuous Delivery For Big Data
 

More from Jody Garnett

Map box styles in GeoServer and OpenLayers
Map box styles in GeoServer and OpenLayersMap box styles in GeoServer and OpenLayers
Map box styles in GeoServer and OpenLayers
Jody Garnett
 

More from Jody Garnett (20)

GeoServer Orientation
GeoServer OrientationGeoServer Orientation
GeoServer Orientation
 
Open Source Practice and Passion at OSGeo
Open Source Practice and Passion at OSGeoOpen Source Practice and Passion at OSGeo
Open Source Practice and Passion at OSGeo
 
Introduction to OSGeo
Introduction to OSGeoIntroduction to OSGeo
Introduction to OSGeo
 
Open Source Procurement
Open Source ProcurementOpen Source Procurement
Open Source Procurement
 
Java Image Processing for Geospatial Community
Java Image Processing for Geospatial CommunityJava Image Processing for Geospatial Community
Java Image Processing for Geospatial Community
 
Open Source Practice and Passion at OSGeo
Open Source Practice and Passion at OSGeoOpen Source Practice and Passion at OSGeo
Open Source Practice and Passion at OSGeo
 
Open Source is hard, we are here to help!
Open Source is hard, we are here to help!Open Source is hard, we are here to help!
Open Source is hard, we are here to help!
 
GeoServer Developers Workshop
GeoServer Developers WorkshopGeoServer Developers Workshop
GeoServer Developers Workshop
 
GeoServer Ecosystem 2018
GeoServer Ecosystem 2018GeoServer Ecosystem 2018
GeoServer Ecosystem 2018
 
State of GeoServer 2.14
State of GeoServer 2.14State of GeoServer 2.14
State of GeoServer 2.14
 
OSGeo AGM 2018
OSGeo AGM 2018OSGeo AGM 2018
OSGeo AGM 2018
 
Working with the OSGeo Community
Working with the OSGeo CommunityWorking with the OSGeo Community
Working with the OSGeo Community
 
State of GeoServer 2.13
State of GeoServer 2.13State of GeoServer 2.13
State of GeoServer 2.13
 
Open Data and Open Software Geospatial Applications
Open Data and Open Software Geospatial ApplicationsOpen Data and Open Software Geospatial Applications
Open Data and Open Software Geospatial Applications
 
Map box styles in GeoServer and OpenLayers
Map box styles in GeoServer and OpenLayersMap box styles in GeoServer and OpenLayers
Map box styles in GeoServer and OpenLayers
 
Quick and easy web maps
Quick and easy web mapsQuick and easy web maps
Quick and easy web maps
 
OSGeo AGM 2017
OSGeo AGM 2017OSGeo AGM 2017
OSGeo AGM 2017
 
Incubation Orientation
Incubation OrientationIncubation Orientation
Incubation Orientation
 
Understanding the Flexibility of Open Source
Understanding the Flexibility of Open SourceUnderstanding the Flexibility of Open Source
Understanding the Flexibility of Open Source
 
Understanding Open Source
Understanding Open SourceUnderstanding Open Source
Understanding Open Source
 

Recently uploaded

+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
Health
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
mohitmore19
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
9953056974 Low Rate Call Girls In Saket, Delhi NCR
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
anilsa9823
 

Recently uploaded (20)

SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AISyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
SyndBuddy AI 2k Review 2024: Revolutionizing Content Syndication with AI
 
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
Short Story: Unveiling the Reasoning Abilities of Large Language Models by Ke...
 
Software Quality Assurance Interview Questions
Software Quality Assurance Interview QuestionsSoftware Quality Assurance Interview Questions
Software Quality Assurance Interview Questions
 
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
Tech Tuesday-Harness the Power of Effective Resource Planning with OnePlan’s ...
 
Microsoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdfMicrosoft AI Transformation Partner Playbook.pdf
Microsoft AI Transformation Partner Playbook.pdf
 
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected WorkerHow To Troubleshoot Collaboration Apps for the Modern Connected Worker
How To Troubleshoot Collaboration Apps for the Modern Connected Worker
 
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
call girls in Vaishali (Ghaziabad) 🔝 >༒8448380779 🔝 genuine Escort Service 🔝✔️✔️
 
Optimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTVOptimizing AI for immediate response in Smart CCTV
Optimizing AI for immediate response in Smart CCTV
 
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
+971565801893>>SAFE AND ORIGINAL ABORTION PILLS FOR SALE IN DUBAI AND ABUDHAB...
 
TECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service providerTECUNIQUE: Success Stories: IT Service provider
TECUNIQUE: Success Stories: IT Service provider
 
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICECHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
CHEAP Call Girls in Pushp Vihar (-DELHI )🔝 9953056974🔝(=)/CALL GIRLS SERVICE
 
How To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.jsHow To Use Server-Side Rendering with Nuxt.js
How To Use Server-Side Rendering with Nuxt.js
 
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
W01_panagenda_Navigating-the-Future-with-The-Hitchhikers-Guide-to-Notes-and-D...
 
5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf5 Signs You Need a Fashion PLM Software.pdf
5 Signs You Need a Fashion PLM Software.pdf
 
Right Money Management App For Your Financial Goals
Right Money Management App For Your Financial GoalsRight Money Management App For Your Financial Goals
Right Money Management App For Your Financial Goals
 
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
Shapes for Sharing between Graph Data Spaces - and Epistemic Querying of RDF-...
 
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
Try MyIntelliAccount Cloud Accounting Software As A Service Solution Risk Fre...
 
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female serviceCALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
CALL ON ➥8923113531 🔝Call Girls Badshah Nagar Lucknow best Female service
 
HR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.comHR Software Buyers Guide in 2024 - HRSoftware.com
HR Software Buyers Guide in 2024 - HRSoftware.com
 
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS LiveVip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
Vip Call Girls Noida ➡️ Delhi ➡️ 9999965857 No Advance 24HRS Live
 

State of JTS 2017

  • 1. State of JTS Presented by: James, Jody, Rob, (Martin)
  • 2. Welcome Martin Davis James Hughes Jody Garnett Rob Emanuele Vivid Solutions CCRi Boundless Azavea 2
  • 4. What is JTS Topology Suite? 4 Java API for working with 2D Geometries
  • 5. 1.9 1.3 JTS Project History 5 2005 2006 2007 2008 2009 2004 2003 2002 2001 2000 1.0 2014 2013 2012 2011 2010 2015 2016 2017 2018 2020 JTS 1.14 1.15 1.11.21.4 1.5 1.6 1.7 1.8 1.10 1.111.121.13
  • 7. Representations: OGC Simple Features ● Point ● LineString ● LinearRing ● Polygon ● MultiPoint ● MultiLineString ● MultiPolygon ● GeometryCollection 7 JTS Topology Suite
  • 8. 8 Predicates (DE-9IM) ● Equals ● Disjoin ● Intersects ● Touches ● Crosses ● Within ● Contains ● Overlaps ● Covers ● CoveredBy JTS Topology Suite
  • 9. 9 Overlays ● Intersection ● Union ● Difference ● SymDifference JTS Topology Suite
  • 10. JTS Topology Suite Measurements ● Length ● Area ● Distance 10
  • 11. JTS Topology Suite IO: ● WKT ● WKB ● GeoJSON ● KML ● GML2 11
  • 12. JTS Topology Suite 12 Algorithms ● Convex Hull ● Buffer ● Validation ● Dissolve ● Polygonization ● Simplification ● Triangulation ● Voronoi ● Linear Referencing ● and more...
  • 13. JTS Topology Suite 13 Applications ● TestBuilder ● TestRunner
  • 15. JTS 1.14 Released January 2016 • LineDissolver • edgegraph package • Visvalingam-Whyatt simplification Improvements: ● Improved thread-safety ● Fixed Java 7 compatibility ● Added Spatialite WKB ● CoordinateSequence ● many bug fixes and performance improvements JTS I/O • KML Writer • GeoJsonReader/Writer • Oracle SDO Performance 15 Visvalingam-Whyatt vs Douglas-Peucker
  • 16. JTS 1.14 with Maven JTS 1.14 16 <dependency> <groupId>com.vividsolutions</groupId> <artifactId>jts-core</artifactId> <version>1.14.0</version> </dependency> Published Official release on SF • Install into local repo On Maven Central • We do not know who did this!
  • 18. JTS 1.15 • Focus on codebase • organization and packaging • Some functionality improvements • K Nearest Neighbor search for STR-Tree • Improve handling of Quadtree queries with null Envelope • Intersects now supports GeometryCollection • JTSTestRunnerCmd command-line app
  • 19. Sourceforge → GitHub 19 • Moving from SVN to GIT • https://github.com/locationtech/jts
  • 20. Why choose GitHub? • High Visibility • Great tools • Git tools • Issue tracking • Pull Requests • Continuous Integration • Website • Easier for contributions • Where the action is! 20
  • 21. GitHub: JTS Project Activity • Pull Requests • 76 accepted, 8 open • Issues • 7 closed, 25 open 21
  • 22. Mavenization • Build chain now uses Maven instead of Ant • Easier to build and use • Easy Eclipse IDE configuration • Unit tests run by Maven build • including XML tests • Better release story • Code artifacts will be hosted on Maven Central • Apps built as fat-jars (TestBuilder, TestRunner) • To Do • Work on packaging a distro with source, scripts, etc... 22
  • 23. Modular Codebase • Codebase organized into modules • jts-core - geometry implementation for use • jts-tests - extensive testing for correctness and stability • jts-io - read and write geometry • jts-example - examples of using the jts api • jts-lab - experimental playground use at your own risk • jts-app - test builder application for defining tests • better clarity of internal dependencies 23
  • 24. JTS Joins LocationTech • LocationTech offers • project infrastructure • project visibility • stability, governance • Immediate benefits • More team members • Synergy with other LocationTech projects • In-depth legal review for IP (Intellectual Property) cleanliness 24 • Initial Work • Project Application • License Change • LocationTech Incubation • Long term hopes • Additional Contributors • Funding for JTS 2.0 • Build Infrastructure • Official Maven Deployment
  • 25. LocationTech Incubation A new home: • Project Website • Mailing List • Build Server • GitHub repo 25 A new License • Eclipse Public License • Eclipse Distribution License (BSD-3 Clause License) Challenges: • Contact assorted contributors (because we did not have a CLA) • changing package names • Opportunity to work together • Maintaining codebase history
  • 27. JTS 1.15-SNAPSHOT • Packaging • org.locationtech.jts • GitHub repo • https://github.com/locationtech/jts • Snapshots Available via LT Nexus • https://repo.locationtech.org/ 27
  • 28. Using JTS 1.15 with Maven JTS 1.14 28 <dependency> <groupId>com.vividsolutions</groupId> <artifactId>jts-core</artifactId> <version>1.14.0</version> </dependency> JTS 1.15.0-SNAPSHOT <dependency> <groupId>org.locationtech.jts</groupId> <artifactId>jts-core</artifactId> <version>1.15.0-SNAPSHOT</version> </dependency> …. <repositories> <repository> <id>locationtech-snapshots</id> <url>https://repo.locationtech.org/content/groups/snapshots</url> <snapshots> <enabled>true</enabled> </snapshots> </repository> </repositories>
  • 29. Migration to JTS 1.15 • New module structure • jts-core • jts-io-common - GeoJSON • jts-io-ora - Oracle support • jts-io-sde - SDE support • jts-tests - XML Tests & TestRunner • Change package names • org.locationtech.jts.* • Change Maven reference • To be determined… •
  • 30. Team Code Sprints • Dates • January 25-27, 2016 • November 3-4, 2016 • Achievements • Sourceforge → GitHub • Mavenization • New Committers • Addressed IP review questions
  • 31. 31
  • 32. JTS 1.15 Coming Soon! • Coming soon to a repo near you! • Incubation is nearly complete • LocationTech Release process • Final IP issues being resolved (checking in new icons for the test builder application) • Two week release review • Deploy to Maven Central (and LocationTech repo) 32
  • 33. Roadmap / Wishlist uDig Introduction 33
  • 34. Algorithm Improvements • Goal: improve some key JTS algorithms • Overlay • Snap-rounding (no more TopologyExceptions!) • Support PreparedGeometry for caching • Fast & robust Clip to Rectangle • Spatial Predicate improvements • Streaming / Lazy evaluation with short-circuiting • User-defined precision model • Less sensitive to valid geometry (e.g. Intersects) • Distance • Support cached PreparedGeometry 34
  • 35. New Algorithms • Concave Hull • Polygon Triangulation • Polygon Cleaning (“MakeValid”) • Split Geometry by Line • Polygon Coverage Simplification 35 Concave Hull Polygon Triangulation
  • 36. New API - JTS 2.0 • Concept for a redesign of JTS • Key Goals • Interface-based Geometry access • Immutable Geometry objects • Geodetic (WGS84) support, with some basic algorithms • Pluggable/discoverable Geometry operation framework • Coordinate extensions (XY, XY+M) • Non-goals • Backwards compatibility • Improving geometry algorithms 36
  • 37. Shape the Future Join JTS Topology Suite
  • 38. Contributing to JTS • Register as a Contributor • Sign the Eclipse Contributor Agreement • https://www.eclipse.org/legal/ECA.php • Develop a patch, making sure to include • Javadoc • Unit Tests - JUnit and/or JTS XML tests • Make a Pull Request on GitHub • Acknowledge code is IP clean by signing-off each Git commit • Make sure the Travis CI validation tests pass See also https://github.com/locationtech/jts/blob/master/CONTRIBUTING.md 38
  • 40. Project Resources • Source Code repo • https://github.com/locationtech/jts • Issue Tracker • https://github.com/locationtech/jts/issues • Mailing List • https://dev.locationtech.org/mailman/listinfo/jts-dev • Project website • https://locationtech.github.io/jts • Javadoc • https://locationtech.github.io/jts/javadoc 40
  • 41. Thank you from the JTS Team