SlideShare a Scribd company logo
1 of 71
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 2019
1.15
1.11.21.4
1.5 1.6 1.7 1.8 1.10
1.111.121.13
LT JTS 1.161.14 1.15
JTS is EVERYWHERE
6
JTS
GEOS
GeoMesa
GeoTrellis
GeoWave
Spatial4J
JSTS
Net Topology
Suite
RasterFrames
7
Vector Data (Points)
8
Vector Data (Lines)
9
Vector Data (Polygons)
Source: https://ryouready.wordpress.com/2009/11/16/infomaps-using-r-visualizing-german-unemployment-rates-by-color-on-a-map/
10
Vector Data
11
Contains
12
Contains
Representations:
OGC Simple Features
● Point
● LineString
● LinearRing
● Polygon
● MultiPoint
● MultiLineString
● MultiPolygon
● GeometryCollection
13
JTS Topology Suite
14
Predicates (DE-9IM)
● Equals
● Disjoin
● Intersects
● Touches
● Crosses
● Within
● Contains
● Overlaps
● Covers
● CoveredBy
JTS Topology Suite
15
Overlays
● Intersection
● Union
● Difference
● SymDifference
JTS Topology Suite
JTS Topology Suite
Measurements
● Length
● Area
● Distance
16
JTS Topology Suite
IO:
● WKT
● WKB
● GeoJSON
● KML
● GML2
17
JTS Topology Suite
18
Algorithms
● Convex Hull
● Buffer
● Validation
● Dissolve
● Polygonization
● Simplification
● Triangulation
● Voronoi
● Linear Referencing
● and more...
JTS Topology Suite
19
Applications
● TestBuilder
● TestRunner
JTS 1.14
JTS 1.14 Release
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
21
Visvalingam-Whyatt
vs
Douglas-Peucker
JTS 1.14 with Maven
JTS 1.14
22
<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 Release
• 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
25
• 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!
26
GitHub: JTS Project Activity
• Pull Requests
• 76 accepted, 15 open
• Issues
• 39 closed, 49 open
27
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...
28
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
29
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
30
• Initial Work
• Project Application
• License Change
• LocationTech Incubation
• Build Infrastructure
• Official Maven Deployment
• Long term hopes
• Additional Contributors
• Funding for JTS 2.0
LocationTech Incubation
A new home:
• Project Website
• Mailing List
• Build Server
• GitHub repo
31
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
32
JTS 1.15
• Packaging
• org.locationtech.jts
• GitHub repo
• https://github.com/locationtech/jts
• Releases available on Maven Central
(and LT Nexus)
• Snapshots Available via LT Nexus
• https://repo.locationtech.org/
33
Using JTS 1.15 with Maven
JTS 1.14
34
<dependency>
<groupId>com.vividsolutions</groupId>
<artifactId>jts-core</artifactId>
<version>1.14.0</version>
</dependency>
JTS 1.15.1
<dependency>
<groupId>org.locationtech.jts</groupId>
<artifactId>jts-core</artifactId>
<version>1.15.1</version>
</dependency>
Using JTS 1.15.2-SNAPSHOT
JTS 1.14
35
<dependency>
<groupId>com.vividsolutions</groupId>
<artifactId>jts-core</artifactId>
<version>1.14.0</version>
</dependency>
JTS 1.15.2-SNAPSHOT
<dependency>
<groupId>org.locationtech.jts</groupId>
<artifactId>jts-core</artifactId>
<version>1.15.2-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
• GroupId change: com.vividsolutions to org.locationtech.jts
•
JTS 1.15.1
• Support projects migrating
• Java Roadmap Compatibility
• module names for “jigsaw” packaging
• Fixes
• Geometry.clone() → Geometry.copy()
JTS Roadmap
Coming Soon!
JTS 1.16 Coming Soon!
• How soon?
• Release Candidate 1.16.0-RC1 is already available
• Scheduled 1.16.0 for September 5th Eclipse release review
• Final IP issues being resolved
(checking in new icons for the test builder application)
• Two week release review
39
Dimension: number of ordinates in
each coordinate, this total includes
any measures.
Measure: number of measures
included in dimension for each
coordinate
CoordinateSequence
XYZM
40
Coordinate Dimension Measures
XY 2 0
XYM 3 1
XYZ 3 0
XYZM 4 1
Coordinate
XYZM
Subclasses for XY, XYM, XYZM
representations.
The field “z” is deprecated! Please
use accessors to access fields.
41
Supports Well-Known Text representations for Z, M, ZM forms:
LINESTRING (10 10, 20 20, 30 40)
LINESTRING Z(10 10 10, 20 20 10, 30 40 10)
LINESTRING M(10 10 11, 20 20 11, 30 40 11)
LINESTRING ZM(10 10 10 11, 20 20 10 11, 30 40 10 11)
WKT XYZM Support
Felix has extended WKT
reader/writer support to support
XYZM.
The reader has a flag to support
“legacy” JTS representation.
42
JTS Topology Suite
IO:
● WKT
● WKB
● GeoJSON
● KML
● GML2
● TWKB (In progress!)
43
JTS Community Building
uDig Introduction 44
JTS Team Code Sprints
• 2016 January and November
• Sourceforge → GitHub
• Build change to maven
• Addressed “Intellectual Property” review questions
46
JTS Team Code Sprints
• 2018 Bon Code Sprint
• Java 10 compatibility with “jigsaw” module names
• 2017 FOSS4GNA Code Sprint
• Helping projects upgrade
• GeoTools PostGIS DataStore TWKB
• Join us Thursday for Community and workshop day!
48
JTS in the ‘Cloud’
uDig Introduction 49
JTS is EVERYWHERE
50
JTS
GEOS
GeoMesa
GeoTrellis
GeoWave
Spatial4J
JSTS
Net Topology
Suite
RasterFrames
Cloud Projects using JTS
51
Big Data Ecosystem
Distributed Spatial Goals
● Distribute the storage of vector and raster data
○ Database integration (HBase, Accumulo, C*)
○ File format integration (Arrow, Avro, Parquet)
● Distribute the processing of geospatial data
○ MapReduce integration
○ Spark integration
○ SparkSQL
53
JTS + Spark
● In 2015-2016
○ GeoMesa had RDD level support for JTS Geometry types (as well as
GeoTools SimpleFeatures)
● In 2017
○ GeoMesa integrated with Spark’s SQL query planner
■ Added Spatial UDTs
■ Added Spatial UDFs
■ Adds PostGIS syntax to Spark
■ (Limitation) Tied to GeoMesa
● In 2018
○ GeoMesa project refactored JTS+Spark module
■ Being used by the RasterFrames project
54
JTS + Spark going forward
● The JTS + Spark integration is pretty straightforward;
the goal is to have more projects integrate with it.
○ Performance enhancements can shared by all the projects
● Currently, each Spark release introduces changes to
the UDT/UDF protected interfaces.
○ This risk is best shared by a community (rather than having each
project reimplement and update their individual projects)
55
JTS 2.0 Roadmap / Wishlist
uDig Introduction 56
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
57
New Algorithms
• Concave Hull
• Polygon Triangulation
• Polygon Cleaning (“MakeValid”)
• Split Geometry by Line
• Polygon Coverage Simplification
58
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
59
JTS 1.0 Baseline
SFQL, GML2
60
Primitives:
● Geometry
● Point
● LineString
● Polygon
JTS 1.0 Baseline
SFQL, GML2
61
Collections
● GeometryCollection
● MultiPoint
● MultiLineString
● MultiPolygon
JTS 2.0 Challenge
SQL/MM, GML3, ISO19107
Primitives:
● Point
● Curve
● Surface
62
JTS 2.0 Challenge
SQL/MM, GML3, ISO19107
Geometry defined using:
● Positions
● Reference System
63
JTS 2.0 Challenge
JTS Topology Suite
Linear Geometry
Euclidean operations
Spatial4J
Curved Geometry
Cylindrical operations
Spherical operations
64
JTS 2.0 Approach
65
SFSQL
Geometry Classes
Spatial4J
Shape Classes
SQL/MM
Geometry Classes
JTS 2.0
Linear Ops Cylindrical Ops Spherical Ops
BufferOp BufferOp BufferOp
... ... ...
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
67
Join Us at the Code Sprint!
Thursday, at the code sprint, we will work on two projects
1. Polishing a new TWKB Reader/Writer
2. Upgrading the GeoServer ecosystem to LocationTech JTS
68
Questions?
uDig Introduction 69
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
70
Thank you from the JTS Team

