State of JTS 2018

Jody Garnett
Jody GarnettTechnical Director at GeoCat BV
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
1 of 71

Recommended

高精地图数据协议标准探究 by
高精地图数据协议标准探究高精地图数据协议标准探究
高精地图数据协议标准探究Weijun Zhong
535 views204 slides
mago3D 기술 워크샵 자료(한국어) by
mago3D  기술 워크샵 자료(한국어)mago3D  기술 워크샵 자료(한국어)
mago3D 기술 워크샵 자료(한국어)SANGHEE SHIN
1.9K views47 slides
GeoServer Ecosystem 2018 by
GeoServer Ecosystem 2018GeoServer Ecosystem 2018
GeoServer Ecosystem 2018Jody Garnett
7.5K views35 slides
Vector Tiles with GeoServer and OpenLayers by
Vector Tiles with GeoServer and OpenLayersVector Tiles with GeoServer and OpenLayers
Vector Tiles with GeoServer and OpenLayersJody Garnett
19.5K views33 slides
Geonetwork for Spatial Data by
Geonetwork for Spatial DataGeonetwork for Spatial Data
Geonetwork for Spatial DataNizam GIS
516 views34 slides
GIS for Transportation Infrastructure Management by
GIS for Transportation Infrastructure ManagementGIS for Transportation Infrastructure Management
GIS for Transportation Infrastructure ManagementEsri
3.2K views8 slides

More Related Content

What's hot

UNIT - III GIS DATA STRUCTURES (1).ppt by
UNIT - III GIS DATA STRUCTURES (1).pptUNIT - III GIS DATA STRUCTURES (1).ppt
UNIT - III GIS DATA STRUCTURES (1).pptRamMishra65
40 views38 slides
오픈소스 GIS의 이해 - OSgeo Projects 중심 by
오픈소스 GIS의 이해 - OSgeo Projects 중심오픈소스 GIS의 이해 - OSgeo Projects 중심
오픈소스 GIS의 이해 - OSgeo Projects 중심MinPa Lee
136 views51 slides
Introducing Cloudera DataFlow (CDF) 2.13.19 by
Introducing Cloudera DataFlow (CDF) 2.13.19Introducing Cloudera DataFlow (CDF) 2.13.19
Introducing Cloudera DataFlow (CDF) 2.13.19Cloudera, Inc.
4.9K views31 slides
Raster by
RasterRaster
Rasteresambale
4.9K views13 slides
GeoServer on Steroids by
GeoServer on SteroidsGeoServer on Steroids
GeoServer on SteroidsGeoSolutions
13.3K views77 slides
GIS enabled eGovernance by
GIS enabled eGovernanceGIS enabled eGovernance
GIS enabled eGovernanceEsri India
4.6K views44 slides

What's hot(20)

