Final Evaluation

Organization: Pharo
Project: Classes and Methods for Spatial Data
Mentors: Serge STINCKWICH, Etienne DELAY & Norbert HARTL
Student: Laurine DARGAUD

For this GSoC project, I aimed to provide tools to handle spatial data in Pharo.

Digital world is full of spatial data. Nonetheless, very few tools exist in Pharo to process them at the moment. Using classes and methods I developed for spatial data during this GSoC, we are now able in Pharo to read spatial data given in classical formats like KML, GeoJSON, as they can be provided by GIS or open geographic data sources for instance, and manipulate them through a model object based on the OGC Consortium's SFA specifications. We can also visualise spatial data, with or without map tiles in the background, and apply a custom style based on other information.

GitHub repository I contributed to:

You can find the proposal I submitted initially here.
How to use all of those packages? Check this User Guide!

What I did

Project goal 1: build a Pharo object model based on Simple Feature Access [SFA] specifications from OGC Consortium

[ OK ] Study SFA standard implementation specifications and apply them to build our Pharo object model

Project goal 2: load a geospatial data file into Pharo

[ OK ] Be able to load a GeoJSON file into our OGC-Pharo model: I took over the work of Norbert Hartl to adapt his parser to the new OGC-Pharo model

Project goal 3: visualise spatial data

[ OK ] Visualise a spatial object at best zoom level in inspector
[ OK ] Display map tiles in the background (using Google Maps approach)
[ OK ] Display feature properties
[ OK ] Apply custom styles to spatial objects, based on specific conditions or other data from a CSV

  • Relative pull requests about visualisation: here & here

Display the departments of "59 - Nord" French region, based on a GeoJSON open file
Visualisation of French metropolitan regions, where color depends on population
Visualisation of the cinemas of the North of France
Visualisation of French Regional Natural Parks, where color intensity depends on perimeter (spatial data source: https://data.laregion.fr/explore/dataset/parcs-naturels-regionaux/export/)

Project goal 4: support basic geometry operations

[ WIP ] Implement basic operations for a planar consideration of space: elementary intersections are implemented (point, line, linestring), but intersection for other features and other basic operations are still to do

Follow continuous integration practices

[ OK ] Write unit tests for main methods
[ OK ] Add GitHub actions to run tests automatically at pull request and on main branch

(helped by B.Verhaeghe's Pharo blog)

What is left to do?

  • Implement basic operations for a spherical consideration of space

Improve visualisation

  • provide a zoom and a slide in map

  • implement more user methods to apply custom styles: classification, tags, ...

  • enable layers superposition

What did I learn?

  • Discovering GeoJSON & Simple Feature Access standards

  • Introduction to GIS problematics like projection or geometrical computations

  • Better understanding of Morph Pharo package for visualisations

  • How to write the baseline of a Pharo project

  • How to set GitHub actions for Pharo projects

To conclude, I would like to thank Norbert HARTL, Etienne DELAY and Serge STINCKWICH for their guidance, feedback and mentoring during this GSoC. It was a pleasure to discover spatial data processing with them, and I am glad to provide those new tools to Pharo community.