Final Evaluation
Organization: Pharo
Project: Classes and Methods for Spatial Data
Mentors: Serge STINCKWICH, Etienne DELAY & Norbert HARTL
Student: Laurine DARGAUD
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
Relative pull request : build OGC-Pharo 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
Relative pull requests: migrate to OGC-Pharo model, remove previous 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
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.