More Related Content

What's hot

Advanced GeoServer Security with GeoFence
Advanced GeoServer Security with GeoFenceAdvanced GeoServer Security with GeoFence
Advanced GeoServer Security with GeoFenceGeoSolutions
 
Introduction au webmapping au-dela de google maps
Introduction au webmapping  au-dela de google mapsIntroduction au webmapping  au-dela de google maps
Introduction au webmapping au-dela de google mapsVisionGÉOMATIQUE2012
 
How to Easily Read and Write CityGML Data (Without Coding)
How to Easily Read and Write CityGML Data (Without Coding)How to Easily Read and Write CityGML Data (Without Coding)
How to Easily Read and Write CityGML Data (Without Coding)Safe Software
 
Internet of Things (IoT) and Big Data
Internet of Things (IoT) and Big DataInternet of Things (IoT) and Big Data
Internet of Things (IoT) and Big DataGuido Schmutz
 
FOSS4G Firenze 2022 참가기
FOSS4G Firenze 2022 참가기FOSS4G Firenze 2022 참가기
FOSS4G Firenze 2022 참가기SANGHEE SHIN
 
GeoServer on Steroids
GeoServer on Steroids GeoServer on Steroids
GeoServer on Steroids GeoSolutions
 
OSM and QGIS
OSM and QGISOSM and QGIS
OSM and QGISQGIS UK
 
공간정보 관점에서 바라본 디지털트윈과 메타버스
공간정보 관점에서 바라본 디지털트윈과 메타버스공간정보 관점에서 바라본 디지털트윈과 메타버스
공간정보 관점에서 바라본 디지털트윈과 메타버스SANGHEE SHIN
 
Geonetwork for Spatial Data
Geonetwork for Spatial DataGeonetwork for Spatial Data
Geonetwork for Spatial DataNizam GIS
 
GeoServer on steroids
GeoServer on steroidsGeoServer on steroids
GeoServer on steroidsGeoSolutions
 
Oracle to Azure PostgreSQL database migration webinar
Oracle to Azure PostgreSQL database migration webinarOracle to Azure PostgreSQL database migration webinar
Oracle to Azure PostgreSQL database migration webinarMinnie Seungmin Cho
 
Raster data in GeoServer and GeoTools: Achievements, issues and future devel...
Raster data in GeoServer and GeoTools:  Achievements, issues and future devel...Raster data in GeoServer and GeoTools:  Achievements, issues and future devel...
Raster data in GeoServer and GeoTools: Achievements, issues and future devel...GeoSolutions
 
Sizing Splunk SmartStore - Spend Less and Get More Out of Splunk
Sizing Splunk SmartStore - Spend Less and Get More Out of SplunkSizing Splunk SmartStore - Spend Less and Get More Out of Splunk
Sizing Splunk SmartStore - Spend Less and Get More Out of SplunkPaula Koziol
 
WiFi Opportunities & Challenges: Positioning vs. 5G
WiFi Opportunities & Challenges: Positioning vs. 5GWiFi Opportunities & Challenges: Positioning vs. 5G
WiFi Opportunities & Challenges: Positioning vs. 5GDean Bubley
 
