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!
[ OK ] Study SFA standard implementation specifications and apply them to build our Pharo object model
Relative pull request : build OGC-Pharo model
[ 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
[ 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
[ 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
[ 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)
Implement basic operations for a spherical consideration of space
provide a zoom and a slide in map
implement more user methods to apply custom styles: classification, tags, ...
enable layers superposition
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.