Source: BKGWebMap/Layer/DOP.js

/*
 * Copyright (c) 2013 Bundesamt für Kartographie und Geodäsie.
 * See license.txt in the BKG WebMap distribution or repository for the
 * full text of the license.
 *
 * Author: Dirk Thalheim
 */

/**
 * @requires OpenLayers/Util.js
 * @requires BKGWebMap/Layer.js
 * @requires BKGWebMap/Layer/WMS.js
 */

/**
 * @namespace BKGWebMap.Layer.DOP
 **/
BKGWebMap.Layer.DOP = BKGWebMap.Layer.DOP || {};

/**
 * Standard Zoomstufen für WMTS DOPs
 * @type {Array}
 * @constant
 */
BKGWebMap.Layer.DOP.RESOLUTIONS = [
  4891.96981025128,
  2445.98490512564,
  1222.99245256282,
  611.49622628141,
  305.748113140705,
  152.874056570353,
  76.4370282851763,
  38.2185141425881,
  19.1092570712941,
  9.55462853564703,
  4.77731426782352,
  2.38865713391176,
  1.19432856695588,
  0.597164283477939,
  0.29858214173897,
  0.2
];

/**
 * Standarparameter für DOP-WMS Layer
 * @constant BKGWebMap.Layer.DOP.WMS_DEFAULTS
 * @type object
 */
BKGWebMap.Layer.DOP.WMS_DEFAULTS = {
    attribution: BKGWebMap.Layer.COPYRIGHT,
    isBaseLayer: true,
    params: { format: "image/png", transparent: false }
};

/**
 * Standartparameter für den WMTS TopPlus-Web
 */
BKGWebMap.Layer.DOP.WMTS_DEFAULTS = {
  attribution: BKGWebMap.Layer.COPYRIGHT,
  isBaseLayer: true,
  transitionEffect: 'resize',
  style: 'default',
  matrixSet: 'DE_EPSG_25832_DOP',
  format: 'image/png',
  requestEncoding: 'REST',
  tileOrigin: new OpenLayers.LonLat(-46133.17, 6301219.54),
  tileSize: new OpenLayers.Size(512,512),
  serverResolutions: BKGWebMap.Layer.DOP.RESOLUTIONS,
  maxExtent: [272125.0, 5217364.800000001, 934197.6000000001, 6114422.4]
};

/*
 * Registriert die DOP Layer-Factories:
 * WMS.DOP20
 * WMS.DTK20.IR
 * WMS.DTK20.CIR
 * WMTS.DOP20
 * WMTS.DTK20.IR
 * WMTS.DTK20.CIR
 * DOP20
 * DTK20.IR
 * DTK20.CIR
 */
BKGWebMap.Util.each( ['rgb', 'ir', 'cir'], function(index, layer) {
  var keySuffix = ('rgb' == layer) ? '' : '.' + layer.toUpperCase();
  var title = 'Digitale Orthophotos mit 20 cm Bodenauflösung (' + layer.toUpperCase() + ')';

  BKGWebMap.Layer.FACTORIES['WMS.DOP20' + keySuffix] = function (config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.DOP.WMS_DEFAULTS);
    defaults.name = title;
    defaults.url = BKGWebMap.Util.getServiceUrl('wms_dop');

    defaults.layers = [{title: 'DOP20', name: layer, active: true}];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);
  };

  BKGWebMap.Layer.FACTORIES['WMTS.DOP20' + keySuffix] = function (config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.DOP.WMTS_DEFAULTS);
    defaults = OpenLayers.Util.extend(defaults, {
      name: title,
      url: BKGWebMap.Util.getServiceUrl('wmts_dop', 'tile'),
      layer: layer
    });
    return BKGWebMap.Layer.FACTORIES['WMTS'](OpenLayers.Util.extend(config, defaults), projection);
  };

  BKGWebMap.Layer.FACTORIES['DOP20' + keySuffix] = function (config, projection) {
    var isWMTS = projection == 'EPSG:25832';
    var factory = isWMTS ? 'WMTS.DOP20' + keySuffix : 'WMS.DOP20' + keySuffix;
    return BKGWebMap.Layer.FACTORIES[factory](config, projection);
  };
});

/*
 * Registriert die DOP Layer-Factories:
 * WMS.DOP40
 * WMS.DTK40.IR
 * WMS.DTK40.CIR
 */
BKGWebMap.Util.each( ['rgb', 'ir', 'cir'], function(index, layer) {
  var keySuffix = ('rgb' == layer) ? '' : '.' + layer.toUpperCase();
  var title = 'Digitale Orthophotos mit 40 cm Bodenauflösung (' + layer.toUpperCase() + ')';

  BKGWebMap.Layer.FACTORIES['WMS.DOP40' + keySuffix] = function (config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.DOP.WMS_DEFAULTS);
    defaults.name = title;
    defaults.url = BKGWebMap.Util.getServiceUrl('wms_dop40');

    defaults.layers = [{title: 'DOP_DE', name: layer, active: true}];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);
  };
});