Kafka with IBM Event Streams - Technical Presentation
Kafka with IBM Event Streams - Technical PresentationKafka with IBM Event Streams - Technical Presentation
Kafka with IBM Event Streams - Technical PresentationWinton Winton
 
Web Mapping 101: What Is It and Making It Work For You
Web Mapping 101: What Is It and Making It Work For YouWeb Mapping 101: What Is It and Making It Work For You
Web Mapping 101: What Is It and Making It Work For YouSafe Software
 

What's hot (20)

Geonode 2.0
Geonode 2.0Geonode 2.0
Geonode 2.0
 
Advanced GeoServer Security with GeoFence
Advanced GeoServer Security with GeoFenceAdvanced GeoServer Security with GeoFence
Advanced GeoServer Security with GeoFence
 
Introduction au webmapping au-dela de google maps
Introduction au webmapping  au-dela de google mapsIntroduction au webmapping  au-dela de google maps
Introduction au webmapping au-dela de google maps
 
How to Easily Read and Write CityGML Data (Without Coding)
How to Easily Read and Write CityGML Data (Without Coding)How to Easily Read and Write CityGML Data (Without Coding)
How to Easily Read and Write CityGML Data (Without Coding)
 
Internet of Things (IoT) and Big Data
Internet of Things (IoT) and Big DataInternet of Things (IoT) and Big Data
Internet of Things (IoT) and Big Data
 
FOSS4G Firenze 2022 참가기
FOSS4G Firenze 2022 참가기FOSS4G Firenze 2022 참가기
FOSS4G Firenze 2022 참가기
 
GeoServer on Steroids
GeoServer on Steroids GeoServer on Steroids
GeoServer on Steroids
 
OSM and QGIS
OSM and QGISOSM and QGIS
OSM and QGIS
 
공간정보 관점에서 바라본 디지털트윈과 메타버스
공간정보 관점에서 바라본 디지털트윈과 메타버스공간정보 관점에서 바라본 디지털트윈과 메타버스
공간정보 관점에서 바라본 디지털트윈과 메타버스
 
National Slope Master Plan
National Slope Master PlanNational Slope Master Plan
National Slope Master Plan
 
Geonetwork for Spatial Data
Geonetwork for Spatial DataGeonetwork for Spatial Data
Geonetwork for Spatial Data
 
GeoServer on steroids
GeoServer on steroidsGeoServer on steroids
GeoServer on steroids
 
Oracle to Azure PostgreSQL database migration webinar
Oracle to Azure PostgreSQL database migration webinarOracle to Azure PostgreSQL database migration webinar
Oracle to Azure PostgreSQL database migration webinar
 
Raster data in GeoServer and GeoTools: Achievements, issues and future devel...
Raster data in GeoServer and GeoTools:  Achievements, issues and future devel...Raster data in GeoServer and GeoTools:  Achievements, issues and future devel...
Raster data in GeoServer and GeoTools: Achievements, issues and future devel...
 
Sizing Splunk SmartStore - Spend Less and Get More Out of Splunk
Sizing Splunk SmartStore - Spend Less and Get More Out of SplunkSizing Splunk SmartStore - Spend Less and Get More Out of Splunk
Sizing Splunk SmartStore - Spend Less and Get More Out of Splunk
 
Three dimensional (3D) GIS
Three dimensional (3D) GISThree dimensional (3D) GIS
Three dimensional (3D) GIS
 
WiFi Opportunities & Challenges: Positioning vs. 5G
WiFi Opportunities & Challenges: Positioning vs. 5GWiFi Opportunities & Challenges: Positioning vs. 5G
WiFi Opportunities & Challenges: Positioning vs. 5G
 
DDS Secure Intro
DDS Secure IntroDDS Secure Intro
DDS Secure Intro
 
Kafka with IBM Event Streams - Technical Presentation
Kafka with IBM Event Streams - Technical PresentationKafka with IBM Event Streams - Technical Presentation
Kafka with IBM Event Streams - Technical Presentation
 
Web Mapping 101: What Is It and Making It Work For You
Web Mapping 101: What Is It and Making It Work For YouWeb Mapping 101: What Is It and Making It Work For You
Web Mapping 101: What Is It and Making It Work For You
 

Similar to State of JTS Presentation Overviewing History, Features, and Future of the JTS Topology Suite

LocationTech Projects
LocationTech ProjectsLocationTech Projects
LocationTech ProjectsJody Garnett
 
State of GeoServer - FOSS4G 2016
State of GeoServer - FOSS4G 2016State of GeoServer - FOSS4G 2016
State of GeoServer - FOSS4G 2016GeoSolutions
 
State of GeoServer 2.13
State of GeoServer 2.13State of GeoServer 2.13
State of GeoServer 2.13Jody Garnett
 
State of GeoServer 2.10
State of GeoServer 2.10State of GeoServer 2.10
State of GeoServer 2.10Jody Garnett
 
State of GeoServer 2015
State of GeoServer 2015State of GeoServer 2015
State of GeoServer 2015Jody Garnett
 
Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para Ti
Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para TiGustavo Garnica: Evolución de la Plataforma Java y lo que Significa para Ti
Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para TiSoftware Guru
 
GeoKettle: A powerful open source spatial ETL tool
GeoKettle: A powerful open source spatial ETL toolGeoKettle: A powerful open source spatial ETL tool
GeoKettle: A powerful open source spatial ETL toolThierry Badard
 
State of GeoServer 2.12
State of GeoServer 2.12State of GeoServer 2.12
State of GeoServer 2.12GeoSolutions
 
