We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

MapMint: The service-oriented platform

00:00

Formal Metadata

Title
MapMint: The service-oriented platform
Title of Series
Number of Parts
295
Author
Contributors
License
CC Attribution 3.0 Germany:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor.
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Abstract
MapMint is a comprehensive task manager for publishing web mapping applications. It is a robust open source geospatial platform allowing the user to organize, edit, process and publish spatial data to the Internet. MapMint includes a complete administration tool for MapServer and simple user interfaces to create mapfiles visually. MapMint is based on the extensive use of OGC standards and automates WMS, WFS, WMT-S, and WPS. Most of the MapMint core functions are run through WPS requests which are calling general or geospatial web services: vector and raster operations, mapfiles creation, spatial analysis and queries and much more. MapMint server-side is built on top of ZOO-Project, MapServer and GDAL and its numerous WPS services are written in C, Python and JavaScript. MapMint client-side is based on OpenLayers and Jquery and provides user-friendly tools to create, publish and view maps. MapMint architecture and main features will be introduced in this presentation, and its modules (dashboard, distiller, manager, and publisher) will be described with an emphasis on the OGC standards and OSGeo software they are using. Some short but relevant case studies and examples will finally illustrate some of the key MapMint functionalities.
Keywords
129
131
137
139
Thumbnail
28:17
MathematicsWeb serviceProcess (computing)AlgorithmServer (computing)Client (computing)Configuration spaceProjective planeSoftware developerGroup actionSoftwareWebsiteProcess (computing)Category of beingNetwork topologyLevel (video gaming)Line (geometry)Transformation (genetics)Data storage deviceSource codeForm (programming)InformationData managementComputing platformMultiplication signSurgeryOpen setPhysical systemMappingMetropolitan area networkImplementationTable (information)Complex (psychology)Default (computer science)Web serviceInterface (computing)Dynamical systemWorkstation <Musikinstrument>MathematicsType theoryRight angleCartesian coordinate systemLibrary (computing)MereologyGoodness of fitGeometryAsynchronous Transfer ModeClient (computing)MetreUser interfaceNatural languageComputer scienceDifferent (Kate Ryan album)Cellular automatonBootingWeb 2.0Server (computing)System administratorModule (mathematics)LoginRoutingSet (mathematics)Core dumpRaster graphicsMetadataFormal languageFunction (mathematics)BitVector spaceWeb browserStandard deviationOrder (biology)View (database)Computer filePresentation of a groupNeuroinformatikComputer animation
Link (knot theory)InformationComputer fileUser interfaceLattice (order)Augmented realityPrice indexTable (information)Popup-FensterGame controllerGroup actionMereologyMultiplicationSource codeLevel (video gaming)System administratorWeb serviceClient (computing)MappingMathematicsCuboidString (computer science)Traffic reportingArithmetic meanImplementationOpen setMultiplication signInternetworkingStandard deviationRaster graphicsLibrary (computing)ResultantField (computer science)Query languageElement (mathematics)BitMedical imagingInterface (computing)CASE <Informatik>Server (computing)Bootstrap aggregatingProfil (magazine)ForestWeb pageModule (mathematics)TesselationAdditionView (database)PlanningConnected spaceVideoconferencingSeries (mathematics)Instance (computer science)Labour Party (Malta)1 (number)MetreMilitary baseTerm (mathematics)Object (grammar)Universe (mathematics)WindowElectronic visual displayRight angleStorage area networkEndliche ModelltheoriePoint (geometry)Hand fanCellular automatonProjective planeNeuroinformatikE (mathematical constant)Line (geometry)Power (physics)GoogolState of matterInternet forumRoundness (object)Boss CorporationType theoryAreaProcess (computing)DistanceLecture/Conference
BitTraffic reportingWeightFamilyVirtual machineLink (knot theory)Condition numberEmailMereologyIntelligent NetworkMultiplication signOrder (biology)Electric generatorSocial classData transmissionProduct (business)State observerPhysical systemSound effectLibrary (computing)Presentation of a groupClient (computing)Channel capacitySoftware documentationInformation securityProxy serverBit rateSpecial unitary groupLevel (video gaming)VotingInsertion lossGoodness of fitGraphics processing unitUser interface40 (number)MetreGoogolWebsiteTorusFormal languageProjective planeNetwork topologyCASE <Informatik>Arithmetic meanRaster graphicsVector spaceTransformation (genetics)Server (computing)GeometryLogic gateComputer fileTesselationScripting languageINTEGRALTable (information)PolygonModule (mathematics)Directory serviceLatent heatGroup actionCartesian coordinate systemWeb serviceDifferent (Kate Ryan album)SoftwareCodeProcess (computing)2 (number)Lecture/Conference
Transcript: English(auto-generated)
Next talk will be by Gerald, who is, if you don't know him, he's like the OSTO superstar most probably. The father of the Zoo book project, right?
And without any further ado, I will just shut up and stand aside. Thank you very much. So good afternoon, everybody. My name is Gerald Fennois, from the very small company named Geolabs. And I will present to you the most innovative software you will probably
have met during the last ten years. So I will present to you MapMint, which is the only platform which is really 100% based on OGC web services. Because as Tony told you in the introduction, we are the main developer of the Zoo project.
And Zoo project is a WPS implementation. So the main idea was to help people to produce map in a simple manner, to configure their map very easily, and not coding maps as we did for ten years in the past. So what are the OGC standards we are using?
Actually, we are using OGC standards, but also other standards like Open Document Text. So we are using web processing services, web feature service, WMS, WMTS, and we are always thinking, and we were always thinking since ten years, that everything is a process.
Because we are not coming from the GIS world, but we are coming from the computer science. And if you think in computer science, what can be, cannot be done through a process? Nothing. So this is the best technology on which we have based
all our mapping solution. So we have the Zoo project. Zoo project, you will have a presentation tomorrow at almost the same time in a different room. We, the core GIS engine we are using and we are producing map file for is map server,
which we are using. It is written only WMS and WFS, but we are also using WCS automatically. To access the data and the data sources available in our data store, what we are using the most valuable software in the OSGO. So GDAL, the GDAL library, which gives you access to
any kind of data sources. And finally, to show you the map and create web client application, we are using Open Layer, obviously co-played with Bootstrap, GQuery, and everything like this. So obviously, in Mappint, you have two different interfaces. We have the administration interfaces, where you will
deal with your data store and everything. I will show you, I will give you a brief introduction about the dashboard, the distillers, the manager, and the publisher, which are the default modules that are activated. And then I will give you a brief introduction about the advanced set module, such as geo-referencer, tables module, importer, indicator, and routing.
So, sorry. On the left side, you have the administration interface with the login interface, and on the right side, you have the public interface, where the client can connect and get access to the basic maps applications that you have published. So first of all, you have the dashboard module.
You remember, I told you that everything is a processor. So even this HTML page, which is a bit dynamic, is a zero output of an execute request to the WPS server. So, as you can see on the picture, everything is written in French, because you probably
know that every OGC web services should support various different natural languages. So obviously, we have implemented everything in English, but you can translate this to French or Japanese, which are the two other languages supported by now. Anyway, on the dashboard, what do you have access to? An overview of your current setup.
You can also manage your user groups to then allow them to access to one data sources or a few maps that are published already. You have also all the metadata information here. Actually, you are probably aware also that every OWS is sharing common metadata information.
So obviously, all this metadata information will be set up mainly for the WPS server. But as the OWS is common to every OGC web services, we are using, per default, the same metadata for your WMS, WFS, and WCS server automatically.
After that, you have the distiller where you get access, let's say, to GDAL info and OGL info. So like you do from the command line, we are doing the exact same way. But we have posted 12 years ago the source code of OGL info and GDAL info as a WPS
services. So you can browse your data store in the same way that you are browsing them from the command line usually. From here also, you have access to some forms to run OGL to OGL transformation, GDAL translate, GDAL wrap, and everything like this. So you can, let's say, do whatever you
are able to do from the command line, but directly using a user interface, directly online. So once you have finished to modify and to process your data, you will want to open them in the manager to create map with your data sources.
So here you have an overview of what how the manager looks like. So you have the layer tree on the left. Then you have some tool to define the property, which are the metadata of the layer for the WMS, WFS, or WCS, depending on the data source we are talking about. Then you have some styles, complex or
very simple styles. You can classify vector data, raster data, and you can also create timeline and things like this. So let's say that here you are organizing your maps, and obviously you have also the table view like you got in the distiller before.
So here you are configuring your map. You can change the layer order and everything like every SDI is doing. So you may think it is the same thing again and again, but no, it is not the exact same thing because we are only based on WPS, which means that when one client will come to us and ask the question how you will do that, we have already the answer.
We simply use WPS services because it is the simplest way to work nowadays. Fine, for the last ten years, but as nobody realizes, I have to say the same thing again and again. So once you have finished to configure your map, what you can do is publish your map. So when you will publish your map, you
will define what are the base layers you want to be activated. So we have various base layers available like OpenStreetMap, Planet, Bing, IGN, and so on and so forth. Then you have your layers that are available here. You will say, okay, this one will be activated, this one won't be activated.
On this layer, I want a pop-up window to appear when my client will put his mouse on top of a feature and so on and so forth. And then you have all the WPS services that can be activated this time, not on the administration interface, but on the public interface. So here are some examples of published
maps. So here it's a forest in Senegal, and this is Senegal country, where you can see this profile service, which is the first WPS service we have implemented with WPS and ZooProject. It was the very, very, very first service code.
And 12 years after, we can still use it and put it on the server quite easily. Here you have a simple pop-up. Obviously, it is responsive because we launched it in 2019, so everything is using Bootstrap. One more thing is that from your distiller, you can open one layer, one data source, and create a map from
this data source. But in case your raster is not georeferenced or something like this, then the same button will open your raster file in this georeference module, which gives you simply the capability to define the ground control point. And then to georeference your raster file, and then to create a map with it.
Then we have also the indicator module, which is an optional module, which gives you the capability to join GIS data with any kind of data that is readable by OGR. So let's say everything, like an Excel file or things like this. So you can join your GIS data with
any statistical information that you can find from an external data set, because as I told you, we are using OGR, so it can be also another WFS containing statistical information, an external Excel file, something like this. And then you will configure simply how to make the link in between, and then you will be able to configure
both a table, a graph, and a report. For reporting, I did not tell you in the introduction, but amongst all the standards we are using, we are also using Open Document Text, as I told you, because we are using LibreOffice as a server, meaning that we can communicate with LibreOffice using Universal Network Object, which is existing
for 15 years now, and we can communicate and say, okay, open this document, change this string with this string, change this image by this image, run this SQL query and put the result in a table, or run this SQL query and put this result in a diagram, and so on.
So this is a brief view of the table, the graph, and the report, which can be much more complex than this simple report, and the last but not least module that has been developed three or four years ago for Senegal is the table module. It means that, okay, you have GIS data
that are available, but sometimes your users want to record their own data, right? So we needed to add this table module, which gives the administrators the capability to give the privilege of some groups of users to edit data online. So editing data online means that
you will have to define how, first of all, how the table will be viewed, right? So you define a view, then you define a different step for your edition form, because sometimes you don't have only one step to edit the full field, and then you have also one more time the report capability,
as you can imagine that if we are able to run LibreOffice services to produce report for indicator, we are able to do this for any kind of report you want to produce. So here you have a simple, very, very simple interface to configure your report, and your report can be very, very complex.
Obviously, with this table module, we were thinking that there is still something missing, because in many countries, not only in Africa, actually, many people don't have 4G coverage all over the country, but they still want to be able to record data on the field.
So what did we do? We simply implemented an Android application, it made MapMint for me, which makes you able to record data on the field with or without Internet connectivity. Actually, it has been used in Senegal, and it is used massively in Ireland nowadays. I would like to say thank you,
to specific thank you to OSGO for the Google Summer of Code this year, because thanks to the Google Summer of Code, we also have integrated within MapMint for me. The augmented reality means that, okay, you can record a point, you can record a polygon, you can record a line, fine, but then you can also record a plan with your camera,
and compute the planner, and compute the distance, compute the area, and so on and so forth. So I want to thank specifically Aditya for the work he has done. Also, I did not tell you, but there is also the offline map, which is available, obviously. Everything that you can see here,
work online or offline, means that even the base layer will be available for offline mapping, because I forgot to tell you that in addition to MapServer to produce the maps, we are also producing a pyramid of tiles using this famous MapCache technology
that is now part of MapServer. So for the table module, I told you that user can edit or digitize, name it as you want, online geographical data. But I also told you that we are working on WPS. So obviously in our implementation of WPS,
we come out with more than 500 services out of the box. So we can also offer them the capability to create some maps, to associate these maps with the table, and then they can expose all the services they want to let their user not only digitize on map, but also compute some new geography
simply using WPS. Also, we have an importer module, because sometimes, you know, Excel files are a bit complicated. For instance, here, it should be representing an element in a table, but you may notice that here is a field name
and here is a value. So we simply build up a small tool using one more time the GitHub library to parse this Excel file. So you upload your Excel files and you choose a page within the Excel file and then you say, okay, this is my field. You press a button, this is my value. You press a button and so on and so forth. And you configure all the data
that you want to record and then the user will be able to upload directly from the user interface this kind of Excel file. One Excel file or multiple Excel files or whatever. So other things we have made two or three years ago
is vector timeline classes. Means that you can create multiple classes for a single layer. So these classes can be represented as a timeline, but it can actually be anything else. And this has been done specifically for a company named Calcartier
which has developed his own client to Map Min Server. So the idea was to be able to generate 70 pyramid of tiles at a time simply by pressing one button. Obviously I did not tell you, but we are using WPS so you know that WPS can be called
asynchronously also. So no need to say that all this long time processing will be run asynchronously. So this is a vector timeline classes used. Also we have the same obviously for the raster file. So this is rapid eye data on Ireland.
And finally when you publish your application I did not give you much details about all this. But you can choose which group is allowed to access the full map. Obviously you can also say only this layer has restricted access and so on.
And so in front of Map Server we needed to put some security. So seven years ago we were working for Foundation and Boonmac and we developed the OWS proxy. So finally we end by integrating this OWS proxy and gives the opportunity to the user
to configure the OWS proxy directly from the publisher web interface. And I did not say that OGC came one year and a half with a definition of security schema that should be added to the gate capability of WFS, WMS and WCS.
And we based our work on this. This way from QGIS you simply get the gate capability and then the QGIS is realizing that to access the gate map he needs to authenticate. And it is the same for the other useless proprietary software.
Also we have added the planet bas-layer specifically for the Irish client again. So here is the integration of three planet bas-layer. Actually they have changed a bit the planet API so we have also changed our client side. To support multiple. Now the last thing we have made
earlier this year is to let our own client create their own WPS services and integrate the button and the user interface linked with this WPS service directly inside the final client.
So here actually the R script because you are probably aware that the project is also supported R language So the client was able to write his own WPS service in R. You get specific knowledge in R. So OK. And we simply create a directory that is brought through JavaScript
to check if there is any module inside and the module is automatically loaded and it contains this small button here and actually when you select it when you press this button you can draw a polygon but when you select some feature which are polygons you have the same button appearing on the table.
So what are the next steps? The next step for MapMeans will be to migrate to Python 3. One more time I thank SOSGEO for having supported a second Google Summer of Code during this summer to start porting from Python 2 to Python 3. So I would like to specifically thank
Fennel Mehta for his active participation and his active work in this portage. And finally unfortunately I have to admit that I have to make a lot of more effort on the documentation because all the modules and everything only the client know how to handle because I sent him an email with the documentation but I never published officially any documentation.
So please give it a try. Enjoy. Enjoy. You have all the links here for the source code documentation on SiebelScript if you want to easily set up MapMeans on your virtual machine or on your server. Finally I want to thank this guy, also my family for supporting me.
But I specifically want to support Rajat for all the support in mentoring this year's GSoC. Here is a picture in IIT with Venkatesh Raghavan which is missing here. I would like also to thank the Coit company which is a forestry company in Ireland for their continuous support for three years now.
And finally, the guy which pays me for a day-to-day salary which is Quelcartier and Carrefonsiere. So thank you. If you have any questions, please I will welcome them. Sorry I was a bit fast. Thank you very much for your presentation. Any questions?
Thanks. How is it with different spatial reference systems? Actually for the spatial reference system, we are using the Proj library. So we are supporting let's say all the spatial reference systems that are supported by Proj. Actually
everything is shown to you. We did not do so much. We simply reuse what is already available in the OS Geo software. So for all the geographical operations, we are using GeoOS. For all the projection stuff, we are using Proj. And for all the transformation from
one SRS to another SRS for vector data or raster data, we are using the Guidal library. Any more questions? In that case, I have one. Have you tried the new Proj as well? Proj 6? Not yet.
Not yet. We have spent some time in Guidal 2. Because actually Guidal 2 came a bit because of this mapment. So now it's Guidal 3.
Proj 6. For Proj 6, we did not spend a minute yet. No. No no no. But we are thinking that Guidal is supporting it already. And we are only relying on this library. So I think our work will be equal to zero to integrate the Proj 6.
Ok, that's good. Any more questions? Then I think thank you, Gerald. Thank you very much. And thank you for coming and joining us for this last talk of the day.