UNIT - III GIS DATA STRUCTURES (1).ppt by RamMishra65
UNIT - III GIS DATA STRUCTURES (1).pptUNIT - III GIS DATA STRUCTURES (1).ppt
UNIT - III GIS DATA STRUCTURES (1).ppt
RamMishra6540 views
오픈소스 GIS의 이해 - OSgeo Projects 중심 by MinPa Lee
오픈소스 GIS의 이해 - OSgeo Projects 중심오픈소스 GIS의 이해 - OSgeo Projects 중심
오픈소스 GIS의 이해 - OSgeo Projects 중심
MinPa Lee136 views
Introducing Cloudera DataFlow (CDF) 2.13.19 by Cloudera, Inc.
Introducing Cloudera DataFlow (CDF) 2.13.19Introducing Cloudera DataFlow (CDF) 2.13.19
Introducing Cloudera DataFlow (CDF) 2.13.19
Cloudera, Inc.4.9K views
Raster by esambale
RasterRaster
Raster
esambale4.9K views
GeoServer on Steroids by GeoSolutions
GeoServer on SteroidsGeoServer on Steroids
GeoServer on Steroids
GeoSolutions13.3K views
GIS enabled eGovernance by Esri India
GIS enabled eGovernanceGIS enabled eGovernance
GIS enabled eGovernance
Esri India4.6K views
GIS and Decision Making, Literature Review by agungwah
GIS and Decision Making, Literature ReviewGIS and Decision Making, Literature Review
GIS and Decision Making, Literature Review
agungwah7.7K views
GIS enabled State by Esri India
GIS enabled StateGIS enabled State
GIS enabled State
Esri India1.8K views
DataGalaxy et Denodo : le guichet unique de gouvernance et d’accès aux données ! by Denodo
DataGalaxy et Denodo : le guichet unique de gouvernance et d’accès aux données !DataGalaxy et Denodo : le guichet unique de gouvernance et d’accès aux données !
DataGalaxy et Denodo : le guichet unique de gouvernance et d’accès aux données !
Denodo 431 views
Architecting the ArcGIS Platform by Esri UK
Architecting the ArcGIS PlatformArchitecting the ArcGIS Platform
Architecting the ArcGIS Platform
Esri UK15.7K views
Twitter - Architecture and Scalability lessons by Aditya Rao
Twitter - Architecture and Scalability lessonsTwitter - Architecture and Scalability lessons
Twitter - Architecture and Scalability lessons
Aditya Rao24K views
Raster data in GeoServer and GeoTools: Achievements, issues and future devel... by GeoSolutions
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...
GeoSolutions3.3K views
ibm websphere admin training | websphere admin course | ibm websphere adminis... by Nancy Thomas
ibm websphere admin training | websphere admin course | ibm websphere adminis...ibm websphere admin training | websphere admin course | ibm websphere adminis...
ibm websphere admin training | websphere admin course | ibm websphere adminis...
Nancy Thomas486 views
What's So Special about the Oracle Database Appliance? by O-box
What's So Special about the Oracle Database Appliance?What's So Special about the Oracle Database Appliance?
What's So Special about the Oracle Database Appliance?
O-box10.7K views
GeoServer in Production: we do it, here is how! by GeoSolutions
GeoServer in Production: we do it, here is how!GeoServer in Production: we do it, here is how!
GeoServer in Production: we do it, here is how!
GeoSolutions30.7K views
Bathymetric Attributed Grid (BAG) format by Giuseppe Masetti
Bathymetric Attributed Grid (BAG) formatBathymetric Attributed Grid (BAG) format
Bathymetric Attributed Grid (BAG) format
Giuseppe Masetti746 views
3차원 위치 기반의 CAD/BIM/GIS 융합 활용 방향 by SANGHEE SHIN
3차원 위치 기반의 CAD/BIM/GIS 융합 활용 방향3차원 위치 기반의 CAD/BIM/GIS 융합 활용 방향
3차원 위치 기반의 CAD/BIM/GIS 융합 활용 방향
SANGHEE SHIN771 views
QGIS server: the good, the not-so-good and the ugly by Ross McDonald
QGIS server: the good, the not-so-good and the uglyQGIS server: the good, the not-so-good and the ugly
QGIS server: the good, the not-so-good and the ugly
Ross McDonald8.4K views
오픈소스GIS의 이해와 활용 by SANGHEE SHIN
오픈소스GIS의 이해와 활용오픈소스GIS의 이해와 활용
오픈소스GIS의 이해와 활용
SANGHEE SHIN3.3K views

Similar to State of JTS 2018

State of JTS 2017 by
State of JTS 2017State of JTS 2017
State of JTS 2017Jody Garnett
2K views41 slides
LocationTech Projects by
LocationTech ProjectsLocationTech Projects
LocationTech ProjectsJody Garnett
2.6K views85 slides
State of GeoServer - FOSS4G 2016 by
State of GeoServer - FOSS4G 2016State of GeoServer - FOSS4G 2016
State of GeoServer - FOSS4G 2016GeoSolutions
20.5K views71 slides
State of GeoServer 2.13 by
State of GeoServer 2.13State of GeoServer 2.13
State of GeoServer 2.13Jody Garnett
1.1K views78 slides
State of GeoServer 2.10 by
State of GeoServer 2.10State of GeoServer 2.10
State of GeoServer 2.10Jody Garnett
749 views65 slides
State of GeoServer 2015 by
State of GeoServer 2015State of GeoServer 2015
State of GeoServer 2015Jody Garnett
4.4K views87 slides

Similar to State of JTS 2018(20)