Spatially enabled open source BI (GeoBI) with GeoKettle, GeoMondrian & SOLAPL...
Spatially enabled open source BI (GeoBI) with GeoKettle, GeoMondrian & SOLAPL...Spatially enabled open source BI (GeoBI) with GeoKettle, GeoMondrian & SOLAPL...
Spatially enabled open source BI (GeoBI) with GeoKettle, GeoMondrian & SOLAPL...Thierry Badard
 
State of GeoServer
State of GeoServerState of GeoServer
State of GeoServerJody Garnett
 
GeoNetwork workshop introduction mapwindow conference 2012 Velp
GeoNetwork workshop introduction mapwindow conference 2012 VelpGeoNetwork workshop introduction mapwindow conference 2012 Velp
GeoNetwork workshop introduction mapwindow conference 2012 Velppvangenuchten
 
WMS Performance Shootout 2011
WMS Performance Shootout 2011WMS Performance Shootout 2011
WMS Performance Shootout 2011Jeff McKenna
 
Spatiotemporal Raster Improvements in GeoServer
Spatiotemporal Raster Improvements in GeoServerSpatiotemporal Raster Improvements in GeoServer
Spatiotemporal Raster Improvements in GeoServerGeoSolutions
 
GeoServer Ecosystem 2018
GeoServer Ecosystem 2018GeoServer Ecosystem 2018
GeoServer Ecosystem 2018Jody Garnett
 
DEVNET-1169 CI/CT/CD on a Micro Services Applications using Docker, Salt & Ni...
DEVNET-1169	CI/CT/CD on a Micro Services Applications using Docker, Salt & Ni...DEVNET-1169	CI/CT/CD on a Micro Services Applications using Docker, Salt & Ni...
DEVNET-1169 CI/CT/CD on a Micro Services Applications using Docker, Salt & Ni...Cisco DevNet
 
GeoPackage SWG Overview
GeoPackage SWG OverviewGeoPackage SWG Overview
GeoPackage SWG OverviewJeff Yutzler
 
GeoKettle: A powerful open source spatial ETL tool
GeoKettle: A powerful open source spatial ETL toolGeoKettle: A powerful open source spatial ETL tool
GeoKettle: A powerful open source spatial ETL toolThierry Badard
 
OSGeo Live Lightening Overview
OSGeo Live Lightening OverviewOSGeo Live Lightening Overview
OSGeo Live Lightening OverviewJody Garnett
 
PEARC17: Live Integrated Visualization Environment: An Experiment in General...
PEARC17: Live Integrated Visualization Environment: An Experiment in General...PEARC17: Live Integrated Visualization Environment: An Experiment in General...
PEARC17: Live Integrated Visualization Environment: An Experiment in General...moneyjh
 

Similar to State of JTS Presentation Overviewing History, Features, and Future of the JTS Topology Suite (20)

State of JTS 2017
State of JTS 2017State of JTS 2017
State of JTS 2017
 
LocationTech Projects
LocationTech ProjectsLocationTech Projects
LocationTech Projects
 
State of GeoServer - FOSS4G 2016
State of GeoServer - FOSS4G 2016State of GeoServer - FOSS4G 2016
State of GeoServer - FOSS4G 2016
 
State of GeoServer 2.13
State of GeoServer 2.13State of GeoServer 2.13
State of GeoServer 2.13
 
State of GeoServer 2.10
State of GeoServer 2.10State of GeoServer 2.10
State of GeoServer 2.10
 
State of GeoServer 2015
State of GeoServer 2015State of GeoServer 2015
State of GeoServer 2015
 
Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para Ti
Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para TiGustavo Garnica: Evolución de la Plataforma Java y lo que Significa para Ti
Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para Ti
 
GeoKettle: A powerful open source spatial ETL tool
GeoKettle: A powerful open source spatial ETL toolGeoKettle: A powerful open source spatial ETL tool
GeoKettle: A powerful open source spatial ETL tool
 
State of GeoServer 2.12
State of GeoServer 2.12State of GeoServer 2.12
State of GeoServer 2.12
 
Spatially enabled open source BI (GeoBI) with GeoKettle, GeoMondrian & SOLAPL...
Spatially enabled open source BI (GeoBI) with GeoKettle, GeoMondrian & SOLAPL...Spatially enabled open source BI (GeoBI) with GeoKettle, GeoMondrian & SOLAPL...
Spatially enabled open source BI (GeoBI) with GeoKettle, GeoMondrian & SOLAPL...
 
State of GeoServer
State of GeoServerState of GeoServer
State of GeoServer
 
GeoNetwork workshop introduction mapwindow conference 2012 Velp
GeoNetwork workshop introduction mapwindow conference 2012 VelpGeoNetwork workshop introduction mapwindow conference 2012 Velp
GeoNetwork workshop introduction mapwindow conference 2012 Velp
 
WMS Performance Shootout 2011
WMS Performance Shootout 2011WMS Performance Shootout 2011
WMS Performance Shootout 2011
 
Spatiotemporal Raster Improvements in GeoServer
Spatiotemporal Raster Improvements in GeoServerSpatiotemporal Raster Improvements in GeoServer
Spatiotemporal Raster Improvements in GeoServer
 
GeoServer Ecosystem 2018
GeoServer Ecosystem 2018GeoServer Ecosystem 2018
GeoServer Ecosystem 2018
 
DEVNET-1169 CI/CT/CD on a Micro Services Applications using Docker, Salt & Ni...
DEVNET-1169	CI/CT/CD on a Micro Services Applications using Docker, Salt & Ni...DEVNET-1169	CI/CT/CD on a Micro Services Applications using Docker, Salt & Ni...
DEVNET-1169 CI/CT/CD on a Micro Services Applications using Docker, Salt & Ni...
 
GeoPackage SWG Overview
GeoPackage SWG OverviewGeoPackage SWG Overview
GeoPackage SWG Overview
 
