locationtech projects
DESCRIPTION
LocationTech presentation from Eclipse Developers Day Sydney. Libraries: * JTS * Mobile Map Tools * GeoMesa * Spatial4j Processing: * GeoTrellis * SpatialHadopp / GeoJinni Applications: * GEOFF * GeoGit * GeoScript * uDig Thanks to Eclipse and Acuate for sponsoring the event.TRANSCRIPT
Jody GarnettBoundless
Projects
Welcome
2
Jody GarnettSenior Software [email protected]@jodygarnett
Open Source Geospatial FoundationOSGeo Incubation ChairGeoTools Project Officer
Eclipse FoundationLocationTech Project Steering CommitteeLocationTech Technology Project
BoundlessBoundless provides geospatial tools and services for managing data and building applications.
ProjectsGeoToolsGeoServeruDig
3
Loca%onTech
LocationTech
“Loca&onTech is a working group developing advanced loca&on aware technologies.”
4
5
MembersStrategic
Participating
Guest
Full Service Foundation
Forge&
Build
IPmgmt
DevProcess
LicensingModel
CommunityMemberNetwork
Governance
Run by:
Follows Eclipse DevelopmentProcesses & IP Management
6
7
Infrastructure
Working Groups
Advanced Geospatial Software
Internet of ThingsLong Term Support Embedded Systems
Vendor neutralcollaboration:
★265+ projects★~1100 active devs★205+ members★9M+ users★
Scientific Research
8
0. Deny
1. Use
2. Contribute
3. Champion
4. Collaborate
5. Redefine
Value
TimeDeveloper driven Business driven
★Widespread software adoption.
★Vibrant commercial ecosystem.
From Bailetti & Carbone 2009
9
Commercialising open source
[email protected]@locationtech
We are growing fast & needyour ideas & participation
http://locationtech.org and click LEARN MORE
Andrew [email protected]@42aross
Contact Loca%onTech
10
11
Events
www.loca%onintelligence.net
Location Intelligence Summit 2014
May 19-‐21, Washington DC Conven6on Center
Monday – Hands-‐on workshops
Tuesday – Loca6on Intelligence, HERE, and Loca6onTech tracks-‐ “Loca%on Analy%cs and Visual Data Discovery … New Pathways to Business Intelligence”-‐ Sessions on BI, LI, Indoor Posi%oning, Open Source Geospa%al, Big Data, Dashboards/Visual Data Discovery-‐ Keynote: Paul Donato, EVP/Research, Nielsen
Wednesday – Oracle Spa6al Summit-‐ 3 technical training tracks led by Oracle experts: raster, LIDAR, geocoding, rou%ng-‐ Performance benchmarks, Cer%fica%on exam prepara%on-‐ Customer sessions: BI, land management, LI in public sector & retail; SIG User Group
6 citiesBy the numbers★ 723 registrations★ 640+ attendees★ 56 speakers★ Videos on YouTube★ Positive feedback
13
Tour 2013
3 continentshttp://tour.locationtech.org★ Planning about to begin.★ Sponsorship:
$2K members$4.5K non-members
14
Tour 2014
15
Visit http://georabble.org for fun local events! (Pun intended)
GeoRabble All StarsAllied with Locate 14 Canberra (Monday 7 April)★Pia Waugh – Open Data Ninja★Julian Carver – Land Information New Zealand★Denise McKenzie – Open Geospatial Consortium★Mike Bradford – Landgate WA★Jody Garnett – Boundless★Chris Tucker – Mapstory
Thanks to Sponsors LocationTech and Boundless
Libraries
16
JTS Topology Suite
• This is the “Rocket Science” of GIS• Implementa%on of Geometry• OGC Standard: Simple Features for SQL
• Vivid Solu%ons• Mar%n Davis (Project Lead)
• License:• Eclipse Distribu%on License <-‐-‐ BSD!• Eclipse Public License
17
Incoming!
Key to Open Source Spatial
18
Project Environment
JTS Topology Suite Java JVM Languages
GEOS C/C++
Net Topology Suite C#
JSTS JavaScript (Partial Port)
Shapely Python (via GEOS)
RGeo Ruby (via GEOS)
r-GEOS R (via GEOS)
Geometry Example
20GeoTools Example: http://docs.geotools.org/latest/userguide/library/jts/geometry.html
GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(); Coordinate coord = new Coordinate(1, 1);Point point = geometryFactory.createPoint(coord);
WKT Example
21GeoTools Example: http://docs.geotools.org/latest/userguide/library/jts/geometry.html
GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory();WKTReader reader = new WKTReader(geometryFactory);
Point point = (Point) reader.read("POINT (1 1)");
Buffer Example
22GeoTools Example: http://docs.geotools.org/latest/userguide/library/jts/geometry.html
GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory( null );WKTReader reader = new WKTReader( geometryFactory );
LineString line = (LineString) reader.read("LINESTRING(0 2, 2 0, 8 6)");
Geometry buffer = line.buffer( 0.75 );
Geometry Model
23
JTS TestBuilder Demo
Transform Example
25GeoTools Example: http://docs.geotools.org/latest/userguide/library/referencing/crs.html
CoordinateReferenceSystem wgs84 = CRS.decode("EPSG:4326");CoordinateReferenceSystem google = CRS.decode("EPSG:3857");
MathTransform transform = CRS.findMathTransform(wgs84, google, false);
Geometry target = JTS.transform( geometry, transform );
Mobile Map Tools
• SDK For na%ve mobile applica%ons.• 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 Distribu%on License 1.0 (BSD)26
Incoming!
GeoMesa
• Key/value store• Supports:
• Distributed & highly scalable• Based on Accumulo
• License• Apache License, Version 2.0
27
Approved!
Spa%al4j
• Adds “Geometry on Curve” to JTS• Supports:
• Geometry on a Spherical• Geometry on a Cylinder• Euclidean (via JTS)• Great Circle Distance Calculators
• License: Apache License, Version 2.0
28
Incoming
A romance in many dimensions
29
Shape Euclidean Cylindrical Spherical
Point Y Y Y
Rectangle Y Y Y
Circle Y Y
LineString Y
Buffered L/S Y
Polygon Y Y
ShapeCollection Y Y Y
Distance Example
30
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)
31
Processing
GeoTrellis
• Real-‐%me distributed processing• Supports:
• Low latency & Distributed• Highly scalable• Based on Scala, Akka, & Spark
• License: Apache License, Version 2.0
32
Approved!
GeoTrellis Chattanooga Demo
33http://demo.geotrellis.com/chatta/
Spa%alHadoop
• Batch processing• MapReduce framework for efficient processing of spa%al opera%ons
• Supports: • Spa%al data types & indexing• Based on Hadoop• Highly scalable• NOTE: renaming to GeoJinni
• License: Apache License, Version 2.034
Incoming!
Applica%ons
35
GEOFF
• Geo Fast Forward• 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
36
Approved!
GeoGit
• Distributed data store• Supports:
• Distributed, off-‐line opera%on• Versioning, compare & merge• Push/pull data
• License: BSD License
37
Incoming Project!
Incoming!
GeoGit Story/Demo
38
GeoScript
• Adds spa%al capabili%es to dynamicscrip%ng languages.
• Supports:• Groovy, JavaScript, Python, and Scala• Backed by the GeoTools library
• geometry, data access and rendering• Use stand-‐alone or embedded
• License: MIT License39
Approved!
JavaScript
40
>> 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.area31214.451522458345
Python
41
>>> from geoscript import geom>>> p = geom.Point(-111.0, 45.7)>>> pPOINT(-111 45.7)>>> from geoscript import proj>>> p2 = proj.transform(p, 'epsg:4326', 'epsg:26912')>>> p2POINT (499999.42501775385 5060716.092032814)>>> poly = p2.buffer(100)>>> poly.getArea()31214.45152247697
Scala
42
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).areares0: Double = 31214.451522477902
Groovy
43
groovy:000> import geoscript.geom.*groovy:000> import geoscript.proj.Projectiongroovy: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
uDig
• User-‐friendly Desktop Internet GIS• Supports:
• Desktop GIS• Based on Eclipse RCP• Reusable components for RCP Developers• Supports industry standard formats and services
• e.g. WMS, WFS, etc.• License:
• Eclipse Distribu%on License• Eclipse Public License
44
Approved!
45
Quick uDig Demo
46
Eclipse Foundation
47
204 Members and growing.48
Eclipse Foundation Members
Predictable Release Schedule
• Dozens of projects, millions of lines of code releasing each year on %me to the day for 9 years straight.
• 265+ open source projects and growing.
49
Eclipse 3.0 Eclipse 3.1 Casllisto Europa Ganymede Galileo Helios Indigo Juno Kepler Luna
17 1824
33
46
55 58
37 10
21 23
3339
62
71 7176
Projects Million LOC
EGit Project CDT Project
WTP Project Linux Tools Project
(Percentage of contributions for each project)
50
Industry Collaboration