At the 2011 OpenERP Community Days, we presented maps integration into OpenERP (See video).
Following this major announcement, the GeoEngine project was created; it originated from a lot of thinking and architecture developments by our Business Solutions and Geospatial Solutions teams. We would like now to present this project.
The OpenERP GeoEngine is separated in two distinct sub-projects:
- The GeoEngine map view project
- The GeoEngine core project
These standalone projects are independent from one another, but are perfectly compatible.
The above diagram (Fig. 1) shows the global architecture of the two projects. It might look complex but it is actually simple bricks put together. It helps illustrate the way our geo-blocks integrate with the rest of the world. Now, let’s look at these blocks in more detail.
The GeoEngine core
This brick is plugged directly in the OpenERP framework and relies on the system data model, access rights and utilities. It does not provide any map or geographic visualization tools. Geo-information does not actually need any maps to have value. Added value is already related to business attributes, good back-end management, data extraction and mining.
The main objectives of the core engine are:
- To provide an easy and well-known way to manage geo-data. We want geo-data to to be easy and intuitive. Actions like insertion, edition, relation with attribute, search and geo-referencing are in focus. In order to achieve this goal, we provide OpenERP ORM function and operator, the same way OpenObject works. We plan to extend the ORM in order to support search, read, search_read, write, and all common requests. We also include a geo-OSV field class that allows data creation, browsing, export and basic function field request.
- To organize and prepare geo-data. Geo-data can come from multiple sources and contain multiple attributes; we want to create a XML view standard in order to present and prepare customized data, in term of layers, grouping, geo- data source merge, etc. Why doing this as we do not want to provide map visualization in the core? To fit the next objective of the core engine share data with the world.
- To serve geo-data. Your ERP has to be able to serve your geo-data to other GIS/Business system, in order to visualize it and exploit it. We have then chosen to serve vectorial data in form of a GEOJSON base on RPC call. Raster data are accessible through a WMS standard services using a totally integrated Python engine. This level of integration allows us to comply with OpenERP access rules.
All technologies used are -or will be- Open Source technologies only: Postgres, Python, OpenERP, PostGIS, PGRouting, Mapnik etc. We comply with the OpenERP philosophy by avoiding using external non Python lib. This approach enables us to integrate external data source into OpenERP and integrate OpenERP into other systems.
Ok, now, we agree that the GeoEngine core is cool! You are now going to tell me that maps are even more cool! Don’t worry, we have not forgotten you…
The GeoEngine map view
Now that we have all our data stored, organized and ready to be served, we want to « map » them. For version 6.1 of OpenERP, the webclient is rebuilt and provides cutting-edge Web technologies. It is therefore the perfect association to provide an OpenERP WebClient Map addon. The main objectives of the addons are:
- To visualize, organize and conceptualize geo-data. We want any source of map data to be easily put in form, layer, choropleth etc. For this, we are going to provide a simple (json based) layer definition API. This API will be fully compatible with GeoEngine core but also with any other services. This leads up to our next objective…
- To mashup geo-information. Any system that can fulfill the API will be also able to be a provider of map views. But you should be also able, with a simple configuration, to add any layer supported by the OpenLayers technology. This means if you want to add OpenStreetMap, Google map, etc, you can do it!
- Visual geo CRUD. We want to have the ability to geo-reference a point, edit a shape, do measurements, etc, directly on the map. The map view will provide all standard, modern, out- of- the-box GIS features.
We want to open OpenERP to the GIS world, and ensure freedom and promotion of geo-data and communication between systems.
We are really excited to explore a new environment which includes both ERP and GIS system! Our experience and passion will inevitably lead the way to this cutting edge technological adventure, in alignment with the OpenSource spirit.
The official project homepage will open very soon. Keep posted!
Nicolas Bessi, for Camptocamp