locationtech projects

85
LocationTec h Projects

Upload: jody-garnett

Post on 22-Nov-2014

343 views

Category:

Data & Analytics


6 download

DESCRIPTION

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.

TRANSCRIPT

Page 1: LocationTech Projects

LocationTechProjects

Page 2: LocationTech Projects

IntroductionGetting the party started

Page 3: LocationTech Projects

Jody GarnettSenior Software Engineer

BoundlessProjects:GeoTools, GeoServer,uDigEclipse FoundationLocationTech PSC, Technology ProjectOSGeoIncubation Chair, GeoTools Officer

Welcome

Andrew RossDirector, Ecosystem Dev.

Eclipse FoundationGroupsLocationTech working groupScience working groupLong Term Support (LTS) programCommon Build Infrastructure programBusiness DevelopmentMembership Services

Page 4: LocationTech Projects

LocationTech

“LocationTech is a working group developing advanced location aware technologies.”

Page 5: LocationTech Projects

Members

Strategic

Participating

Guest

Page 6: LocationTech Projects

Libraries

Page 7: LocationTech Projects

Martin DavisSenior Technical Architect

Vivid Solutions Inc.Projects:JTS, JEQL, JCS, Proj4J, OpenJUMP GISOSGeoCharter Member

JTS Topology Suite

Vivid Solutions

Page 8: LocationTech Projects

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

Page 9: LocationTech Projects

Key to Open Source SpatialProject Language

JTS Topology Suite Java all JVM

LanguagesJSTS JavaScript (Partial Port)Net Topology Suite C#

GEOS C/C++Shapely Python (via GEOS)

RGeo Ruby (via GEOS)

r-GEOS R (via GEOS)

Page 10: LocationTech Projects
Jody Garnett
Would love to have a more up to date copy of this
Page 11: LocationTech Projects

JTS Geometry Model (OGC 99-049)

Page 12: LocationTech Projects

● Spatial Predicates● Intersects, Contains, Within, Covers, etc

● Geometry Validation● Overlay Boolean operations

● Intersection, Union, Difference, SymDifference● Metrics

● Length, Area, Distance, Hausdorff Distance● Buffer

● Pos/Neg, Cap/Join styles● Polygonization● Delaunay Triangulation● Voronoi Diagram

JTS Functions

Page 13: LocationTech Projects

Geometry Example

GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory();

Coordinate coord = new Coordinate(1, 1);Point point = geometryFactory.createPoint(coord);

Page 14: LocationTech Projects

WKT Example

GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory();WKTReader reader = new WKTReader(geometryFactory);

Point point = (Point) reader.read("POINT (1 1)");

Page 15: LocationTech Projects

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 );

Page 16: LocationTech Projects

JTS Test Builder

Page 17: LocationTech Projects

Mobile Map Tools

Manuel de laCalle Alonso

ProjectsMobile Map ToolsEclipse FoundationLocationTech

Page 18: LocationTech Projects

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)

Page 19: LocationTech Projects

Capabilities

Vector tiles:● Raster● Vectorial● 3D models● offline maps● complex symbology● native

Page 20: LocationTech Projects

New: Vector Tiles● Postgis● GeoJSON pyramid● Native support on MMT

Page 21: LocationTech Projects

● Berkeley DB● Import and orderedpoint 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)

New: Point Cloud Streaming

Page 22: LocationTech Projects

Anthony FoxDirector, Data Science

Commonwealth Computer ResearchProjects:GeoMesaEclipse FoundationLocationTechLinkedInhttps://www.linkedin.com/pub/anthony-fox/5/467/574

Jody Garnett
Can we provided a LinkedIn link here?
Andrew Hulbert
not sure if its public...i'll find out
Page 23: LocationTech Projects

• Distributed Spatio-temporal Database• Built on Hadoop and Accumulo• Scales to billions of features

• Written in Scala• Apache License, v2.0

Page 24: LocationTech Projects

How GeoMesa Fits in Cloud Stack

