diff --git a/.nojekyll b/.nojekyll new file mode 100644 index 0000000..e69de29 diff --git a/404.html b/404.html new file mode 100644 index 0000000..1036c89 --- /dev/null +++ b/404.html @@ -0,0 +1,384 @@ + + + + + + + + + + + + + + + + + + PZP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+
+ +
+ + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ +

404 - Not found

+ +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/algorithms/index.html b/algorithms/index.html new file mode 100644 index 0000000..ef99d47 --- /dev/null +++ b/algorithms/index.html @@ -0,0 +1,1216 @@ + + + + + + + + + + + + + + + + + + + + + + Algoritmi - PZP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + Vai al contenuto + + +
+
+ +
+ + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

Algoritmi

+

Gli algoritmi utilizzati dal plugin sono anche disponibili in QGIS +come "Algoritmi di Processing" utilizzabili singolarmente.

+

Gli algoritmi sono parte del plugin pzp_utils che é una dipendenza +del plugin pzp e se necessario può anche essere installato +individualmente.

+

Algoritmi

+

Applica matrice

+

Applica matrice

+

Scopo

+

Questo algoritmo aggiunge un campo con il valore della matrice a ogni geometria del layer con le intensità

+

Parametri input

+
    +
  • Layer con le geometrie (intensità)
  • +
  • Campo contenente il periodo di ritorno
  • +
  • Campo contenente l'intensità
  • +
  • Matrice da utilizzare (predefinita o manuale)
  • +
+

Output

+

Viene generato un layer uguale al layer in ingresso con l'aggiunta di +un campo contenente il valore della matrice per ogni geometria.

+

Correggi geometrie

+

Correggi geometrie

+

Scopo

+

Questo algoritmo cerca di correggere gli errori più frequenti di digitalizzazione delle geometrie.

+

Parametri input

+
    +
  • Layer con le geometrie
  • +
+

Ouptut

+

Viene generato un layer con le geometrie corrette mantenendo gli attributi delle geometrie iniziali.

+

Vengono eseguite in particolare le seguenti operazioni:

+
    +
  • Aggancia punti al reticolo (con reticolo di 1mm)
  • +
  • Creazione e rimozione di un buffer negativo molto piccolo (1e-06 m) per rimuovere "sbavature" delle geometrie
  • +
  • Rimozione delle aree con superficie inferiore a 1m2
  • +
  • Rimozione dei buchi con superficie maggiore a 1m2
  • +
+

Fondi layer intensità

+

Fondi layer intensità

+

Scopo

+

Questo algoritmo permette di fondere nello stesso layer fino a 5 layer +singoli. In alcuni casi si hanno a disposizione layer separati per +ogni periodo di ritorno, questo plugin permette di definire per ogni +layer il periodo di ritorno considerato e fondere tutti i layer in un +unico layer.

+

Parametri input

+

Fino a 5x: +- Layer con le intensità + - Campo contenente le intensità +- Periodo di ritorno a cui si riferisce il layer

+

Output

+

Viene generato un layer con tutte le geometrie dei layer in ingresso +con l'aggiunta di un attributo per il periodo di ritorno.

+

Propagazione

+

Propagazione

+

Scopo

+

Questo algoritmo permette di calcolare le probabilità di accadimento (cioè le intensità per periodo di ritorno) in base alle linee di propagazione.

+

Parametri input

+
    +
  • Layer con le probabilità di rottura
  • +
  • Campo con la probabilità di rottura
  • +
  • Layer con le linee di propagazione
  • +
  • Campo con la probabilità di propagazione
  • +
  • Campo con la probabilità di rottura
  • +
+

Output

+

Viene generato un layer che contiene le intensità. Per ogni fonte di +processo e per ogni periodo di ritorno, vengono tagliate i poligoni +del layer con le probabilità di rottura secondo le linee di +propagazione corrispondenti definite nel layer delle probabilità di +propagazione.

+

Semplifica intensità

+

Semplifica intensità

+

Scopo

+

Questo algoritmo permette di semplificare le geometrie di un layer con +le intensità. È di particolare utilità in caso in cui le intensità +siano generata tramite tool di simulazione che generano geometrie +molto frastagliate.

+

Parametri input

+
    +
  • Layer con le intensità
  • +
  • Campo contenente le intensità
  • +
  • Area minima in m2 dei poligoni da considerare
  • +
  • Area massima in m2 per l'eliminazione dei buchi. Buchi più piccoli di così vengono eliminati.
  • +
  • Parametro "Chaiken threshold" dell'algoritmo generalize di GRASS utilizzato
  • +
  • Parametro "Reduce threshold" dell'algoritmo generalize di GRASS utilizzato
  • +
  • CRS
  • +
+

Output

+

Viene generato un layer con le geometrie semplificate

+
+

Nota

+

È necessario avere GRASS installato per poter utilizzare questo algoritmo

+
+

Zone di pericolo

+

Zone di pericolo

+

Scopo

+

Questo algoritmo permette la generazione delle zone di pericolo

+

Parametri input

+
    +
  • Layer con le intensità
  • +
  • Campo contenente il valore della matrice
  • +
  • Campo contenente la fonte del processo
  • +
+

Output

+

Viene generato un layer contenente le zone di pericolo. Per ogni fonte +di processo vengono tagliati tutti i poligoni in corrispondenza di +tutte le intersezioni, vengono mantenuti i poligoni duplicati con +valore maggiore e vengono fuse superfici con lo stesso valore.

+

Zone nessun impatto

+

Zone nessun impatto

+

Scopo

+

Questo algoritmo permette la generazione delle zone di nessun impatto

+

Parametri input

+
    +
  • Layer con le aree di studio
  • +
  • Campo contenente la fonte del processo
  • +
  • Layer con le intensità
  • +
  • Campo contenente il periodo di ritorno
  • +
  • Campo contenente l'intensità
  • +
  • Campo contenente la fonte del processo
  • +
+

Output

+

Viene generato un layer contenete le zone di nessun impatto per ogni +area di studio. In pratica, per ogni area di studio, viene creata una +geometria con intensità "nessun impatto" corrispondente a tutta la +superficie dell'area di studio non coperta da altre geometrie della +fonte di proceso in questione.

+

Rimuovi sovrapposizioni

+

Scopo

+

Questo algoritmo permette di rimuovere le sovrapposizioni nei layer delle intensità.

+

Parametri input

+
    +
  • Layer con le intensità
  • +
  • Campo contenente l'intensità
  • +
  • Campo contenente il periodo di ritorno
  • +
  • Campo contenente la fonte del processo
  • +
+

Output

+

Viene generato un layer dove sono state rimosse le sovrapposizioni +tenendo in considerazione lo stesso periodo di ritorno e la stessa +fonte di processo.

+

Fondi per area

+

Scopo

+

Questo algoritmo permette di rimuovere le piccole aree fondendole con +le geometrie confinanti

+

Parametri input

+
    +
  • Layer con le geometrie
  • +
  • Modalità di fusione
  • +
+

Output

+

Viene generato un layer dove le geometrie con area inferiore a 1m2 +sono state fuse con le geometrie adiacenti

