wiki:BluePrintGISFeatureLayers

Version 43 (modified by Fran Boon, 14 years ago) ( diff )

Client-side filtering of Layers

Feature Layers

  • A 'Feature' is a Resource Record which has a Lat/Lon available.
  • Features can be Points, Lines or Polygons
  • Features can be added to the Map
    • A Feature Layer is a collection of Features for displaying on the Map or for exporting as a feed
      • Resource
      • Filtered
        • Resource.Category (Report/Incident table, Missing Persons, L0->L3 in gis_location table)
      • Collection of Resources <- is this required?
        • feature_layer can have a query on new gis_landmark table which pulls in categories Port/Airport/Railway
  • Features can be removed from the map or moved on the map interactively.
    • To do this via a single set of Controls means having a single Vector Layer (or having to manually select the active layer!).
      • Build up this Vector Layer from multiple Feature Layers
      • In order to be able to dynamically enable/disable individual Feature Layers whilst viewing the map, we need to write a custom layer switcher which refreshes the whole Features Layer client-side upon changes.
  • Feature Layers can be filtered interactively without a server-side call to rebuild the map.
    • Need the original Feature_Layer to contain the attribute which we want to be able to filter on. Can then use our custom layer Switcher to apply the Filter.
  • User can define which layers should be selectable/enabled-by-default in the Situation Mapping layer switcher.
    • This list is personalisable.
      • move from layer definitions to gis_config
        • Have 1->M for Feature_Layers for available.
        • Attribute of visible stored in a separate multiple field.
          • Combine with special widget?
  • Features can be exported in KML/GeoRSS/GPX/etc
    • Need to update S3XRC for GPS symbol detection when FeatureClass allocation changes
    • Need to update gis.get_marker() when FeatureClass allocation changes

Markers

A Marker is an image used to represent a Feature on the map.

The Marker used will be:

  1. Cluster marker if multiple markers close together
    • styled by size & include the # inside (when >2)
    • prevents performance issues as well as making things clearer
  2. The Feature marker (if defined)
    • Q: Is this required?
      • Removing it will make for a more consistent User Interface as the symbology can be trusted
      • Removing it will speed things up the operation of gis.get_marker()
    • Q: If kept, should we provide an option to allow the FeatureClass icon to over-ride individual Feature Icons?
  3. The FeatureClass marker (if defined)
    • Styling based on values of an attribute of the resource
      • add new gis.thematic_map table
        • fields
          • value_low
          • value_high
          • marker_id
      • add field, thematic_map_id (multiple=True) to the gis.feature_class table
      • Q: This is for display in specialist report views only? (not main Situation Mapping)
      • Q: Is variable markers sufficient? Would size/colour of basic vectors be better?
      • once we have core functionality, want UI to be able to choose the attribute, the values & the markers
  4. The Default marker

Markers BluePrint

Popups

Clicking a Feature should bring up a Popup

  • This can be a URL to load (flexible, but slow)
    • define the URL in FeatureClass? FeatureGroup?
    • Future: allow inserting a per-feature popup_url into the query before passing into API, e.g.
      features_query = db(query).select()
      for feature in features_query:
         feature.popup_url = URL(r=request, c="vol", f="vol") + "%(location_id)s"
      
      • Support string substitution like %(location_id)s
        • the onFeatureSelect control is per-layer not per-feature & so feature-specific aspects need to be evaluated client-side in Javascript.
  • If not provided, the default is:
    • Loaded into the map during main load: no server-side calls
    • Header should be found from a set of common options (name/code)
      • How to do this with JOINed queries?
    • All the list_fields with their labels
    • A link to open the record in a new tab

Clicking a Cluster should bring up a Popup

  • a list of the features within the cluster
    • each list item is hyperlinked to bring up the Feature's Popup (as well?)

Q: Provide option to add Labels to Features?

Implementation

Option A (preferred)

Hardcode the link between FeatureClass & Resource (with optional category, e.g. for 'Report/Incident' table)

  • Add optional category_field/category_value columns to the feature_class table
  • If wanting feature-specific markers then add marker_id to resource tables (by bundling with location_id)
  • Replace feature_group table with feature_layer table
    • fields:
      • name
      • resource (used to populate the query field via an 'onvalidation')
      • filter_field (optional. used to populate the query field via an 'onvalidation')
      • filter_value (optional. used to populate the query field via an 'onvalidation')
      • query (hidden behind 'Advanced' button?)
      • marker_id (optional: over-ride all markers for this query)
      • comments

Option B

FeatureClass is an attribute of the link table

  • location_id extended to include feature_class_id (& marker_id) fields
  • => a Feature Group cannot be a collection of Feature Classes since we can't trawl through all resources to see if any of them have been tagged for this FC

Storage

BluePrintGISStorage

Docs

Examples

Limitations


GIS BluePrints

Note: See TracWiki for help on using the wiki.