Cloud Stack and Distributed Resources

KAFKA

HDFSAccumulo

Page 25: LocationTech Projects

Jumping Into “Big Data”Hop on over from PostGIS….

to GeoMesa

picturespk.com

Page 26: LocationTech Projects

Query Planning

Page 27: LocationTech Projects

Connecting to Spark

Page 28: LocationTech Projects

Spark RDD

Page 29: LocationTech Projects

Aggregating by Day

Page 30: LocationTech Projects

Plotting in R14/08/18 01:05:57 INFO SparkContext: Job finished: collect at Runner.scala:61, took 44.154914093 s(20140801,398)(20140802,409)(20140803,328)(20140804,374)(20140805,354)(20140806,377)(20140807,328)(20140808,326)(20140809,365)(20140810,542)(20140811,1081)(20140812,721)(20140813,666)(20140814,1184)(20140815,964)

Page 31: LocationTech Projects

Predictive Threat Surface

Jody Garnett
What is this - Is this a heat map?
Andrew Hulbert
yeah...still working on this one
Andrew Ross
Slide 25 says click to add title
Page 32: LocationTech Projects

Roadmap and Contact Info• Road Map

• Release Imminent (IP Review)• Analytics

• Contact & TutorialsAnthony Fox & Andrew Hulbert (booth)

http://[email protected]@locationtech.org

Jody Garnett
Thanks for the logo that is better than what I found. You may want to look at your intro slide and add CCRi details there?
Page 33: LocationTech Projects

Spatial4j

David Smiley Apache Software Foundation Committer & PMC of Lucene/SolrEclipse FoundationLocationTech PMC

Freelance Lucene/Solr developer/consultant

Page 34: LocationTech Projects

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 utilitiesLicense: ASLv2

Page 35: LocationTech Projects

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”

Page 36: LocationTech Projects

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

Page 37: LocationTech Projects

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)

Page 38: LocationTech Projects

More code samplesSpatialContext 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

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) );

Distances (including circle radius) are in “Degrees”, not

radians or KM

Page 39: LocationTech Projects

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

Recent Activity

Page 40: LocationTech Projects

Processing

Page 41: LocationTech Projects

RobertCheethamFounder and CEO

AzaveaProjectsGeoTrellisEclipse FoundationLocationTech

GeoTrellis

Page 42: LocationTech Projects

GeoTrellis• Scala geospatial library and platform for

distributed real-time and batch processing• Supports:

• Low latency & Distributed processing of raster data• Highly scalable• Based on Scala, Akka, & Spark

• License:• Apache License, Version 2.0

Page 43: LocationTech Projects

GeoTrellis Chattanooga Demo

http://demo.geotrellis.com/chatta

Page 44: LocationTech Projects

GeoTrellis subprojects● proj4

● Port\Wrapper of Proj4j● vector

● Scala wrapper for JTS● Reprojection support● GeoJSON read\write

● slick● Vector data to/from PostGIS

● raster● Raster IO, map algebra● Vector <-> Raster

operations● engine

● Distributed Akka execution engine for raster processing

Page 45: LocationTech Projects

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.

Page 46: LocationTech Projects

Zonal Summary Example

Page 47: LocationTech Projects

Weighted Overlay Example

Page 48: LocationTech Projects

GeoTrellis Spark

geospatial @ scale

Page 49: LocationTech Projects

GeoTrellis Spark

Page 50: LocationTech Projects

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.

Page 51: LocationTech Projects

Ahmed EldawyUniversity of Minnesota

ProjectsGeoJini (SpatialHadoop)Eclipse FoundationLocationTech

GeoJini

Jody Garnett
Andrew need contact details for geoJini
Page 52: LocationTech Projects

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

Page 53: LocationTech Projects

Applications

Page 54: LocationTech Projects

Geo Fast Forward (GeoFF)

Erdal Karaca

ProjectsGeoFFEclipse FoundationLocationTech

Page 55: LocationTech Projects

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