+ + + + + + +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/assets/aggiungi_dati_base.gif b/assets/aggiungi_dati_base.gif new file mode 100644 index 0000000..7bfa492 Binary files /dev/null and b/assets/aggiungi_dati_base.gif differ diff --git a/assets/aggiungi_processo.gif b/assets/aggiungi_processo.gif new file mode 100644 index 0000000..01adce2 Binary files /dev/null and b/assets/aggiungi_processo.gif differ diff --git a/assets/aggiungi_processo.webm b/assets/aggiungi_processo.webm new file mode 100644 index 0000000..8e9385c Binary files /dev/null and b/assets/aggiungi_processo.webm differ diff --git a/assets/algoritmi.png b/assets/algoritmi.png new file mode 100644 index 0000000..d50da14 Binary files /dev/null and b/assets/algoritmi.png differ diff --git a/assets/algoritmo_applica_matrice.png b/assets/algoritmo_applica_matrice.png new file mode 100644 index 0000000..c3b8537 Binary files /dev/null and b/assets/algoritmo_applica_matrice.png differ diff --git a/assets/algoritmo_correggi_geometrie.png b/assets/algoritmo_correggi_geometrie.png new file mode 100644 index 0000000..9a08b98 Binary files /dev/null and b/assets/algoritmo_correggi_geometrie.png differ diff --git a/assets/algoritmo_fondi_intensita.png b/assets/algoritmo_fondi_intensita.png new file mode 100644 index 0000000..5c561c2 Binary files /dev/null and b/assets/algoritmo_fondi_intensita.png differ diff --git a/assets/algoritmo_propagazione.png b/assets/algoritmo_propagazione.png new file mode 100644 index 0000000..a89fd0a Binary files /dev/null and b/assets/algoritmo_propagazione.png differ diff --git a/assets/algoritmo_semplifica_intensita.png b/assets/algoritmo_semplifica_intensita.png new file mode 100644 index 0000000..3a25785 Binary files /dev/null and b/assets/algoritmo_semplifica_intensita.png differ diff --git a/assets/algoritmo_zone_nessun_impatto.png b/assets/algoritmo_zone_nessun_impatto.png new file mode 100644 index 0000000..24d52cc Binary files /dev/null and b/assets/algoritmo_zone_nessun_impatto.png differ diff --git a/assets/algoritmo_zone_pericolo.png b/assets/algoritmo_zone_pericolo.png new file mode 100644 index 0000000..56cdaad Binary files /dev/null and b/assets/algoritmo_zone_pericolo.png differ diff --git a/assets/calcolo_nessun_impatto.gif b/assets/calcolo_nessun_impatto.gif new file mode 100644 index 0000000..f5962ec Binary files /dev/null and b/assets/calcolo_nessun_impatto.gif differ diff --git a/assets/calcolo_propagazione.gif b/assets/calcolo_propagazione.gif new file mode 100644 index 0000000..75b06fc Binary files /dev/null and b/assets/calcolo_propagazione.gif differ diff --git a/assets/calcolo_zone_pericolo.gif b/assets/calcolo_zone_pericolo.gif new file mode 100644 index 0000000..73b1350 Binary files /dev/null and b/assets/calcolo_zone_pericolo.gif differ diff --git a/assets/images/favicon.png b/assets/images/favicon.png new file mode 100644 index 0000000..1cf13b9 Binary files /dev/null and b/assets/images/favicon.png differ diff --git a/assets/javascripts/bundle.220ee61c.min.js b/assets/javascripts/bundle.220ee61c.min.js new file mode 100644 index 0000000..116072a --- /dev/null +++ b/assets/javascripts/bundle.220ee61c.min.js @@ -0,0 +1,29 @@ +"use strict";(()=>{var Ci=Object.create;var gr=Object.defineProperty;var Ri=Object.getOwnPropertyDescriptor;var ki=Object.getOwnPropertyNames,Ht=Object.getOwnPropertySymbols,Hi=Object.getPrototypeOf,yr=Object.prototype.hasOwnProperty,nn=Object.prototype.propertyIsEnumerable;var rn=(e,t,r)=>t in e?gr(e,t,{enumerable:!0,configurable:!0,writable:!0,value:r}):e[t]=r,P=(e,t)=>{for(var r in t||(t={}))yr.call(t,r)&&rn(e,r,t[r]);if(Ht)for(var r of Ht(t))nn.call(t,r)&&rn(e,r,t[r]);return e};var on=(e,t)=>{var r={};for(var n in e)yr.call(e,n)&&t.indexOf(n)<0&&(r[n]=e[n]);if(e!=null&&Ht)for(var n of Ht(e))t.indexOf(n)<0&&nn.call(e,n)&&(r[n]=e[n]);return r};var Pt=(e,t)=>()=>(t||e((t={exports:{}}).exports,t),t.exports);var Pi=(e,t,r,n)=>{if(t&&typeof t=="object"||typeof t=="function")for(let o of ki(t))!yr.call(e,o)&&o!==r&&gr(e,o,{get:()=>t[o],enumerable:!(n=Ri(t,o))||n.enumerable});return e};var yt=(e,t,r)=>(r=e!=null?Ci(Hi(e)):{},Pi(t||!e||!e.__esModule?gr(r,"default",{value:e,enumerable:!0}):r,e));var sn=Pt((xr,an)=>{(function(e,t){typeof xr=="object"&&typeof an!="undefined"?t():typeof define=="function"&&define.amd?define(t):t()})(xr,function(){"use strict";function e(r){var n=!0,o=!1,i=null,s={text:!0,search:!0,url:!0,tel:!0,email:!0,password:!0,number:!0,date:!0,month:!0,week:!0,time:!0,datetime:!0,"datetime-local":!0};function a(O){return!!(O&&O!==document&&O.nodeName!=="HTML"&&O.nodeName!=="BODY"&&"classList"in O&&"contains"in O.classList)}function f(O){var Qe=O.type,De=O.tagName;return!!(De==="INPUT"&&s[Qe]&&!O.readOnly||De==="TEXTAREA"&&!O.readOnly||O.isContentEditable)}function c(O){O.classList.contains("focus-visible")||(O.classList.add("focus-visible"),O.setAttribute("data-focus-visible-added",""))}function u(O){O.hasAttribute("data-focus-visible-added")&&(O.classList.remove("focus-visible"),O.removeAttribute("data-focus-visible-added"))}function p(O){O.metaKey||O.altKey||O.ctrlKey||(a(r.activeElement)&&c(r.activeElement),n=!0)}function m(O){n=!1}function d(O){a(O.target)&&(n||f(O.target))&&c(O.target)}function h(O){a(O.target)&&(O.target.classList.contains("focus-visible")||O.target.hasAttribute("data-focus-visible-added"))&&(o=!0,window.clearTimeout(i),i=window.setTimeout(function(){o=!1},100),u(O.target))}function v(O){document.visibilityState==="hidden"&&(o&&(n=!0),Y())}function Y(){document.addEventListener("mousemove",N),document.addEventListener("mousedown",N),document.addEventListener("mouseup",N),document.addEventListener("pointermove",N),document.addEventListener("pointerdown",N),document.addEventListener("pointerup",N),document.addEventListener("touchmove",N),document.addEventListener("touchstart",N),document.addEventListener("touchend",N)}function B(){document.removeEventListener("mousemove",N),document.removeEventListener("mousedown",N),document.removeEventListener("mouseup",N),document.removeEventListener("pointermove",N),document.removeEventListener("pointerdown",N),document.removeEventListener("pointerup",N),document.removeEventListener("touchmove",N),document.removeEventListener("touchstart",N),document.removeEventListener("touchend",N)}function N(O){O.target.nodeName&&O.target.nodeName.toLowerCase()==="html"||(n=!1,B())}document.addEventListener("keydown",p,!0),document.addEventListener("mousedown",m,!0),document.addEventListener("pointerdown",m,!0),document.addEventListener("touchstart",m,!0),document.addEventListener("visibilitychange",v,!0),Y(),r.addEventListener("focus",d,!0),r.addEventListener("blur",h,!0),r.nodeType===Node.DOCUMENT_FRAGMENT_NODE&&r.host?r.host.setAttribute("data-js-focus-visible",""):r.nodeType===Node.DOCUMENT_NODE&&(document.documentElement.classList.add("js-focus-visible"),document.documentElement.setAttribute("data-js-focus-visible",""))}if(typeof window!="undefined"&&typeof document!="undefined"){window.applyFocusVisiblePolyfill=e;var t;try{t=new CustomEvent("focus-visible-polyfill-ready")}catch(r){t=document.createEvent("CustomEvent"),t.initCustomEvent("focus-visible-polyfill-ready",!1,!1,{})}window.dispatchEvent(t)}typeof document!="undefined"&&e(document)})});var cn=Pt(Er=>{(function(e){var t=function(){try{return!!Symbol.iterator}catch(c){return!1}},r=t(),n=function(c){var u={next:function(){var p=c.shift();return{done:p===void 0,value:p}}};return r&&(u[Symbol.iterator]=function(){return u}),u},o=function(c){return encodeURIComponent(c).replace(/%20/g,"+")},i=function(c){return decodeURIComponent(String(c).replace(/\+/g," "))},s=function(){var c=function(p){Object.defineProperty(this,"_entries",{writable:!0,value:{}});var m=typeof p;if(m!=="undefined")if(m==="string")p!==""&&this._fromString(p);else if(p instanceof c){var d=this;p.forEach(function(B,N){d.append(N,B)})}else if(p!==null&&m==="object")if(Object.prototype.toString.call(p)==="[object Array]")for(var h=0;hd[0]?1:0}),c._entries&&(c._entries={});for(var p=0;p1?i(d[1]):"")}})})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Er);(function(e){var t=function(){try{var o=new e.URL("b","http://a");return o.pathname="c d",o.href==="http://a/c%20d"&&o.searchParams}catch(i){return!1}},r=function(){var o=e.URL,i=function(f,c){typeof f!="string"&&(f=String(f)),c&&typeof c!="string"&&(c=String(c));var u=document,p;if(c&&(e.location===void 0||c!==e.location.href)){c=c.toLowerCase(),u=document.implementation.createHTMLDocument(""),p=u.createElement("base"),p.href=c,u.head.appendChild(p);try{if(p.href.indexOf(c)!==0)throw new Error(p.href)}catch(O){throw new Error("URL unable to set base "+c+" due to "+O)}}var m=u.createElement("a");m.href=f,p&&(u.body.appendChild(m),m.href=m.href);var d=u.createElement("input");if(d.type="url",d.value=f,m.protocol===":"||!/:/.test(m.href)||!d.checkValidity()&&!c)throw new TypeError("Invalid URL");Object.defineProperty(this,"_anchorElement",{value:m});var h=new e.URLSearchParams(this.search),v=!0,Y=!0,B=this;["append","delete","set"].forEach(function(O){var Qe=h[O];h[O]=function(){Qe.apply(h,arguments),v&&(Y=!1,B.search=h.toString(),Y=!0)}}),Object.defineProperty(this,"searchParams",{value:h,enumerable:!0});var N=void 0;Object.defineProperty(this,"_updateSearchParams",{enumerable:!1,configurable:!1,writable:!1,value:function(){this.search!==N&&(N=this.search,Y&&(v=!1,this.searchParams._fromString(this.search),v=!0))}})},s=i.prototype,a=function(f){Object.defineProperty(s,f,{get:function(){return this._anchorElement[f]},set:function(c){this._anchorElement[f]=c},enumerable:!0})};["hash","host","hostname","port","protocol"].forEach(function(f){a(f)}),Object.defineProperty(s,"search",{get:function(){return this._anchorElement.search},set:function(f){this._anchorElement.search=f,this._updateSearchParams()},enumerable:!0}),Object.defineProperties(s,{toString:{get:function(){var f=this;return function(){return f.href}}},href:{get:function(){return this._anchorElement.href.replace(/\?$/,"")},set:function(f){this._anchorElement.href=f,this._updateSearchParams()},enumerable:!0},pathname:{get:function(){return this._anchorElement.pathname.replace(/(^\/?)/,"/")},set:function(f){this._anchorElement.pathname=f},enumerable:!0},origin:{get:function(){var f={"http:":80,"https:":443,"ftp:":21}[this._anchorElement.protocol],c=this._anchorElement.port!=f&&this._anchorElement.port!=="";return this._anchorElement.protocol+"//"+this._anchorElement.hostname+(c?":"+this._anchorElement.port:"")},enumerable:!0},password:{get:function(){return""},set:function(f){},enumerable:!0},username:{get:function(){return""},set:function(f){},enumerable:!0}}),i.createObjectURL=function(f){return o.createObjectURL.apply(o,arguments)},i.revokeObjectURL=function(f){return o.revokeObjectURL.apply(o,arguments)},e.URL=i};if(t()||r(),e.location!==void 0&&!("origin"in e.location)){var n=function(){return e.location.protocol+"//"+e.location.hostname+(e.location.port?":"+e.location.port:"")};try{Object.defineProperty(e.location,"origin",{get:n,enumerable:!0})}catch(o){setInterval(function(){e.location.origin=n()},100)}}})(typeof global!="undefined"?global:typeof window!="undefined"?window:typeof self!="undefined"?self:Er)});var qr=Pt((Mt,Nr)=>{/*! + * clipboard.js v2.0.11 + * https://clipboardjs.com/ + * + * Licensed MIT © Zeno Rocha + */(function(t,r){typeof Mt=="object"&&typeof Nr=="object"?Nr.exports=r():typeof define=="function"&&define.amd?define([],r):typeof Mt=="object"?Mt.ClipboardJS=r():t.ClipboardJS=r()})(Mt,function(){return function(){var e={686:function(n,o,i){"use strict";i.d(o,{default:function(){return Ai}});var s=i(279),a=i.n(s),f=i(370),c=i.n(f),u=i(817),p=i.n(u);function m(j){try{return document.execCommand(j)}catch(T){return!1}}var d=function(T){var E=p()(T);return m("cut"),E},h=d;function v(j){var T=document.documentElement.getAttribute("dir")==="rtl",E=document.createElement("textarea");E.style.fontSize="12pt",E.style.border="0",E.style.padding="0",E.style.margin="0",E.style.position="absolute",E.style[T?"right":"left"]="-9999px";var H=window.pageYOffset||document.documentElement.scrollTop;return E.style.top="".concat(H,"px"),E.setAttribute("readonly",""),E.value=j,E}var Y=function(T,E){var H=v(T);E.container.appendChild(H);var I=p()(H);return m("copy"),H.remove(),I},B=function(T){var E=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body},H="";return typeof T=="string"?H=Y(T,E):T instanceof HTMLInputElement&&!["text","search","url","tel","password"].includes(T==null?void 0:T.type)?H=Y(T.value,E):(H=p()(T),m("copy")),H},N=B;function O(j){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?O=function(E){return typeof E}:O=function(E){return E&&typeof Symbol=="function"&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},O(j)}var Qe=function(){var T=arguments.length>0&&arguments[0]!==void 0?arguments[0]:{},E=T.action,H=E===void 0?"copy":E,I=T.container,q=T.target,Me=T.text;if(H!=="copy"&&H!=="cut")throw new Error('Invalid "action" value, use either "copy" or "cut"');if(q!==void 0)if(q&&O(q)==="object"&&q.nodeType===1){if(H==="copy"&&q.hasAttribute("disabled"))throw new Error('Invalid "target" attribute. Please use "readonly" instead of "disabled" attribute');if(H==="cut"&&(q.hasAttribute("readonly")||q.hasAttribute("disabled")))throw new Error(`Invalid "target" attribute. You can't cut text from elements with "readonly" or "disabled" attributes`)}else throw new Error('Invalid "target" value, use a valid Element');if(Me)return N(Me,{container:I});if(q)return H==="cut"?h(q):N(q,{container:I})},De=Qe;function $e(j){"@babel/helpers - typeof";return typeof Symbol=="function"&&typeof Symbol.iterator=="symbol"?$e=function(E){return typeof E}:$e=function(E){return E&&typeof Symbol=="function"&&E.constructor===Symbol&&E!==Symbol.prototype?"symbol":typeof E},$e(j)}function Ei(j,T){if(!(j instanceof T))throw new TypeError("Cannot call a class as a function")}function tn(j,T){for(var E=0;E0&&arguments[0]!==void 0?arguments[0]:{};this.action=typeof I.action=="function"?I.action:this.defaultAction,this.target=typeof I.target=="function"?I.target:this.defaultTarget,this.text=typeof I.text=="function"?I.text:this.defaultText,this.container=$e(I.container)==="object"?I.container:document.body}},{key:"listenClick",value:function(I){var q=this;this.listener=c()(I,"click",function(Me){return q.onClick(Me)})}},{key:"onClick",value:function(I){var q=I.delegateTarget||I.currentTarget,Me=this.action(q)||"copy",kt=De({action:Me,container:this.container,target:this.target(q),text:this.text(q)});this.emit(kt?"success":"error",{action:Me,text:kt,trigger:q,clearSelection:function(){q&&q.focus(),window.getSelection().removeAllRanges()}})}},{key:"defaultAction",value:function(I){return vr("action",I)}},{key:"defaultTarget",value:function(I){var q=vr("target",I);if(q)return document.querySelector(q)}},{key:"defaultText",value:function(I){return vr("text",I)}},{key:"destroy",value:function(){this.listener.destroy()}}],[{key:"copy",value:function(I){var q=arguments.length>1&&arguments[1]!==void 0?arguments[1]:{container:document.body};return N(I,q)}},{key:"cut",value:function(I){return h(I)}},{key:"isSupported",value:function(){var I=arguments.length>0&&arguments[0]!==void 0?arguments[0]:["copy","cut"],q=typeof I=="string"?[I]:I,Me=!!document.queryCommandSupported;return q.forEach(function(kt){Me=Me&&!!document.queryCommandSupported(kt)}),Me}}]),E}(a()),Ai=Li},828:function(n){var o=9;if(typeof Element!="undefined"&&!Element.prototype.matches){var i=Element.prototype;i.matches=i.matchesSelector||i.mozMatchesSelector||i.msMatchesSelector||i.oMatchesSelector||i.webkitMatchesSelector}function s(a,f){for(;a&&a.nodeType!==o;){if(typeof a.matches=="function"&&a.matches(f))return a;a=a.parentNode}}n.exports=s},438:function(n,o,i){var s=i(828);function a(u,p,m,d,h){var v=c.apply(this,arguments);return u.addEventListener(m,v,h),{destroy:function(){u.removeEventListener(m,v,h)}}}function f(u,p,m,d,h){return typeof u.addEventListener=="function"?a.apply(null,arguments):typeof m=="function"?a.bind(null,document).apply(null,arguments):(typeof u=="string"&&(u=document.querySelectorAll(u)),Array.prototype.map.call(u,function(v){return a(v,p,m,d,h)}))}function c(u,p,m,d){return function(h){h.delegateTarget=s(h.target,p),h.delegateTarget&&d.call(u,h)}}n.exports=f},879:function(n,o){o.node=function(i){return i!==void 0&&i instanceof HTMLElement&&i.nodeType===1},o.nodeList=function(i){var s=Object.prototype.toString.call(i);return i!==void 0&&(s==="[object NodeList]"||s==="[object HTMLCollection]")&&"length"in i&&(i.length===0||o.node(i[0]))},o.string=function(i){return typeof i=="string"||i instanceof String},o.fn=function(i){var s=Object.prototype.toString.call(i);return s==="[object Function]"}},370:function(n,o,i){var s=i(879),a=i(438);function f(m,d,h){if(!m&&!d&&!h)throw new Error("Missing required arguments");if(!s.string(d))throw new TypeError("Second argument must be a String");if(!s.fn(h))throw new TypeError("Third argument must be a Function");if(s.node(m))return c(m,d,h);if(s.nodeList(m))return u(m,d,h);if(s.string(m))return p(m,d,h);throw new TypeError("First argument must be a String, HTMLElement, HTMLCollection, or NodeList")}function c(m,d,h){return m.addEventListener(d,h),{destroy:function(){m.removeEventListener(d,h)}}}function u(m,d,h){return Array.prototype.forEach.call(m,function(v){v.addEventListener(d,h)}),{destroy:function(){Array.prototype.forEach.call(m,function(v){v.removeEventListener(d,h)})}}}function p(m,d,h){return a(document.body,m,d,h)}n.exports=f},817:function(n){function o(i){var s;if(i.nodeName==="SELECT")i.focus(),s=i.value;else if(i.nodeName==="INPUT"||i.nodeName==="TEXTAREA"){var a=i.hasAttribute("readonly");a||i.setAttribute("readonly",""),i.select(),i.setSelectionRange(0,i.value.length),a||i.removeAttribute("readonly"),s=i.value}else{i.hasAttribute("contenteditable")&&i.focus();var f=window.getSelection(),c=document.createRange();c.selectNodeContents(i),f.removeAllRanges(),f.addRange(c),s=f.toString()}return s}n.exports=o},279:function(n){function o(){}o.prototype={on:function(i,s,a){var f=this.e||(this.e={});return(f[i]||(f[i]=[])).push({fn:s,ctx:a}),this},once:function(i,s,a){var f=this;function c(){f.off(i,c),s.apply(a,arguments)}return c._=s,this.on(i,c,a)},emit:function(i){var s=[].slice.call(arguments,1),a=((this.e||(this.e={}))[i]||[]).slice(),f=0,c=a.length;for(f;f{"use strict";/*! + * escape-html + * Copyright(c) 2012-2013 TJ Holowaychuk + * Copyright(c) 2015 Andreas Lubbe + * Copyright(c) 2015 Tiancheng "Timothy" Gu + * MIT Licensed + */var rs=/["'&<>]/;Yo.exports=ns;function ns(e){var t=""+e,r=rs.exec(t);if(!r)return t;var n,o="",i=0,s=0;for(i=r.index;i0&&i[i.length-1])&&(c[0]===6||c[0]===2)){r=0;continue}if(c[0]===3&&(!i||c[1]>i[0]&&c[1]=e.length&&(e=void 0),{value:e&&e[n++],done:!e}}};throw new TypeError(t?"Object is not iterable.":"Symbol.iterator is not defined.")}function W(e,t){var r=typeof Symbol=="function"&&e[Symbol.iterator];if(!r)return e;var n=r.call(e),o,i=[],s;try{for(;(t===void 0||t-- >0)&&!(o=n.next()).done;)i.push(o.value)}catch(a){s={error:a}}finally{try{o&&!o.done&&(r=n.return)&&r.call(n)}finally{if(s)throw s.error}}return i}function D(e,t,r){if(r||arguments.length===2)for(var n=0,o=t.length,i;n1||a(m,d)})})}function a(m,d){try{f(n[m](d))}catch(h){p(i[0][3],h)}}function f(m){m.value instanceof et?Promise.resolve(m.value.v).then(c,u):p(i[0][2],m)}function c(m){a("next",m)}function u(m){a("throw",m)}function p(m,d){m(d),i.shift(),i.length&&a(i[0][0],i[0][1])}}function pn(e){if(!Symbol.asyncIterator)throw new TypeError("Symbol.asyncIterator is not defined.");var t=e[Symbol.asyncIterator],r;return t?t.call(e):(e=typeof Ee=="function"?Ee(e):e[Symbol.iterator](),r={},n("next"),n("throw"),n("return"),r[Symbol.asyncIterator]=function(){return this},r);function n(i){r[i]=e[i]&&function(s){return new Promise(function(a,f){s=e[i](s),o(a,f,s.done,s.value)})}}function o(i,s,a,f){Promise.resolve(f).then(function(c){i({value:c,done:a})},s)}}function C(e){return typeof e=="function"}function at(e){var t=function(n){Error.call(n),n.stack=new Error().stack},r=e(t);return r.prototype=Object.create(Error.prototype),r.prototype.constructor=r,r}var It=at(function(e){return function(r){e(this),this.message=r?r.length+` errors occurred during unsubscription: +`+r.map(function(n,o){return o+1+") "+n.toString()}).join(` + `):"",this.name="UnsubscriptionError",this.errors=r}});function Ve(e,t){if(e){var r=e.indexOf(t);0<=r&&e.splice(r,1)}}var Ie=function(){function e(t){this.initialTeardown=t,this.closed=!1,this._parentage=null,this._finalizers=null}return e.prototype.unsubscribe=function(){var t,r,n,o,i;if(!this.closed){this.closed=!0;var s=this._parentage;if(s)if(this._parentage=null,Array.isArray(s))try{for(var a=Ee(s),f=a.next();!f.done;f=a.next()){var c=f.value;c.remove(this)}}catch(v){t={error:v}}finally{try{f&&!f.done&&(r=a.return)&&r.call(a)}finally{if(t)throw t.error}}else s.remove(this);var u=this.initialTeardown;if(C(u))try{u()}catch(v){i=v instanceof It?v.errors:[v]}var p=this._finalizers;if(p){this._finalizers=null;try{for(var m=Ee(p),d=m.next();!d.done;d=m.next()){var h=d.value;try{ln(h)}catch(v){i=i!=null?i:[],v instanceof It?i=D(D([],W(i)),W(v.errors)):i.push(v)}}}catch(v){n={error:v}}finally{try{d&&!d.done&&(o=m.return)&&o.call(m)}finally{if(n)throw n.error}}}if(i)throw new It(i)}},e.prototype.add=function(t){var r;if(t&&t!==this)if(this.closed)ln(t);else{if(t instanceof e){if(t.closed||t._hasParent(this))return;t._addParent(this)}(this._finalizers=(r=this._finalizers)!==null&&r!==void 0?r:[]).push(t)}},e.prototype._hasParent=function(t){var r=this._parentage;return r===t||Array.isArray(r)&&r.includes(t)},e.prototype._addParent=function(t){var r=this._parentage;this._parentage=Array.isArray(r)?(r.push(t),r):r?[r,t]:t},e.prototype._removeParent=function(t){var r=this._parentage;r===t?this._parentage=null:Array.isArray(r)&&Ve(r,t)},e.prototype.remove=function(t){var r=this._finalizers;r&&Ve(r,t),t instanceof e&&t._removeParent(this)},e.EMPTY=function(){var t=new e;return t.closed=!0,t}(),e}();var Sr=Ie.EMPTY;function jt(e){return e instanceof Ie||e&&"closed"in e&&C(e.remove)&&C(e.add)&&C(e.unsubscribe)}function ln(e){C(e)?e():e.unsubscribe()}var Le={onUnhandledError:null,onStoppedNotification:null,Promise:void 0,useDeprecatedSynchronousErrorHandling:!1,useDeprecatedNextContext:!1};var st={setTimeout:function(e,t){for(var r=[],n=2;n0},enumerable:!1,configurable:!0}),t.prototype._trySubscribe=function(r){return this._throwIfClosed(),e.prototype._trySubscribe.call(this,r)},t.prototype._subscribe=function(r){return this._throwIfClosed(),this._checkFinalizedStatuses(r),this._innerSubscribe(r)},t.prototype._innerSubscribe=function(r){var n=this,o=this,i=o.hasError,s=o.isStopped,a=o.observers;return i||s?Sr:(this.currentObservers=null,a.push(r),new Ie(function(){n.currentObservers=null,Ve(a,r)}))},t.prototype._checkFinalizedStatuses=function(r){var n=this,o=n.hasError,i=n.thrownError,s=n.isStopped;o?r.error(i):s&&r.complete()},t.prototype.asObservable=function(){var r=new F;return r.source=this,r},t.create=function(r,n){return new xn(r,n)},t}(F);var xn=function(e){ie(t,e);function t(r,n){var o=e.call(this)||this;return o.destination=r,o.source=n,o}return t.prototype.next=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.next)===null||o===void 0||o.call(n,r)},t.prototype.error=function(r){var n,o;(o=(n=this.destination)===null||n===void 0?void 0:n.error)===null||o===void 0||o.call(n,r)},t.prototype.complete=function(){var r,n;(n=(r=this.destination)===null||r===void 0?void 0:r.complete)===null||n===void 0||n.call(r)},t.prototype._subscribe=function(r){var n,o;return(o=(n=this.source)===null||n===void 0?void 0:n.subscribe(r))!==null&&o!==void 0?o:Sr},t}(x);var Et={now:function(){return(Et.delegate||Date).now()},delegate:void 0};var wt=function(e){ie(t,e);function t(r,n,o){r===void 0&&(r=1/0),n===void 0&&(n=1/0),o===void 0&&(o=Et);var i=e.call(this)||this;return i._bufferSize=r,i._windowTime=n,i._timestampProvider=o,i._buffer=[],i._infiniteTimeWindow=!0,i._infiniteTimeWindow=n===1/0,i._bufferSize=Math.max(1,r),i._windowTime=Math.max(1,n),i}return t.prototype.next=function(r){var n=this,o=n.isStopped,i=n._buffer,s=n._infiniteTimeWindow,a=n._timestampProvider,f=n._windowTime;o||(i.push(r),!s&&i.push(a.now()+f)),this._trimBuffer(),e.prototype.next.call(this,r)},t.prototype._subscribe=function(r){this._throwIfClosed(),this._trimBuffer();for(var n=this._innerSubscribe(r),o=this,i=o._infiniteTimeWindow,s=o._buffer,a=s.slice(),f=0;f0?e.prototype.requestAsyncId.call(this,r,n,o):(r.actions.push(this),r._scheduled||(r._scheduled=ut.requestAnimationFrame(function(){return r.flush(void 0)})))},t.prototype.recycleAsyncId=function(r,n,o){var i;if(o===void 0&&(o=0),o!=null?o>0:this.delay>0)return e.prototype.recycleAsyncId.call(this,r,n,o);var s=r.actions;n!=null&&((i=s[s.length-1])===null||i===void 0?void 0:i.id)!==n&&(ut.cancelAnimationFrame(n),r._scheduled=void 0)},t}(Wt);var Sn=function(e){ie(t,e);function t(){return e!==null&&e.apply(this,arguments)||this}return t.prototype.flush=function(r){this._active=!0;var n=this._scheduled;this._scheduled=void 0;var o=this.actions,i;r=r||o.shift();do if(i=r.execute(r.state,r.delay))break;while((r=o[0])&&r.id===n&&o.shift());if(this._active=!1,i){for(;(r=o[0])&&r.id===n&&o.shift();)r.unsubscribe();throw i}},t}(Dt);var Oe=new Sn(wn);var M=new F(function(e){return e.complete()});function Vt(e){return e&&C(e.schedule)}function Cr(e){return e[e.length-1]}function Ye(e){return C(Cr(e))?e.pop():void 0}function Te(e){return Vt(Cr(e))?e.pop():void 0}function zt(e,t){return typeof Cr(e)=="number"?e.pop():t}var pt=function(e){return e&&typeof e.length=="number"&&typeof e!="function"};function Nt(e){return C(e==null?void 0:e.then)}function qt(e){return C(e[ft])}function Kt(e){return Symbol.asyncIterator&&C(e==null?void 0:e[Symbol.asyncIterator])}function Qt(e){return new TypeError("You provided "+(e!==null&&typeof e=="object"?"an invalid object":"'"+e+"'")+" where a stream was expected. You can provide an Observable, Promise, ReadableStream, Array, AsyncIterable, or Iterable.")}function zi(){return typeof Symbol!="function"||!Symbol.iterator?"@@iterator":Symbol.iterator}var Yt=zi();function Gt(e){return C(e==null?void 0:e[Yt])}function Bt(e){return un(this,arguments,function(){var r,n,o,i;return $t(this,function(s){switch(s.label){case 0:r=e.getReader(),s.label=1;case 1:s.trys.push([1,,9,10]),s.label=2;case 2:return[4,et(r.read())];case 3:return n=s.sent(),o=n.value,i=n.done,i?[4,et(void 0)]:[3,5];case 4:return[2,s.sent()];case 5:return[4,et(o)];case 6:return[4,s.sent()];case 7:return s.sent(),[3,2];case 8:return[3,10];case 9:return r.releaseLock(),[7];case 10:return[2]}})})}function Jt(e){return C(e==null?void 0:e.getReader)}function U(e){if(e instanceof F)return e;if(e!=null){if(qt(e))return Ni(e);if(pt(e))return qi(e);if(Nt(e))return Ki(e);if(Kt(e))return On(e);if(Gt(e))return Qi(e);if(Jt(e))return Yi(e)}throw Qt(e)}function Ni(e){return new F(function(t){var r=e[ft]();if(C(r.subscribe))return r.subscribe(t);throw new TypeError("Provided object does not correctly implement Symbol.observable")})}function qi(e){return new F(function(t){for(var r=0;r=2;return function(n){return n.pipe(e?A(function(o,i){return e(o,i,n)}):de,ge(1),r?He(t):Dn(function(){return new Zt}))}}function Vn(){for(var e=[],t=0;t=2,!0))}function pe(e){e===void 0&&(e={});var t=e.connector,r=t===void 0?function(){return new x}:t,n=e.resetOnError,o=n===void 0?!0:n,i=e.resetOnComplete,s=i===void 0?!0:i,a=e.resetOnRefCountZero,f=a===void 0?!0:a;return function(c){var u,p,m,d=0,h=!1,v=!1,Y=function(){p==null||p.unsubscribe(),p=void 0},B=function(){Y(),u=m=void 0,h=v=!1},N=function(){var O=u;B(),O==null||O.unsubscribe()};return y(function(O,Qe){d++,!v&&!h&&Y();var De=m=m!=null?m:r();Qe.add(function(){d--,d===0&&!v&&!h&&(p=$r(N,f))}),De.subscribe(Qe),!u&&d>0&&(u=new rt({next:function($e){return De.next($e)},error:function($e){v=!0,Y(),p=$r(B,o,$e),De.error($e)},complete:function(){h=!0,Y(),p=$r(B,s),De.complete()}}),U(O).subscribe(u))})(c)}}function $r(e,t){for(var r=[],n=2;ne.next(document)),e}function K(e,t=document){return Array.from(t.querySelectorAll(e))}function z(e,t=document){let r=ce(e,t);if(typeof r=="undefined")throw new ReferenceError(`Missing element: expected "${e}" to be present`);return r}function ce(e,t=document){return t.querySelector(e)||void 0}function _e(){return document.activeElement instanceof HTMLElement&&document.activeElement||void 0}function tr(e){return L(b(document.body,"focusin"),b(document.body,"focusout")).pipe(ke(1),l(()=>{let t=_e();return typeof t!="undefined"?e.contains(t):!1}),V(e===_e()),J())}function Xe(e){return{x:e.offsetLeft,y:e.offsetTop}}function Kn(e){return L(b(window,"load"),b(window,"resize")).pipe(Ce(0,Oe),l(()=>Xe(e)),V(Xe(e)))}function rr(e){return{x:e.scrollLeft,y:e.scrollTop}}function dt(e){return L(b(e,"scroll"),b(window,"resize")).pipe(Ce(0,Oe),l(()=>rr(e)),V(rr(e)))}var Yn=function(){if(typeof Map!="undefined")return Map;function e(t,r){var n=-1;return t.some(function(o,i){return o[0]===r?(n=i,!0):!1}),n}return function(){function t(){this.__entries__=[]}return Object.defineProperty(t.prototype,"size",{get:function(){return this.__entries__.length},enumerable:!0,configurable:!0}),t.prototype.get=function(r){var n=e(this.__entries__,r),o=this.__entries__[n];return o&&o[1]},t.prototype.set=function(r,n){var o=e(this.__entries__,r);~o?this.__entries__[o][1]=n:this.__entries__.push([r,n])},t.prototype.delete=function(r){var n=this.__entries__,o=e(n,r);~o&&n.splice(o,1)},t.prototype.has=function(r){return!!~e(this.__entries__,r)},t.prototype.clear=function(){this.__entries__.splice(0)},t.prototype.forEach=function(r,n){n===void 0&&(n=null);for(var o=0,i=this.__entries__;o0},e.prototype.connect_=function(){!Wr||this.connected_||(document.addEventListener("transitionend",this.onTransitionEnd_),window.addEventListener("resize",this.refresh),va?(this.mutationsObserver_=new MutationObserver(this.refresh),this.mutationsObserver_.observe(document,{attributes:!0,childList:!0,characterData:!0,subtree:!0})):(document.addEventListener("DOMSubtreeModified",this.refresh),this.mutationEventsAdded_=!0),this.connected_=!0)},e.prototype.disconnect_=function(){!Wr||!this.connected_||(document.removeEventListener("transitionend",this.onTransitionEnd_),window.removeEventListener("resize",this.refresh),this.mutationsObserver_&&this.mutationsObserver_.disconnect(),this.mutationEventsAdded_&&document.removeEventListener("DOMSubtreeModified",this.refresh),this.mutationsObserver_=null,this.mutationEventsAdded_=!1,this.connected_=!1)},e.prototype.onTransitionEnd_=function(t){var r=t.propertyName,n=r===void 0?"":r,o=ba.some(function(i){return!!~n.indexOf(i)});o&&this.refresh()},e.getInstance=function(){return this.instance_||(this.instance_=new e),this.instance_},e.instance_=null,e}(),Gn=function(e,t){for(var r=0,n=Object.keys(t);r0},e}(),Jn=typeof WeakMap!="undefined"?new WeakMap:new Yn,Xn=function(){function e(t){if(!(this instanceof e))throw new TypeError("Cannot call a class as a function.");if(!arguments.length)throw new TypeError("1 argument required, but only 0 present.");var r=ga.getInstance(),n=new La(t,r,this);Jn.set(this,n)}return e}();["observe","unobserve","disconnect"].forEach(function(e){Xn.prototype[e]=function(){var t;return(t=Jn.get(this))[e].apply(t,arguments)}});var Aa=function(){return typeof nr.ResizeObserver!="undefined"?nr.ResizeObserver:Xn}(),Zn=Aa;var eo=new x,Ca=$(()=>k(new Zn(e=>{for(let t of e)eo.next(t)}))).pipe(g(e=>L(ze,k(e)).pipe(R(()=>e.disconnect()))),X(1));function he(e){return{width:e.offsetWidth,height:e.offsetHeight}}function ye(e){return Ca.pipe(S(t=>t.observe(e)),g(t=>eo.pipe(A(({target:r})=>r===e),R(()=>t.unobserve(e)),l(()=>he(e)))),V(he(e)))}function bt(e){return{width:e.scrollWidth,height:e.scrollHeight}}function ar(e){let t=e.parentElement;for(;t&&(e.scrollWidth<=t.scrollWidth&&e.scrollHeight<=t.scrollHeight);)t=(e=t).parentElement;return t?e:void 0}var to=new x,Ra=$(()=>k(new IntersectionObserver(e=>{for(let t of e)to.next(t)},{threshold:0}))).pipe(g(e=>L(ze,k(e)).pipe(R(()=>e.disconnect()))),X(1));function sr(e){return Ra.pipe(S(t=>t.observe(e)),g(t=>to.pipe(A(({target:r})=>r===e),R(()=>t.unobserve(e)),l(({isIntersecting:r})=>r))))}function ro(e,t=16){return dt(e).pipe(l(({y:r})=>{let n=he(e),o=bt(e);return r>=o.height-n.height-t}),J())}var cr={drawer:z("[data-md-toggle=drawer]"),search:z("[data-md-toggle=search]")};function no(e){return cr[e].checked}function Ke(e,t){cr[e].checked!==t&&cr[e].click()}function Ue(e){let t=cr[e];return b(t,"change").pipe(l(()=>t.checked),V(t.checked))}function ka(e,t){switch(e.constructor){case HTMLInputElement:return e.type==="radio"?/^Arrow/.test(t):!0;case HTMLSelectElement:case HTMLTextAreaElement:return!0;default:return e.isContentEditable}}function Ha(){return L(b(window,"compositionstart").pipe(l(()=>!0)),b(window,"compositionend").pipe(l(()=>!1))).pipe(V(!1))}function oo(){let e=b(window,"keydown").pipe(A(t=>!(t.metaKey||t.ctrlKey)),l(t=>({mode:no("search")?"search":"global",type:t.key,claim(){t.preventDefault(),t.stopPropagation()}})),A(({mode:t,type:r})=>{if(t==="global"){let n=_e();if(typeof n!="undefined")return!ka(n,r)}return!0}),pe());return Ha().pipe(g(t=>t?M:e))}function le(){return new URL(location.href)}function ot(e){location.href=e.href}function io(){return new x}function ao(e,t){if(typeof t=="string"||typeof t=="number")e.innerHTML+=t.toString();else if(t instanceof Node)e.appendChild(t);else if(Array.isArray(t))for(let r of t)ao(e,r)}function _(e,t,...r){let n=document.createElement(e);if(t)for(let o of Object.keys(t))typeof t[o]!="undefined"&&(typeof t[o]!="boolean"?n.setAttribute(o,t[o]):n.setAttribute(o,""));for(let o of r)ao(n,o);return n}function fr(e){if(e>999){let t=+((e-950)%1e3>99);return`${((e+1e-6)/1e3).toFixed(t)}k`}else return e.toString()}function so(){return location.hash.substring(1)}function Dr(e){let t=_("a",{href:e});t.addEventListener("click",r=>r.stopPropagation()),t.click()}function Pa(e){return L(b(window,"hashchange"),e).pipe(l(so),V(so()),A(t=>t.length>0),X(1))}function co(e){return Pa(e).pipe(l(t=>ce(`[id="${t}"]`)),A(t=>typeof t!="undefined"))}function Vr(e){let t=matchMedia(e);return er(r=>t.addListener(()=>r(t.matches))).pipe(V(t.matches))}function fo(){let e=matchMedia("print");return L(b(window,"beforeprint").pipe(l(()=>!0)),b(window,"afterprint").pipe(l(()=>!1))).pipe(V(e.matches))}function zr(e,t){return e.pipe(g(r=>r?t():M))}function ur(e,t={credentials:"same-origin"}){return ue(fetch(`${e}`,t)).pipe(fe(()=>M),g(r=>r.status!==200?Ot(()=>new Error(r.statusText)):k(r)))}function We(e,t){return ur(e,t).pipe(g(r=>r.json()),X(1))}function uo(e,t){let r=new DOMParser;return ur(e,t).pipe(g(n=>n.text()),l(n=>r.parseFromString(n,"text/xml")),X(1))}function pr(e){let t=_("script",{src:e});return $(()=>(document.head.appendChild(t),L(b(t,"load"),b(t,"error").pipe(g(()=>Ot(()=>new ReferenceError(`Invalid script: ${e}`))))).pipe(l(()=>{}),R(()=>document.head.removeChild(t)),ge(1))))}function po(){return{x:Math.max(0,scrollX),y:Math.max(0,scrollY)}}function lo(){return L(b(window,"scroll",{passive:!0}),b(window,"resize",{passive:!0})).pipe(l(po),V(po()))}function mo(){return{width:innerWidth,height:innerHeight}}function ho(){return b(window,"resize",{passive:!0}).pipe(l(mo),V(mo()))}function bo(){return G([lo(),ho()]).pipe(l(([e,t])=>({offset:e,size:t})),X(1))}function lr(e,{viewport$:t,header$:r}){let n=t.pipe(ee("size")),o=G([n,r]).pipe(l(()=>Xe(e)));return G([r,t,o]).pipe(l(([{height:i},{offset:s,size:a},{x:f,y:c}])=>({offset:{x:s.x-f,y:s.y-c+i},size:a})))}(()=>{function e(n,o){parent.postMessage(n,o||"*")}function t(...n){return n.reduce((o,i)=>o.then(()=>new Promise(s=>{let a=document.createElement("script");a.src=i,a.onload=s,document.body.appendChild(a)})),Promise.resolve())}var r=class extends EventTarget{constructor(n){super(),this.url=n,this.m=i=>{i.source===this.w&&(this.dispatchEvent(new MessageEvent("message",{data:i.data})),this.onmessage&&this.onmessage(i))},this.e=(i,s,a,f,c)=>{if(s===`${this.url}`){let u=new ErrorEvent("error",{message:i,filename:s,lineno:a,colno:f,error:c});this.dispatchEvent(u),this.onerror&&this.onerror(u)}};let o=document.createElement("iframe");o.hidden=!0,document.body.appendChild(this.iframe=o),this.w.document.open(),this.w.document.write(` + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + +
+
+
+ + + +
+
+
+ + + +
+
+ + + + + + + +

Plugin Piani delle zone di pericolo

+

Questa è la documentazione del plugin per QGIS per la creazione dei Piani delle zone di pericolo e dei relativi algoritmi.

+

La documentazione è divisa in più sezioni:

+
    +
  • Nella sezione Plugin, vengono descritte le funzionalità del plugin per QGIS.
  • +
  • Nella sezione Algoritmi, vengono descritti gli algoritmi (processing algorithms) utilizzati dal plugin.
  • +
  • La sezione Riferimento tecnico, contiene informazioni tecniche ad esempio sulle matrici utilizzate per il calcolo delle zone di pericolo
  • +
+

Maggiori informazioni, domande e segnalazioni

+

La versione più aggiornata di questa documentazione è disponibile all'indirizzo https://opengisch.github.io/pzp/.

+

In caso di suggerimenti tecnici e segnalazione di problemi tecnici è possibile aprire una issue nel repository Github del progetto.

+ + + + + + +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/plugin/index.html b/plugin/index.html new file mode 100644 index 0000000..9d3c353 --- /dev/null +++ b/plugin/index.html @@ -0,0 +1,794 @@ + + + + + + + + + + + + + + + + + + + + + + Plugin - PZP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + + + + + + + + + +
+
+ + + + + + + +

Plugin

+

Installazione

+

Per installare il plugin in QGIS è necessario aggiungere un nuovo +repository dei plugin in QGIS:

+

È possibile aggiungere il repository andando nel menu Plugins -> Gestisci ed Installa Plugin...

+

Aggiungere repository

+
https://download.opengis.ch/repos/ticino/plugins.xml
+
+

A questo punto è possibile installare il plugin chiamato pzp.

+
+

Nota

+

Richiede QGIS 3.16 o superiore

+
+

Funzionalità

+

Le funzionalità del plugin sono accessibili tramite la toolbar del plugin.

+

Toolbar

+

In particolare tramite la toolbar è possibile:

+
    +
  • aggiungere un nuovo processo con i relativi layer al progetto QGIS attuale
  • +
  • aggiungere dei layer con dati di base o mappe di base
  • +
  • eseguire il calcolo delle zone di nessun impatto
  • +
  • generare il layer con le intensità tramite linee di propagazione
  • +
  • eseguire il calcolo delle zone di pericolo
  • +
  • modificare il valore delle zone di pericolo che hanno possibilità multiple
  • +
  • consultare questo manuale online
  • +
+

Aggiunta dei layer per la registrazione di un processo al progetto QGIS

+

Tramite il pulsante "Aggiuni proceso" è possible aggiungere al +progetto QGIS attuale un nuovo gruppo contenente i layer per +digitalizzare le intensità.

+

Viene chiesto il percorso di una directory in cui salvare i dati (in +formato GeoPackage) e il tipo di processo da aggiungere. Il processo +che viene aggiunto consiste in un gruppo di layer. I layer variano a +dipendenza del tipo di processo.

+

Aggiungi processo

+

Aggiunta di layer con dati o mappe di base

+

Tramite i pulsanti "Aggiungi mappa base" e "Aggiungi dati base" è +possibile aggiungere al progetto QGIS attuale i layer contenenti le +mappe di base o i layer di base.

+

Aggiungi dati_base

+

Digitalizzazione delle geometrie e layer

+

La digitalizzazione delle geometrie avviene tramite i normali strumenti di QGIS.

+

Area di studio

+

Questo layer permette di digitalizzare le aree di studio. Per ogni area di +studio va definita una fonte del processo. La definizione delle aree di +studio è necessaria per poter procedere con la digitalizzazione delle +intensità.

+

Intensità

+

Questo layer permette di digitalizzare le intensità. Attributi necessari sono:

+
    +
  • il periodo di ritorno (in anni)
  • +
  • l'intensità
  • +
  • il processo rappresentato (viene impostato automaticamente in base al processo selezionato al momento della creazione)
  • +
  • la fonte del processo (in relazione con le fonti di processo definite nelle aree di studio)
  • +
+

Probabilità di propagazione

+

Questo layer permette di digitalizzare le linee che definiscono le probabilità di propagazione. Attributi necessari sono:

+
    +
  • probabilità di propagazione
  • +
  • fonte del processo
  • +
  • probabilità di rottura (a cui la linea si riferisce)
  • +
+
+

Nota

+

Questo layer è presente solamente per il processo "Caduta sassi/blocchi/massi"

+
+

Probabilità di rottura

+

Questo layer permette di digitalizzare le geometrie che definiscono le probabilità di rottura. Attributi necessari sono:

+
    +
  • probabilià di rottura
  • +
  • intensità
  • +
  • fonte del processo
  • +
+
+

Nota

+

Questo layer è presente solamente per il processo "Caduta sassi/blocchi/massi"

+
+

Calcolo delle zone di nessun impatto

+

Calcolo zone di nessun impatto

+

Tramite il pulsante "Calcolo delle zone di nessun impatto" è possibile generare le geometrie delle zone con nessun +impatto, per fonte di processo, all'interno delle aree di studio. In +pratica, per ogni area di studio, viene creata una geometria con +intensità "nessun impatto" corrispondente a tutta la superficie +dell'area di studio non coperta da altre geometrie della fonte di +proceso in questione.

+
+

Nota

+

Per poter utilizzare questo pulsante occorre selezionare il gruppo contentente il processo nel pannello dei layer di QGIS

+
+

Generazione delle intensità tramite le linee di propagazione

+

Calcolo propagazione

+

Tramite il pulsante "Calcola propagazione" è possibile generare il +layer delle intensità partendo dai layer con le probabilità di rottura +e da quello con le linee di propagazione, per il processo di caduta +sassi o blocchi.

+

Il layer generato può venir utilizzato per procedere al calcolo delle +zone di pericolo, come per gli altri tipi di processo.

+

Calcolo delle zone di pericolo

+

Calcolo zone di pericolo

+

Tramite questo pulsante "Calcolo delle zone di pericolo" è possibile generare un layer con le zone di pericolo. +Viene generato un nuovo layer ogni volta che viene premuto il +pulsante. Il nome del layer include il codice del processo, la data e +l'ora di creazione. Il layer viene salvato nello stesso geopackage +utilizzato dal processo in questione.

+
+

Nota

+

Per poter utilizzare questo pulsante occorre selezionare il gruppo contentente il processo nel pannello dei layer di QGIS

+
+

Modifica delle zone con possibilità multiple

+

Modifica zone con possibilità multiple

+

Questo strumento permette di modificare il colore delle zone di +pericolo che secondo la matrice possono avere più possibilità. Ad +esempio per la matrice del Flusso di detrito, il pericolo 4 può +essere giallo (4a) o blu (4b).

+

Premendo il pulsante "A->B", tutte le geometrie selezionate nel layer +che hanno più possibilità diventeranno "B" e premendo il pulsante +"B->A", diventeranno "A". Se nessuna geometria è selezionata nel +layer, l'operazione viene eseguita su tutte le geometrie del layer con possibilità multipla.

+
+

Nota

+

Per poter utilizzare questo pulsante occorre selezionare il layer con le zone di pericolo sul quale si vuole eseguire l'operazione

+
+

Ottenere informazioni Alla pagina https://opengisch.github.io/pzp/

+

è presente la documentazione aggiornata. La pagina è accessibile +tramite il pulsante "Aiuto" nel plugin.

+ + + + + + +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/reference/index.html b/reference/index.html new file mode 100644 index 0000000..8129c3e --- /dev/null +++ b/reference/index.html @@ -0,0 +1,970 @@ + + + + + + + + + + + + + + + + + + + + Riferimento tecnico - PZP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ + + + +
+ + +
+ +
+ + + + + + + + + +
+
+ + + +
+
+
+ + + + + + +
+
+
+ + + + + + + +
+
+ + + + + + + +

Reference

+

Versioni

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
VersioneData pubblicazioneDescrizione
1.2.516.06.2023Migliora simbologia
1.2.416.06.2023Utilizza algoritmo fondi per area
1.2.307.06.2023Miglioramento simbologia
1.2.231.05.2023Aggiornamento mappe di base e dati di base
1.2.131.05.2023Aggiornamento mappe di base e dati di base
1.2.025.05.2023Calcola propagazione per fonte di processo
1.1.723.05.2023Correzione errore A->B e miglioramento stili e documentazione
1.1.616.05.2023Migliora gli stili dei layer
1.1.516.05.2023Correzione e miglioramenti degli algoritmi
1.1.410.05.2023Migliora gli stili dei layer
1.1.305.05.2023Crea layer filtrati per layer intensità generato da algoritmo propagazione
1.1.205.05.2023Migliora algoritmo propagazione e migliora gestione errori
1.1.103.05.2023Migliora la gestione delle variabili dei layer
1.1.003.05.2023Aggiungi layer filtrati per processo caduta sassi
1.0.928.04.2023Migliora le icone
1.0.828.04.2023Migliora i vincoli nei form
1.0.727.04.2023Creazione separata layer propagazione
1.0.621.04.2023Permetti gli apici nel nome delle fonti di processo anche per algo no_impact
1.0.521.04.2023Permetti gli apici nel nome delle fonti di processo
1.0.420.04.2023Miglioramento degli stili dei layer
1.0.318.04.2023Utilizza il codice del valore della matrice (es. 1003) invece del valore reale
1.0.205.04.2023Miglioramento algoritmo calcolo zone di pericolo
1.0.104.04.2023Miglioramento compatibilità stili e algoritmi in QGIS 3.16
1.0.031.03.2023Prima release pubblica
+

Matrici del pericolo utilizzate

+

Matrice intensità

+

Intensità

+

Alluvionamento

+

Alluvionamento

+

Flusso di detriti

+

Flusso di detriti

+

Scivolamento spontaneo e colata detritica di versante

+

Scivolamento

+

Caduta sassi/blocchi/massi

+

Caduta sassi

+

Valanga radente e valanga polverosa

+

Valanga

+

Codici domini

+

Probabilità di evento

+ + + + + + + + + + + + + + + + + + + + + + + + + +
CodiceDescrizione
1000Molto bassa
1001Bassa
1002Media
1003Alta
+

Intensità

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CodiceDescrizione
1000Nessun impatto
1001Impatto presente
1002Debole
1003Medio
1004Forte
+

Pericolo

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CodiceDescrizione
1000Non in pericolo
1001Pericolo residuo
1002Basso
1003Medio
1004Elevato
+

Tipo di processo

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
CodiceDescrizione
1110Alluvionamento corso d'acqua minore
1120Alluvionamento corso d'acqua principale
1200Flusso detrito
1400Ruscellamento superficiale
2001Scivolamento spontaneo
2002Colata detritica di versante
3000Caduta sassi o blocchi
4100Valanga radente
4200Valanga polverosa
+

Variabili dei layer

+

I layer generati dal plugin hanno le seguenti variabili definite:

+ + + + + + + + + + + + + + + + + +
VariabileDescrizione
pzp_layertipo di layer (es. intensity)
pzp_processcodice del processo del layer (es. 1110)
+ + + + + + +
+
+ + +
+ + + +
+ + + +
+
+
+
+ + + + + + + + + \ No newline at end of file diff --git a/search/search_index.json b/search/search_index.json new file mode 100644 index 0000000..441341c --- /dev/null +++ b/search/search_index.json @@ -0,0 +1 @@ +{"config":{"lang":["it"],"separator":"[\\s\\-]+","pipeline":["stopWordFilter"]},"docs":[{"location":"","title":"Plugin Piani delle zone di pericolo","text":"

Questa \u00e8 la documentazione del plugin per QGIS per la creazione dei Piani delle zone di pericolo e dei relativi algoritmi.

La documentazione \u00e8 divisa in pi\u00f9 sezioni:

  • Nella sezione Plugin, vengono descritte le funzionalit\u00e0 del plugin per QGIS.
  • Nella sezione Algoritmi, vengono descritti gli algoritmi (processing algorithms) utilizzati dal plugin.
  • La sezione Riferimento tecnico, contiene informazioni tecniche ad esempio sulle matrici utilizzate per il calcolo delle zone di pericolo
"},{"location":"#maggiori-informazioni-domande-e-segnalazioni","title":"Maggiori informazioni, domande e segnalazioni","text":"

La versione pi\u00f9 aggiornata di questa documentazione \u00e8 disponibile all'indirizzo https://opengisch.github.io/pzp/.

In caso di suggerimenti tecnici e segnalazione di problemi tecnici \u00e8 possibile aprire una issue nel repository Github del progetto.

"},{"location":"algorithms/","title":"Algoritmi","text":"

Gli algoritmi utilizzati dal plugin sono anche disponibili in QGIS come \"Algoritmi di Processing\" utilizzabili singolarmente.

Gli algoritmi sono parte del plugin pzp_utils che \u00e9 una dipendenza del plugin pzp e se necessario pu\u00f2 anche essere installato individualmente.

"},{"location":"algorithms/#applica-matrice","title":"Applica matrice","text":""},{"location":"algorithms/#scopo","title":"Scopo","text":"

Questo algoritmo aggiunge un campo con il valore della matrice a ogni geometria del layer con le intensit\u00e0

"},{"location":"algorithms/#parametri-input","title":"Parametri input","text":"
  • Layer con le geometrie (intensit\u00e0)
  • Campo contenente il periodo di ritorno
  • Campo contenente l'intensit\u00e0
  • Matrice da utilizzare (predefinita o manuale)
"},{"location":"algorithms/#output","title":"Output","text":"

Viene generato un layer uguale al layer in ingresso con l'aggiunta di un campo contenente il valore della matrice per ogni geometria.

"},{"location":"algorithms/#correggi-geometrie","title":"Correggi geometrie","text":""},{"location":"algorithms/#scopo_1","title":"Scopo","text":"

Questo algoritmo cerca di correggere gli errori pi\u00f9 frequenti di digitalizzazione delle geometrie.

"},{"location":"algorithms/#parametri-input_1","title":"Parametri input","text":"
  • Layer con le geometrie
"},{"location":"algorithms/#ouptut","title":"Ouptut","text":"

Viene generato un layer con le geometrie corrette mantenendo gli attributi delle geometrie iniziali.

Vengono eseguite in particolare le seguenti operazioni:

  • Aggancia punti al reticolo (con reticolo di 1mm)
  • Creazione e rimozione di un buffer negativo molto piccolo (1e-06 m) per rimuovere \"sbavature\" delle geometrie
  • Rimozione delle aree con superficie inferiore a 1m2
  • Rimozione dei buchi con superficie maggiore a 1m2
"},{"location":"algorithms/#fondi-layer-intensita","title":"Fondi layer intensit\u00e0","text":""},{"location":"algorithms/#scopo_2","title":"Scopo","text":"

Questo algoritmo permette di fondere nello stesso layer fino a 5 layer singoli. In alcuni casi si hanno a disposizione layer separati per ogni periodo di ritorno, questo plugin permette di definire per ogni layer il periodo di ritorno considerato e fondere tutti i layer in un unico layer.

"},{"location":"algorithms/#parametri-input_2","title":"Parametri input","text":"

Fino a 5x: - Layer con le intensit\u00e0 - Campo contenente le intensit\u00e0 - Periodo di ritorno a cui si riferisce il layer

"},{"location":"algorithms/#output_1","title":"Output","text":"

Viene generato un layer con tutte le geometrie dei layer in ingresso con l'aggiunta di un attributo per il periodo di ritorno.

"},{"location":"algorithms/#propagazione","title":"Propagazione","text":""},{"location":"algorithms/#scopo_3","title":"Scopo","text":"

Questo algoritmo permette di calcolare le probabilit\u00e0 di accadimento (cio\u00e8 le intensit\u00e0 per periodo di ritorno) in base alle linee di propagazione.

"},{"location":"algorithms/#parametri-input_3","title":"Parametri input","text":"
  • Layer con le probabilit\u00e0 di rottura
  • Campo con la probabilit\u00e0 di rottura
  • Layer con le linee di propagazione
  • Campo con la probabilit\u00e0 di propagazione
  • Campo con la probabilit\u00e0 di rottura
"},{"location":"algorithms/#output_2","title":"Output","text":"

Viene generato un layer che contiene le intensit\u00e0. Per ogni fonte di processo e per ogni periodo di ritorno, vengono tagliate i poligoni del layer con le probabilit\u00e0 di rottura secondo le linee di propagazione corrispondenti definite nel layer delle probabilit\u00e0 di propagazione.

"},{"location":"algorithms/#semplifica-intensita","title":"Semplifica intensit\u00e0","text":""},{"location":"algorithms/#scopo_4","title":"Scopo","text":"

Questo algoritmo permette di semplificare le geometrie di un layer con le intensit\u00e0. \u00c8 di particolare utilit\u00e0 in caso in cui le intensit\u00e0 siano generata tramite tool di simulazione che generano geometrie molto frastagliate.

"},{"location":"algorithms/#parametri-input_4","title":"Parametri input","text":"
  • Layer con le intensit\u00e0
  • Campo contenente le intensit\u00e0
  • Area minima in m2 dei poligoni da considerare
  • Area massima in m2 per l'eliminazione dei buchi. Buchi pi\u00f9 piccoli di cos\u00ec vengono eliminati.
  • Parametro \"Chaiken threshold\" dell'algoritmo generalize di GRASS utilizzato
  • Parametro \"Reduce threshold\" dell'algoritmo generalize di GRASS utilizzato
  • CRS
"},{"location":"algorithms/#output_3","title":"Output","text":"

Viene generato un layer con le geometrie semplificate

Nota

\u00c8 necessario avere GRASS installato per poter utilizzare questo algoritmo

"},{"location":"algorithms/#zone-di-pericolo","title":"Zone di pericolo","text":""},{"location":"algorithms/#scopo_5","title":"Scopo","text":"

Questo algoritmo permette la generazione delle zone di pericolo

"},{"location":"algorithms/#parametri-input_5","title":"Parametri input","text":"
  • Layer con le intensit\u00e0
  • Campo contenente il valore della matrice
  • Campo contenente la fonte del processo
"},{"location":"algorithms/#output_4","title":"Output","text":"

Viene generato un layer contenente le zone di pericolo. Per ogni fonte di processo vengono tagliati tutti i poligoni in corrispondenza di tutte le intersezioni, vengono mantenuti i poligoni duplicati con valore maggiore e vengono fuse superfici con lo stesso valore.

"},{"location":"algorithms/#zone-nessun-impatto","title":"Zone nessun impatto","text":""},{"location":"algorithms/#scopo_6","title":"Scopo","text":"

Questo algoritmo permette la generazione delle zone di nessun impatto

"},{"location":"algorithms/#parametri-input_6","title":"Parametri input","text":"
  • Layer con le aree di studio
  • Campo contenente la fonte del processo
  • Layer con le intensit\u00e0
  • Campo contenente il periodo di ritorno
  • Campo contenente l'intensit\u00e0
  • Campo contenente la fonte del processo
"},{"location":"algorithms/#output_5","title":"Output","text":"

Viene generato un layer contenete le zone di nessun impatto per ogni area di studio. In pratica, per ogni area di studio, viene creata una geometria con intensit\u00e0 \"nessun impatto\" corrispondente a tutta la superficie dell'area di studio non coperta da altre geometrie della fonte di proceso in questione.

"},{"location":"algorithms/#rimuovi-sovrapposizioni","title":"Rimuovi sovrapposizioni","text":""},{"location":"algorithms/#scopo_7","title":"Scopo","text":"

Questo algoritmo permette di rimuovere le sovrapposizioni nei layer delle intensit\u00e0.

"},{"location":"algorithms/#parametri-input_7","title":"Parametri input","text":"
  • Layer con le intensit\u00e0
  • Campo contenente l'intensit\u00e0
  • Campo contenente il periodo di ritorno
  • Campo contenente la fonte del processo
"},{"location":"algorithms/#output_6","title":"Output","text":"

Viene generato un layer dove sono state rimosse le sovrapposizioni tenendo in considerazione lo stesso periodo di ritorno e la stessa fonte di processo.

"},{"location":"algorithms/#fondi-per-area","title":"Fondi per area","text":""},{"location":"algorithms/#scopo_8","title":"Scopo","text":"

Questo algoritmo permette di rimuovere le piccole aree fondendole con le geometrie confinanti

"},{"location":"algorithms/#parametri-input_8","title":"Parametri input","text":"
  • Layer con le geometrie
  • Modalit\u00e0 di fusione
"},{"location":"algorithms/#output_7","title":"Output","text":"

Viene generato un layer dove le geometrie con area inferiore a 1m2 sono state fuse con le geometrie adiacenti

"},{"location":"plugin/","title":"Plugin","text":""},{"location":"plugin/#installazione","title":"Installazione","text":"

Per installare il plugin in QGIS \u00e8 necessario aggiungere un nuovo repository dei plugin in QGIS:

\u00c8 possibile aggiungere il repository andando nel menu Plugins -> Gestisci ed Installa Plugin...

https://download.opengis.ch/repos/ticino/plugins.xml\n

A questo punto \u00e8 possibile installare il plugin chiamato pzp.

Nota

Richiede QGIS 3.16 o superiore

"},{"location":"plugin/#funzionalita","title":"Funzionalit\u00e0","text":"

Le funzionalit\u00e0 del plugin sono accessibili tramite la toolbar del plugin.

In particolare tramite la toolbar \u00e8 possibile:

  • aggiungere un nuovo processo con i relativi layer al progetto QGIS attuale
  • aggiungere dei layer con dati di base o mappe di base
  • eseguire il calcolo delle zone di nessun impatto
  • generare il layer con le intensit\u00e0 tramite linee di propagazione
  • eseguire il calcolo delle zone di pericolo
  • modificare il valore delle zone di pericolo che hanno possibilit\u00e0 multiple
  • consultare questo manuale online
"},{"location":"plugin/#aggiunta-dei-layer-per-la-registrazione-di-un-processo-al-progetto-qgis","title":"Aggiunta dei layer per la registrazione di un processo al progetto QGIS","text":"

Tramite il pulsante \"Aggiuni proceso\" \u00e8 possible aggiungere al progetto QGIS attuale un nuovo gruppo contenente i layer per digitalizzare le intensit\u00e0.

Viene chiesto il percorso di una directory in cui salvare i dati (in formato GeoPackage) e il tipo di processo da aggiungere. Il processo che viene aggiunto consiste in un gruppo di layer. I layer variano a dipendenza del tipo di processo.

"},{"location":"plugin/#aggiunta-di-layer-con-dati-o-mappe-di-base","title":"Aggiunta di layer con dati o mappe di base","text":"

Tramite i pulsanti \"Aggiungi mappa base\" e \"Aggiungi dati base\" \u00e8 possibile aggiungere al progetto QGIS attuale i layer contenenti le mappe di base o i layer di base.

"},{"location":"plugin/#digitalizzazione-delle-geometrie-e-layer","title":"Digitalizzazione delle geometrie e layer","text":"

La digitalizzazione delle geometrie avviene tramite i normali strumenti di QGIS.

"},{"location":"plugin/#area-di-studio","title":"Area di studio","text":"

Questo layer permette di digitalizzare le aree di studio. Per ogni area di studio va definita una fonte del processo. La definizione delle aree di studio \u00e8 necessaria per poter procedere con la digitalizzazione delle intensit\u00e0.

"},{"location":"plugin/#intensita","title":"Intensit\u00e0","text":"

Questo layer permette di digitalizzare le intensit\u00e0. Attributi necessari sono:

  • il periodo di ritorno (in anni)
  • l'intensit\u00e0
  • il processo rappresentato (viene impostato automaticamente in base al processo selezionato al momento della creazione)
  • la fonte del processo (in relazione con le fonti di processo definite nelle aree di studio)
"},{"location":"plugin/#probabilita-di-propagazione","title":"Probabilit\u00e0 di propagazione","text":"

Questo layer permette di digitalizzare le linee che definiscono le probabilit\u00e0 di propagazione. Attributi necessari sono:

  • probabilit\u00e0 di propagazione
  • fonte del processo
  • probabilit\u00e0 di rottura (a cui la linea si riferisce)

Nota

Questo layer \u00e8 presente solamente per il processo \"Caduta sassi/blocchi/massi\"

"},{"location":"plugin/#probabilita-di-rottura","title":"Probabilit\u00e0 di rottura","text":"

Questo layer permette di digitalizzare le geometrie che definiscono le probabilit\u00e0 di rottura. Attributi necessari sono:

  • probabili\u00e0 di rottura
  • intensit\u00e0
  • fonte del processo

Nota

Questo layer \u00e8 presente solamente per il processo \"Caduta sassi/blocchi/massi\"

"},{"location":"plugin/#calcolo-delle-zone-di-nessun-impatto","title":"Calcolo delle zone di nessun impatto","text":"

Tramite il pulsante \"Calcolo delle zone di nessun impatto\" \u00e8 possibile generare le geometrie delle zone con nessun impatto, per fonte di processo, all'interno delle aree di studio. In pratica, per ogni area di studio, viene creata una geometria con intensit\u00e0 \"nessun impatto\" corrispondente a tutta la superficie dell'area di studio non coperta da altre geometrie della fonte di proceso in questione.

Nota

Per poter utilizzare questo pulsante occorre selezionare il gruppo contentente il processo nel pannello dei layer di QGIS

"},{"location":"plugin/#generazione-delle-intensita-tramite-le-linee-di-propagazione","title":"Generazione delle intensit\u00e0 tramite le linee di propagazione","text":"

Tramite il pulsante \"Calcola propagazione\" \u00e8 possibile generare il layer delle intensit\u00e0 partendo dai layer con le probabilit\u00e0 di rottura e da quello con le linee di propagazione, per il processo di caduta sassi o blocchi.

Il layer generato pu\u00f2 venir utilizzato per procedere al calcolo delle zone di pericolo, come per gli altri tipi di processo.

"},{"location":"plugin/#calcolo-delle-zone-di-pericolo","title":"Calcolo delle zone di pericolo","text":"

Tramite questo pulsante \"Calcolo delle zone di pericolo\" \u00e8 possibile generare un layer con le zone di pericolo. Viene generato un nuovo layer ogni volta che viene premuto il pulsante. Il nome del layer include il codice del processo, la data e l'ora di creazione. Il layer viene salvato nello stesso geopackage utilizzato dal processo in questione.

Nota

Per poter utilizzare questo pulsante occorre selezionare il gruppo contentente il processo nel pannello dei layer di QGIS

"},{"location":"plugin/#modifica-delle-zone-con-possibilita-multiple","title":"Modifica delle zone con possibilit\u00e0 multiple","text":"

Questo strumento permette di modificare il colore delle zone di pericolo che secondo la matrice possono avere pi\u00f9 possibilit\u00e0. Ad esempio per la matrice del Flusso di detrito, il pericolo 4 pu\u00f2 essere giallo (4a) o blu (4b).

Premendo il pulsante \"A->B\", tutte le geometrie selezionate nel layer che hanno pi\u00f9 possibilit\u00e0 diventeranno \"B\" e premendo il pulsante \"B->A\", diventeranno \"A\". Se nessuna geometria \u00e8 selezionata nel layer, l'operazione viene eseguita su tutte le geometrie del layer con possibilit\u00e0 multipla.

Nota

Per poter utilizzare questo pulsante occorre selezionare il layer con le zone di pericolo sul quale si vuole eseguire l'operazione

"},{"location":"plugin/#ottenere-informazioni-alla-pagina-httpsopengischgithubiopzp","title":"Ottenere informazioni Alla pagina https://opengisch.github.io/pzp/","text":"

\u00e8 presente la documentazione aggiornata. La pagina \u00e8 accessibile tramite il pulsante \"Aiuto\" nel plugin.

"},{"location":"reference/","title":"Reference","text":""},{"location":"reference/#versioni","title":"Versioni","text":"Versione Data pubblicazione Descrizione 1.2.5 16.06.2023 Migliora simbologia 1.2.4 16.06.2023 Utilizza algoritmo fondi per area 1.2.3 07.06.2023 Miglioramento simbologia 1.2.2 31.05.2023 Aggiornamento mappe di base e dati di base 1.2.1 31.05.2023 Aggiornamento mappe di base e dati di base 1.2.0 25.05.2023 Calcola propagazione per fonte di processo 1.1.7 23.05.2023 Correzione errore A->B e miglioramento stili e documentazione 1.1.6 16.05.2023 Migliora gli stili dei layer 1.1.5 16.05.2023 Correzione e miglioramenti degli algoritmi 1.1.4 10.05.2023 Migliora gli stili dei layer 1.1.3 05.05.2023 Crea layer filtrati per layer intensit\u00e0 generato da algoritmo propagazione 1.1.2 05.05.2023 Migliora algoritmo propagazione e migliora gestione errori 1.1.1 03.05.2023 Migliora la gestione delle variabili dei layer 1.1.0 03.05.2023 Aggiungi layer filtrati per processo caduta sassi 1.0.9 28.04.2023 Migliora le icone 1.0.8 28.04.2023 Migliora i vincoli nei form 1.0.7 27.04.2023 Creazione separata layer propagazione 1.0.6 21.04.2023 Permetti gli apici nel nome delle fonti di processo anche per algo no_impact 1.0.5 21.04.2023 Permetti gli apici nel nome delle fonti di processo 1.0.4 20.04.2023 Miglioramento degli stili dei layer 1.0.3 18.04.2023 Utilizza il codice del valore della matrice (es. 1003) invece del valore reale 1.0.2 05.04.2023 Miglioramento algoritmo calcolo zone di pericolo 1.0.1 04.04.2023 Miglioramento compatibilit\u00e0 stili e algoritmi in QGIS 3.16 1.0.0 31.03.2023 Prima release pubblica"},{"location":"reference/#matrici-del-pericolo-utilizzate","title":"Matrici del pericolo utilizzate","text":""},{"location":"reference/#matrice-intensita","title":"Matrice intensit\u00e0","text":""},{"location":"reference/#alluvionamento","title":"Alluvionamento","text":""},{"location":"reference/#flusso-di-detriti","title":"Flusso di detriti","text":""},{"location":"reference/#scivolamento-spontaneo-e-colata-detritica-di-versante","title":"Scivolamento spontaneo e colata detritica di versante","text":""},{"location":"reference/#caduta-sassiblocchimassi","title":"Caduta sassi/blocchi/massi","text":""},{"location":"reference/#valanga-radente-e-valanga-polverosa","title":"Valanga radente e valanga polverosa","text":""},{"location":"reference/#codici-domini","title":"Codici domini","text":""},{"location":"reference/#probabilita-di-evento","title":"Probabilit\u00e0 di evento","text":"Codice Descrizione 1000 Molto bassa 1001 Bassa 1002 Media 1003 Alta"},{"location":"reference/#intensita","title":"Intensit\u00e0","text":"Codice Descrizione 1000 Nessun impatto 1001 Impatto presente 1002 Debole 1003 Medio 1004 Forte"},{"location":"reference/#pericolo","title":"Pericolo","text":"Codice Descrizione 1000 Non in pericolo 1001 Pericolo residuo 1002 Basso 1003 Medio 1004 Elevato"},{"location":"reference/#tipo-di-processo","title":"Tipo di processo","text":"Codice Descrizione 1110 Alluvionamento corso d'acqua minore 1120 Alluvionamento corso d'acqua principale 1200 Flusso detrito 1400 Ruscellamento superficiale 2001 Scivolamento spontaneo 2002 Colata detritica di versante 3000 Caduta sassi o blocchi 4100 Valanga radente 4200 Valanga polverosa"},{"location":"reference/#variabili-dei-layer","title":"Variabili dei layer","text":"

I layer generati dal plugin hanno le seguenti variabili definite:

Variabile Descrizione pzp_layer tipo di layer (es. intensity) pzp_process codice del processo del layer (es. 1110)"}]} \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml new file mode 100644 index 0000000..0f8724e --- /dev/null +++ b/sitemap.xml @@ -0,0 +1,3 @@ + + + \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz new file mode 100644 index 0000000..9541abb Binary files /dev/null and b/sitemap.xml.gz differ