Version 102 (modified by Fran Boon, 13 years ago) ( diff )



Haiti GIS

bitner, gavin_t, flavour & tcarobruce coordinating in #sahana-gis

dokotreas & runneals joined the team



The focus should be on concepts & Helpfile tweaks rather than detailed UI paths, as the UI is not final.

Map-based Lat/Lon Data entry

  • Provide a function to allow selecting a location on a map to populate
    • Points: Lat/Lon fields
    • Polygons: WKT

Fix the map-based gis_location.represent

Currently this is commented out in models/

Want to separate out HTML representation .represent's from Export ones (i.e. all the rest).

  • Plan for this in-progress

Location Entry

  • Record source and associated error (related so posted under a single trac ticket #158
    • Ability to record Location Data Source for all locations (GPS, Imagery Analysis, etc.)
    • Ability to record location estimated accuracy (meters)
  • GPS Conversion Tool
    • Accessible from /gis/location/create
    • Should support negative degrees!
    • Ideally should allow setting of N/S & E/W instead of having to remember the +/-


  • Separate out the Internal Features from External Features in LayerSwitcher (GeoExt skills)
    • views/gis/map_viewing_client.html +68
  • Be able to Group layers in layer Tree into Folders
  • Provide Ext sliders to control cluster_distance & cluster_threshold interactively
  • Add numZoomLevels=22 (or some higher number than the default 16 so can zoom in on high res imagery better

Admin UI

  • Provide admin UI for feature_to_feature_group, feature_class_to_feature_group, etc
    • controllers/ & views/gis/...
    • Features are stored in the table gis_location
    • Feature Classes are types of Feature & determine their Marker (Icon): gis_feature_class
    • Feature Groups are collections of Features & Feature Groups & determine whether they appear as a separate layer on the Map to be enabled/disabled: gis_feature_group
    • There are Many-to-Many tables linking these together (defined in models/
    • There are basic Controller functions for editing these resources, however they aren't fully-exposed to users (need to type URL manually)
    • We want nice User interface for these & menus (menus for GIS need some wider cleanup work anyway)
    • 'mapping' table for feature classes - mapping web markers
  • Allow to reorder layers and select which base layer to start with
  • Explanatory text with the Views


  • GeoRSS Export
    • Polygon support (currently uses Centroid)

  • GPX Export
    • classify types when exported to Garmin icons (e.g. hms_hospital->Medical Facility, or_office->Building) See ref1,ref2. Note, recommended to use <sym>text</sym to identify and not number. Enhancement tickets to better support this 159, 160
    • stick some extra info into <desc> - as auto GPS units what support bluetooth phones can recognise phone numbers and allow hands free calling
    • bounds information - e.g. lat/lon min/max to go in the metadata. this improves display of GPX when opened in the like of GE and other apps. not required, but does improve display
    • Polygon support (currently uses Centroid)
  • Import
    • GPX
      • Bulk Uploader needs finishing
      • Possibly add a feature that recognizes symbols for waypoints
    • GeoRSS
    • KML
  • Provide a DB field for OSM ID, and provide a link in KML fields to set/update this ID:
    <crschmidt> Is there a way we can add a 'entered into osm' field in sahana that OSMers can edit as they add things to their map?
    <nursix> I think that should go into the location table, not into the hospital table
    <nursix> I can then export
    <nursix> And put into the KML feed

Code Cleanup

  • Move GIS functions to a new modules/
  • DRY the gis_config parsing in controllers/ (currently in 3 different places!)
    • pass a single s3.gis var through to views

Hierarchical Trees

We currently use a simple Adjacency List model for gis_location (i.e. a single 'parent' field).

This is fast for writes, but slow for reads, which is not the ideal optimisation for our use case.

We should move to one of these models:

See the gis_location model in models/

See get_children() & update_location_tree() in modules/



Add a custom validator to modules/ (or new modules/

  • This should support the ability to select a gis_location as an admin area (i.e. we don't know the exact location, but we know the town or district)
  • This should be an AJAX auto-complete.
  • Once chosen, then the 'parent' will be set to this location
  • It should also support the ability to enter a precise Lat/Lon (or Polygon), in which case a function in the new modules/ would calculate which admin area to set as the Parent automatically.
  • It should also populate the 4 hidden (readable=writable=False) bounding box fields used to speed up spatial queries


  • Features Layers
    • Replace the custom function with accessing the internal KML feeds as then we get the ability to add useful info to popups via XSLT for both internal & external use
  • Unzip KMZ layers

  • Cluster Strategy




  • Bug: Control is being activated when clicking on KML/GeoRSS popups!
  • Beyond Haiti: Only activate control if bounds correct (-80 < Lat < 80?)
  • A toolbar icon would be nice (Grid?)
  • Move from Layers to a new 'Controls' section

Load GIS data

tcarobruce working on this with jonathank & mettadore - I have posted files here with data information



  • admin_area_for_latlng
    • filter by bbox (once implemented)
    • then use shapely to do Point-in-Polygon on remaining geometries
  • merge wkt parse code into modules/
  • simplify polygon if too big for wkt field (or throw exception, to start)
    • code in modules/
  • don't display all admin area feature groups (> 700)
    • enabled = False

Administrative Areas

Other Data To Load

Longer Term Improvements

  • use a spatial db like PostGIS
  • bulk loading via web interface
  • use location's admin_id to give users (presumably local experts) administrative control over locations in a particular geographic area


Note: See TracWiki for help on using the wiki.