LocationTech Projects by Jody Garnett
LocationTech ProjectsLocationTech Projects
LocationTech Projects
Jody Garnett2.6K views
State of GeoServer - FOSS4G 2016 by GeoSolutions
State of GeoServer - FOSS4G 2016State of GeoServer - FOSS4G 2016
State of GeoServer - FOSS4G 2016
GeoSolutions20.5K views
State of GeoServer 2.13 by Jody Garnett
State of GeoServer 2.13State of GeoServer 2.13
State of GeoServer 2.13
Jody Garnett1.1K views
State of GeoServer 2.10 by Jody Garnett
State of GeoServer 2.10State of GeoServer 2.10
State of GeoServer 2.10
Jody Garnett749 views
State of GeoServer 2015 by Jody Garnett
State of GeoServer 2015State of GeoServer 2015
State of GeoServer 2015
Jody Garnett4.4K views
Gustavo Garnica: Evolución de la Plataforma Java y lo que Significa para Ti by Software Guru
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
Software Guru705 views
GeoKettle: A powerful open source spatial ETL tool by Thierry Badard
GeoKettle: A powerful open source spatial ETL toolGeoKettle: A powerful open source spatial ETL tool
GeoKettle: A powerful open source spatial ETL tool
Thierry Badard3.5K views
State of GeoServer 2.12 by GeoSolutions
State of GeoServer 2.12State of GeoServer 2.12
State of GeoServer 2.12
GeoSolutions6.1K views
Spatially enabled open source BI (GeoBI) with GeoKettle, GeoMondrian & SOLAPL... by Thierry Badard
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 Badard3.1K views
State of GeoServer by Jody Garnett
State of GeoServerState of GeoServer
State of GeoServer
Jody Garnett3.2K views
GeoNetwork workshop introduction mapwindow conference 2012 Velp by pvangenuchten
GeoNetwork workshop introduction mapwindow conference 2012 VelpGeoNetwork workshop introduction mapwindow conference 2012 Velp
GeoNetwork workshop introduction mapwindow conference 2012 Velp
pvangenuchten1K views
WMS Performance Shootout 2011 by Jeff McKenna
WMS Performance Shootout 2011WMS Performance Shootout 2011
WMS Performance Shootout 2011
Jeff McKenna5.6K views
Spatiotemporal Raster Improvements in GeoServer by GeoSolutions
Spatiotemporal Raster Improvements in GeoServerSpatiotemporal Raster Improvements in GeoServer
Spatiotemporal Raster Improvements in GeoServer
GeoSolutions2.8K views
DEVNET-1169 CI/CT/CD on a Micro Services Applications using Docker, Salt & Ni... by Cisco DevNet
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 DevNet1.8K views
GeoPackage SWG Overview by Jeff Yutzler
GeoPackage SWG OverviewGeoPackage SWG Overview
GeoPackage SWG Overview
Jeff Yutzler1.3K views
GeoKettle: A powerful open source spatial ETL tool by Thierry Badard
GeoKettle: A powerful open source spatial ETL toolGeoKettle: A powerful open source spatial ETL tool
GeoKettle: A powerful open source spatial ETL tool
Thierry Badard9K views
OSGeo Live Lightening Overview by Jody Garnett
OSGeo Live Lightening OverviewOSGeo Live Lightening Overview
OSGeo Live Lightening Overview
Jody Garnett5.1K views
PEARC17: Live Integrated Visualization Environment: An Experiment in General... by moneyjh
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...
moneyjh104 views
Taming OpenData and INSPIRE challenges with Open Source: lessons learned and ... by smespire
Taming OpenData and INSPIRE challenges with Open Source: lessons learned and ...Taming OpenData and INSPIRE challenges with Open Source: lessons learned and ...
Taming OpenData and INSPIRE challenges with Open Source: lessons learned and ...
smespire 695 views

More from Jody Garnett

GeoServer Orientation by
GeoServer OrientationGeoServer Orientation
GeoServer OrientationJody Garnett
1.1K views62 slides
Open Source Practice and Passion at OSGeo by
Open Source Practice and Passion at OSGeoOpen Source Practice and Passion at OSGeo
Open Source Practice and Passion at OSGeoJody Garnett
587 views51 slides
Introduction to OSGeo by
Introduction to OSGeoIntroduction to OSGeo
Introduction to OSGeoJody Garnett
642 views121 slides
Open Source Procurement by
Open Source ProcurementOpen Source Procurement
Open Source ProcurementJody Garnett
683 views48 slides
Java Image Processing for Geospatial Community by
Java Image Processing for Geospatial CommunityJava Image Processing for Geospatial Community
Java Image Processing for Geospatial CommunityJody Garnett
7.1K views52 slides
Open Source Practice and Passion at OSGeo by
Open Source Practice and Passion at OSGeoOpen Source Practice and Passion at OSGeo
Open Source Practice and Passion at OSGeoJody Garnett
6.1K views52 slides

