| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343 |
- //import WMTSTileGrid from 'ol/tilegrid/WMTS';
- import proj4 from 'proj4';
- import {Fill, Stroke, Style} from 'ol/style';
- import {OSM, TileWMS, Vector as VectorSource, XYZ, WMTS} from 'ol/source';
- import {Tile, Vector as VectorLayer} from 'ol/layer';
- import {TopoJSON} from 'ol/format';
- import {View} from 'ol';
- import {get as getProjection, transform} from 'ol/proj';
- //import {getTopLeft, getWidth} from 'ol/extent';
- import {register} from 'ol/proj/proj4';
- import env from './env.config.json';
- import i18n from './translations.json';
- proj4.defs(
- 'EPSG:3045',
- '+proj=utm +zone=33 +ellps=GRS80 +towgs84=0,0,0,0,0,0,0 +units=m +no_defs'
- );
- proj4.defs(
- 'EPSG:5514',
- '+proj=krovak +lat_0=49.5 +lon_0=24.83333333333333 +alpha=30.28813972222222 +k=0.9999 +x_0=0 +y_0=0 +ellps=bessel +towgs84=542.5,89.2,456.9,5.517,2.275,5.516,6.96 +units=m +no_defs'
- );
- register(proj4);
- const sjtskProjection = getProjection('EPSG:5514');
- //const utm33nProjection = getProjection('EPSG:3045');
- function getHostname() {
- const url = window.location.href;
- const urlArr = url.split('/');
- const domain = urlArr[2];
- return urlArr[0] + '//' + domain;
- }
- export const cartodbLayer = new Tile({
- source: new XYZ({
- url:
- 'https://cartodb-basemaps-{a-d}.global.ssl.fastly.net/light_all/{z}/{x}/{y}.png',
- attributions: [
- 'CartoDB Positron, © <a href="https://carto.com/attributions" target="_blank">CARTO</a>',
- '© <a href="https://www.openstreetmap.org/copyright" target="_blank">OpenStreetMap</a> contributors',
- ],
- }),
- title: 'OpenStreetMap světlá',
- visible: true,
- base: true,
- editor: {editable: false},
- removable: false,
- });
- export const osmLayer = new Tile({
- source: new OSM(),
- title: 'OpenStreetMap barevná',
- base: true,
- visible: false,
- editor: {editable: false},
- removable: false,
- });
- export const zm100Layer = new Tile({
- source: new TileWMS({
- url: 'https://geoportal.cuzk.cz/WMS_ZM100_PUB/WMService.aspx',
- params: {
- LAYERS: 'GR_ZM100',
- },
- attributions: ['© <a href="geoportal.cuzk.cz" target="_blank">ČÚZK</a>'],
- }),
- /*source: new TileWMS({
- url:
- 'https://ags.cuzk.cz/arcgis/services/VektorovaMapa/MapServer/WmsServer?',
- params: {
- //https://ags.cuzk.cz/arcgis/services/VektorovaMapa/MapServer/WmsServer?request=GetCapabilities&service=WMS
- LAYERS: `1,2,3,4,5,6,7,8,9,10,11,12,13,14,193,194,195,196,
- 17,18,15,16,82,83,84,85,86,87,88,89,90,91,182,183,184,185,186,187,188,189,190,191,192,
- 19,20,78,79,80,81,23,24,21,22,197,198,199,200,201,202,203,204,205,
- 52,53,54,
- 26,27,92,94,93,95,96,
- 29,30,31,32,76,97,98,99,100,101,102,103,104,108,109,105,106,107,110,111,112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,144,145,146,147,148,149,150,151,152,153,154,155`,
- },
- }),*/
- /*source: new WMTS({
- url: 'https://geoportal.cuzk.cz/WMTS_ZM/WMTService.aspx',
- format: 'image/png',
- layer: 'zm',
- matrixSet: 'jtsk:epsg:5514',
- tileGrid: new WMTSTileGrid({
- origin: [51.874963785131, 11.082166373399],
- resolutions: [
- 3,2,1
- ],
- matrixIds: [1, 2, 3],
- }),
- }),*/
- title: 'Mapa ČR 1:100 000',
- base: true,
- visible: false,
- removable: false,
- });
- export const mcr500Layer = new Tile({
- source: new TileWMS({
- url: 'https://geoportal.cuzk.cz/WMS_MCR500/WMService.aspx',
- params: {
- LAYERS: 'GR_MCR500',
- },
- attributions: ['© <a href="geoportal.cuzk.cz" target="_blank">ČÚZK</a>'],
- }),
- title: 'Mapa ČR 1:500 000',
- base: true,
- visible: false,
- removable: false,
- });
- export const ortofotoLayer = new Tile({
- source: new TileWMS({
- url: 'https://geoportal.cuzk.cz/WMS_ORTOFOTO_PUB/WMService.aspx',
- params: {
- LAYERS: 'GR_ORTFOTORGB',
- },
- attributions: ['© <a href="geoportal.cuzk.cz" target="_blank">ČÚZK</a>'],
- }),
- title: 'Ortofoto ČÚZK',
- base: true,
- visible: false,
- removable: false,
- thumbnail: 'https://www.agrihub.sk/hsl-ng/img/orto.jpg',
- });
- export const perc2color = (perc: number): string => {
- perc = perc * 100;
- let r;
- let g;
- const b = 0;
- if (perc < 50) {
- r = 255;
- g = Math.round(5.1 * perc);
- } else {
- g = 255;
- r = Math.round(510 - 5.1 * perc);
- }
- // eslint-disable-next-line @typescript-eslint/no-unused-vars
- const h = r * 0x10000 + g * 0x100 + b * 0x1;
- return `rgba(${r}, ${g}, ${b}, 0.7)`;
- };
- const decimal2prettyPerc = (x) => {
- return `${(x * 100).toFixed(2)} %`;
- };
- const indexStyle = (feature) => {
- if (isNaN(feature.get('aggregate'))) {
- return [
- new Style({
- fill: new Fill({
- color: '#FFF',
- }),
- stroke: new Stroke({
- color: '#3399CC',
- width: 0.25,
- }),
- }),
- ];
- } else {
- return [
- new Style({
- fill: new Fill({
- color: perc2color(feature.get('aggregate')),
- }),
- stroke: new Stroke({
- color: '#FFFFFF',
- width: 0.15,
- }),
- }),
- ];
- }
- };
- export const obce = new VectorSource({
- format: new TopoJSON({dataProjection: 'EPSG:5514'}),
- url: require('./data/obce_cr_20210310_5p_5514.topojson').default,
- overlaps: false,
- attributions: ['CC-BY ČÚZK, 2021'],
- });
- export const obceIndexLayer = new VectorLayer({
- source: obce,
- editor: {editable: false},
- autoLegend: false,
- visible: true,
- style: indexStyle,
- title: 'Obce ČR: Rural attractiveness index',
- });
- obceIndexLayer.set('popUp', {
- attributes: [
- {
- attribute: 'aggregate',
- label: 'agregovaný index',
- displayFunction: decimal2prettyPerc,
- },
- {
- attribute: 'Konec chudoby',
- displayFunction: decimal2prettyPerc,
- },
- {
- attribute: 'Zdraví a kvalitní život',
- displayFunction: decimal2prettyPerc,
- },
- {
- attribute: 'Kvalitní vzdělání',
- displayFunction: decimal2prettyPerc,
- },
- {
- attribute: 'Důstojná práce a ekonomický růst',
- displayFunction: decimal2prettyPerc,
- },
- {
- attribute: 'Udržitelná města a obce',
- displayFunction: decimal2prettyPerc,
- },
- {
- attribute: 'Ostatní',
- displayFunction: decimal2prettyPerc,
- },
- ],
- });
- obceIndexLayer.set('editable', false);
- //obceIndexLayer.set('queryable', false);
- const masStyle = (feature) =>
- new Style({
- fill: new Fill({
- color: feature.get('mas_type') == 'member' ? '#1d941d' : '#f6cd61',
- }),
- stroke: new Stroke({
- color: '#ffffff',
- width: 0.6,
- }),
- });
- export const masLayer = new VectorLayer({
- source: new VectorSource({
- format: new TopoJSON({dataProjection: 'EPSG:5514'}),
- url: require('./data/mas_2021.topojson').default,
- overlaps: false,
- }),
- editor: {editable: false},
- visible: false,
- opacity: 0.8,
- style: masStyle,
- title: 'MAS ČR',
- popUp: {
- attributes: [
- /*{attribute: 'mas_type', label: 'člen NS MAS?', displayFunction: (attr) => {TODO:}}*/
- ],
- },
- attributions: ['© NS MAS ČR, http://nsmascr.cz/o-nas/'],
- });
- const okresyStyle = new Style({
- stroke: new Stroke({
- color: '#111111',
- width: 0.4,
- }),
- });
- export const okresyLayer = new VectorLayer({
- source: new VectorSource({
- format: new TopoJSON({dataProjection: 'EPSG:5514'}),
- url: require('./data/okresy_cr_20210310_5p_5514.topojson').default,
- overlaps: false,
- }),
- editor: {editable: false},
- visible: false,
- style: okresyStyle,
- title: 'Okresy ČR',
- attributions: ['CC-BY ČÚZK, 2021'],
- });
- const krajeStyle = new Style({
- stroke: new Stroke({
- color: '#000000',
- width: 0.6,
- }),
- });
- export const krajeLayer = new VectorLayer({
- source: new VectorSource({
- format: new TopoJSON({dataProjection: 'EPSG:5514'}),
- url: require('./data/kraje_cr_20210310_5p_5514.topojson').default,
- overlaps: false,
- }),
- editor: {editable: false},
- visible: true,
- style: krajeStyle,
- title: 'Kraje ČR',
- attributions: ['CC-BY ČÚZK, 2021'],
- });
- export const AppConfig = {
- useProxy: false,
- //proxyPrefix: '../8085/',
- geonamesUser: env.geonamesUser,
- default_layers: [cartodbLayer, osmLayer, mcr500Layer, ortofotoLayer],
- popUpDisplay: 'hover',
- project_name: 'erra/map',
- default_view: new View({
- projection: sjtskProjection,
- center: transform([15.628, 49.864249], 'EPSG:4326', 'EPSG:5514'),
- zoom: 7.6,
- units: 'm',
- }),
- advanced_form: true,
- datasources: [],
- hostname: {
- default: {
- title: 'Default',
- type: 'default',
- editable: false,
- url: getHostname(),
- },
- },
- panelWidths: {
- datasource_selector: 400,
- },
- panelsEnabled: {
- composition_browser: false,
- feature_crossfilter: false,
- info: true,
- saveMap: false,
- sensors: false,
- tracking: false,
- routing: false,
- permalink: false,
- legend: false,
- feature_table: false,
- draw: false,
- },
- status_manager_url: '/statusmanager/',
- sidebarPosition: 'right',
- sizeMode: 'fullscreen',
- translationOverrides: i18n,
- };
- export default AppConfig;
|