{"version":3,"file":"chunks/6468.sitna.js","mappings":"msBAEA,IAAAA,EAAA,IAAAC,QAAAC,EAAA,IAAAD,QAwGA,QAtFA,MAIIE,WAAAA,CAAYC,GAASC,EAAA,KAAAL,EAAA,CAAAM,UAAA,EAAAC,WAAA,IAAAF,EAAA,KAAAH,EAAA,CAAAI,UAAA,EAAAC,WAAA,IACjB,MAAMC,EAAOC,KACbD,EAAKJ,QAAUA,GAAW,CAAC,EAC3BI,EAAKE,IAAMF,EAAKJ,QAAQM,IACxBF,EAAKG,QAAUH,EAAKJ,QAAQO,QAC5BH,EAAKI,iBAAmBJ,EAAKJ,QAAQQ,iBACjCC,EAAAA,EAAKC,WAAWN,EAAKJ,QAAQW,WAC7BP,EAAKO,QAAUP,EAAKJ,QAAQW,SAE5BF,EAAAA,EAAKC,WAAWN,EAAKJ,QAAQY,iBAC7BR,EAAKQ,cAAgBR,EAAKJ,QAAQY,cAE1C,CAEA,kBAAMC,CAAab,EAAU,CAAC,GAC1B,MAAMI,EAAOC,KACPS,EAAO,IAAKd,QACMe,IAApBD,EAAKE,aACLF,EAAKE,WAAaZ,EAAKJ,QAAQgB,iBAETD,IAAtBD,EAAKG,eACLH,EAAKG,aAAeb,EAAKJ,QAAQiB,cAErC,MAAMC,QAAiBd,EAAKO,QAAQX,GACpC,OAAQc,EAAKK,kBAAoBf,EAAKQ,eAAeQ,KAAKhB,EAAMc,EAAUJ,EAC9E,CAEA,aAAMH,CAAQX,EAAU,CAAC,GACrB,MAAMI,EAAOC,KACb,GAAIL,EAAQqB,YAAcrB,EAAQsB,KAAM,CACpC,MAAMC,QAAY,oCACZC,EAAO,CACTjB,QAASP,EAAQO,SAAWH,EAAKG,QACjCc,WAAYrB,EAAQqB,WACpBI,aAAcC,MAAMC,OAAOC,SAASC,KACpCC,QAAS9B,EAAQ+B,gBAAkB3B,EAAK2B,gBAAkB,QAC1DC,OAAQhC,EAAQgC,QAEdC,EAA6C,kBAAxBjC,EAAQiC,YAA4BjC,EAAQiC,YAAcjC,EAAQiC,aAAeP,MAAMC,OAAOC,SAASM,IAQlI,aAPuBC,EAAAA,EAAGC,KAAK,CAC3B9B,IAAKF,EAAKE,IACV+B,OAAQ,OACRJ,YAAaA,EACbR,aAAcC,MAAMC,OAAOC,SAASC,KACpCL,KAAMxB,EAAQsB,MAAQC,EAAIe,kBAAkBd,MAEhCA,IACpB,CAEI,MAAMe,MAAM,6CAEpB,CAEA3B,aAAAA,CAAcM,EAAUsB,GACpB,IAAIpC,EAAOC,KACX,GAAIa,EAASuB,YAAa,CACPvB,EAASuB,YACjBC,SAAQ,SAAUC,GACjBA,EAAM,GAAKvC,EAAKI,mBAChBmC,EAAM,GAAK,KAEnB,GACJ,CACA,OAAOzB,EAASuB,aAAe,EACnC,CAEAG,aAAAA,CAAcC,GAEd,CAEA,0BAAMC,GACF,IAAIC,EAAC1C,KAAIT,GAAqB,CACtBmD,EAAC1C,KAAIP,IACLkD,EAAA3C,KAAIP,EAA6B,wCAErC,MAAMmD,SAAiBF,EAAM1C,KAAIP,IAA4BoD,QAC7DF,EAAA3C,KAAIT,EAAsB,IAAIqD,EAAcd,EAAAA,EAAGgB,SACnD,CACA,OAAAJ,EAAO1C,KAAIT,EACf,E,o0BCpG4C,IAAAwD,EAAA,IAAAvD,QAAAwD,EAAA,IAAAC,QAEhD,MAAMC,UAA8BC,EAAAA,QAIhCzD,WAAAA,G,QACI0D,SAASC,W,IAAW,K,EAAAL,G,2CAAApD,CAAA,KAAAmD,EAAA,CAAAlD,UAAA,EAAAC,MAJR,iEAA8DwD,EAAA,0BAK1EtD,KAAKC,IAAMD,KAAKL,QAAQM,KAAO,uEAC/BD,KAAKG,iBAAmBH,KAAKL,QAAQQ,mBAAqB,MAC1DH,KAAKuD,UAAY,WACrB,CAEA,aAAMjD,CAAQX,EAAU,CAAC,S,4GACrB6D,CAAMxD,KAAIgD,EAAAS,GAAA1C,KAAJf,MAEN,IAAI0D,EAAiB/D,EAAQyC,YACzBzC,EAAQgE,KAAOhE,EAAQgE,MAAQ3D,KAAKuD,YACpCG,EAAiBtD,EAAAA,EAAKwD,UAAUF,EAAgB/D,EAAQgE,IAAK3D,KAAKuD,YAGtE,MAAMM,EAAMH,EAAeI,KAAKxB,GAAUA,EAAM,KAAIyB,KAAK,KACnDC,EAAMN,EAAeI,KAAKxB,GAAUA,EAAM,KAAIyB,KAAK,KACnDE,EAAc,GAAEjE,KAAKC,WAAW4D,SAAWG,cAAgBhE,KAAKkE,yBAEtE,mBAAoBlE,KAAKyC,wBAAwB0B,UAAUF,EAC/D,CAEA1D,aAAAA,CAAcM,EAAUlB,GACpB,GAAIkB,EAASuD,WAAY,CACrB,IAAIA,EAAavD,EAASuD,WAAWN,KAAKO,GAAS,CAACA,EAAKR,IAAKQ,EAAKL,IAAKK,EAAKC,KAI7E,OAHI3E,EAAQgE,KAAOhE,EAAQgE,MAAQ3D,KAAKuD,YACpCa,EAAahE,EAAAA,EAAKwD,UAAUQ,EAAYpE,KAAKuD,UAAW5D,EAAQgE,MAE7DP,MAAM7C,cAAcQ,KAAKf,KAAM,CAAEoC,YAAagC,GAAczE,EACvE,CACA,MAAO,EACX,EAyBH,eAAA8D,IAtBO,IAAKzD,KAAKkE,WAAY,KAAAK,EAClB,MAAMC,EAAwBA,KAC1BxE,KAAKkE,WA1CQ,kBA0CyB,EAG1C,IAAIrD,EACJ,IACIA,cAAwBb,KAAKyC,wBAAwB0B,UAASzB,EAAC1C,KAAI+C,GACvE,CACA,MAAO0B,GACHC,QAAQC,MAAMF,GACdD,GACJ,CACA,GAAsB,QAAtBD,EAAI1D,EAAS+D,iBAAS,IAAAL,GAAlBA,EAAoBM,OAAQ,CAC5B,MAAMC,EAAWjE,EAAS+D,UAAU,GACpC5E,KAAKkE,WAAaY,EAAStC,GAC/B,MAEIgC,GAER,CACJ,CAGJ,S","sources":["webpack://api-sitna/./TC/tool/ElevationService.js","webpack://api-sitna/./TC/tool/ElevationServiceIGNFr.js"],"sourcesContent":["import TC from '../../TC';\r\nimport Util from '../Util'\r\n/**\r\n * Opciones de servicio de obtención de elevaciones de puntos.\r\n * @typedef ElevationServiceOptions\r\n * @memberof SITNA\r\n * @see SITNA.ElevationOptions\r\n * @property {string[]} [allowedGeometryTypes] - Si se establece, indica para qué geometrías se van a hacer consultas \r\n * de elevación al servicio. Esto es conveniente por ejemplo si el servicio solo permite obtener elevaciones de un punto simple,\r\n * invalidándolo para la consulta si la geometría es un polígono o una línea. Los elementos del array tienen que ser cadenas \r\n * cuyos valores deben ser los definidos por [SITNA.Consts.geom]{@link SITNA.Consts}.\r\n * @property {string} [googleMapsKey] - Valor de una clave válida de la API de Google Maps. Solamente es necesaria cuando \r\n * el valor de la propiedad `name` es [SITNA.Consts.elevationService.GOOGLE]{@link SITNA.Consts}.\r\n *\r\n * Puede obtener más información en el [sitio para desarrolladores de Google](https://developers.google.com/maps/documentation/javascript/get-api-key).\r\n * @property {string} name - Nombre del servicio que queremos utilizar. Debe tener un valor de [SITNA.Consts.elevationService]{@link SITNA.Consts}.\r\n * @property {string} [url] - URL del servicio. Cada servicio de elevaciones de puntos tiene asignada una URL por defecto, \r\n * así que rara vez será necesario establecer esta propiedad.\r\n */\r\n\r\nclass ElevationService {\r\n #proxificationTool;\r\n #proxificationToolPromise;\r\n\r\n constructor(options) {\r\n const self = this;\r\n self.options = options || {};\r\n self.url = self.options.url;\r\n self.process = self.options.process;\r\n self.minimumElevation = self.options.minimumElevation;\r\n if (Util.isFunction(self.options.request)) {\r\n self.request = self.options.request;\r\n }\r\n if (Util.isFunction(self.options.parseResponse)) {\r\n self.parseResponse = self.options.parseResponse;\r\n }\r\n }\r\n\r\n async getElevation(options = {}) {\r\n const self = this;\r\n const opts = { ...options };\r\n if (opts.resolution === undefined) {\r\n opts.resolution = self.options.resolution;\r\n }\r\n if (opts.sampleNumber === undefined) {\r\n opts.sampleNumber = self.options.sampleNumber;\r\n }\r\n const response = await self.request(options);\r\n return (opts.responseCallback || self.parseResponse).call(self, response, opts);\r\n }\r\n\r\n async request(options = {}) {\r\n const self = this;\r\n if (options.dataInputs || options.body) {\r\n const WPS = await import('../format/WPS');\r\n const data = {\r\n process: options.process || self.process,\r\n dataInputs: options.dataInputs,\r\n responseType: SITNA.Consts.mimeType.JSON,\r\n version: options.serviceVersion || self.serviceVersion || '1.0.0',\r\n output: options.output\r\n };\r\n const contentType = typeof options.contentType === 'boolean' ? options.contentType : options.contentType || SITNA.Consts.mimeType.XML;\r\n const response = await TC.ajax({\r\n url: self.url,\r\n method: 'POST',\r\n contentType: contentType,\r\n responseType: SITNA.Consts.mimeType.JSON,\r\n data: options.body || WPS.buildExecuteQuery(data)\r\n });\r\n return response.data;\r\n }\r\n else {\r\n throw Error('Request is not valid for elevation service');\r\n }\r\n }\r\n\r\n parseResponse(response, _options) {\r\n var self = this;\r\n if (response.coordinates) {\r\n const coords = response.coordinates;\r\n coords.forEach(function (coord) {\r\n if (coord[2] < self.minimumElevation) {\r\n coord[2] = null;\r\n }\r\n });\r\n }\r\n return response.coordinates || [];\r\n }\r\n\r\n cancelRequest(_id) {\r\n\r\n }\r\n\r\n async getProxificationTool() {\r\n if (!this.#proxificationTool) {\r\n if (!this.#proxificationToolPromise) {\r\n this.#proxificationToolPromise = import('./Proxification');\r\n }\r\n const Proxification = (await this.#proxificationToolPromise).default;\r\n this.#proxificationTool = new Proxification(TC.proxify);\r\n }\r\n return this.#proxificationTool;\r\n }\r\n}\r\n\r\nexport default ElevationService;","import ElevationService from './ElevationService';\r\nimport Util from '../Util';\r\n\r\nconst FALLBACK_RESOURCE_ID = 'ign_rge_alti_wld';\r\n\r\nclass ElevationServiceIGNFr extends ElevationService {\r\n #resourcesUrl = 'https://data.geopf.fr/altimetrie/resources?keywords=Altitude';\r\n resourceId;\r\n\r\n constructor() {\r\n super(...arguments);\r\n this.url = this.options.url || 'https://data.geopf.fr/altimetrie/1.0/calcul/alti/rest/elevation.json';\r\n this.minimumElevation = this.options.minimumElevation || -99998;\r\n this.nativeCRS = 'EPSG:4326';\r\n }\r\n\r\n async request(options = {}) {\r\n await this.#init();\r\n\r\n let coordinateList = options.coordinates;\r\n if (options.crs && options.crs !== this.nativeCRS) {\r\n coordinateList = Util.reproject(coordinateList, options.crs, this.nativeCRS);\r\n }\r\n\r\n const lon = coordinateList.map((coord) => coord[0]).join('|');\r\n const lat = coordinateList.map((coord) => coord[1]).join('|');\r\n const requestUrl = `${this.url}?lon=${lon}&lat=${lat}&resource=${this.resourceId}&zonly=false`;\r\n\r\n return await (await this.getProxificationTool()).fetchJSON(requestUrl);\r\n }\r\n\r\n parseResponse(response, options) {\r\n if (response.elevations) {\r\n let elevations = response.elevations.map((elev) => [elev.lon, elev.lat, elev.z]);\r\n if (options.crs && options.crs !== this.nativeCRS) {\r\n elevations = Util.reproject(elevations, this.nativeCRS, options.crs);\r\n }\r\n return super.parseResponse.call(this, { coordinates: elevations }, options);\r\n }\r\n return [];\r\n }\r\n\r\n async #init() {\r\n if (!this.resourceId) {\r\n const setFallbackResourceId = () => {\r\n this.resourceId = FALLBACK_RESOURCE_ID;\r\n };\r\n\r\n let response;\r\n try {\r\n response = await (await this.getProxificationTool()).fetchJSON(this.#resourcesUrl);\r\n }\r\n catch (e) {\r\n console.error(e);\r\n setFallbackResourceId();\r\n }\r\n if (response.resources?.length) {\r\n const resource = response.resources[0];\r\n this.resourceId = resource._id;\r\n }\r\n else {\r\n setFallbackResourceId();\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport default ElevationServiceIGNFr;"],"names":["_proxificationTool","WeakMap","_proxificationToolPromise","constructor","options","_classPrivateFieldInitSpec","writable","value","self","this","url","process","minimumElevation","Util","isFunction","request","parseResponse","getElevation","opts","undefined","resolution","sampleNumber","response","responseCallback","call","dataInputs","body","WPS","data","responseType","SITNA","Consts","mimeType","JSON","version","serviceVersion","output","contentType","XML","TC","ajax","method","buildExecuteQuery","Error","_options","coordinates","forEach","coord","cancelRequest","_id","getProxificationTool","_classPrivateFieldGet","_classPrivateFieldSet","Proxification","default","proxify","_resourcesUrl","_init","WeakSet","ElevationServiceIGNFr","ElevationService","super","arguments","_defineProperty","nativeCRS","_classPrivateMethodGet","_init2","coordinateList","crs","reproject","lon","map","join","lat","requestUrl","resourceId","fetchJSON","elevations","elev","z","_response$resources","setFallbackResourceId","e","console","error","resources","length","resource"],"sourceRoot":""}