| 276 | /************************************************************************/ |
| 277 | |
| 278 | void msWCSSetDefaultBandsRangeSetInfo( wcsParamsObj *params, |
| 279 | coverageMetadataObj *cm, |
| 280 | layerObj *lp ) |
| 281 | { |
| 282 | |
| 283 | /* This function will provide default rangeset information for the "special" */ |
| 284 | /* "bands" rangeset if it appears in the axes list but has no specifics provided */ |
| 285 | /* in the metadata. */ |
| 286 | |
| 287 | const char *value; |
| 288 | char *bandlist; |
| 289 | size_t bufferSize = 0; |
| 290 | int i; |
| 291 | |
| 292 | /* Does this item exist in the axes list? */ |
| 293 | |
| 294 | value = msOWSLookupMetadata(&(lp->metadata), "CO", "rangeset_axes"); |
| 295 | if( value == NULL ) |
| 296 | return; |
| 297 | |
| 298 | value = strstr(value,"bands"); |
| 299 | if( value == NULL || (value[5] != '\0' && value[5] != ' ') ) |
| 300 | return; |
| 301 | |
| 302 | /* Are there any w*s_bands_ metadata already? If so, skip out. */ |
| 303 | if( msOWSLookupMetadata(&(lp->metadata), "CO", "bands_description") != NULL |
| 304 | || msOWSLookupMetadata(&(lp->metadata), "CO", "bands_name") != NULL |
| 305 | || msOWSLookupMetadata(&(lp->metadata), "CO", "bands_label") != NULL |
| 306 | || msOWSLookupMetadata(&(lp->metadata), "CO", "bands_values") != NULL |
| 307 | || msOWSLookupMetadata(&(lp->metadata), "CO", "bands_values_semantic") != NULL |
| 308 | || msOWSLookupMetadata(&(lp->metadata), "CO", "bands_values_type") != NULL |
| 309 | || msOWSLookupMetadata(&(lp->metadata), "CO", "bands_rangeitem") != NULL |
| 310 | || msOWSLookupMetadata(&(lp->metadata), "CO", "bands_semantic") != NULL |
| 311 | || msOWSLookupMetadata(&(lp->metadata), "CO", "bands_refsys") != NULL |
| 312 | || msOWSLookupMetadata(&(lp->metadata), "CO", "bands_refsyslabel") != NULL |
| 313 | || msOWSLookupMetadata(&(lp->metadata), "CO", "bands_interval") != NULL ) |
| 314 | return; |
| 315 | |
| 316 | /* OK, we have decided to fill in the information. */ |
| 317 | |
| 318 | msInsertHashTable( &(lp->metadata), "wcs_bands_name", "bands" ); |
| 319 | msInsertHashTable( &(lp->metadata), "wcs_bands_label", "Bands/Channels/Samples" ); |
| 320 | msInsertHashTable( &(lp->metadata), "wcs_bands_rangeitem", "_bands" ); /* ? */ |
| 321 | |
| 322 | bufferSize = cm->bandcount*30+30; |
| 323 | bandlist = (char *) msSmallMalloc(bufferSize); |
| 324 | strcpy( bandlist, "1" ); |
| 325 | for( i = 1; i < cm->bandcount; i++ ) |
| 326 | snprintf( bandlist+strlen(bandlist), bufferSize-strlen(bandlist), ",%d", i+1 ); |
| 327 | |
| 328 | msInsertHashTable( &(lp->metadata), "wcs_bands_values", bandlist ); |
| 329 | free( bandlist ); |
| 330 | } |
| 331 | |
| 332 | /************************************************************************/ |
| 333 | /* msWCSParseRequest() */ |
no test coverage detected