From version < 14.1 >
edited by Fawad Ali
on 2019/05/22 21:12
To version < 15.1 >
edited by slauriere
on 2019/05/28 13:54
< >
Change comment: There is no comment for this version

Summary

Details

Page properties
Author
... ... @@ -1,1 +1,1 @@
1 -xwiki:XWiki.GinPachi
1 +xwiki:XWiki.slauriere
Content
... ... @@ -1,46 +1,108 @@
1 -This project is about the development of interactive maps in XWiki. Creation of an application within XWiki that will allow users to generate interactive maps which support collaboration and are easy to create so that locations can be shared, and areas can be associated with structured data.
1 +This project is about the development of interactive maps in XWiki. Its goal is to create an XWiki application that will allow users to easily generate interactive maps supporting collaboration so that locations can be shared, and areas can be associated with structured data. This application will open several possibilities that can be utilized within XWiki and broaden the overall scope by allowing rich wiki maps where locations and areas can be presented in a way that will increase the understandability of data.
2 2  
3 +== Use cases ==
3 3  
4 -This application will open several possibilities that can be utilized within XWiki and broaden the overall scope by allowing map rich wikis where locations and areas can be presented in a way that will increase the understandability of data.
5 +=== Town hall use case ===
5 5  
6 -== Implementation Details ==
7 +As an employee of a town hall, I can create with my colleagues an interactive map displaying the main city points and areas of interest: museums, gardens, libraries, swimming pools, shops, transports, ... I can do by harnessing existing data that I have at I my disposal either already in a wiki, or that can I can import into one. For example, I have a database of all city monuments with their geographical coordinates, a geographical database of metro and bus lines, and some touristic paths across the city. I want to represent this data on a map in order to promote it and ease its usage.
7 7  
8 -This application will target implementation of the following features.
9 +I need to be able to configure the map visually: associate icons to specific elements (e.g. one icon for monuments), choose colors of paths and shapes, choose the available map background(s). For example, if real imagery of the world is required for pointing out a location, a satellite-based background can be chosen, or if the infrastructure must be emphasized, background which better represent paths can be used .
9 9  
10 -==== Markers and Popups ====
11 +* Step 1: I import the available data into a wiki.
12 +* Step 2: I enrich the data collaboratively via the wiki: I provide more detailed information about each monument, I add images, videos. I also edit individual points, paths or shapes in order to add missing geographical information or in order to refine the data or fix it.
13 +* Step 2: I create a map configuration that lets me represent this data interactively, define a visual theme, configure filters and the way contextual information can be retrieved and displayed.
11 11  
12 -Place markers anywhere on the map and associate popups with them. This will allow users to specify coordinates or select a specific location on the map to place the marker at and then associate a box of text with it.
15 +== Encyclopedia use case ==
13 13  
14 -==== Path Between Two Points ====
17 +This use case is functionaly very similar to the town hall use case, however it provides a slightly different perspective,. It highlights the facts that 1) the user will want to avoid twisting the data just for the purpose of representing it on a map: existing content will be simply enriched for map representation, 2) it may make sense to use Solr QL and Solr facets as the primary way to configure and filter map elements.
15 15  
16 -A path will be generated by the application linking two points of interest. With, this two points of interest can be linked through an available track.
19 +As the contributor to an existing encyclopedia, beside presenting content as articles with images and videos, I want to represent the existing content on a map. Among other things, my encyclopedia contains in particular pages related to places or events. I want to enrich the existing pages so that they can be represented on a map. For example, I want to represent [[all HLS places related to archeologia>>https://hls-dhs-dss.ch/fr/search/category?f_hls.lexicofacet_string=1%2F006800.014300.&text=*&sort=hls.title_sortString&sortOrder=asc&collapsed=true&r=1]] on a map.
17 17  
18 -==== Location Search ====
21 +* Step 1: I enrich the existing pages so that they can be represented on a map. To do so, I can either launch a service that computes the geo coordinates / shapes from existing data, if any, or I can manually add geographical information to each relevant page. For instance, if a page relates to a battle, the key locations where the battle took place would be added.
22 +* Step 2: configure one or several maps for representing the enriched information. For instance:
23 +** Map representing all places that relate to archeologia
24 +** Map representing all the battles that took place in the 17th century
25 +** Map representing all monuments in a country
19 19  
20 -Search any location on the map by coordinates or name. A search icon will always appear on the map which on selection will display a search form through which a location will be searched and the map will move to that location.
27 +== Indoor map use case ==
21 21  
22 -==== Filtered List Maps ====
29 +As the organizer of a fair, I have a database of all fair exhibitors description and of their booth location. I want to represent this data on an interactive plan.
23 23  
24 -Allow the user to search for a specific kind of place (e.g. restaurants) and get a list of locations to choose from. Through the content available and binded to a location, the user will be able to learn some aspects of the location.
31 +Indoor maps will be able to describe the internal structure or fair plan of a building or structure. They can be used to guide users in a big building and locate point of interests. Users will be able to insert an image as background describing the structure of the building and then add custom shapes, markers atop the image and associate relevant popups with them. Support will be added so that multi level of buildings can be represented.
25 25  
26 -==== Custom Shapes on Map ====
33 +== Implementation ==
27 27  
35 +=== Data Model ===
36 +
37 +* Map: represents a map configuration. In particular it provides either directly or via distinct classes:
38 +** A way to define the target data that is used to render the map: it can be either all the geographical data that contained in the wiki, or just a part of it. It is important to agree on the best way to define this query. This could be either a database list, hence defined in HQL, or a Solr query. Solr could be more powerful to cover in particular the encyclopedia use case. To be discussed.
39 +** Map theme: visual configuration aspects: map background, marker icons, entity colors, ...
40 +* Point: a geographical point defined by its latitude and longitude (or just by abstract spatial coordinates in the case of indoor maps, to be discussed in the future)
41 +* Shape: a polygon, circle, etc.
42 +* Path: a segment linking two points
43 +* Content: this is the content to be displayed contextually when clicking on a map element. Typically in the case of an encyclopedia, the content could be each article itself, or the first paragraph of it, or any configurable block(s) (including images). This requires a dedicated discussion in order to let the behaviour be as generic as possible, without the need, if possible, to duplicate information just for map rendering (the content is interesting beyond the map representation, it would be cumbersome to have to twist the existing content for a specific representation).
44 +
45 +Once the logical data model will be defined, we will need to choose the most appropriate way to implement it as XWiki classes. In particular, there's the need to choose what query language will be used. We need also to choose if we represent the geographical entities as individual classes (one class for Point, one for Path, one for Shape, or we define a generic entity such "SpatialEntity" or "GeographicalEntity" than can either represent a point, a path, a shape. We need also to define how the content will be associated with each entity. It's important also to specify how the visual elements will be made configurable, possibly via a map theme.
46 +
47 +=== Sheet(s) ===
48 +
49 +Each geographical entity should be viewable and editable individually. For instance, I should be able add geographical information to an article related to a battle, and to view this information. In particular, the sheet allows to visualize and edit point markers, shapes, paths (a segment between two points), tracks (a set of paths), ... How the content itself will be made editable remains to be discussed and specified.
28 28  Custom shapes can be used to highlight a specific area for representation. The content associated with these shapes can give useful information about the area. For these kind of maps, the user will be able to draw a shape of his choice with the tools made available and optionally attach popups.
29 29  
30 -==== Indoor Maps ====
52 +=== Custom UI Widgets ===
31 31  
32 -Such maps will be able to describe the internal structure or fair plan of a building or structure. They can be used to guide users in a big building and locate point of interests. Users will be able to insert an image as background describing the structure of the building and then add custom shapes, markers atop the image and associate relevant popups with them. Support will be added so that multi level of buildings can be represented.
54 +==== Filter Widget ====
33 33  
56 +This widget is a user interface that lets the user refine the list of places he wants to display on the map. To start with it can be a plain text input. It can evolve into a more avanced widget that will expose data filters / facets.
57 +
58 +Example:
59 +* [[http://carte.preference-commerce.fr/cci-fr/]]
60 +
61 +==== Filtered List ====
62 +
63 +This widget allows the user to search for a specific kind of place (e.g. restaurants) and get a list of locations to choose from. Through the content available and binded to a location, the user will be able to learn some aspects of the location.
64 +
65 +==== Location Search Widget ====
66 +
67 +This widget allows to search any location on the map by coordinates or name. A search icon will always appear on the map which on selection will display a search form through which a location will be searched and the map will move to that location.
68 +
69 +=== Services ===
70 +
71 +==== Query Service ====
72 +
73 +The query service is a web service that returns dynamically the data to be represented on a map. It takes as input a query, and it returns a JSON file containing the data to be represented on the map. The content itself that is associated with each entity could be returned via subsequent ajax calls, so that the returned JSON remains small enough.
74 +
75 +==== Location Service ====
76 +
77 +The location service allows to convert an address to coordinates.
78 +
79 +==== Tile Service ====
80 +
81 +This service allows to convert a large image such as a high-resolution fair plan into tiles so that the plan can be represented as an interactive map.
82 +
83 +=== Other aspects ===
84 +
34 34  ==== Maps on Mobile ====
35 35  
36 36  Special design arrangements will be made for easy viewing of maps and availing all the features of the application on mobile devices.
37 37  
38 -==== Custom Map Backgrounds ====
89 +== Data samples ==
39 39  
40 -Custom backgrounds will make the environment of interactive maps much suitable for a specific purpose. For example, if real imagery of the world is required for pointing out a location, a satellite-based background can be chosen. Or if the infrastructure must be emphasized, background which better represent paths can be used in the map.
91 +In order to implement the use cases described above, at some point that will be useful to work with a significant amount of data. This paragraph is about gathering such data. This step can come later in the process, once the basic structure is implemented and a workable prototype is working with data entered manually.
41 41  
42 -=== Expected Results ===
93 +Several strategies:
43 43  
95 +* OpenStreetMap: choose a large city, download shapes, transports, paths related to that city
96 +* Wikidata: choose a large city, see what gelocalized data we can retrieve for that city: monuments, points of interests...
97 +* Use open data sources
98 +** Paris / Île-de-France
99 +*** [[https:~~/~~/opendata.paris.fr/>>https://opendata.paris.fr/]]
100 +*** [[https:~~/~~/opendata.stif.info/explore/>>https://opendata.stif.info/explore/]]
101 +*** [[https:~~/~~/data.ratp.fr/>>https://data.ratp.fr/]]
102 +
103 +
104 +== Mockups ==
105 +
44 44  {{velocity}}
45 45  #set ($attachments = $doc.attachmentList)
46 46  #if ($attachments.size() > 0)
... ... @@ -53,3 +53,5 @@
53 53   {{/gallery}}
54 54  #end
55 55  {{/velocity}}
118 +
119 +
ProposalCode.ProposalClass[0]
Issues
... ... @@ -1,0 +1,1 @@
1 +[[INTMAP>>https://jira.xwiki.org/projects/INTMAP]]
Mails
... ... @@ -1,2 +1,3 @@
1 -[dev list] Thread Markmail | https://markmail.org/message/i2tys3g5njqwmy43
2 -[dev list] Thread | http://lists.xwiki.org/pipermail/devs/2019-May/065202.html
1 +Discussion thread about the project on the XWiki devs mailing-list:
2 +* [[Markmail view>>https://markmail.org/message/i2tys3g5njqwmy43]]
3 +* [[Mailman Pipermail view>>http://lists.xwiki.org/pipermail/devs/2019-May/065202.html]]
Other URLs
... ... @@ -1,5 +1,3 @@
1 -Project | https://dev.xwiki.org/xwiki/bin/view/GoogleSummerOfCode/Map%20application
2 -Proposal | https://drive.google.com/open?id=14qXC7Oy2bPUASfVtSTIsNG1sPcfm5Ikr
3 -
4 -Code | https://github.com/xwiki-contrib/application-interactive-maps
5 -Issues | https://jira.xwiki.org/projects/INTMAP
1 +* [[Project initial proposal>>https://dev.xwiki.org/xwiki/bin/view/GoogleSummerOfCode/Map%20application]]
2 +* [[GSoC proposal>>https://drive.google.com/open?id=14qXC7Oy2bPUASfVtSTIsNG1sPcfm5Ikr]]
3 +* Code: [[xwiki-contrib:application-interactive-maps>>https://github.com/xwiki-contrib/application-interactive-maps]]

 Requirements
 Active
INTMAP
 

[dev list] Thread Markmail | https://markmail.org/message/i2tys3g5njqwmy43
[dev list] Thread | http://lists.xwiki.org/pipermail/devs/2019-May/065202.html

Discussion thread about the project on the XWiki devs mailing-list:

 

Project | https://dev.xwiki.org/xwiki/bin/view/GoogleSummerOfCode/Map%20application
Proposal | https://drive.google.com/open?id=14qXC7Oy2bPUASfVtSTIsNG1sPcfm5Ikr

Code | https://github.com/xwiki-contrib/application-interactive-maps
Issues | https://jira.xwiki.org/projects/INTMAP

Description

This project is about the development of interactive maps in XWiki. Creation of an application within XWiki that will allow users to generate interactive maps which support collaboration and are easy to create so that locations can be shared, and areas can be associated with structured data.

This project is about the development of interactive maps in XWiki. Its goal is to create an XWiki application that will allow users to easily generate interactive maps supporting collaboration so that locations can be shared, and areas can be associated with structured data. This application will open several possibilities that can be utilized within XWiki and broaden the overall scope by allowing rich wiki maps where locations and areas can be presented in a way that will increase the understandability of data.

This application will open several possibilities that can be utilized within XWiki and broaden the overall scope by allowing map rich wikis where locations and areas can be presented in a way that will increase the understandability of data.

Use cases

Town hall use case

As an employee of a town hall, I can create with my colleagues an interactive map displaying the main city points and areas of interest: museums, gardens, libraries, swimming pools, shops, transports, ... I can do by harnessing existing data that I have at I my disposal either already in a wiki, or that can I can import into one. For example, I have a database of all city monuments with their geographical coordinates, a geographical database of metro and bus lines, and some touristic paths across the city. I want to represent this data on a map in order to promote it and ease its usage.

I need to be able to configure the map visually: associate icons to specific elements (e.g. one icon for monuments), choose colors of paths and shapes, choose the available map background(s). For example, if real imagery of the world is required for pointing out a location, a satellite-based background can be chosen, or if the infrastructure must be emphasized, background which better represent paths can be used .

  • Step 1: I import the available data into a wiki.
  • Step 2: I enrich the data collaboratively via the wiki: I provide more detailed information about each monument, I add images, videos. I also edit individual points, paths or shapes in order to add missing geographical information or in order to refine the data or fix it.
  • Step 2: I create a map configuration that lets me represent this data interactively, define a visual theme, configure filters and the way contextual information can be retrieved and displayed.

Encyclopedia use case

This use case is functionaly very similar to the town hall use case, however it provides a slightly different perspective,. It highlights the facts that 1) the user will want to avoid twisting the data just for the purpose of representing it on a map: existing content will be simply enriched for map representation, 2) it may make sense to use Solr QL and Solr facets as the primary way to configure and filter map elements.

As the contributor to an existing encyclopedia, beside presenting content as articles with images and videos, I want to represent the existing content on a map. Among other things, my encyclopedia contains in particular pages related to places or events. I want to enrich the existing pages so that they can be represented on a map. For example, I want to represent all HLS places related to archeologia on a map.

  • Step 1: I enrich the existing pages so that they can be represented on a map. To do so, I can either launch a service that computes the geo coordinates / shapes from existing data, if any, or I can manually add geographical information to each relevant page. For instance, if a page relates to a battle, the key locations where the battle took place would be added.
  • Step 2: configure one or several maps for representing the enriched information. For instance:
    • Map representing all places that relate to archeologia
    • Map representing all the battles that took place in the 17th century
    • Map representing all monuments in a country

Indoor map use case

As the organizer of a fair, I have a database of all fair exhibitors description and of their booth location. I want to represent this data on an interactive plan.

Indoor maps will be able to describe the internal structure or fair plan of a building or structure. They can be used to guide users in a big building and locate point of interests. Users will be able to insert an image as background describing the structure of the building and then add custom shapes, markers atop the image and associate relevant popups with them. Support will be added so that multi level of buildings can be represented.

Implementation Details

Implementation

This application will target implementation of the following features.

Markers and Popups

Place markers anywhere on the map and associate popups with them. This will allow users to specify coordinates or select a specific location on the map to place the marker at and then associate a box of text with it.

Path Between Two Points

A path will be generated by the application linking two points of interest. With, this two points of interest can be linked through an available track.

Location Search

Search any location on the map by coordinates or name. A search icon will always appear on the map which on selection will display a search form through which a location will be searched and the map will move to that location.

Data Model

  • Map: represents a map configuration. In particular it provides either directly or via distinct classes:
    •  A way to define the target data that is used to render the map: it can be either all the geographical data that contained in the wiki, or just a part of it. It is important to agree on the best way to define this query. This could be either a database list, hence defined in HQL, or a Solr query. Solr could be more powerful to cover in particular the encyclopedia use case. To be discussed.
    • Map theme: visual configuration aspects: map background, marker icons, entity colors, ...
  • Point: a geographical point defined by its latitude and longitude (or just by abstract spatial coordinates in the case of indoor maps, to be discussed in the future)
  • Shape: a polygon, circle, etc.
  • Path: a segment linking two points
  • Content: this is the content to be displayed contextually when clicking on a map element. Typically in the case of an encyclopedia, the content could be each article itself, or the first paragraph of it, or any configurable block(s) (including images). This requires a dedicated discussion in order to let the behaviour be as generic as possible, without the need, if possible, to duplicate information just for map rendering (the content is interesting beyond the map representation, it would be cumbersome to have to twist the existing content for a specific representation).

Once the logical data model will be defined, we will need to choose the most appropriate way to implement it as XWiki classes. In particular, there's the need to choose what query language will be used. We need also to choose if we represent the geographical entities as individual classes (one class for Point, one for Path, one for Shape, or we define a generic entity such "SpatialEntity" or "GeographicalEntity" than can either represent a point, a path, a shape. We need also to define how the content will be associated with each entity. It's important also to specify how the visual elements will be made configurable, possibly via a map theme.

Sheet(s)

Each geographical entity should be viewable and editable individually.  For instance, I should be able add geographical information to an article related to a battle, and to view this information. In particular, the sheet allows to visualize and edit point markers, shapes, paths (a segment between two points), tracks (a set of paths), ... How the content itself will be made editable remains to be discussed and specified.
Custom shapes can be used to highlight a specific area for representation. The content associated with these shapes can give useful information about the area. For these kind of maps, the user will be able to draw a shape of his choice with the tools made available and optionally attach popups.

Custom UI Widgets

Filter Widget

This widget is a user interface that lets the user refine the list of places he wants to display on the map. To start with it can be a plain text input. It can evolve into a more avanced widget that will expose data filters / facets.

Example:

Filtered List Maps

Filtered List

Allow the user to search for a specific kind of place (e.g. restaurants) and get a list of locations to choose from. Through the content available and binded to a location, the user will be able to learn some aspects of the location.

This widget allows the user to search for a specific kind of place (e.g. restaurants) and get a list of locations to choose from. Through the content available and binded to a location, the user will be able to learn some aspects of the location.

Custom Shapes on Map

Custom shapes can be used to highlight a specific area for representation. The content associated with these shapes can give useful information about the area. For these kind of maps, the user will be able to draw a shape of his choice with the tools made available and optionally attach popups.

Indoor Maps

Such maps will be able to describe the internal structure or fair plan of a building or structure. They can be used to guide users in a big building and locate point of interests. Users will be able to insert an image as background describing the structure of the building and then add custom shapes, markers atop the image and associate relevant popups with them. Support will be added so that multi level of buildings can be represented.

Location Search Widget

This widget allows to search any location on the map by coordinates or name. A search icon will always appear on the map which on selection will display a search form through which a location will be searched and the map will move to that location.

Services

Query Service

The query service is a web service that returns dynamically the data to be represented on a map. It takes as input a query, and it returns a JSON file containing the data to be represented on the map. The content itself that is associated with each entity could be returned via subsequent ajax calls, so that the returned JSON remains small enough.

Location Service

The location service allows to convert an address to coordinates.

Tile Service

This service allows to convert a large image such as a high-resolution fair plan into tiles so that the plan can be represented as an interactive map.

Other aspects

Maps on Mobile

Special design arrangements will be made for easy viewing of maps and availing all the features of the application on mobile devices.

Custom Map Backgrounds

Custom backgrounds will make the environment of interactive maps much suitable for a specific purpose. For example, if real imagery of the world is required for pointing out a location, a satellite-based background can be chosen. Or if the infrastructure must be emphasized, background which better represent paths can be used in the map.

Expected Results

Data samples

In order to implement the use cases described above, at some point that will be useful to work with a significant amount of data. This paragraph is about gathering such data. This step can come later in the process, once the basic structure is implemented and a workable prototype is working with data entered manually.

Several strategies:

Mockups


 

Get Connected