Changes between Version 8 and Version 9 of WKTRaster/SeamlessArchitecture


Ignore:
Timestamp:
Jul 18, 2011, 2:04:51 PM (13 years ago)
Author:
bnordgren
Comment:

Legend:

Unmodified
Added
Removed
Modified
  • WKTRaster/SeamlessArchitecture

    v8 v9  
    6565Coverages add value over a simple collection of geometry-value pairs. They ensure that the collection of geometry-value pairs has a consistent value (e.g., values in the coverage have the same "type" everywhere). Three methods (`find`, `select`, and `list`) are shown on the Coverage type itself. Another method, an important method, is not shown on this diagram: `evaluate`.
    6666
    67 {|
    68 | '''Method'''
    69 | '''Description'''
    70 |-
    71 | `evaluate`
    72 | returns a set of values for a given point.
    73 |-
    74 | `select`
    75 | returns all the geometry-value pairs which "lie within" the provided geometry
    76 |-
    77 | `find`
    78 | returns a list of geometry-value pairs, in order of distance from the provided point
    79 |-
    80 | `list`
    81 | returns a list of all the constituent geometry-value pairs which make up the coverage
    82 |-
    83 | `evaluateInverse`
    84 | returns a set of locations which match a particular set of values
    85 |}
     67||'''Method'''||'''Description'''||
     68||`evaluate`  || returns a set of values for a given point. ||
     69||`select`    || returns all the geometry-value pairs which "lie within" the provided geometry ||
     70||`find`      || returns a list of geometry-value pairs, in order of distance from the provided point ||
     71||`list`      || returns a list of all the constituent geometry-value pairs which make up the coverage
     72||`evaluateInverse` || returns a set of locations which match a particular set of values ||
    8673
    8774These methods are the same for all coverages, regardless of type. The two main children of a `CV_Coverage` create a distinction between ''discrete coverages'', which are simple aggregations of individual geometry-value pairs; and ''continuous coverages'', which are capable of interpolating between geometry-value pairs. Both types of coverages are defined by geometry-value pairs.
     
    119106The following table lists the potential combinations of inputs and output for two-input spatial operations. Implementations of spatial operations may declare that they support one or more rows from this table.
    120107
    121 {|
    122 | '''Combination'''
    123 | '''Input 1'''
    124 | '''Input 2'''
    125 | '''Returns'''
    126 |-
    127 | 1
    128 | Pure Spatial
    129 | Pure Spatial
    130 | Pure Spatial
    131 |-
    132 | 2
    133 | Pure Spatial
    134 | Spatial Value
    135 | Pure Spatial
    136 |-
    137 | 3
    138 | Spatial Value
    139 | Pure Spatial
    140 | Pure Spatial
    141 |-
    142 | 4
    143 | Spatial Value
    144 | Spatial Value
    145 | Pure Spatial
    146 |-
    147 | 5
    148 | Pure Spatial
    149 | Pure Spatial
    150 | Spatial Value
    151 |-
    152 | 6
    153 | Pure Spatial
    154 | Spatial Value
    155 | Spatial Value
    156 |-
    157 | 7
    158 | Spatial Value
    159 | Pure Spatial
    160 | Spatial Value
    161 |-
    162 | 8
    163 | Spatial Value
    164 | Spatial Value
    165 | Spatial Value
    166 |}
     108||'''Combination'''|| '''Input 1'''|| '''Input 2'''|| '''Returns''' ||
     109|| 1 || Pure Spatial || Pure Spatial || Pure Spatial ||
     110|| 2 || Pure Spatial || Spatial Value || Pure Spatial ||
     111|| 3 || Spatial Value || Pure Spatial || Pure Spatial ||
     112|| 4 || Spatial Value || Spatial Value || Pure Spatial ||
     113|| 5 || Pure Spatial  || Pure Spatial  || Spatial Value ||
     114|| 6 || Pure Spatial  || Spatial Value || Spatial Value ||
     115|| 7 || Spatial Value || Pure Spatial  || Spatial Value ||
     116|| 8 || Spatial Value || Spatial Value || Spatial Value ||
     117
    167118
    168119A "Pure Spatial" information type may be represented by either a geometry or by a mask (a special case of the raster data type). The Spatial Value information type may be represented by either a non-mask raster, or by a datatype which implements the `CV_GeometryValuePair` from ISO 19123. The following table describes the mapping between information types and data types.
    169120
    170 {|
    171 |
    172 | '''Pure Spatial'''
    173 | '''Spatial Value'''
    174 |-
    175 | '''Vector'''
    176 | `CV_DomainObject` or `GM_Object`
    177 | `CV_GeometryValuePair`
    178 |-
    179 | '''Raster'''
    180 | `CV_Grid` (mask)
    181 | `CV_Grid` (values)
    182 |}
     121
     122||                 || '''Pure Spatial'''               || '''Spatial Value''' ||
     123|| '''Vector'''    || `CV_DomainObject` or `GM_Object` || `CV_GeometryValuePair` ||
     124|| '''Raster'''    || `CV_Grid` (mask)                 || `CV_Grid` (values) ||
    183125
    184126Note that the same data type (an implementation of `CV_Grid` from ISO 19123) is capable of communicating both Pure Spatial and Spatial Value information for "Raster" data. The difference is in the values of the grid cells, not in the type of the data. This reduces the number of required data types from four to three. `CV_Grid` will be referred to as raster, `GM_Object` will be referred to as "geometry", and `CV_GeometryValuePair` will be referred to as "geomval".
     
    188130'''Example 1:''' Consider the ''intersection'' operation: returning common area between two inputs. The vector support in GIS systems is typically one eighth of the row which specifies that two Pure Spatial inputs result in a Pure Spatial output (combination 1). Typical GIS systems implement one eighth of this row due to the fact that they typically operate only on (and only return) geometry objects. A system implementing seamless vector and raster operations would also provide a means to return a mask, which is a special type of raster. Therefore, in terms of data types, this one line would become the following table. Note that because we are expanding the "Purely Spatial" line in the information type table, all of the rasters are actually masks: they lack value information. Observe also that adding the ability to return as well as accept spatial information using either representation adds support for the last seven lines of the data type table.
    189131
    190 {|
    191 | '''Input 1'''
    192 | '''Input 2'''
    193 | '''Returns'''
    194 |-
    195 | geometry
    196 | geometry
    197 | geometry
    198 |-
    199 | geometry
    200 | raster
    201 | geometry
    202 |-
    203 | raster
    204 | geometry
    205 | geometry
    206 |-
    207 | raster
    208 | raster
    209 | geometry
    210 |-
    211 | geometry
    212 | geometry
    213 | raster
    214 |-
    215 | geometry
    216 | raster
    217 | raster
    218 |-
    219 | raster
    220 | geometry
    221 | raster
    222 |-
    223 | raster
    224 | raster
    225 | raster
    226 |}
     132|| '''Input 1''' || '''Input 2''' || '''Returns''' ||
     133|| geometry      || geometry      || geometry ||
     134|| geometry      || raster        || geometry ||
     135|| raster        || geometry      || geometry ||
     136|| raster        || raster        || geometry ||
     137|| geometry      || geometry      || raster   ||
     138|| geometry      || raster        || raster   ||
     139|| raster        || geometry      || raster   ||
     140|| raster        || raster        || raster   ||
    227141
    228142</blockquote><blockquote>
     
    230144'''Example 2:''' Consider an intersection operation returning values from one of the inputs in the common area. This is sometimes known as a "clip" operation. In typical GIS systems, this is usually implemented as an operation which accepts a raster and a vector, returning a raster. In a seamless raster/vector system, the same operation is defined in terms of information type. To be as similar as possible to the traditional GIS implementation would require that the seamless operation support only lines with one Purely Spatial input and one Spatial Value input, returning a Spatial Value result (combinations 6 and 7). To be fully seamless, all variants of the operation listed in the data type table should be implemented. There may be a justification for intentionally supporting a less than fully seamless operation. In this case, implementers may decide to support only those variants which return a raster, as the expected result of a "clip" operation is a grid which only contains values over the spatial intersection of two objects. Alternatively, the same operation having a different return type (or taking different arguments) may be known by different names. These aspects must be considered individually for each operation as they are defined.
    231145
    232 {|
    233 | '''Input 1'''
    234 | '''Input 2'''
    235 | '''Returns'''
    236 | '''Comment'''
    237 |-
    238 | geometry
    239 | raster
    240 | raster
    241 | input 2 must contain values
    242 |-
    243 | raster
    244 | geometry
    245 | raster
    246 | input 1 must contain values
    247 |-
    248 | raster
    249 | raster
    250 | raster
    251 | one input must contain values and the other must not
    252 |-
    253 | geomval
    254 | raster
    255 | raster
    256 | input 2 must be a mask
    257 |-
    258 | raster
    259 | geomval
    260 | raster
    261 | input 1 must be a mask
    262 |-
    263 | geometry
    264 | geomval
    265 | raster
    266 |
    267 |-
    268 | geomval
    269 | geometry
    270 | raster
    271 |
    272 |-
    273 | geometry
    274 | raster
    275 | geomval
    276 | input 2 must contain values
    277 |-
    278 | raster
    279 | geometry
    280 | geomval
    281 | input 1 must contain values
    282 |-
    283 | raster
    284 | raster
    285 | geomval
    286 | one input must contain values and the other must not
    287 |-
    288 | geomval
    289 | raster
    290 | geomval
    291 | input 2 must be a mask
    292 |-
    293 | raster
    294 | geomval
    295 | geomval
    296 | input 1 must be a mask
    297 |-
    298 | geometry
    299 | geomval
    300 | geomval
    301 |
    302 |-
    303 | geomval
    304 | geometry
    305 | geomval
    306 |
    307 |}
     146|| '''Input 1''' || '''Input 2''' || '''Returns''' || '''Comment''' ||
     147|| geometry      || raster        || raster        || input 2 must contain values ||
     148|| raster        || geometry      || raster        || input 1 must contain values ||
     149|| raster        || raster        || raster        || one input must contain values and the other must not ||
     150|| geomval       || raster        || raster        || input 2 must be a mask ||
     151|| raster        || geomval       || raster        || input 1 must be a mask ||
     152|| geometry      || geomval       || raster        ||  ||
     153|| geomval       || geometry      || raster        ||  ||
     154|| geometry      || raster        || geomval       || input 2 must contain values ||
     155|| raster        || geometry      || geomval       || input 1 must contain values ||
     156|| raster        || raster        || geomval       || one input must contain values and the other must not ||
     157|| geomval       || raster        || geomval       || input 2 must be a mask ||
     158|| raster        || geomval       || geomval       || input 1 must be a mask ||
     159|| geometry      || geomval       || geomval       ||  ||
     160|| geomval       || geometry      || geomval       ||  ||
    308161
    309162</blockquote>