GeoKettle: A powerful open source spatial ETL tool
GeoKettle: A powerful open source spatial ETL toolGeoKettle: A powerful open source spatial ETL tool
GeoKettle: A powerful open source spatial ETL tool
 
OSGeo Live Lightening Overview
OSGeo Live Lightening OverviewOSGeo Live Lightening Overview
OSGeo Live Lightening Overview
 
PEARC17: Live Integrated Visualization Environment: An Experiment in General...
PEARC17: Live Integrated Visualization Environment: An Experiment in General...PEARC17: Live Integrated Visualization Environment: An Experiment in General...
PEARC17: Live Integrated Visualization Environment: An Experiment in General...
 

More from Jody Garnett

GeoServer Orientation
GeoServer OrientationGeoServer Orientation
GeoServer OrientationJody Garnett
 
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 OSGeoJody Garnett
 
Introduction to OSGeo
Introduction to OSGeoIntroduction to OSGeo
Introduction to OSGeoJody Garnett
 
Open Source Procurement
Open Source ProcurementOpen Source Procurement
Open Source ProcurementJody Garnett
 
Java Image Processing for Geospatial Community
Java Image Processing for Geospatial CommunityJava Image Processing for Geospatial Community
Java Image Processing for Geospatial CommunityJody Garnett
 
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 OSGeoJody Garnett
 
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!Jody Garnett
 
GeoServer Developers Workshop
GeoServer Developers WorkshopGeoServer Developers Workshop
GeoServer Developers WorkshopJody Garnett
 
State of GeoServer 2.14
State of GeoServer 2.14State of GeoServer 2.14
State of GeoServer 2.14Jody Garnett
 
Working with the OSGeo Community
Working with the OSGeo CommunityWorking with the OSGeo Community
Working with the OSGeo CommunityJody Garnett
 
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 ApplicationsJody 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 OpenLayersJody Garnett
 
Quick and easy web maps
Quick and easy web mapsQuick and easy web maps
Quick and easy web mapsJody Garnett
 
Incubation Orientation
Incubation OrientationIncubation Orientation
Incubation OrientationJody Garnett
 
Understanding the Flexibility of Open Source
Understanding the Flexibility of Open SourceUnderstanding the Flexibility of Open Source
Understanding the Flexibility of Open SourceJody Garnett
 
Understanding Open Source
Understanding Open SourceUnderstanding Open Source
Understanding Open SourceJody Garnett
 
Understanding Open Source
Understanding Open SourceUnderstanding Open Source
Understanding Open SourceJody 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
 
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
 
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
 
State of GeoGig
State of GeoGigState of GeoGig
State of GeoGig
 
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
 
Understanding Open Source
Understanding Open SourceUnderstanding Open Source
Understanding Open Source
 

Recently uploaded

Behavioral Disorder: Schizophrenia & it's Case Study.pdf
Behavioral Disorder: Schizophrenia & it's Case Study.pdfBehavioral Disorder: Schizophrenia & it's Case Study.pdf
Behavioral Disorder: Schizophrenia & it's Case Study.pdfSELF-EXPLANATORY
 
Microteaching on terms used in filtration .Pharmaceutical Engineering
Microteaching on terms used in filtration .Pharmaceutical EngineeringMicroteaching on terms used in filtration .Pharmaceutical Engineering
Microteaching on terms used in filtration .Pharmaceutical EngineeringPrajakta Shinde
 
OECD bibliometric indicators: Selected highlights, April 2024
OECD bibliometric indicators: Selected highlights, April 2024OECD bibliometric indicators: Selected highlights, April 2024
OECD bibliometric indicators: Selected highlights, April 2024innovationoecd
 
Pests of jatropha_Bionomics_identification_Dr.UPR.pdf
Pests of jatropha_Bionomics_identification_Dr.UPR.pdfPests of jatropha_Bionomics_identification_Dr.UPR.pdf
Pests of jatropha_Bionomics_identification_Dr.UPR.pdfPirithiRaju
 
Fertilization: Sperm and the egg—collectively called the gametes—fuse togethe...
Fertilization: Sperm and the egg—collectively called the gametes—fuse togethe...Fertilization: Sperm and the egg—collectively called the gametes—fuse togethe...
Fertilization: Sperm and the egg—collectively called the gametes—fuse togethe...D. B. S. College Kanpur
 
User Guide: Pulsar™ Weather Station (Columbia Weather Systems)
User Guide: Pulsar™ Weather Station (Columbia Weather Systems)User Guide: Pulsar™ Weather Station (Columbia Weather Systems)
User Guide: Pulsar™ Weather Station (Columbia Weather Systems)Columbia Weather Systems
 
Carbon Dioxide Capture and Storage (CSS)
Carbon Dioxide Capture and Storage (CSS)Carbon Dioxide Capture and Storage (CSS)
Carbon Dioxide Capture and Storage (CSS)Tamer Koksalan, PhD
 
GenBio2 - Lesson 1 - Introduction to Genetics.pptx
GenBio2 - Lesson 1 - Introduction to Genetics.pptxGenBio2 - Lesson 1 - Introduction to Genetics.pptx
GenBio2 - Lesson 1 - Introduction to Genetics.pptxBerniceCayabyab1
 
Pests of Bengal gram_Identification_Dr.UPR.pdf
Pests of Bengal gram_Identification_Dr.UPR.pdfPests of Bengal gram_Identification_Dr.UPR.pdf
Pests of Bengal gram_Identification_Dr.UPR.pdfPirithiRaju
 
basic entomology with insect anatomy and taxonomy
basic entomology with insect anatomy and taxonomybasic entomology with insect anatomy and taxonomy
basic entomology with insect anatomy and taxonomyDrAnita Sharma
 
Citronella presentation SlideShare mani upadhyay
Citronella presentation SlideShare mani upadhyayCitronella presentation SlideShare mani upadhyay
Citronella presentation SlideShare mani upadhyayupadhyaymani499
 
