Source: BKGWebMap/Layer/INSPIRE.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.DLM
 */
BKGWebMap.Layer.INSPIRE = BKGWebMap.Layer.INSPIRE || {};

/**
 * Standardparameter für DLM-WMSe
 */
BKGWebMap.Layer.INSPIRE.WMS_DEFAULTS = {
  singleTile: true,
  params: { format: 'image/png', transparent: true }
};

// == DLM ==============================================================================================================

/**
 * Factory-Funktion für WMS Digitales Landschaftsmodell 1:250 000 INSPIRE
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.INSPIRE.DLM250'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.INSPIRE.WMS_DEFAULTS);
    defaults.name = 'WMS Digitales Landschaftsmodell 1:250 000 INSPIRE';
    defaults.url = BKGWebMap.Util.getServiceUrl( 'wms_dlm250_inspire' );

    defaults.layers = [
      // tn-air
      { title: 'TN.AirTransportNetwork.AerodromeArea', name: 'TN.AirTransportNetwork.AerodromeArea', active: true },
      { title: 'TN.AirTransportNetwork.AerodromeNode', name: 'TN.AirTransportNetwork.AerodromeNode', active: true },
      { title: 'TN.AirTransportNetwork.RunwayLine', name: 'TN.AirTransportNetwork.RunwayLine', active: true },
      // tn-rail
      { title: 'TN.RailTransportNetwork.RailwayLink', name: 'TN.RailTransportNetwork.RailwayLink', active: true },
      { title: 'TN.RailTransportNetwork.RailwayNode', name: 'TN.RailTransportNetwork.RailwayNode', active: true },
      { title: 'TN.RailTransportNetwork.RailwayStationNode', name: 'TN.RailTransportNetwork.RailwayStationNode', active: true },
      // tn-road
      { title: 'TN.RoadTransportNetwork.RoadLink', name: 'TN.RoadTransportNetwork.RoadLink', active: true },
      { title: 'TN.RoadTransportNetwork.RoadNode', name: 'TN.RoadTransportNetwork.RoadNode', active: true },
      { title: 'TN.RoadTransportNetwork.InterchangePoint', name: 'TN.RoadTransportNetwork.InterchangePoint', active: true },
      // tn-water
      { title: 'TN.WaterTransportNetwork.PortArea', name: 'TN.WaterTransportNetwork.PortArea', active: true },
      { title: 'TN.WaterTransportNetwork.PortNode', name: 'TN.WaterTransportNetwork.PortNode', active: true },
      // hy-net
      { title: 'HY.Network.WatercourseLink', name: 'HY.Network.WatercourseLink', active: true },
      { title: 'HY.Network.HydroNode', name: 'HY.Network.HydroNode', active: true },
      // hy-pw
      { title: 'HY.PhysicalWaters.LandWaterBoundary', name: 'HY.PhysicalWaters.LandWaterBoundary', active: true },
      { title: 'HY.PhysicalWaters.Shore', name: 'HY.PhysicalWaters.Shore', active: true },
      { title: 'HY.PhysicalWaters.Wetland', name: 'HY.PhysicalWaters.Wetland', active: true },
      { title: 'HY.PhysicalWaters.Waterbodies.Watercourse', name: 'HY.PhysicalWaters.Waterbodies.Watercourse', active: true },
      { title: 'HY.PhysicalWaters.Waterbodies.StandingWater', name: 'HY.PhysicalWaters.Waterbodies.StandingWater', active: true },
      // au
      { title: 'AU.AdministrativeBoundary', name: 'AU.AdministrativeBoundary', active: true },
      { title: 'AU.AdministrativeUnit', name: 'AU.AdministrativeUnit', active: true },
      { title: 'AU.AdministrativeUnitArea', name: 'AU.AdministrativeUnitArea', active: true },
      //ps
      { title: 'PS.ProtectedSite', name: 'PS.ProtectedSite', active: true }
    ];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);
};

/**
 * Factory-Funktion für WMS Digitales Landschaftsmodell 1:250 000 INSPIRE - Thema Transport Network Air
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.INSPIRE.DLM250.TN.AIR'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.INSPIRE.WMS_DEFAULTS);
    defaults.name = 'WMS Digitales Landschaftsmodell 1:250 000 INSPIRE - Transport Network Air';
    defaults.url = BKGWebMap.Util.getServiceUrl( 'wms_dlm250_inspire' );

    defaults.layers = [
      // tn-air
      { title: 'TN.AirTransportNetwork.AerodromeArea', name: 'TN.AirTransportNetwork.AerodromeArea', active: true },
      { title: 'TN.AirTransportNetwork.AerodromeNode', name: 'TN.AirTransportNetwork.AerodromeNode', active: true },
      { title: 'TN.AirTransportNetwork.RunwayLine', name: 'TN.AirTransportNetwork.RunwayLine', active: true }
    ];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);
};

/**
 * Factory-Funktion für WMS Digitales Landschaftsmodell 1:250 000 INSPIRE - Thema Transport Network Road
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.INSPIRE.DLM250.TN.ROAD'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.INSPIRE.WMS_DEFAULTS);
    defaults.name = 'WMS Digitales Landschaftsmodell 1:250 000 INSPIRE - Transport Network Road';
    defaults.url = BKGWebMap.Util.getServiceUrl( 'wms_dlm250_inspire' );

    defaults.layers = [
      { title: 'TN.RoadTransportNetwork.RoadLink', name: 'TN.RoadTransportNetwork.RoadLink', active: true },
      { title: 'TN.RoadTransportNetwork.RoadNode', name: 'TN.RoadTransportNetwork.RoadNode', active: true },
      { title: 'TN.RoadTransportNetwork.InterchangePoint', name: 'TN.RoadTransportNetwork.InterchangePoint', active: true }
    ];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);
};

/**
 * Factory-Funktion für WMS Digitales Landschaftsmodell 1:250 000 INSPIRE - Thema Transport Network Rail
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.INSPIRE.DLM250.TN.RAIL'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.INSPIRE.WMS_DEFAULTS);
    defaults.name = 'WMS Digitales Landschaftsmodell 1:250 000 INSPIRE - Transport Network Rail';
    defaults.url = BKGWebMap.Util.getServiceUrl( 'wms_dlm250_inspire' );

    defaults.layers = [
      { title: 'TN.RailTransportNetwork.RailwayLink', name: 'TN.RailTransportNetwork.RailwayLink', active: true },
      { title: 'TN.RailTransportNetwork.RailwayNode', name: 'TN.RailTransportNetwork.RailwayNode', active: true },
      { title: 'TN.RailTransportNetwork.RailwayStationNode', name: 'TN.RailTransportNetwork.RailwayStationNode', active: true }
    ];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);
};

/**
 * Factory-Funktion für WMS Digitales Landschaftsmodell 1:250 000 INSPIRE - Thema Transport Network Water
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.INSPIRE.DLM250.TN.WATER'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.INSPIRE.WMS_DEFAULTS);
    defaults.name = 'WMS Digitales Landschaftsmodell 1:250 000 INSPIRE - Transport Network Water';
    defaults.url = BKGWebMap.Util.getServiceUrl( 'wms_dlm250_inspire' );

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

/**
 * Factory-Funktion für WMS Digitales Landschaftsmodell 1:250 000 INSPIRE - Thema Hydrography Network
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.INSPIRE.DLM250.HY.NET'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.INSPIRE.WMS_DEFAULTS);
    defaults.name = 'WMS Digitales Landschaftsmodell 1:250 000 INSPIRE - Hydrography Network';
    defaults.url = BKGWebMap.Util.getServiceUrl( 'wms_dlm250_inspire' );

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

/**
 * Factory-Funktion für WMS Digitales Landschaftsmodell 1:250 000 INSPIRE - Thema Hydrography Physical Water
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.INSPIRE.DLM250.HY.PW'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.INSPIRE.WMS_DEFAULTS);
    defaults.name = 'WMS Digitales Landschaftsmodell 1:250 000 INSPIRE - Hydrography Physical Water';
    defaults.url = BKGWebMap.Util.getServiceUrl( 'wms_dlm250_inspire' );

    defaults.layers = [
      { title: 'HY.PhysicalWaters.LandWaterBoundary', name: 'HY.PhysicalWaters.LandWaterBoundary', active: true },
      { title: 'HY.PhysicalWaters.Shore', name: 'HY.PhysicalWaters.Shore', active: true },
      { title: 'HY.PhysicalWaters.Wetland', name: 'HY.PhysicalWaters.Wetland', active: true },
      { title: 'HY.PhysicalWaters.Waterbodies.Watercourse', name: 'HY.PhysicalWaters.Waterbodies.Watercourse', active: true },
      { title: 'HY.PhysicalWaters.Waterbodies.StandingWater', name: 'HY.PhysicalWaters.Waterbodies.StandingWater', active: true }
    ];
    return BKGWebMap.Layer.FACTORIES['BKG.WMS'](config, projection, defaults);
};

/**
 * Factory-Funktion für WMS Digitales Landschaftsmodell 1:250 000 INSPIRE - Administrative Boundaries
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.INSPIRE.DLM250.AU.BOUNDARY'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.INSPIRE.WMS_DEFAULTS);
    defaults.name = 'WMS Digitales Landschaftsmodell 1:250 000 INSPIRE - Administrative Boundaries';
    defaults.url = BKGWebMap.Util.getServiceUrl( 'wms_dlm250_inspire' );

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

/**
 * Factory-Funktion für WMS Digitales Landschaftsmodell 1:250 000 INSPIRE - Administrative Units
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.INSPIRE.DLM250.AU.UNITS'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.INSPIRE.WMS_DEFAULTS);
    defaults.name = 'WMS Digitales Landschaftsmodell 1:250 000 INSPIRE - Administrative Units';
    defaults.url = BKGWebMap.Util.getServiceUrl( 'wms_dlm250_inspire' );

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

/**
 * Factory-Funktion für WMS Digitales Landschaftsmodell 1:250 000 INSPIRE - Administrative Unit Areas
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.INSPIRE.DLM250.AU.AREA'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.INSPIRE.WMS_DEFAULTS);
    defaults.name = 'WMS Digitales Landschaftsmodell 1:250 000 INSPIRE - Administrative Unit Areas';
    defaults.url = BKGWebMap.Util.getServiceUrl( 'wms_dlm250_inspire' );

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

/**
 * Factory-Funktion für WMS Digitales Landschaftsmodell 1:250 000 INSPIRE - Thema Protected Sites
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.INSPIRE.DLM250.PS'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.INSPIRE.WMS_DEFAULTS);
    defaults.name = 'WMS Digitales Landschaftsmodell 1:250 000 INSPIRE - Protected Sites';
    defaults.url = BKGWebMap.Util.getServiceUrl( 'wms_dlm250_inspire' );

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


/**
 * Factory-Funktion für INSPIRE-WMS Statistical Units ATKIS-DLM250
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.INSPIRE.DLM250.SU'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.INSPIRE.WMS_DEFAULTS);
    defaults.name = 'INSPIRE-WMS Statistical Units ATKIS-DLM250';
    defaults.url = BKGWebMap.Util.getServiceUrl( 'wms_dlm250_su_inspire' );

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

/**
 * Factory-Funktion für WMS CORINE Land Cover 5 ha 2012
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.INSPIRE.CLC5.2012'] = function(config, projection) {
  var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.INSPIRE.WMS_DEFAULTS);
  defaults.name = 'WMS CORINE Land Cover 5 ha, Stand 2012';
  defaults.url = BKGWebMap.Util.getServiceUrl( 'wms_clc5_2012_inspire' );
  defaults.maxResolution = 100;
  defaults.singleTile = false;

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

/**
 * Factory-Funktion für WMS CORINE Land Cover 5 ha 2015
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.INSPIRE.CLC5.2015'] = function(config, projection) {
  var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.INSPIRE.WMS_DEFAULTS);
  defaults.name = 'WMS CORINE Land Cover 5 ha, Stand 2015';
  defaults.url = BKGWebMap.Util.getServiceUrl( 'wms_clc5_2015_inspire' );
  defaults.maxResolution = 100;
  defaults.singleTile = false;

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

/**
 * Factory-Funktion für WMS CORINE Land Cover 5 ha 2018
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.INSPIRE.CLC5.2018'] = function(config, projection) {
  var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.INSPIRE.WMS_DEFAULTS);
  defaults.name = 'WMS CORINE Land Cover 5 ha, Stand 2018';
  defaults.url = BKGWebMap.Util.getServiceUrl( 'wms_clc5_2018_inspire' );
  defaults.maxResolution = 100;
  defaults.singleTile = false;

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



/**
 * Factory-Funktion für WMS Geographical Names INSPIRE
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.INSPIRE.GN250'] = function(config, projection) {
  var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.INSPIRE.WMS_DEFAULTS);
  defaults.name = 'WMS Geographical Names INSPIRE';
  defaults.url = BKGWebMap.Util.getServiceUrl( 'wms_gn250_inspire' );

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

/**
 * Factory-Funktion für Geographical Names INSPIRE
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 * @deprecated
 */
BKGWebMap.Layer.FACTORIES['WMS.INSPIRE.GN'] = BKGWebMap.Layer.FACTORIES['WMS.INSPIRE.GN250'];

/**
 * Factory-Funktion für INSPIRE-WMS Digitales Geländemodell Gitterweite 200 m
 *
 * @param config
 * @param projection
 * @returns {OpenLayers.Layer.WMS}
 */
BKGWebMap.Layer.FACTORIES['WMS.INSPIRE.DGM200'] = function(config, projection) {
    var defaults = OpenLayers.Util.extend(null, BKGWebMap.Layer.INSPIRE.WMS_DEFAULTS);
    defaults.name = 'INSPIRE-WMS Digitales Geländemodell Gitterweite 200 m';
    defaults.url = BKGWebMap.Util.getServiceUrl( 'wms_dgm200_inspire' );

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