// == RapidEye =============================

/**
 * Factory-Funktion für RapidEye 2009
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.RAPIDEYE.2009'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.DOP.WMS_DEFAULTS);
    defaults.name = 'RapidEye 2009';
    defaults.url = BKGWebMap.Util.getServiceUrl( 'wms_rapideye_2009' );

    defaults.layers = [ { title: 'RapidEye RGB', name: 'RE_321', active: true } ];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);

};

/**
 * Factory-Funktion für RapidEye 2009 Infrarot
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.RAPIDEYE.2009.IR'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.DOP.WMS_DEFAULTS);
    defaults.name = 'RapidEye 2009 Infrarot';
    defaults.url = BKGWebMap.Util.getServiceUrl( 'wms_rapideye_2009' );

    defaults.layers = [ { title: 'RapidEye Infrarot', name: 'RE_543', active: true } ];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);
};

/**
 * Factory-Funktion für RapidEye 2012
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.RAPIDEYE.2012'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.DOP.WMS_DEFAULTS);
    defaults.name = 'RapidEye 2012';
    defaults.url = BKGWebMap.Util.getServiceUrl( 'wms_rapideye_2012' );

    defaults.layers = [ { title: 'RapidEye RGB', name: 'RE_321', active: true } ];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);

};

/**
 * Factory-Funktion für RapidEye 2012 Infrarot
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.RAPIDEYE.2012.IR'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.DOP.WMS_DEFAULTS);
    defaults.name = 'RapidEye 2012 Infrarot';
    defaults.url = BKGWebMap.Util.getServiceUrl( 'wms_rapideye_2012' );

    defaults.layers = [ { title: 'RapidEye Infrarot', name: 'RE_543', active: true } ];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);
};

/**
 * Factory-Funktion für RapidEye 2015
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.RAPIDEYE.2015'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.DOP.WMS_DEFAULTS);
    defaults.name = 'RapidEye 2015';
    defaults.url = BKGWebMap.Util.getServiceUrl( 'wms_rapideye_2015' );

    defaults.layers = [ { title: 'RapidEye RGB', name: 'RE_321', active: true } ];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);

};

/**
 * Factory-Funktion für RapidEye 2015 Infrarot
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.RAPIDEYE.2015.IR'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.DOP.WMS_DEFAULTS);
    defaults.name = 'RapidEye 2015 Infrarot';
    defaults.url = BKGWebMap.Util.getServiceUrl( 'wms_rapideye_2015' );

    defaults.layers = [ { title: 'RapidEye Infrarot', name: 'RE_543', active: true } ];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);
};


// == DOP-Hist ==

BKGWebMap.Layer.DOP.HDOP_WMS_DEFAULTS = {
    attribution: BKGWebMap.Layer.COPYRIGHT,
    isBaseLayer: false,
    params: { format: "image/png", transparent: true }
};

/**
 * Factory-Funktion für Historische Orthophotos 1997
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.HDOP.1997'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.DOP.HDOP_WMS_DEFAULTS);
    defaults.name = 'Historische DOP 1997';
    defaults.url = BKGWebMap.Util.getServiceUrl('wms_dop_hist');

    defaults.layers = [ { title: 'DOP 1997', name: '1', active: true } ];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);
};

/**
 * Factory-Funktion für Historische Orthophotos 1999
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.HDOP.1999'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.DOP.HDOP_WMS_DEFAULTS);
    defaults.name = 'Historische DOP 1999';
    defaults.url = BKGWebMap.Util.getServiceUrl('wms_dop_hist');

    defaults.layers = [ { title: 'DOP 1999', name: '2', active: true } ];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);
};

/**
 * Factory-Funktion für Historische Orthophotos 2000
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.HDOP.2000'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.DOP.HDOP_WMS_DEFAULTS);
    defaults.name = 'Historische DOP 2000';
    defaults.url = BKGWebMap.Util.getServiceUrl('wms_dop_hist');

    defaults.layers = [ { title: 'DOP 2000', name: '3', active: true } ];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);
};

/**
 * Factory-Funktion für Historische Orthophotos 2001
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.HDOP.2001'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.DOP.HDOP_WMS_DEFAULTS);
    defaults.name = 'Historische DOP 2001';
    defaults.url = BKGWebMap.Util.getServiceUrl('wms_dop_hist');

    defaults.layers = [ { title: 'DOP 2001', name: '4', active: true } ];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);
};

/**
 * Factory-Funktion für Historische Orthophotos 2002
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.HDOP.2002'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.DOP.HDOP_WMS_DEFAULTS);
    defaults.name = 'Historische DOP 2002';
    defaults.url = BKGWebMap.Util.getServiceUrl('wms_dop_hist');

    defaults.layers = [ { title: 'DOP 2002', name: '5', active: true } ];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);
};
/**
 * Factory-Funktion für Historische Orthophotos 2003
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.HDOP.2003'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.DOP.HDOP_WMS_DEFAULTS);
    defaults.name = 'Historische DOP 2003';
    defaults.url = BKGWebMap.Util.getServiceUrl('wms_dop_hist');

    defaults.layers = [ { title: 'DOP 2003', name: '6', active: true } ];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);
};
/**
 * Factory-Funktion für Historische Orthophotos 2004
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.HDOP.2004'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.DOP.HDOP_WMS_DEFAULTS);
    defaults.name = 'Historische DOP 2004';
    defaults.url = BKGWebMap.Util.getServiceUrl('wms_dop_hist');

    defaults.layers = [ { title: 'DOP 2004', name: '7', active: true } ];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);
};
/**
 * Factory-Funktion für Historische Orthophotos 2005
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.HDOP.2005'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.DOP.HDOP_WMS_DEFAULTS);
    defaults.name = 'Historische DOP 2005';
    defaults.url = BKGWebMap.Util.getServiceUrl('wms_dop_hist');

    defaults.layers = [ { title: 'DOP 2005', name: '8', active: true } ];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);
};
/**
 * Factory-Funktion für Historische Orthophotos 2006
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.HDOP.2006'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.DOP.HDOP_WMS_DEFAULTS);
    defaults.name = 'Historische DOP 2006';
    defaults.url = BKGWebMap.Util.getServiceUrl('wms_dop_hist');

    defaults.layers = [ { title: 'DOP 2006', name: '9', active: true } ];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);
};
/**
 * Factory-Funktion für Historische Orthophotos 2007
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.HDOP.2007'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.DOP.HDOP_WMS_DEFAULTS);
    defaults.name = 'Historische DOP 2007';
    defaults.url = BKGWebMap.Util.getServiceUrl('wms_dop_hist');

    defaults.layers = [ { title: 'DOP 2007', name: '10', active: true } ];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);
};
/**
 * Factory-Funktion für Historische Orthophotos 2008
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.HDOP.2008'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.DOP.HDOP_WMS_DEFAULTS);
    defaults.name = 'Historische DOP 2008';
    defaults.url = BKGWebMap.Util.getServiceUrl('wms_dop_hist');

    defaults.layers = [ { title: 'DOP 2008', name: '11', active: true } ];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);
};
/**
 * Factory-Funktion für Historische Orthophotos 2009
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.HDOP.2009'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.DOP.HDOP_WMS_DEFAULTS);
    defaults.name = 'Historische DOP 2009';
    defaults.url = BKGWebMap.Util.getServiceUrl('wms_dop_hist');

    defaults.layers = [ { title: 'DOP 2009', name: '12', active: true } ];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);
};
/**
 * Factory-Funktion für Historische Orthophotos 2010
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.HDOP.2010'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.DOP.HDOP_WMS_DEFAULTS);
    defaults.name = 'Historische DOP 2010';
    defaults.url = BKGWebMap.Util.getServiceUrl('wms_dop_hist');

    defaults.layers = [ { title: 'DOP 2010', name: '13', active: true } ];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);
};
/**
 * Factory-Funktion für Historische Orthophotos 2011
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.HDOP.2011'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.DOP.HDOP_WMS_DEFAULTS);
    defaults.name = 'Historische DOP 2011';
    defaults.url = BKGWebMap.Util.getServiceUrl('wms_dop_hist');

    defaults.layers = [ { title: 'DOP 2011', name: '14', active: true } ];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);
};
/**
 * Factory-Funktion für Historische Orthophotos 2010
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.HDOP.2012'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.DOP.HDOP_WMS_DEFAULTS);
    defaults.name = 'Historische DOP 2012';
    defaults.url = BKGWebMap.Util.getServiceUrl('wms_dop_hist');

    defaults.layers = [ { title: 'DOP 2012', name: '14', active: true } ];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);
};
/**
 * Factory-Funktion für Historische Orthophotos 2013
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.HDOP.2013'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.DOP.HDOP_WMS_DEFAULTS);
    defaults.name = 'Historische DOP 2013';
    defaults.url = BKGWebMap.Util.getServiceUrl('wms_dop_hist');

    defaults.layers = [ { title: 'DOP 2013', name: '15', active: true } ];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);
};
/**
 * Factory-Funktion für Historische Orthophotos Footprints
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.HDOP.EE'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.DOP.HDOP_WMS_DEFAULTS);
    defaults.name = 'Historische DOP Einheiten';
    defaults.url = BKGWebMap.Util.getServiceUrl('wms_dop_hist');

    defaults.layers = [ { title: 'DOP Einheiten', name: '0', active: true } ];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);
};

// == Info-Dienste ==

/**
 * Factory-Funktion für DOP-INFO
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.DOP.INFO'] = function(config, projection) {
  var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.INFO_WMS_DEFAULTS);

  defaults.name = 'DOP-Befliegungsdatum Vertrieb';
  defaults.url = BKGWebMap.Util.getServiceUrl( 'wms_info' );
  defaults.maxResolution= 300;
  defaults.layers = [
    { title: 'DOP20 Bildflug Vertrieb', name: 'dop', style: 'info', active: true }
  ];
  return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);
};

/**
 * Factory-Funktion für DOP40-META VERTRIEB
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.DOP.META.VERTRIEB'] = function(config, projection) {
  var defaults = {
    name: 'DOP Aktualität im Vertrieb',
    url: BKGWebMap.Util.getServiceUrl( 'wms_dop40_meta' ),
    attribution: BKGWebMap.Layer.COPYRIGHT,
    singleTile: true,
    params: { layers: '0', format: 'image/png', transparent: true }
  };

  return BKGWebMap.Layer.FACTORIES['WMS'](config, projection, defaults);
};

/**
 * Factory-Funktion für DOP40-META LIEFERUNG
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.DOP.META.LIEFERUNG'] = function(config, projection) {
  var defaults = {
    name: 'DOP Aktualität in Bearbeitung',
    url: BKGWebMap.Util.getServiceUrl( 'wms_dop40_meta' ),
    attribution: BKGWebMap.Layer.COPYRIGHT,
    singleTile: true,
    params: { layers: '1', format: 'image/png', transparent: true }
  };

  return BKGWebMap.Layer.FACTORIES['WMS'](config, projection, defaults);
};

/**
 * Factory-Funktion für DOP40-META ERFASSUNGSEINHEITEN
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.DOP.META.ERFASSUNGSEINHEITEN'] = function(config, projection) {
  var defaults = {
    name: 'DOP Erfassungseinheiten',
    url: BKGWebMap.Util.getServiceUrl( 'wms_dop40_meta' ),
    attribution: BKGWebMap.Layer.COPYRIGHT,
    singleTile: true,
    params: { layers: '6', format: 'image/png', transparent: true }
  };

  return BKGWebMap.Layer.FACTORIES['WMS'](config, projection, defaults);
};


// == Sentinel 2 DE =============================

/**
 * Standarparameter für Sentinel-WMS Layer
 * @constant BKGWebMap.Layer.DOP.WMS_SENTINEL_DEFAULTS
 * @type object
 */