Four Spheres of the Earth Presentation.ppt
Four Spheres of the Earth Presentation.pptFour Spheres of the Earth Presentation.ppt
Four Spheres of the Earth Presentation.pptJoemSTuliba
 
Forensic limnology of diatoms by Sanjai.pptx
Forensic limnology of diatoms by Sanjai.pptxForensic limnology of diatoms by Sanjai.pptx
Forensic limnology of diatoms by Sanjai.pptxkumarsanjai28051
 
Best Call Girls In Sector 29 Gurgaon❤️8860477959 EscorTs Service In 24/7 Delh...
Best Call Girls In Sector 29 Gurgaon❤️8860477959 EscorTs Service In 24/7 Delh...Best Call Girls In Sector 29 Gurgaon❤️8860477959 EscorTs Service In 24/7 Delh...
Best Call Girls In Sector 29 Gurgaon❤️8860477959 EscorTs Service In 24/7 Delh...lizamodels9
 
FREE NURSING BUNDLE FOR NURSES.PDF by na
FREE NURSING BUNDLE FOR NURSES.PDF by naFREE NURSING BUNDLE FOR NURSES.PDF by na
FREE NURSING BUNDLE FOR NURSES.PDF by naJASISJULIANOELYNV
 
LIGHT-PHENOMENA-BY-CABUALDIONALDOPANOGANCADIENTE-CONDEZA (1).pptx
LIGHT-PHENOMENA-BY-CABUALDIONALDOPANOGANCADIENTE-CONDEZA (1).pptxLIGHT-PHENOMENA-BY-CABUALDIONALDOPANOGANCADIENTE-CONDEZA (1).pptx
LIGHT-PHENOMENA-BY-CABUALDIONALDOPANOGANCADIENTE-CONDEZA (1).pptxmalonesandreagweneth
 
Base editing, prime editing, Cas13 & RNA editing and organelle base editing
Base editing, prime editing, Cas13 & RNA editing and organelle base editingBase editing, prime editing, Cas13 & RNA editing and organelle base editing
Base editing, prime editing, Cas13 & RNA editing and organelle base editingNetHelix
 
STOPPED FLOW METHOD & APPLICATION MURUGAVENI B.pptx
STOPPED FLOW METHOD & APPLICATION MURUGAVENI B.pptxSTOPPED FLOW METHOD & APPLICATION MURUGAVENI B.pptx
STOPPED FLOW METHOD & APPLICATION MURUGAVENI B.pptxMurugaveni B
 
Pests of soyabean_Binomics_IdentificationDr.UPR.pdf
Pests of soyabean_Binomics_IdentificationDr.UPR.pdfPests of soyabean_Binomics_IdentificationDr.UPR.pdf
Pests of soyabean_Binomics_IdentificationDr.UPR.pdfPirithiRaju
 

Recently uploaded (20)

Volatile Oils Pharmacognosy And Phytochemistry -I
Volatile Oils Pharmacognosy And Phytochemistry -IVolatile Oils Pharmacognosy And Phytochemistry -I
Volatile Oils Pharmacognosy And Phytochemistry -I
 
Behavioral Disorder: Schizophrenia & it's Case Study.pdf
Behavioral Disorder: Schizophrenia & it's Case Study.pdfBehavioral Disorder: Schizophrenia & it's Case Study.pdf
Behavioral Disorder: Schizophrenia & it's Case Study.pdf
 
Microteaching on terms used in filtration .Pharmaceutical Engineering
Microteaching on terms used in filtration .Pharmaceutical EngineeringMicroteaching on terms used in filtration .Pharmaceutical Engineering
Microteaching on terms used in filtration .Pharmaceutical Engineering
 
OECD bibliometric indicators: Selected highlights, April 2024
OECD bibliometric indicators: Selected highlights, April 2024OECD bibliometric indicators: Selected highlights, April 2024
OECD bibliometric indicators: Selected highlights, April 2024
 
Pests of jatropha_Bionomics_identification_Dr.UPR.pdf
Pests of jatropha_Bionomics_identification_Dr.UPR.pdfPests of jatropha_Bionomics_identification_Dr.UPR.pdf
Pests of jatropha_Bionomics_identification_Dr.UPR.pdf
 
Fertilization: Sperm and the egg—collectively called the gametes—fuse togethe...
Fertilization: Sperm and the egg—collectively called the gametes—fuse togethe...Fertilization: Sperm and the egg—collectively called the gametes—fuse togethe...
Fertilization: Sperm and the egg—collectively called the gametes—fuse togethe...
 
User Guide: Pulsar™ Weather Station (Columbia Weather Systems)
User Guide: Pulsar™ Weather Station (Columbia Weather Systems)User Guide: Pulsar™ Weather Station (Columbia Weather Systems)
User Guide: Pulsar™ Weather Station (Columbia Weather Systems)
 
Carbon Dioxide Capture and Storage (CSS)
Carbon Dioxide Capture and Storage (CSS)Carbon Dioxide Capture and Storage (CSS)
Carbon Dioxide Capture and Storage (CSS)
 
GenBio2 - Lesson 1 - Introduction to Genetics.pptx
GenBio2 - Lesson 1 - Introduction to Genetics.pptxGenBio2 - Lesson 1 - Introduction to Genetics.pptx
GenBio2 - Lesson 1 - Introduction to Genetics.pptx
 
Pests of Bengal gram_Identification_Dr.UPR.pdf
Pests of Bengal gram_Identification_Dr.UPR.pdfPests of Bengal gram_Identification_Dr.UPR.pdf
Pests of Bengal gram_Identification_Dr.UPR.pdf
 
basic entomology with insect anatomy and taxonomy
basic entomology with insect anatomy and taxonomybasic entomology with insect anatomy and taxonomy
basic entomology with insect anatomy and taxonomy
 