More from Jody Garnett(20)

GeoServer Orientation by Jody Garnett
GeoServer OrientationGeoServer Orientation
GeoServer Orientation
Jody Garnett1.1K views
Open Source Practice and Passion at OSGeo by Jody Garnett
Open Source Practice and Passion at OSGeoOpen Source Practice and Passion at OSGeo
Open Source Practice and Passion at OSGeo
Jody Garnett587 views
Introduction to OSGeo by Jody Garnett
Introduction to OSGeoIntroduction to OSGeo
Introduction to OSGeo
Jody Garnett642 views
Open Source Procurement by Jody Garnett
Open Source ProcurementOpen Source Procurement
Open Source Procurement
Jody Garnett683 views
Java Image Processing for Geospatial Community by Jody Garnett
Java Image Processing for Geospatial CommunityJava Image Processing for Geospatial Community
Java Image Processing for Geospatial Community
Jody Garnett7.1K views
Open Source Practice and Passion at OSGeo by Jody Garnett
Open Source Practice and Passion at OSGeoOpen Source Practice and Passion at OSGeo
Open Source Practice and Passion at OSGeo
Jody Garnett6.1K views
Open Source is hard, we are here to help! by Jody 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!
Jody Garnett6K views
GeoServer Developers Workshop by Jody Garnett
GeoServer Developers WorkshopGeoServer Developers Workshop
GeoServer Developers Workshop
Jody Garnett7.1K views
State of GeoServer 2.14 by Jody Garnett
State of GeoServer 2.14State of GeoServer 2.14
State of GeoServer 2.14
Jody Garnett7.8K views
Working with the OSGeo Community by Jody Garnett
Working with the OSGeo CommunityWorking with the OSGeo Community
Working with the OSGeo Community
Jody Garnett6.1K views
Open Data and Open Software Geospatial Applications by Jody Garnett
Open Data and Open Software Geospatial ApplicationsOpen Data and Open Software Geospatial Applications
Open Data and Open Software Geospatial Applications
Jody Garnett1.4K views
Map box styles in GeoServer and OpenLayers by Jody Garnett
Map box styles in GeoServer and OpenLayersMap box styles in GeoServer and OpenLayers
Map box styles in GeoServer and OpenLayers
Jody Garnett3.1K views
Quick and easy web maps by Jody Garnett
Quick and easy web mapsQuick and easy web maps
Quick and easy web maps
Jody Garnett1.1K views
Incubation Orientation by Jody Garnett
Incubation OrientationIncubation Orientation
Incubation Orientation
Jody Garnett311 views
Understanding the Flexibility of Open Source by Jody Garnett
Understanding the Flexibility of Open SourceUnderstanding the Flexibility of Open Source
Understanding the Flexibility of Open Source
Jody Garnett678 views
Understanding Open Source by Jody Garnett
Understanding Open SourceUnderstanding Open Source
Understanding Open Source
Jody Garnett795 views
Understanding Open Source by Jody Garnett
Understanding Open SourceUnderstanding Open Source
Understanding Open Source
Jody Garnett357 views

Recently uploaded

application of genetic engineering 2.pptx by
application of genetic engineering 2.pptxapplication of genetic engineering 2.pptx
application of genetic engineering 2.pptxSankSurezz
14 views12 slides
Factors affecting fluorescence and phosphorescence.pptx by
Factors affecting fluorescence and phosphorescence.pptxFactors affecting fluorescence and phosphorescence.pptx
Factors affecting fluorescence and phosphorescence.pptxSamarthGiri1
7 views11 slides
TF-FAIR.pdf by
TF-FAIR.pdfTF-FAIR.pdf
TF-FAIR.pdfDirk Roorda
6 views120 slides
Exploring the nature and synchronicity of early cluster formation in the Larg... by
Exploring the nature and synchronicity of early cluster formation in the Larg...Exploring the nature and synchronicity of early cluster formation in the Larg...
Exploring the nature and synchronicity of early cluster formation in the Larg...Sérgio Sacani
1.4K views12 slides
Bacterial Reproduction.pdf by
Bacterial Reproduction.pdfBacterial Reproduction.pdf
Bacterial Reproduction.pdfNandadulalSannigrahi
34 views32 slides
ZEBRA FISH: as model organism.pptx by
ZEBRA FISH: as model organism.pptxZEBRA FISH: as model organism.pptx
ZEBRA FISH: as model organism.pptxmahimachoudhary0807
11 views17 slides

