Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

LocationTech Projects

1,933 views

Published on

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.

Published in: Data & Analytics
  • Be the first to comment

LocationTech Projects

  1. 1. LocationTech Projects
  2. 2. Introduction Getting the party started
  3. 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
  4. 4. LocationTech “LocationTech is a working group developing advanced location aware technologies.”
  5. 5. Members Strategic Participating Guest
  6. 6. Libraries
  7. 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. 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. 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)
  10. 10. JTS Geometry Model (OGC 99-049)
  11. 11. JTS Functions ● 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
  12. 12. Geometry Example GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(); Coordinate coord = new Coordinate(1, 1); Point point = geometryFactory.createPoint(coord);
  13. 13. WKT Example GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(); WKTReader reader = new WKTReader(geometryFactory); Point point = (Point) reader.read("POINT (1 1)");
  14. 14. 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 );
  15. 15. JTS Test Builder
  16. 16. Mobile Map Tools Manuel de la Calle Alonso Projects Mobile Map Tools Eclipse Foundation LocationTech
  17. 17. 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)
  18. 18. Capabilities Vector tiles: ● Raster ● Vectorial ● 3D models ● offline maps ● complex symbology ● native
  19. 19. New: Vector Tiles ● Postgis ● GeoJSON pyramid ● Native support on MMT
  20. 20. 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)
  21. 21. Anthony Fox Director, Data Science Commonwealth Computer Research Projects: GeoMesa Eclipse Foundation LocationTech LinkedIn https://www.linkedin.com/pub/anthony-fox/5/467/574
  22. 22. • Distributed Spatio-temporal Database • Built on Hadoop and Accumulo • Scales to billions of features • Written in Scala • Apache License, v2.0
  23. 23. How GeoMesa Fits in Cloud Stack K A F K A Accumulo HDFS Cloud Stack and Distributed Resources
  24. 24. Jumping Into “Big Data” Hop on over from PostGIS…. to GeoMesa picturespk.com
  25. 25. Query Planning
  26. 26. Connecting to Spark
  27. 27. Spark RDD
  28. 28. Aggregating by Day
  29. 29. Plotting in R 14/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)
  30. 30. Predictive Threat Surface
  31. 31. 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
  32. 32. Spatial4j David Smiley Apache Software Foundation Committer & PMC of Lucene/Solr Eclipse Foundation LocationTech PMC Freelance Lucene/Solr developer/consultant
  33. 33. 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
  34. 34. 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”
  35. 35. 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
  36. 36. 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)
  37. 37. 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
  38. 38. 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
  39. 39. Processing
  40. 40. Robert Cheetham Founder and CEO Azavea Projects GeoTrellis Eclipse Foundation LocationTech GeoTrellis
  41. 41. 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
  42. 42. GeoTrellis Chattanooga Demo http://demo.geotrellis.com/chatta
  43. 43. GeoTrellis subprojects ● proj4 ● PortWrapper of Proj4j ● vector ● Scala wrapper for JTS ● Reprojection support ● GeoJSON readwrite ● slick ● raster ● Vector data to/from PostGIS ● Raster IO, map algebra ● Vector <-> Raster operations ● engine ● Distributed Akka execution engine for raster processing
  44. 44. 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.
  45. 45. Zonal Summary Example
  46. 46. Weighted Overlay Example
  47. 47. GeoTrellis Spark geospatial @ scale
  48. 48. GeoTrellis Spark
  49. 49. 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.
  50. 50. Ahmed Eldawy University of Minnesota Projects GeoJini (SpatialHadoop) Eclipse Foundation LocationTech GeoJini
  51. 51. 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
  52. 52. Applications
  53. 53. Geo Fast Forward (GeoFF) Erdal Karaca Projects GeoFF Eclipse Foundation LocationTech
  54. 54. 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
  55. 55. Define GeoMap for RCP Developers
  56. 56. New: GeoFF in Eclipse 4
  57. 57. GeoGig Gabriel Roldán Software Developer Boundless Projects GeoGig(GeoGit), GeoTools, GeoServer Eclipse Foundation LocationTech OSGeo Charter Member
  58. 58. 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)
  59. 59. 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
  60. 60. GeoGig branching
  61. 61. QGIS plugin
  62. 62. GeoGig spatial diffs
  63. 63. 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)
  64. 64. GeoScript Justin Deoliveira VP Engineering Boundless Projects GeoScript, GeoTools,GeoServer, OpenGeo Suite Eclipse Foundation LocationTech OSGeo Charter Member
  65. 65. 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/#/
  66. 66. 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
  67. 67. 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
  68. 68. 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
  69. 69. 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
  70. 70. 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 :)
  71. 71. Jody Garnett Senior Software Engineer Boundless Projects: GeoTools, GeoServer,uDig Frank Gasdorf Software Developer & GIS Professional Plath GmbH Projects uDig Eclipse Foundation LocationTech uDig
  72. 72. ● 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
  73. 73. uDig SDK Provides the best of Open Source Mapping for the Eclipse RCP Developer
  74. 74. User-friendly Desktop Internet GIS
  75. 75. JGrass - Hydrological Modeling
  76. 76. DEWS Distance Early Warning System https://www.youtube.com/watch?v=-lGgkOd-Tl4
  77. 77. Globema - ELGrid
  78. 78. LocationTech
  79. 79. Full Service Foundation IP mgmt Dev Process License Model Forge & Build Community Member Network Governance
  80. 80. Infrastructure
  81. 81. Events: Tour 2014 18 Cities around the world. Speaking & sponsorship opportunities. Great spirit of camraderie & learning
  82. 82. Events: FOSS4G-NA
  83. 83. Questions? (Hand up for a microphone, project leads to the front)
  84. 84. 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)

×