LocationTech is an Eclipse Foundation industry working group for location aware technologies. This presentation introduces LocationTech, looks at what it means for our industry and the participating projects.
Libraries: JTS Topology Suite is the rocket science of GIS providing an implementation of Geometry. Mobile Map Tools provides a C++ foundation that is translated into Java and Javascript for maps on iOS, Andriod and WebGL. GeoMesa is a distributed key/value store based on Accumulo. Spatial4j integrates with JTS to provide Geometry on curved surface.
Process: GeoTrellis real-time distributed processing used scala, akka and spark. GeoJinni mixes spatial data/indexing with Hadoop.
Applications: GEOFF offers OpenLayers 3 as a SWT component. GeoGit distributed revision control for feature data. GeoScipt brings spatial data to Groovy, JavaScript, Python and Scala. uDig offers an eclipse based desktop GIS solution.
Attend this presentation if want to know what LocationTech is about, are interested in these projects or curious about what projects will be next.
3. Jody Garnett
Senior Software Engineer
Boundless
Welcome
Projects:
GeoTools, GeoServer,uDig
Eclipse Foundation
LocationTech PSC, Technology Project
OSGeo
Incubation Chair, GeoTools Officer
Andrew Ross
Director, Ecosystem Dev.
Eclipse Foundation
GroupsLocationTech working group
Science working group
Long Term Support (LTS) program
Common Build Infrastructure program
Business Development
Membership Services
7. JTS Topology Suite
Martin Davis
Senior Technical Architect
Vivid Solutions Inc.
Projects:
JTS, JEQL, JCS, Proj4J, OpenJUMP GIS
OSGeo
Charter Member
Vivid Solutions
8. JTS Topology Suite
● Java API for Geometry
● OGC Standard: Simple Features for SQL
● One of the “Hard Parts” of Geospatial
● License
● Eclipse Distribution License (== BSD !)
● Eclipse Public License
● History
● Version 1.0 - 2001
● Version 1.13 - 2012
● Version 1.14 - 2014 Q4
9. Key to Open Source Spatial
Project Language
JTS Topology
Java
Suite
all JVM
Languages
JSTS JavaScript (Partial Port)
Net Topology
C#
Suite
GEOS C/C++
Shapely Python (via GEOS)
RGeo Ruby (via GEOS)
r-GEOS R (via GEOS)
13. Geometry Example
GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory();
Coordinate coord = new Coordinate(1, 1);
Point point = geometryFactory.createPoint(coord);
14. WKT Example
GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory();
WKTReader reader = new WKTReader(geometryFactory);
Point point = (Point) reader.read("POINT (1 1)");
15. Buffer Example
GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory();
WKTReader reader = new WKTReader( geometryFactory );
LineString line = (LineString) reader.read("LINESTRING(0 2, 2 0, 8 6)");
Geometry buffer = line.buffer( 0.75 );
17. Mobile Map Tools
Manuel de la
Calle Alonso
Projects
Mobile Map Tools
Eclipse Foundation
LocationTech
18. Mobile Map Tools
• SDK For native mobile applications.
• Supports:
• Mobile maps in 2D, 2.5D and 3D
• Works on iOS, Android, webGL
• Built using C++ and translated to Java and JavaScript
• License:
• Eclipse Distribution License 1.0 (BSD)
20. New: Vector Tiles
● Postgis
● GeoJSON pyramid
● Native support on MMT
21. New: Point Cloud Streaming
● Berkeley DB
● Import and ordered
point process
● Point cloud streaming
● Native support on MMT
● The cloud save the shape
(we are always sending meaningful points, that
saves the shape of the point cloud)
22. Anthony Fox
Director, Data Science
Commonwealth Computer Research
Projects:
GeoMesa
Eclipse Foundation
LocationTech
LinkedIn
https://www.linkedin.com/pub/anthony-fox/5/467/574
23. • Distributed Spatio-temporal Database
• Built on Hadoop and Accumulo
• Scales to billions of features
• Written in Scala
• Apache License, v2.0
24. How GeoMesa Fits in Cloud Stack
K
A
F
K
A
Accumulo
HDFS
Cloud Stack and Distributed Resources
25. Jumping Into “Big Data”
Hop on over from PostGIS….
to GeoMesa
picturespk.com
32. Roadmap and Contact Info
• Road Map
• Release Imminent (IP Review)
• Analytics
• Contact & Tutorials
Anthony Fox & Andrew Hulbert (booth)
http://www.geomesa.org
geomesa-users@locationtech.org
geomesa-dev@locationtech.org
33. Spatial4j
David Smiley Apache Software Foundation
Committer & PMC of Lucene/Solr
Eclipse Foundation
LocationTech PMC
Freelance Lucene/Solr
developer/consultant
34. Spatial4j
Shapes!
• Point, Rect, Circle, Line, BufferedLine, Polygon,
and collections of these
• Cartesian, Cartesian with world-wrap
(cylindrical), and Spherical/Geodesic
• Computes intersection relationship & bbox
Also
• Computes point distance & shape area
• Extensible WKT parsing and
serialization/deserialization utilities
License: ASLv2
35. The Shape interface
• interface Shape {
• Point getCenter();
• Rectangle getBoundingBox();
• boolean hasArea();
• double getArea();
• SpatialRelation relate(Shape other);
• Must support Point & Rectangle
• enum SpatialRelation
• DISJOINT, INTERSECTS, WITHIN, CONTAINS
• Note: simpler set than the “DE-9IM” spatial standard
• no “equals” or “touches”
36. A romance in many dimensions
Shape Euclidean Cylindrical Spherical
Point Y Y Y
Rectangle Y Y Y
Circle Y Y
LineString Y
Buffered L/S Y
Polygon Y Y
Shape Collection Y Y Y
37. Distance example
SpatialContext ctx = SpatialContext.GEO;
Circle sydney=ctx.makeCircle(151.3,33.9, 0.3);
Point perth=ctx.makePoint(115.8,32.9);
double distance=ctx.calcDistance(sydney.getCenter(), perth);
double km=DistanceUtils.degrees2Dist(
distance,
DistanceUtils.EARTH_MEAN_RADIUS_KM)
38. More code samples
SpatialContext ctx = SpatialContext.GEO;
Rectangle r = ctx.makeRectangle(-71, -70, 42, 43);
Circle c = ctx.makeCircle(-72, 42, 1);
SpatialRelation rel = r.relate(c);
System.out.println(rel);
rel.intersects();//boolean
Distances (including circle
radius) are in “Degrees”, not
ctx = JtsSpatialContext.GEO;
Shape s = ctx.readShape(“POLYGON ((30 10, 10 20, 20 40, 40 40, 30 10))”);
double distanceDegrees = ctx.getDistCalc().distance(
ctx.makePoint(2, 2), ctx.makePoint(3, 3) );
radians or KM
39. Recent Activity
Thanks to the interns!:
● Rebecca Alford via Open-Academy:
○ geodesic polygons
● Chris Pavlicek via Open-Academy:
○ geodesic buffered lines
● Evana Gizzi, MITRE intern:
○ geodesic circle polygonizer
45. GeoTrellis subprojects (cont.)
● gdal
● Read over 130 raster file formats using GDAL
● Wrapper around GDAL java bindings
● spark
● Aims to add comprehensive geospatial support to
Apache Spark
● Reproject, mosaic, tile and pyramid geotiff raster data
stored in HDFS into Accumulo or HDFS.
● RasterRDD with tile-based distributed operations
● Fast tile selection out of Accumulo.
50. GeoTrellis
● Functional programming with Scala
● To quote Anthony Fox of GeoMesa, “There’s a
confluence of geo and spark happening at LocationTech”
● Big data, cluster computing with Apache Spark &
Accumulo
● Both GeoMesa and GeoTrellis use Accumulo. Spark is
becoming a very popular alternative to Hadoop.
51. Ahmed Eldawy
University of Minnesota
Projects
GeoJini (SpatialHadoop)
Eclipse Foundation
LocationTech
GeoJini
52. GeoJini
• Batch processing
• MapReduce framework for efficient processing of spatial
operations
• Supports:
• Spatial data types & indexing
• Based on Hadoop
• Highly scalable
• License:
• Apache License, Version 2.0
54. Geo Fast Forward (GeoFF)
Erdal Karaca
Projects
GeoFF
Eclipse Foundation
LocationTech
55. Geo Fast Forward (GeoFF)
● Embed Simple Maps in Eclipse RCP
● Querying a geocoding service
● Use OpenLayers 3.0 as a resource bundle
● SWT Component wrapping embedded browser
● Fluent API so you do not have to know EMF
● License:
● Eclipse Public License 1.0
58. GeoGig
Gabriel
Roldán
Software Developer
Boundless
Projects
GeoGig(GeoGit), GeoTools, GeoServer
Eclipse Foundation
LocationTech
OSGeo
Charter Member
59. GeoGig
• Distributed data storage and collaboration
• “geogig isn’t git”
• Supports:
• Distributed, off-line operation
• Versioning, compare & merge
• Push/pull data
• License:
• Eclipse Distribution License (BSD)
60. Quickstart
~$ geogig help
List geogig commands
~/new-folder $ geogig init
Initialise a geogig repository in new-folder
~/new-folder $ geogig shp import your_shapefile
Import a .shp file (or OSM, SpatialLite or PostGIS)
~/new-folder $ geogig ls
What's in your geogig repository
~/new-folder $ geogig status
What you can commit to a snapshot
64. GeoGig Update
News:
● Download: 1.0-beta1 today
● Thanks Ben for a great FOSS4G workshop
Incubation:
● LGPL → BSD
● packages → org.locationtech.geogig
● “initial code contribution” submitted
(Thanks to Sharon for patient Q&A)
65. GeoScript
Justin
Deoliveira
VP Engineering
Boundless
Projects
GeoScript, GeoTools,GeoServer,
OpenGeo Suite
Eclipse Foundation
LocationTech
OSGeo
Charter Member
66. GeoScript
● Adds spatial capabilities
to dynamic scripting languages.
● Supports:
● Groovy, JavaScript, Python, and Scala
● Backed by the GeoTools library
● geometry, data access and rendering
● Use stand-alone or embedded
● License: MIT License
● http://geoscript.github.io/foss4g2014-talk/#/
67. JavaScript
>> var geom = require("geoscript/geom");
>> var p = new geom.Point([-111.0, 45.7]);
>> p
<Point [-111, 45.7]>
>> var proj = require("geoscript/proj");
>> var p2 = proj.transform(p, "epsg:4326", "epsg:26912");
>> p2
<Point [500000, 5060716.31816507]>
>> var poly = p2.buffer(100);
>> poly.area
31214.451522458345
68. Python
>>> from geoscript import geom
>>> p = geom.Point(-111.0, 45.7)
>>> p
POINT(-111 45.7)
>>> from geoscript import proj
>>> p2 = proj.transform(p, 'epsg:4326', 'epsg:26912')
>>> p2
POINT (499999.42501775385 5060716.092032814)
>>> poly = p2.buffer(100)
>>> poly.getArea()
31214.45152247697
69. Scala
scala> import org.geoscript.geometry._
scala> import org.geoscript.projection._
scala> val p = Point(-110, 45.7) in Projection("EPSG:4326")
p: org.geoscript.geometry.Point = POINT (-110 45.7)
scala> val p2 = p in Projection("EPSG:26912")
p2: org.geoscript.geometry.Point = POINT (-370416.94184711506 -
7935053.5498699695)
scala> p2.buffer(100).area
res0: Double = 31214.451522477902
70. Groovy
groovy:000> import geoscript.geom.*
groovy:000> import geoscript.proj.Projection
groovy:000> p = new Point(-111, 45.7)
===> POINT (-111 45.7)
groovy:000> p2 = Projection.transform(p, 'epsg:4326', 'epsg:26912')
===> POINT (499999.42501775385, 5060716.092032814)
groovy:000> poly = p2.buffer(100)
groovy:000> poly.area
===> 31214.451522477902
71. GeoScript Update
● Jared working hard
● Curved geometries, GeoPackage, MBTiles
● Working on a common versioning scheme
● Standardizing on GeoTools version
● Early stages of incubation
● TODO: Logo :)
72. Jody Garnett
Senior Software Engineer
Boundless
Projects:
GeoTools, GeoServer,uDig
Frank Gasdorf
Software Developer
& GIS Professional
Plath GmbH
Projects
uDig
Eclipse Foundation
LocationTech
uDig
73. ● User-friendly Desktop Internet GIS
● Based on Eclipse Framework
● Reusable RCP components
● Java core libraries
uDig
(JTS, GeoTools, jgrasstools,imageio-ext)
● Supports:
● Industry standards formats and services formats
(WMS, WFS, KML, GeoTiff, etc)
● License: Eclipse Public License EPL and BSD
74. uDig SDK
Provides the best of Open Source Mapping for the Eclipse RCP Developer
85. Q&A
● Q: Do I have to use Eclipse infrastructure?A: See
https://github.com/locationtech(Thanks to the
Verte.x for sorting out how)
Editor's Notes
Timeframe: 1 hour as this is an invited tech talk
10 mins - Introduction
- 2-5 mins to welcome everyone and introduce presenters/organisations
- 3-5 mins to introduce LocationTech: quick take as a working group exploring spatial technologies put together by the Eclipse Foundation
20 mins - Libraries
- JTS (Martin) - made a new logo with martin ← thanks!
- Mobile Map Tools (Andrew) - 3 mins?
- GeoMesa (?) - ?
- Spatial4J (David Smiley) - ?
20 mins - Processing
- GeoTrellis (Rob) - 10 min - (coudld not get a good logo)
20 mins - Applications
10 mins - Wrap up
- 5 mins reminder of LocationTech mandate, and where we are at i) incubating initial projects ii) search for projects to fill in key areas (such as a geocoder) iii) could you be a key project?
- Q&A
- End with Invite to BOF
Abstract
LocationTech is an Eclipse Foundation industry working group for location aware technologies. This presentation introduces LocationTech, looks at what it means for our industry and the participating projects.
Libraries: JTS Topology Suite is the rocket science of GIS providing an implementation of Geometry. Mobile Map Tools provides a C++ foundation that is translated into Java and Javascript for maps on iOS, Andriod and WebGL. GeoMesa is a distributed key/value store based on Accumulo. Spatial4j integrates with JTS to provide Geometry on curved surface.
Process: GeoTrellis real-time distributed processing used scala, akka and spark. GeoJinni mixes spatial data/indexing with Hadoop.
Applications: GEOFF offers OpenLayers 3 as a SWT component. GeoGit distributed revision control for feature data. GeoScipt brings spatial data to Groovy, JavaScript, Python and Scala. uDig offers an eclipse based desktop GIS solution.
Attend this presentation if want to know what LocationTech is about, are interested in these projects or curious about what projects will be next.
Got contact details, add them here.
- Name links to linked in - since this is a north american conference :)
- Thank your employer by using their logo
Who is going to be there:
David Smiley
Jody Garnett (uDig)
Rob Emanuele (GeoTrellis)
Justin Deoliveira (GeoScript)
Anthony Fox (GeoMesa)
Martin Davis (JTS)
Frank Gasdorf (uDig)
Howard Butler
Robert Cheetham
Assume this is from the charter: http://www.locationtech.org/charter
11 members joined LocationTech in its first 10 months, additional members joining in 2014
TODO: Want to gather all logos here and have them link as appropriate for those following at home
Really excited that LocationTech is able to support the spatial libraries that make Open Source GIS possible.
These projects are amazing, and they are EVERY WHERE.
Notes:
- Eclipse Distribution License is just the BSD license with “Eclipse” filled in for the organisation :)
- Eclipse Public License is the default choice for Eclipse Projects with a focus on being commercial friendly.
(Jody: I consider this the “universal donor” of open source - code provided with BSD can be used everywhere with little trouble)
(may become an abstract class in the next version)
Note: “x y” order in argument for points; same for WKT coordinates
Note: distances are “degrees” based
Um can we just stick this next to your name
http://demo.geotrellis.com/chatta/
Um can we just stick this next to your name
From: http://erdalkaracade.blogspot.com
From: http://erdalkaracade.blogspot.com
This is an example application, it shows SDK
hydrological and geomorphological analyses (GRASS & uDig UI)
reasearch data can be used easily using GRASS
provides scripting engine to run analysis
project TRIDEC sponsored by European Commision
Tsunami prediction
Electricity monitoring and analysis tool. Its a platform for thisi domain in itself and uses uDig for viz and data connectivity
There is a staff of 20 providing services to support the community. They provide a variety of services including IT support, release engineering, marketing, legal support, IP management, and more.
Helping organisations take open source from developer driven (use, contribute, champion) to business driven (collaboration,redefine).
From Bailetti & Carbone 2009
List of Project Contacts in attendance, will help make the questions personal.
Warning: If questions are slow in coming I will just as hard technical questions about integration.