Page 56: LocationTech Projects

Define GeoMap for RCP Developers

Page 57: LocationTech Projects

New: GeoFF in Eclipse 4

Page 58: LocationTech Projects

GeoGig

GabrielRoldán

Software DeveloperBoundless

ProjectsGeoGig(GeoGit), GeoTools, GeoServerEclipse FoundationLocationTechOSGeoCharter Member

Page 59: LocationTech Projects

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)

Page 60: LocationTech Projects

~$ geogig helpList geogig commands

~/new-folder $ geogig initInitialise a geogig repository in new-folder

~/new-folder $ geogig shp import your_shapefileImport a .shp file (or OSM, SpatialLite or PostGIS)

~/new-folder $ geogig lsWhat's in your geogig repository

~/new-folder $ geogig statusWhat you can commit to a snapshot

Quickstart

Page 61: LocationTech Projects

GeoGig branching

Page 62: LocationTech Projects

QGIS plugin

Page 63: LocationTech Projects

GeoGig spatial diffs

Page 64: LocationTech Projects

News:● Download: 1.0-beta1 today● Thanks Ben for a great FOSS4G workshopIncubation:● LGPL → BSD● packages → org.locationtech.geogig● “initial code contribution” submitted

(Thanks to Sharon for patient Q&A)

GeoGig Update

Page 65: LocationTech Projects

GeoScript

JustinDeoliveira

VP EngineeringBoundless

ProjectsGeoScript, GeoTools,GeoServer,OpenGeo SuiteEclipse FoundationLocationTechOSGeoCharter Member

Page 66: LocationTech Projects

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/#/

Page 67: LocationTech Projects

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.area31214.451522458345

Page 68: LocationTech Projects

Python

>>> 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

Page 69: LocationTech Projects

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).areares0: Double = 31214.451522477902

Page 70: LocationTech Projects

Groovy

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

Page 71: LocationTech Projects

● Jared working hard● Curved geometries, GeoPackage, MBTiles

● Working on a common versioning scheme● Standardizing on GeoTools version● Early stages of incubation● TODO: Logo :)

GeoScript Update

Page 72: LocationTech Projects

Jody GarnettSenior Software Engineer

Boundless

Projects:GeoTools, GeoServer,uDig

Frank GasdorfSoftware Developer

& GIS ProfessionalPlath GmbH

ProjectsuDigEclipse FoundationLocationTech

uDig

Page 73: LocationTech Projects

● User-friendly Desktop Internet GIS● Based on Eclipse Framework● Reusable RCP components● Java core libraries

(JTS, GeoTools, jgrasstools,imageio-ext)● Supports:

● Industry standards formats and services formats(WMS, WFS, KML, GeoTiff, etc)

● License: Eclipse Public License EPL and BSD

uDig

Page 74: LocationTech Projects

Provides the best of Open Source Mapping for the Eclipse RCP Developer

uDig SDK

Page 75: LocationTech Projects

User-friendly Desktop Internet GIS

Page 76: LocationTech Projects

JGrass - Hydrological Modeling

Page 77: LocationTech Projects

DEWS Distance Early Warning System

https://www.youtube.com/watch?v=-lGgkOd-Tl4

Page 78: LocationTech Projects

Globema - ELGrid

Page 79: LocationTech Projects

LocationTech

Page 80: LocationTech Projects

Full Service Foundation

IPmgmt

Dev Process

LicenseModel

Forge&

Build

CommunityMemberNetwork

Governance

Page 81: LocationTech Projects

Infrastructure

Page 82: LocationTech Projects

Events: Tour 2014

18 Cities around the world.Speaking & sponsorship opportunities.Great spirit of camraderie & learning

Page 84: LocationTech Projects

Questions?(Hand up for a microphone, project leads to the front)

Page 85: LocationTech Projects

● Q: Do I have to use Eclipse infrastructure?A: See https://github.com/locationtech(Thanks to the Verte.x for sorting out how)

Q&A