|Version 10 (modified by ahocevar, 5 years ago)|
Styling maps is important because, through color and spatial relationships, we can effectively communicate patterns in complex geographic information. How we group and symbolize features allows us to draw out themes and better express our ideas. While Styler has often been conceived of as its own application, a more accurate way of thinking about it is as a set of components and design patterns used throughout OpenGeo's GeoExt viewers—most notably GeoMixer and the GeoServer Configuration tool. What Styler aims to do is make it easier for anyone to build and edit maps through the web using the SLD specification. Below is a design proposal for Styler informed by OpenGeo's draft GeoExt Interaction Guidelines as well as precedents from ESRI, GeoCommons, and MapFish.
Limit by scale
First, an aside. If we accept that web maps—with their multiple zoom levels—are not the same as print maps then it follows that an app built for styling web maps should not blindly follow conventions set forth in apps designed for styling print maps. ESRI, for example, expects that scale constraints should be set at on a layer-by-layer basis, with some displayed at certain zoom levels and others not. The SLD specification, on the other hand, expects scale constraints to be set on a per style basis—that is, that each layer has various styles corresponding to various zoom levels. In working with Ivan on the new OpenGeo basemap, I found myself often wanting to be able to set scale constraints on particular symbolizers (usually labels) within the same style. What are the implications of this?
Pros: hews to conventions in ArcMap (with their assumptions for print maps)
Cons: results in multiple layers per data set, multiple layers for a single legend; gets especially confusing when dealing with classifications by category or quantity Precedents: ArcGIS
Pros: hews to expectations set forth by SLD specification (with their assumptions for web maps)
Cons: results in multiple style rules per layer, multiple legends for a single layer; gets especially confusing when dealing with classifications by category or quantity Precedents: CloudMade
Pros: all symbolizers can be summarized in one style rule
Cons: violates expectations set forth in the SLD specification
One possible direction would be to allow scale constraints to be set on all of the above, with layer constraints limiting the possible range of style constraints, and style constraints in turn limiting the possible range of symbolizer constraints.
Attempting to add a new layer opens the "Add data" dialog, which shows the name, title, and namespace for a given data set but can be expanded (like in this Ext Grid plugin) to include an abstract, previews, and links to output formats (see precedent: GeoCommons Finder!). Clicking the "Add server" buttons just opens a dialog—or, better yet, swaps out that row—with a field for a server name and a field for the getcapabilities URL and then an "Add" or "Save" button. It then swaps back to the dropdown view with the new server selected and its available data sets displayed below. If adding only one data set the "Layer properties" dialog could be opened when the "Add data" dialog is closed.
Once a data set has been added to a map as a layer its properties can be changed and styles applied from the layer's properties dialog. The General tab contains the layer's metadata and (optionally) scale constraints (see precedent: ArcGIS Layer Properties 0). The Source tab exposes the location of the GetCapabilities document, the SRS information, the extent of the data set, etc (see precedent: ArcGIS Layer Properties 1). The "SLD" fieldset in the Styles tab switches between multiple SLDs, exposes the SLD source for editing, and sets the active/default SLD. Although not shown in the wireframe below, the SLD grid could also include a column for the date on which each SLD was most recently modified.
Marker symbolizer: TBD, but should incorporate the Image Manager for choosing marker graphics.
Label symbolizer: The first step is to be able to choose font, font size, font weight, and font color. And then past that to do the standard placement stuff (Anchor Point, Displacement, Rotation) (see: label symbolizer wireframe), and our vendor specific parameters (grouping, follow line, max angle delta, space around, prioritization, etc). See precedents: ArcGIS Layer Properties 7 & 8.
Meta ticket for this task: #39
Editing symbolizers for multiple style rules simultaneously
Style features as categories
Styling features by unique values of an attribute is a common use case when creating maps that include roads, streams, and parks. There are many precedents in ArcGIS with parameters defined by their UniqueValueRenderer. Displaying values and labels together in a grid of categories as ArcGIS does is preferable to the plain list shown in the wireframes below.
Categories by unique values
This wireframe shows how categories could be styled based on unique values of a single attribute. The "General" fieldset defines the label that appears in the legend, the color ramp to be used by default (see precedent: ArcGIS Categories 3), and the attribute from which to select categories.
Multiple unique values of an attribute can be merged together by selecting them and merging them with a context menu option (see precedent: ArcGIS Categories 4, 5, and 6) or by specifying multiple values as a comma separated list in the restricted filter builder. Note that the attribute cannot be changed from the style's filter builder and the "Limit by conditions" toggle should be disabled since it is part of a larger conditional rule group.
Categories by unique values of many fields
Categories can be pulled from multiple attributes by defining additional attributes in the "General" fieldset of the category rule group (see precedent: ArcGIS Categories 2). As above, each category's parameters can be adjusted in the style's restricted filter builder.
Style features as quantities
Styling features into intervals of an attribute is a common use case when creating maps designed to show thematic elements like population, access to health care, or pollution levels. There are many precedents in ArcGIS with parameters defined by their ClassBreaksRenderer. Displaying values and labels together in a grid of categories as ArcGIS does is preferable to the plain list shown in the wireframes below. (See also: MapFish GeoStat demo)
This wireframe shows how quantities could be styled into intervals of a single attribute. The "General" fieldset defines the label that appears in the legend, the color ramp to be used by default (see precedent: ArcGIS Quantities 1), the attribute from which to select categories (see precedents: GeoCommons Maker! Layers Palette & ArcGIS Quantities 0), and methods for classifying the data (see precedent: ArcGIS Quantities 2). The style dialog on the right allows the intervals to be adjusted. Note that, as with categories, the attribute cannot be changed from the style's filter builder and the "Limit by conditions" toggle is disabled since the rule is part of a larger rule group.
Graduated symbols TBD
Proportional symbols TBD (See: MapFish GeoStat demo)
Used primarily for picking graphics on marker symbolizers, the image manager allows the user to choose an image set from a server and then select or preview potential graphics. (See precedents: Ext Advanced DataView & Google My Maps)
- Web Help for ArcGIS Desktop 9.2
- ArcExplorer Java Edition User's Manual [PDF]
- Polygon Symbolizer - demonstrating inheritance
- Label Symbolizer
- Feature Inspector - a draft of minor improvements to the current (beta) feature inspector
- Layer Pane - displaying multiple layers
- Layer Pane - same as above, with context menu
- Layer Pane - with selectable base map
- Rule Group Inspector - a sketch of how rule groups could be created and managed
- Popup Draft - first stab
- Fill panel Draft - different direction, first stab didn't pan out
- Early Workflow Drafts: 1, 2, 3, 4
- Workflow Draft 5 - expanded on layer details
- Workflow Draft 6 - improved symbology palette
- Wokflow Draft 7 - improved load/save; added 'else' filter; clarified all features / else style editing
- SLD Load & Save - Added to the Styles tab of the Layer detail dialog