Camptocamp has been mandated by the Ministry of Ecological and Inclusive Transition to implement a new version of the mapping module of the spatial data infrastructure Géo-IDE.

The Geo-IDE operation is part of the global program of convergence of geomatic tools from the Ministry of Ecological and Solidarity Transition (MTES / MCT) and the Ministry of Agriculture and Food (MAA) in the field of geographic information. Géo-IDE is made up of 4 modules, Cartography, Catalog, Base and Distribution and aims:

  • to enhance knowledge of the territories for planning and crisis management purposes;
  • to help ministries fulfill their public service mission.
  • meet the requirements of the Inspire directive, which requires public authorities to publish most of their environmental data in the form of search, display and download services according to very precise technical specifications.

The new cartography module – Carto 2 – should allow data administrators to compose maps online via a WEB cartographic composer, to manage, catalog and publish composite maps online and “offline” via the GIS deployed in services , to share “restricted” cards with authorized partners.

For any public entity and for the general public, Carto 2 must make it possible to search for published public maps, to view a published map “online” via a WEB cartographic viewer, to consult and / or download the resources necessary for the reproduction of a published map.

In 2019, Camptocamp produced version V1.0 of Carto 2 which went into production in early 2020.

Back Office: Map Composer

The Back Office of Carto 2 is a map composer, a screen copy of which is presented below:

This back office allows you to create and publish maps. Connected to the ministry’s identification system, it serves as a facade for the Geoserver administration interface.

Any action on the map while editing has repercussions in Geoserver (map, layers, styles). This is done using the Rest API of Geoserver which it was necessary to enrich for the needs of the project. It allows you to create maps, layers and layer groups from different formats (shapfiles, postgis, TAB, geotiff), as well as styles.

Style management

One of the main technical challenges of Carto 2 has been the implementation of an advanced style editor compatible at client and server level.

The map composer allows the user to create a map from data or services and to modify the style of each of the layers thus created.

At the time of publication, the new style is “pushed” to Geoserver.
The style format that is used – Geostyler Style –  is a pivot format designed around the possibilities of SLD. It has the advantage of being able to be used by both client components and Geoserver, the WMS and vector layers are styled in the same way, thanks to parsing around the GeoStyler.

Using the state

The client side (front end) of Carto 2 uses a state manager integrated into the components framework. The state allows you to store the map during editing, and ensures perfect synchronization between all the components and the edited model.

Given the size and complexity of the back office, it was necessary to use state management to ensure the authenticity of the model and avoid side effects. Any action done on the map goes through the state, which transcribes the data model stored in the database and returned by the APIs.

Clean Architecture

The development of backend components is part of a quality logic essential for a project of this scope. In this sense, we have implemented a “clean architecture” type architecture for the backend component layers. This architecture, in the shape of onions, allocates the source code into different layers of responsibility, ensures unilateral dependencies from the outside inwards with the business needs at the center, then the use cases, and outside the presentation and integration layer.

The advantage of this architecture is that it allows transcribing business needs, constant over time, without being dependent on a technology. A technological leap will require a new implementation of the integration layer, without needing to touch the business needs or the use cases. It also completely decorrelates the business implementation with the presentation layer, defined only for the interfaces connected to this backend.