Recently uploaded(20)

application of genetic engineering 2.pptx by SankSurezz
application of genetic engineering 2.pptxapplication of genetic engineering 2.pptx
application of genetic engineering 2.pptx
SankSurezz14 views
Factors affecting fluorescence and phosphorescence.pptx by SamarthGiri1
Factors affecting fluorescence and phosphorescence.pptxFactors affecting fluorescence and phosphorescence.pptx
Factors affecting fluorescence and phosphorescence.pptx
SamarthGiri17 views
Exploring the nature and synchronicity of early cluster formation in the Larg... by Sérgio Sacani
Exploring the nature and synchronicity of early cluster formation in the Larg...Exploring the nature and synchronicity of early cluster formation in the Larg...
Exploring the nature and synchronicity of early cluster formation in the Larg...
Sérgio Sacani1.4K views
Discovery of therapeutic agents targeting PKLR for NAFLD using drug repositio... by Trustlife
Discovery of therapeutic agents targeting PKLR for NAFLD using drug repositio...Discovery of therapeutic agents targeting PKLR for NAFLD using drug repositio...
Discovery of therapeutic agents targeting PKLR for NAFLD using drug repositio...
Trustlife146 views
Structure of purines and pyrimidines - Jahnvi arora (11228108), mmdu ,mullana... by jahnviarora989
Structure of purines and pyrimidines - Jahnvi arora (11228108), mmdu ,mullana...Structure of purines and pyrimidines - Jahnvi arora (11228108), mmdu ,mullana...
Structure of purines and pyrimidines - Jahnvi arora (11228108), mmdu ,mullana...
jahnviarora9897 views
별헤는 사람들 2023년 12월호 전명원 교수 자료 by sciencepeople
별헤는 사람들 2023년 12월호 전명원 교수 자료별헤는 사람들 2023년 12월호 전명원 교수 자료
별헤는 사람들 2023년 12월호 전명원 교수 자료
sciencepeople68 views
Evaluation and Standardization of the Marketed Polyherbal drug Patanjali Divy... by Anmol Vishnu Gupta
Evaluation and Standardization of the Marketed Polyherbal drug Patanjali Divy...Evaluation and Standardization of the Marketed Polyherbal drug Patanjali Divy...
Evaluation and Standardization of the Marketed Polyherbal drug Patanjali Divy...
Small ruminant keepers’ knowledge, attitudes and practices towards peste des ... by ILRI
Small ruminant keepers’ knowledge, attitudes and practices towards peste des ...Small ruminant keepers’ knowledge, attitudes and practices towards peste des ...
Small ruminant keepers’ knowledge, attitudes and practices towards peste des ...
ILRI6 views
A Ready-to-Analyze High-Plex Spatial Signature Development Workflow for Cance... by InsideScientific
A Ready-to-Analyze High-Plex Spatial Signature Development Workflow for Cance...A Ready-to-Analyze High-Plex Spatial Signature Development Workflow for Cance...
A Ready-to-Analyze High-Plex Spatial Signature Development Workflow for Cance...
InsideScientific115 views
Note on the Riemann Hypothesis by vegafrank2
Note on the Riemann HypothesisNote on the Riemann Hypothesis
Note on the Riemann Hypothesis
vegafrank28 views
Indian council for child welfare by RenuWaghmare2
Indian council for child welfareIndian council for child welfare
Indian council for child welfare
RenuWaghmare27 views
Study on Drug Drug Interaction Through Prescription Analysis of Type II Diabe... by Anmol Vishnu Gupta
Study on Drug Drug Interaction Through Prescription Analysis of Type II Diabe...Study on Drug Drug Interaction Through Prescription Analysis of Type II Diabe...
Study on Drug Drug Interaction Through Prescription Analysis of Type II Diabe...

State of JTS 2018

  • 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