You are here: Home Plone products PrimaGIS

PrimaGIS (0.5.1)

by Ihor Berehulyak last modified 2008-06-10
Released on 2006-02-17 by Kai Hänninen for Plone 2.0, Plone 2.1, Zope 2.7, Zope 2.8 under GPL - GNU General Public License available for All platforms.
Software development stage: development
PrimaGIS is a collaborative Web mapping application for Plone that is built on top of MapServer, Python Cartographic Library (PCL), and Cartographic Objects for Zope (ZCO). In addition to supporting traditional spatial data sources (e.g. shapefiles, PostGIS databases, raster images, and WMS/WFS services), it allows users to combine data from a content management system (Plone) within the maps.


PrimaGIS is a mapping solution meant primarily as a spatial extension for Archetypes based objects. The idea is to allow existing Archetypes based objects to be presented on predefined maps and allow users to easily access this spatial information in relation to the primary information of the objects. It is possible to have non-AT objects as data items also. PrimaGIS is not a standalone application, but builds on top of Mapserver, Python Cartographic Library (PCL) and Cartographic Objects for Zope (ZCO).

Setting up a PrimaGIS instance, including acquiring the initial spatial data and setting up the underlying ZCO hierarchy, requires some domain specific knowledge about Mapserver/ZCO, but afterwards using and updating the map and spatial data is done 100% through-the-web using the Plone interface and should require no special skills in addition to knowing normal Plone content administration.

Spatial extensions to new and existing Archetypes objects are added either  explicitly by implementing an interface (IGeoAware) or implicitly by using geo-aware proxy objects, in the latter case no changes are needed to existing objects and products. Each proxy object represent a location on a map and may refer to arbitrary number of Archetypes objects. In addition, an Archetype object may have spatial references to arbitrary number of maps and locations, when using the proxy approach.

Usage model

System administrators

System administrators are responsible for setting up the initial cartographic data, which may be in any format usable by the Mapserver, (e.g. ShapeFile, raster images, WMS layers, etc.). In addition, the ZCO hierarchy must be initialized through ZMI and all the layers, styles and symbolizers have to be configured. System administrators are required to have some knowledge about ZCO and Mapserver.

Site administrators

Site administrators, meaning anyone with write permission in the site, may add spatial extensions to available Archetypes objects by creating proxy objects for them. The administrator doesn't need to know any technical details about the underlying map and proxy objects can be added by simple clicking on the desired location on a map and selecting the AT objects that are represented by the location.


Developers using Archetypes (or not) may make their objects natively geo-aware by implementing the IGeoAware interface. There is also a mixin class and schema for AT developers to easily make their objects natively geo-aware. If the type of object you're developing doesn't have a natural spatial dimension (such as reports, graphs, video clips) then opting for the proxy approach may suit you better.

Site visitors

Site visitors most likely find their way to the map with the help of the context-sensitive portlet. When a visitor views a page that has spatial representation on a map (there may be multiple maps and/or multiple locations) the portlet activates and informs the visitor about the available maps and provides links to them. Clicking on the link takes the visitor to the map and centers it around the object in question.

Features in version 0.5.1

Document Actions
  • Geo-aware proxy objects for spatially enabling any ArcheTypes based content object, that allows them to be used as data for the map without need for modify the original objects.
  • IGeoAware interface for making custom objects work as spatial data for PrimaGIS maps.
  • AJAX style background communication  for efficient map rendering. All AJAX (and DOM) operations are done using the excellent MochiKit library.
  • Info-on-map using JavaScript popups with the overlib-library. Moving on location on the map will popup a small window showing information for the referred object(s).
  • Extension classes for ArcheTypes developers for creating natively geo-aware objects usable as-is with PrimaGIS. See the Making existing AT objects IGeoAWare article for a simple example or take a look at the GeoAwareObjects product.
  • Zooming, drag panning, previous view, session-based default view.
  • Named views for creating easy access to points of interest on the maps. The views (PrimaGISView objects) also implement the IGeoAware interface, so you can just put them in a PrimaGISDataLayer to visualize them on the map in addition to using them for navigation. This is demonstrated in the demo map's "Areas of interest" layer.
  • Export of PrimaGISDataLayers to Geography Markup Language (GML). See for a GML dump of the "European capitals" layer for an example. Using a tool, such as ogr2ogr, you can easily convert the GML file to other vector formats, e.g. shapefile.
  • Export of PrimaGISDataLayers to Keyhole Markup Language (KML) for use with Google Earth. You can try out the feature by adding a new Network Link to your Google Earth client using as the URL.
  • Works with both Plone 2.0 and 2.1 series and Zope 2.7 and 2.8 series. Tested with Zope 2.7.8/Plone 2.0.5 and Zope 2.8.4/Plone 2.1.1.
Document Actions
Powered by Plone