Citronella presentation SlideShare mani upadhyay
Citronella presentation SlideShare mani upadhyayCitronella presentation SlideShare mani upadhyay
Citronella presentation SlideShare mani upadhyay
 
Four Spheres of the Earth Presentation.ppt
Four Spheres of the Earth Presentation.pptFour Spheres of the Earth Presentation.ppt
Four Spheres of the Earth Presentation.ppt
 
Forensic limnology of diatoms by Sanjai.pptx
Forensic limnology of diatoms by Sanjai.pptxForensic limnology of diatoms by Sanjai.pptx
Forensic limnology of diatoms by Sanjai.pptx
 
Best Call Girls In Sector 29 Gurgaon❤️8860477959 EscorTs Service In 24/7 Delh...
Best Call Girls In Sector 29 Gurgaon❤️8860477959 EscorTs Service In 24/7 Delh...Best Call Girls In Sector 29 Gurgaon❤️8860477959 EscorTs Service In 24/7 Delh...
Best Call Girls In Sector 29 Gurgaon❤️8860477959 EscorTs Service In 24/7 Delh...
 
FREE NURSING BUNDLE FOR NURSES.PDF by na
FREE NURSING BUNDLE FOR NURSES.PDF by naFREE NURSING BUNDLE FOR NURSES.PDF by na
FREE NURSING BUNDLE FOR NURSES.PDF by na
 
LIGHT-PHENOMENA-BY-CABUALDIONALDOPANOGANCADIENTE-CONDEZA (1).pptx
LIGHT-PHENOMENA-BY-CABUALDIONALDOPANOGANCADIENTE-CONDEZA (1).pptxLIGHT-PHENOMENA-BY-CABUALDIONALDOPANOGANCADIENTE-CONDEZA (1).pptx
LIGHT-PHENOMENA-BY-CABUALDIONALDOPANOGANCADIENTE-CONDEZA (1).pptx
 
Base editing, prime editing, Cas13 & RNA editing and organelle base editing
Base editing, prime editing, Cas13 & RNA editing and organelle base editingBase editing, prime editing, Cas13 & RNA editing and organelle base editing
Base editing, prime editing, Cas13 & RNA editing and organelle base editing
 
STOPPED FLOW METHOD & APPLICATION MURUGAVENI B.pptx
STOPPED FLOW METHOD & APPLICATION MURUGAVENI B.pptxSTOPPED FLOW METHOD & APPLICATION MURUGAVENI B.pptx
STOPPED FLOW METHOD & APPLICATION MURUGAVENI B.pptx
 
Pests of soyabean_Binomics_IdentificationDr.UPR.pdf
Pests of soyabean_Binomics_IdentificationDr.UPR.pdfPests of soyabean_Binomics_IdentificationDr.UPR.pdf
Pests of soyabean_Binomics_IdentificationDr.UPR.pdf
 

