My geologist colleagues are asking for a self-hosted website with the following features:

  • A map with points for them to create and attach measurements to. Points should be grouped/filtered by expedition and kind of measurement. Clicking on a point on the map should result in a pop-up containing the measurements for the point.
  • A tabular interface to edit existing points or measurements and enter new points or measurements. Placing points on the map by pointing an clicking is not at all important; the coordinates are expected to be copied & pasted from a lab journal together with the measurement results.
  • Wiki-style editable pages with file attachments for each expedition.

The number of expeditions is less than 10 per year; the number of points in an expedition is up to a few 100s; the number of kinds of measurements is up to a few 10s. The dataset is expected to be sparse: not all kinds of measurements are performed on all samples, and most expeditions sample at different coordinates.

Semantic MediaWiki with the Maps extension almost does what we need, except I don't know how to fulfil the second requirement. As far as I understand Semantic MediaWiki, it's possible to construct very elaborate queries and place their results on the map with pop-ups subject to a template I could create, but I'd have to create a wiki page per sampling point, because I can't set multiple properties of the same type in a page.

Any other MediaWiki extensions I'm overlooking? Any other way I could achieve the desired result?

This feels deceptively simple enough that one could probably code an approximation of the desired feature set by themselves, but safely accepting user-generated content (especially pages and file attachments) could be annoying to get right.

1 Answer 1


In the end, we went with Semantic MediaWiki + Maps + Semantic Forms + Semantic Scribunto, creating one wiki page per sampling point.

The expedition pages are all generated from a template, making it easy to list the existing sampling points with {{Special:PrefixIndex/{{FULLPAGENAME}}/ |hideredirects=1 |stripprefix=1}} and create a new sampling point with {{#forminput:form=SamplingPoint|super_page={{FULLPAGENAME}}}}, and the sampling point pages make use of Semantic Forms to allow editing all kinds of measurements using [[Special:FormEdit/SamplingPoint/{{FULLPAGENAME}}|Edit measurements for this sampling point]].

The worst part was having to write a Lua module in Semantic Scribunto to (1) query for all kinds of measurements, (2) group them by sampling point (have I missed a GROUP BY in Semantic MediaWiki?) and (3) generate wiki markup to display a map of those. Basically, it's

 local sampling_points = mw.smw.getQueryResult(...)
 return frame:preprocess('<display_map service="leaflet" height="...">\n' ..
  table.concat(map(sampling_points, format_sampling_point), '\n') ..

combined with format_sampling_point generating the Location~Popup title~Popup text~File:CustomIcon markup for the Maps extension to render. The Popup text includes some <table>s to summarise the information. It's almost surprising that it still works.

A custom web application is still in the early stage of development and may be not completed at all, so the 80/20 rule wins again.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.