BKGWebMap.Layer.DOP.WMS_SENTINEL_DEFAULTS = {
    attribution: "© Bundesamt für Kartographie und Geodäsie " + new Date().getFullYear() + ", Datenquellen: Enthält geänderte Copernicus Sentinel Daten ab 2018",
    isBaseLayer: true,
    params: { format: "image/png", transparent: false }
};

/**
 * Factory-Funktion für Sentinel2 DE RGB
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.SENTINEL2.DE.RGB'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.DOP.WMS_SENTINEL_DEFAULTS);
    defaults.name = 'Sentinel2-DE RGB';
    defaults.url = BKGWebMap.Util.getServiceUrl( 'wms_sentinel2_de' );

    defaults.layers = [ { title: 'Sentinel2-DE RGB', name: 'rgb', active: true } ];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);

};

/**
 * Factory-Funktion für Sentinel2 DE NIR
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.SENTINEL2.DE.NIR'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.DOP.WMS_SENTINEL_DEFAULTS);
    defaults.name = 'Sentinel2-DE Nir';
    defaults.url = BKGWebMap.Util.getServiceUrl( 'wms_sentinel2_de' );

    defaults.layers = [ { title: 'Sentinel2-DE Nir', name: 'nir', active: true } ];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);

};

/**
 * Factory-Funktion für Sentinel2 DE NirRER
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.SENTINEL2.DE.NIRER'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.DOP.WMS_SENTINEL_DEFAULTS);
    defaults.name = 'Sentinel2-DE NirRER';
    defaults.url = BKGWebMap.Util.getServiceUrl( 'wms_sentinel2_de' );

    defaults.layers = [ { title: 'Sentinel2-DE NirRER', name: 'nirrer', active: true } ];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);

};

/**
 * Factory-Funktion für Sen2Europe
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.SEN2EUROPE.RGB'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.DOP.WMS_SENTINEL_DEFAULTS);
    defaults.name = 'Sen2Europe';
    defaults.url = BKGWebMap.Util.getServiceUrl( 'wms_sen2europe' );
    defaults.maxExtent = BKGWebMap.Util.getMaxExtent(projection, BKGWebMap.Layer.TopPlus.EXTENTS);

    defaults.layers = [ { title: 'Sen2Europe RGB', name: 'rgb', active: true } ];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);

};