State of JTS Presentation Overviewing History, Features, and Future of the JTS Topology Suite

  • 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 2019 1.15 1.11.21.4 1.5 1.6 1.7 1.8 1.10 1.111.121.13 LT JTS 1.161.14 1.15
  • 9. 9 Vector Data (Polygons) Source: https://ryouready.wordpress.com/2009/11/16/infomaps-using-r-visualizing-german-unemployment-rates-by-color-on-a-map/
  • 13. Representations: OGC Simple Features ● Point ● LineString ● LinearRing ● Polygon ● MultiPoint ● MultiLineString ● MultiPolygon ● GeometryCollection 13 JTS Topology Suite
  • 14. 14 Predicates (DE-9IM) ● Equals ● Disjoin ● Intersects ● Touches ● Crosses ● Within ● Contains ● Overlaps ● Covers ● CoveredBy JTS Topology Suite
  • 15. 15 Overlays ● Intersection ● Union ● Difference ● SymDifference JTS Topology Suite
  • 16. JTS Topology Suite Measurements ● Length ● Area ● Distance 16
  • 17. JTS Topology Suite IO: ● WKT ● WKB ● GeoJSON ● KML ● GML2 17
  • 18. JTS Topology Suite 18 Algorithms ● Convex Hull ● Buffer ● Validation ● Dissolve ● Polygonization ● Simplification ● Triangulation ● Voronoi ● Linear Referencing ● and more...
  • 19. JTS Topology Suite 19 Applications ● TestBuilder ● TestRunner
  • 21. JTS 1.14 Release 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 21 Visvalingam-Whyatt vs Douglas-Peucker
  • 22. JTS 1.14 with Maven JTS 1.14 22 <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!
  • 24. JTS 1.15 Release • 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
  • 25. Sourceforge → GitHub 25 • Moving from SVN to GIT • https://github.com/locationtech/jts
  • 26. Why choose GitHub? • High Visibility • Great tools • Git tools • Issue tracking • Pull Requests • Continuous Integration • Website • Easier for contributions • Where the action is! 26
  • 27. GitHub: JTS Project Activity • Pull Requests • 76 accepted, 15 open • Issues • 39 closed, 49 open 27
  • 28. 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... 28
  • 29. 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 29
  • 30. 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 30 • Initial Work • Project Application • License Change • LocationTech Incubation • Build Infrastructure • Official Maven Deployment • Long term hopes • Additional Contributors • Funding for JTS 2.0
  • 31. LocationTech Incubation A new home: • Project Website • Mailing List • Build Server • GitHub repo 31 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
  • 33. JTS 1.15 • Packaging • org.locationtech.jts • GitHub repo • https://github.com/locationtech/jts • Releases available on Maven Central (and LT Nexus) • Snapshots Available via LT Nexus • https://repo.locationtech.org/ 33
  • 34. Using JTS 1.15 with Maven JTS 1.14 34 <dependency> <groupId>com.vividsolutions</groupId> <artifactId>jts-core</artifactId> <version>1.14.0</version> </dependency> JTS 1.15.1 <dependency> <groupId>org.locationtech.jts</groupId> <artifactId>jts-core</artifactId> <version>1.15.1</version> </dependency>
  • 35. Using JTS 1.15.2-SNAPSHOT JTS 1.14 35 <dependency> <groupId>com.vividsolutions</groupId> <artifactId>jts-core</artifactId> <version>1.14.0</version> </dependency> JTS 1.15.2-SNAPSHOT <dependency> <groupId>org.locationtech.jts</groupId> <artifactId>jts-core</artifactId> <version>1.15.2-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>
  • 36. 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 • GroupId change: com.vividsolutions to org.locationtech.jts •
  • 37. JTS 1.15.1 • Support projects migrating • Java Roadmap Compatibility • module names for “jigsaw” packaging • Fixes • Geometry.clone() → Geometry.copy()
  • 39. JTS 1.16 Coming Soon! • How soon? • Release Candidate 1.16.0-RC1 is already available • Scheduled 1.16.0 for September 5th Eclipse release review • Final IP issues being resolved (checking in new icons for the test builder application) • Two week release review 39
  • 40. Dimension: number of ordinates in each coordinate, this total includes any measures. Measure: number of measures included in dimension for each coordinate CoordinateSequence XYZM 40 Coordinate Dimension Measures XY 2 0 XYM 3 1 XYZ 3 0 XYZM 4 1
  • 41. Coordinate XYZM Subclasses for XY, XYM, XYZM representations. The field “z” is deprecated! Please use accessors to access fields. 41
  • 42. Supports Well-Known Text representations for Z, M, ZM forms: LINESTRING (10 10, 20 20, 30 40) LINESTRING Z(10 10 10, 20 20 10, 30 40 10) LINESTRING M(10 10 11, 20 20 11, 30 40 11) LINESTRING ZM(10 10 10 11, 20 20 10 11, 30 40 10 11) WKT XYZM Support Felix has extended WKT reader/writer support to support XYZM. The reader has a flag to support “legacy” JTS representation. 42
  • 43. JTS Topology Suite IO: ● WKT ● WKB ● GeoJSON ● KML ● GML2 ● TWKB (In progress!) 43
  • 44. JTS Community Building uDig Introduction 44
  • 45. JTS Team Code Sprints • 2016 January and November • Sourceforge → GitHub • Build change to maven • Addressed “Intellectual Property” review questions
  • 46. 46
  • 47. JTS Team Code Sprints • 2018 Bon Code Sprint • Java 10 compatibility with “jigsaw” module names • 2017 FOSS4GNA Code Sprint • Helping projects upgrade • GeoTools PostGIS DataStore TWKB • Join us Thursday for Community and workshop day!
  • 48. 48
  • 49. JTS in the ‘Cloud’ uDig Introduction 49
  • 53. Distributed Spatial Goals ● Distribute the storage of vector and raster data ○ Database integration (HBase, Accumulo, C*) ○ File format integration (Arrow, Avro, Parquet) ● Distribute the processing of geospatial data ○ MapReduce integration ○ Spark integration ○ SparkSQL 53
  • 54. JTS + Spark ● In 2015-2016 ○ GeoMesa had RDD level support for JTS Geometry types (as well as GeoTools SimpleFeatures) ● In 2017 ○ GeoMesa integrated with Spark’s SQL query planner ■ Added Spatial UDTs ■ Added Spatial UDFs ■ Adds PostGIS syntax to Spark ■ (Limitation) Tied to GeoMesa ● In 2018 ○ GeoMesa project refactored JTS+Spark module ■ Being used by the RasterFrames project 54
  • 55. JTS + Spark going forward ● The JTS + Spark integration is pretty straightforward; the goal is to have more projects integrate with it. ○ Performance enhancements can shared by all the projects ● Currently, each Spark release introduces changes to the UDT/UDF protected interfaces. ○ This risk is best shared by a community (rather than having each project reimplement and update their individual projects) 55
  • 56. JTS 2.0 Roadmap / Wishlist uDig Introduction 56
  • 57. 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 57
  • 58. New Algorithms • Concave Hull • Polygon Triangulation • Polygon Cleaning (“MakeValid”) • Split Geometry by Line • Polygon Coverage Simplification 58 Concave Hull Polygon Triangulation
  • 59. 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 59
  • 60. JTS 1.0 Baseline SFQL, GML2 60 Primitives: ● Geometry ● Point ● LineString ● Polygon
  • 61. JTS 1.0 Baseline SFQL, GML2 61 Collections ● GeometryCollection ● MultiPoint ● MultiLineString ● MultiPolygon
  • 62. JTS 2.0 Challenge SQL/MM, GML3, ISO19107 Primitives: ● Point ● Curve ● Surface 62
  • 63. JTS 2.0 Challenge SQL/MM, GML3, ISO19107 Geometry defined using: ● Positions ● Reference System 63
  • 64. JTS 2.0 Challenge JTS Topology Suite Linear Geometry Euclidean operations Spatial4J Curved Geometry Cylindrical operations Spherical operations 64
  • 65. JTS 2.0 Approach 65 SFSQL Geometry Classes Spatial4J Shape Classes SQL/MM Geometry Classes JTS 2.0 Linear Ops Cylindrical Ops Spherical Ops BufferOp BufferOp BufferOp ... ... ...
  • 66. Shape the Future Join JTS Topology Suite
  • 67. 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 67
  • 68. Join Us at the Code Sprint! Thursday, at the code sprint, we will work on two projects 1. Polishing a new TWKB Reader/Writer 2. Upgrading the GeoServer ecosystem to LocationTech JTS 68
  • 70. 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 70
  • 71. Thank you from the JTS Team