From 96330653bffeadbf14159380ce2253e5dda47780 Mon Sep 17 00:00:00 2001 From: Alessandro Cerioni Date: Mon, 26 Feb 2024 10:01:00 +0100 Subject: [PATCH] Remove separator.gif --- PROJ-DTRK/image/separator.gif | Bin 1942 -> 0 bytes PROJ-DTRK/index.html | 16 - PROJ-GEPOOL/image/separator.gif | Bin 1942 -> 0 bytes PROJ-GEPOOL/index.html | 12 - PROJ-HETRES/images/F17A_all_VarImp.tif | Bin 0 -> 3000192 bytes PROJ-HETRES/images/F17B_all_VarImp.tif | Bin 0 -> 3000192 bytes PROJ-HETRES/images/F18_sample_removal.png | Bin 0 -> 115154 bytes PROJ-HETRES/images/F5_profiles.pdf | Bin 0 -> 148384 bytes PROJ-HETRES/index.html | 10 +- PROJ-LANDSTATS/image/separator.gif | Bin 1942 -> 0 bytes PROJ-LANDSTATS/index.html | 28 - PROJ-REGBL/image/separator.gif | Bin 1942 -> 0 bytes PROJ-REGBL/index.html | 24 - PROJ-TGLN/image/separator.gif | Bin 1942 -> 0 bytes PROJ-TGLN/index.html | 20 - PROJ-TGPOOL/image/separator.gif | Bin 1942 -> 0 bytes PROJ-TGPOOL/index.html | 20 - ...L-TreeDet-AssessmentScript-ComplexCase.svg | 6 +- ...eeDet-AssessmentScript-GraphComponents.svg | 6 +- ...mentScript-TaggingInTheMostTrivialCase.svg | 6 +- PROJ-TREEDET/image/separator.gif | Bin 1942 -> 0 bytes PROJ-TREEDET/index.html | 24 - .../LAS_Preprocess_2021_cleaning.fmw | 4958 +++++++-------- ...S_Preprocess_2021_cleaning_alternative.fmw | 5308 ++++++++--------- TASK-4RAS/image/description | 2 +- TASK-DIFF/image/asymetric-illustration.svg | 1418 ++--- TASK-DIFF/image/separator.gif | Bin 1942 -> 0 bytes TASK-DIFF/index.html | 32 - TASK-IDET/image/separator.gif | Bin 1942 -> 0 bytes TASK-IDET/index.html | 12 - assets/javascripts/config.js | 22 +- search/search_index.json | 2 +- sitemap.xml | 32 +- sitemap.xml.gz | Bin 207 -> 207 bytes 34 files changed, 5886 insertions(+), 6072 deletions(-) delete mode 100644 PROJ-DTRK/image/separator.gif delete mode 100644 PROJ-GEPOOL/image/separator.gif create mode 100644 PROJ-HETRES/images/F17A_all_VarImp.tif create mode 100644 PROJ-HETRES/images/F17B_all_VarImp.tif create mode 100644 PROJ-HETRES/images/F18_sample_removal.png create mode 100644 PROJ-HETRES/images/F5_profiles.pdf delete mode 100644 PROJ-LANDSTATS/image/separator.gif delete mode 100644 PROJ-REGBL/image/separator.gif delete mode 100644 PROJ-TGLN/image/separator.gif delete mode 100644 PROJ-TGPOOL/image/separator.gif delete mode 100644 PROJ-TREEDET/image/separator.gif delete mode 100644 TASK-DIFF/image/separator.gif delete mode 100644 TASK-IDET/image/separator.gif diff --git a/PROJ-DTRK/image/separator.gif b/PROJ-DTRK/image/separator.gif deleted file mode 100644 index 4d41cdcde084632d5e78d87f4dd08a99362f313e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1942 zcmV;H2Wj|6Nk%w1VE_SW0q0%-000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^s6Va%Ew3Wn>_CX>@2HM@dak03rDV0SW;A04x9i00001XaN8S{s8?6 z97wRB!Gj1BDqP60p~Hs|BTAe|v7*I`7&B_z$g!ixk03*e97(dI$&)Bks$9vkrOTHv zW6GRKv!>0PICJXU$+M@=pFo2O9ZIyQ(W6L{DqYI7sne%Wqe`7hwW`&tShH%~%C)Q4 zuVBN99ZR;X*|TWVs$I*rt=qS7(BTJr4xw7TUm@{kM%(=7Y&!9t#9!C>oFt6t5zwd>cgW6PdRySDAyxO3~? z&AYen-@tNG7S|l1w(~o_zLMrk;KVDkz_T4r=J3ZWfB@qKt~EXrquq z`e>w-9y)2InEH8XrkvinX{VsV`Dv)6ra5YIr>+G}8M(b>;$nq)ewb)X-EUDOb3$3<(G3)KP z;Pxf%xZRe^*SY9ktL|Rxwj1rcdc`a6v-IX=@4e0Di`TyV`g<3^_X=zm!SWhh7sBl- ztR=Vn&b#Zjp++omsMYRi@wXF)3-QMNc5Lp)AUix4!|0kU7s}*{ye`Qbs~i{0-pULY z&FQ)fFU%I({1(pH>Rd0+5&P^G(C!MYFVO)j{V$y$M=f>3bXGg{)mU>Jr`1_^J$0R2 zdo6a)RZ|S-*l0Jswb^f`?RLs#dmQK6bO*h*+-KLVH~zkHk39F@fP>Apn}7%2_sf45 zUbog=bJCx`RHAPF1hHar(XKgr?-B! z>YTGK`|Pg|4E61<-+j5`ykkwf>9z-7a_$H3Zv5BCFU)koPU~K=)JC_3w6xW;b^XP@ z4xTCV7<-Q?_}w?oDfyjdj3@fRieD-FnW}#${KUFXDgBkoZzul8+8-(ZkuVC>YE!rHBngdx=61aVkH;w39qVlw<;pMogFJrS{po^l})Bft7z6diF`B82W>l3J(`dvsvN4Gkd?TXJC`VVh cv5vmeAs#Jt$31Q_j(*fs9|IXip9BN|J0wB_kN^Mx diff --git a/PROJ-DTRK/index.html b/PROJ-DTRK/index.html index c69935a..03f7ed8 100644 --- a/PROJ-DTRK/index.html +++ b/PROJ-DTRK/index.html @@ -355,10 +355,6 @@

IntroductionThe applied corrections are always the result of a complex process, involving different territory actors, until the decision is made to integrate them into the land register. In addition, land register models comes with an additional constraint linked to political decisions. Indeed, the land register models are the result of a political mission conducted under federal laws making these models of high importance and requiring constant care. We show in this research project how differences detection tool [1] of the STDL 4D framework can be used to emphasize and analyze these corrections along the time dimension.

In addition to the constant updates of the models, changes in the reference frame can also lead to large-scale corrections of the land register models. These global corrections are then made even more complex by the federal laws that impose a high degree of correctness and accuracy.

In the context of the introduction of the new reference frame DM.flex [2] for the Swiss land register, being able to assess the applied changes on the geographical model appear as an important aspect. Indeed, changing the reference frame for the land register models is a long and complex technical process that can be error prompt. We also show in this research project how the difference detection algorithm can be helpful to assess and verify the performed corrections.

-
- -
-

Research Project Specifications

In this research project, the difference detection algorithm implemented in the STDL 4D framework is applied on INTERLIS data containing the official land register models of different Swiss Canton. As introduced, two main directions are considered for the difference detection algorithm :

    @@ -371,10 +367,6 @@

    Research Project Specifications

    Through the first direction, the difference detection algorithm is presented. Considering the difference models it allows computing, it is shown how such model are able to extract information in between the models in order to emphasize the ability to represent, and then, to verify the evolution of the land register models.

    The second direction focuses on demonstrating that difference models are a helpful representation of the large-scale corrections that can be applied to land register during reference frame modification and how they can be used as a tool to assess the modifications and to help to fulfil the complex task of the verification of the corrected models.

    -
    - -
    -

    Research Project Data

    For the first research direction, the land register models of the Thurgau Kanton are considered. They are selected in order to have a small temporal distance allowing to focus on a small amount of well-defined differences :

      @@ -400,10 +392,6 @@

      Research Project Data - - -

      Difference Models : A Temporal Derivative

      This first section focuses on short-term differences to show how difference models work and how they are able to represent the modifications extracted out of the two compared models. The following images give an illustration of the considered dataset, which are the land register models of Thurgau Kanton :

      @@ -454,10 +442,6 @@

      Difference Models : A Temporal

      One can see how difference models can be used to track down modifications brought to the land register in a simple manner, while keeping the information of the unchanged elements between the two compared models. This demonstrates that information that exists between models can be extracted and represented for further users or automated processes. In addition, such difference models can be computed at any scale, considering small area up to the whole countries.

      -
      - -
      -

      Difference Models : An Assessment Tool

      On the previous section, the difference models are computed using two models only separated of a few days, containing only a small amount of clear and simple modifications. This section focuses on detecting differences on larger models, separated by several years. In this case, the land register of the Canton of Geneva is considered :

      diff --git a/PROJ-GEPOOL/image/separator.gif b/PROJ-GEPOOL/image/separator.gif deleted file mode 100644 index 4d41cdcde084632d5e78d87f4dd08a99362f313e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1942 zcmV;H2Wj|6Nk%w1VE_SW0q0%-000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^s6Va%Ew3Wn>_CX>@2HM@dak03rDV0SW;A04x9i00001XaN8S{s8?6 z97wRB!Gj1BDqP60p~Hs|BTAe|v7*I`7&B_z$g!ixk03*e97(dI$&)Bks$9vkrOTHv zW6GRKv!>0PICJXU$+M@=pFo2O9ZIyQ(W6L{DqYI7sne%Wqe`7hwW`&tShH%~%C)Q4 zuVBN99ZR;X*|TWVs$I*rt=qS7(BTJr4xw7TUm@{kM%(=7Y&!9t#9!C>oFt6t5zwd>cgW6PdRySDAyxO3~? z&AYen-@tNG7S|l1w(~o_zLMrk;KVDkz_T4r=J3ZWfB@qKt~EXrquq z`e>w-9y)2InEH8XrkvinX{VsV`Dv)6ra5YIr>+G}8M(b>;$nq)ewb)X-EUDOb3$3<(G3)KP z;Pxf%xZRe^*SY9ktL|Rxwj1rcdc`a6v-IX=@4e0Di`TyV`g<3^_X=zm!SWhh7sBl- ztR=Vn&b#Zjp++omsMYRi@wXF)3-QMNc5Lp)AUix4!|0kU7s}*{ye`Qbs~i{0-pULY z&FQ)fFU%I({1(pH>Rd0+5&P^G(C!MYFVO)j{V$y$M=f>3bXGg{)mU>Jr`1_^J$0R2 zdo6a)RZ|S-*l0Jswb^f`?RLs#dmQK6bO*h*+-KLVH~zkHk39F@fP>Apn}7%2_sf45 zUbog=bJCx`RHAPF1hHar(XKgr?-B! z>YTGK`|Pg|4E61<-+j5`ykkwf>9z-7a_$H3Zv5BCFU)koPU~K=)JC_3w6xW;b^XP@ z4xTCV7<-Q?_}w?oDfyjdj3@fRieD-FnW}#${KUFXDgBkoZzul8+8-(ZkuVC>YE!rHBngdx=61aVkH;w39qVlw<;pMogFJrS{po^l})Bft7z6diF`B82W>l3J(`dvsvN4Gkd?TXJC`VVh cv5vmeAs#Jt$31Q_j(*fs9|IXip9BN|J0wB_kN^Mx diff --git a/PROJ-GEPOOL/index.html b/PROJ-GEPOOL/index.html index 6d9c042..91cb4ce 100644 --- a/PROJ-GEPOOL/index.html +++ b/PROJ-GEPOOL/index.html @@ -340,10 +340,6 @@

      IntroductionThe Canton of Geneva manages a register of swimming pools, counting - in principle - all and only those swimming pools that are in-ground or, at least, permanently fixed to the ground. The swimming pool register is part of a far more general cadastre, including several other classes of objects (cf. this page).

      Typically the swimming pool register is updated either by taking building/demolition permits into account, or by manually checking its multiple records (4000+ to date) against aerial images, which is quite a long and tedious task. Exploring the opportunity of leveraging Machine Learning to help domain experts in such an otherwise tedious tasks was one of the main motivations behind this study. As such, no prior requirements/expectations were set by the recipients.

      The study was autonomously conducted by the STDL team, using Open Source software and Open Data published by the Canton of Geneva. Domain experts were asked for feedback only at a later stage. In the following, details are provided regarding the various steps we followed. We refer the reader to this page for a thorough description of the generic STDL Object Detection Framework.

      -
      - -
      -

      Method

      Several steps are required to set the stage for object detection and eventually reach the goal of obtaining - ideally - even more than decent results. Despite the linear presentation that the reader will find here-below, multiple back-and-forths are actually required, especially through steps 2-4.

      1. Data preparation

      @@ -442,10 +438,6 @@

      4. Prediction assessmentThe latter figure was obtained by evaluating the predictions of our best model over the test dataset. Inferior models exhibited a similar behavior, with a downward offset in terms of \(F_1\) score. In practice, upon iterating over multiple realizations (with different hyper-parameters, training data and so on) we aimed at maximizing the value of the \(F_1\) score on the validation dataset, and stopped when the \(F_1\) score went over the value of 90%.

      As the ground-truth data we used turned out not to be 100% accurate, the responsibility for mismatching predictions has to be shared between ground-truth data and the predictive model, at least in some cases. In a more ideal setting, ground-truth data would be 100% accurate and differences between a given metric (precision, recall, \(F_1\) score) and 100% should be imputed to the model.

      -
      - -
      -

      Domain experts feedback

      All the predictions having a score \(\geq\) 5% obtained by our best model were exported to Shapefile and shared with the experts in charge of the cadastre of the Canton of Geneva, who carried out a thorough evaluation. By checking predictions against the swimming pool register as well as aerial images, it was empirically found that the threshold on the minimum score (= thr) should be set as high as 97%, in order not to have too many false positives to deal with. In spite of such a high threshold, 562 potentially new objects were detected (over 4652 objects which were known when this study started), of which:

        @@ -472,10 +464,6 @@

        Domain experts feedbackExamples of detected swimming pools which are not subject to registration: placed on top of a building (left), inflatable hence temporary (right).

        -
        - -
        -

        Conclusion

        The analysis reported in this document confirms the opportunity of using state-of-the-art Deep Learning approaches to assist experts in some of their tasks, in this case that of keeping the cadastre up to date. Not only the opportunity was explored and actually confirmed, but valuable results were also produced, leading to the detection of previously unknown objects. At the same time, our study also shows how essential domain expertise still remains, despite the usage of such advanced methods.

        As a concluding remark, let us note that our predictive model may be further improved. In particular, it may be rendered less prone to false positives, for instance by:

        diff --git a/PROJ-HETRES/images/F17A_all_VarImp.tif b/PROJ-HETRES/images/F17A_all_VarImp.tif new file mode 100644 index 0000000000000000000000000000000000000000..3e1988e84e0a457fd235b542c1525bfe07eabfa1 GIT binary patch literal 3000192 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�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 literal 0 HcmV?d00001 diff --git a/PROJ-HETRES/images/F17B_all_VarImp.tif b/PROJ-HETRES/images/F17B_all_VarImp.tif new file mode 100644 index 0000000000000000000000000000000000000000..ac12dd1afc5d49c650280152a7aef9416a861fcb GIT binary patch literal 3000192 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 Zzqz{Kx%NZ#m;Vv|mwxltzj%@V{yz?3Y8(In literal 0 HcmV?d00001 diff --git a/PROJ-HETRES/images/F18_sample_removal.png b/PROJ-HETRES/images/F18_sample_removal.png new file mode 100644 index 0000000000000000000000000000000000000000..16e6992f8c9afa3543595004e09183999d2ab88d GIT binary patch literal 115154 zcmeEug;!OLw(r`M(!D8By1ToZy~$03lF}h9f+8i|9ZE}gx4@>mQxNHv6ajtc_nmvs zxu@=Vuchz@z1{qfYb2#qFyOV<%lf(HE$1x=o+ywmju0kLojb))UFsVNDu(>Y~@O=^^@V z%*qZ2=Z_!$#}ogfRQ~ul|L7`zw8K9J(Ep>!`CtiPonWXyz=fp(oXKOAV}R>ZW&rz* zrY8_f6Ty#1fhaTu0U&ApTvkO(BOm}TAIFRXWcLFynu`|@ysrcZKz0*s;5LnqD|9n! z^;@4NS(eWkUktLcsY+*$@9^7LT-*{kuxr>s<0;P)^l^-oh%t}J2z z0b{BW0+|%KFH$`t=EU-=DH}I+7DADPApgi%0A&&ULZU(6!5u1A_DCvQy^x?ldrQ&w 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

        ehMXu_9c%77V%ac^t?T$5% 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 literal 0 HcmV?d00001 diff --git a/PROJ-HETRES/index.html b/PROJ-HETRES/index.html index 05f7667..307c1fa 100644 --- a/PROJ-HETRES/index.html +++ b/PROJ-HETRES/index.html @@ -607,9 +607,11 @@

        4.2 Image processing4.2.1 Statistical tests on the original and filtered pixels

        The statistical tests were performed on the original and filtered pixels.

        -

        Two low pass filters were tested: -- Gaussian with a sigma of 5; -- Bilinear downsampling with scale factors of 1/3, 1/5 and 1/17, corresponding to resolutions of 9, 15 and 50 cm.

        +

        Two low pass filters were tested:

        +
          +
        • Gaussian with a sigma of 5;
        • +
        • Bilinear downsampling with scale factors of 1/3, 1/5 and 1/17, corresponding to resolutions of 9, 15 and 50 cm.
        • +

        In the original and the filtered cases, the pixels for each GT tree were extracted from the images and sorted by class. Then, the corresponding NDVI is computed. Each pixel has 5 attributes corresponding to its value on the four bands (R, G, B, NIR) and its NDVI.
        First, the per-class boxplots of the attributes were executed to see if the distinction between classes was possible on one or several bands or on the NDVI.
        Then, the principal component analysis (PCA) was computed on the same values to see if their linear combination allowed the distinction of the classes.

        @@ -840,7 +842,7 @@

        5.3.2 Vegetation Healthy Index5.4 Random Forest

        The results of the RF that are presented and discussed are: (1) the optimization and ablation study, (2) the ground truth analysis, (3) the predictions for the AOI and (4) the performance with downgraded data.

        5.4.1 Optimization and ablation study

        diff --git a/PROJ-LANDSTATS/image/separator.gif b/PROJ-LANDSTATS/image/separator.gif deleted file mode 100644 index 4d41cdcde084632d5e78d87f4dd08a99362f313e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1942 zcmV;H2Wj|6Nk%w1VE_SW0q0%-000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^s6Va%Ew3Wn>_CX>@2HM@dak03rDV0SW;A04x9i00001XaN8S{s8?6 z97wRB!Gj1BDqP60p~Hs|BTAe|v7*I`7&B_z$g!ixk03*e97(dI$&)Bks$9vkrOTHv zW6GRKv!>0PICJXU$+M@=pFo2O9ZIyQ(W6L{DqYI7sne%Wqe`7hwW`&tShH%~%C)Q4 zuVBN99ZR;X*|TWVs$I*rt=qS7(BTJr4xw7TUm@{kM%(=7Y&!9t#9!C>oFt6t5zwd>cgW6PdRySDAyxO3~? z&AYen-@tNG7S|l1w(~o_zLMrk;KVDkz_T4r=J3ZWfB@qKt~EXrquq z`e>w-9y)2InEH8XrkvinX{VsV`Dv)6ra5YIr>+G}8M(b>;$nq)ewb)X-EUDOb3$3<(G3)KP z;Pxf%xZRe^*SY9ktL|Rxwj1rcdc`a6v-IX=@4e0Di`TyV`g<3^_X=zm!SWhh7sBl- ztR=Vn&b#Zjp++omsMYRi@wXF)3-QMNc5Lp)AUix4!|0kU7s}*{ye`Qbs~i{0-pULY z&FQ)fFU%I({1(pH>Rd0+5&P^G(C!MYFVO)j{V$y$M=f>3bXGg{)mU>Jr`1_^J$0R2 zdo6a)RZ|S-*l0Jswb^f`?RLs#dmQK6bO*h*+-KLVH~zkHk39F@fP>Apn}7%2_sf45 zUbog=bJCx`RHAPF1hHar(XKgr?-B! z>YTGK`|Pg|4E61<-+j5`ykkwf>9z-7a_$H3Zv5BCFU)koPU~K=)JC_3w6xW;b^XP@ z4xTCV7<-Q?_}w?oDfyjdj3@fRieD-FnW}#${KUFXDgBkoZzul8+8-(ZkuVC>YE!rHBngdx=61aVkH;w39qVlw<;pMogFJrS{po^l})Bft7z6diF`B82W>l3J(`dvsvN4Gkd?TXJC`VVh cv5vmeAs#Jt$31Q_j(*fs9|IXip9BN|J0wB_kN^Mx diff --git a/PROJ-LANDSTATS/index.html b/PROJ-LANDSTATS/index.html index 1ebd773..fd1fb4a 100644 --- a/PROJ-LANDSTATS/index.html +++ b/PROJ-LANDSTATS/index.html @@ -456,10 +456,6 @@

        - -

      -

      1. Introduction

      The introduction presents the background and the objectives of the projects, but also introduces the input data and its specific features.

      1.1 Background

      @@ -568,10 +564,6 @@

      1.3 Input dataThe shortened LC1/LU1 to LC4/LU4 will be used to simplify the notation of Land Cover/Use of survey 1 to survey 4 in the following documentation.

      For machine learning, training data quality has strong influence on model performance. With the training label, domain experts from FSO selected data points that are more reliable and representative. These 348'474 tiles and their neighbors composed the training and testing dataset for machine learning methodology.

      -
      - -
      -

      2. Exploratory data analysis

      As suggested by domain experts, exploratory data analysis (EDA) is of significance to understand the data statistics and find the potential internal patterns of class transformation. The EDA is implemented from three different perspectives: distribution, quantity and probability. With the combination of the three, we can find that there do exist certain trends in the transformation of both land cover and land use classes.

      For the land cover, main findings are:

      @@ -707,10 +699,6 @@

      2.3.2 Land use analysisFigure 11 tells the difference in the diversity of transformation destination. The construction and unexploited areas would turn into all kinds of urban areas, with more than 95% changed and the maximum probability to a fixed class is less than 35%. While the Afforestation, Lumbering areas and Damaged Forest returned to Forest with a probability of more than 90%, the transformation pattern within these four classes is fairly fixed.

      The distribution statistics, the quantity statistics and the probability matrices have shown to validate and complement each other during the exploratory analysis of the data.

      -
      - -
      -

      3. Methods

      The developed method should be integrated in the OFS framework for change detection and classification of land use and land cover illustrated in Figure 12. The interesting parts for this project are highlighted in orange and will be presented in the following.

      @@ -862,10 +850,6 @@

      3.4 Training and testing plan - - -

      4. Experiments

      The Experiments section covers the results obtained when performing the planned simulations for the temporal-spatial module and the integration module.

      4.1 Temporal-spatial module

      @@ -1214,25 +1198,13 @@

      4.2 Integration module

      The study demonstrates that the image-level contains more information related to change detection compared with temporal-spatial neighbors (FCN row in the Table 5). However, performance improvement from the temporal-spatial module when combined with image-level data, achieving 0.438 in weighted metric in the end (FCN+RF and FCN+FCN).

      Regarding the composition of different models for the two modules, FCN is proved to be the best one for the temporal-spatial module, while RF and FCN have similar performance in the integration module. The choice of integration module could be influenced by the data format of other potential modules. This will be further studied by the FSO team.

      -
      - -
      -

      5. Conclusion and outlook

      This project studied the potential of historical and spatial neighbor data in change detection task for the fifth interpretation process of the areal statistic of FSO. For the evaluation of this specific project, a weighted metric was defined by the FSO team. The temporal-spatial information was proved not to be as powerful as image-level information which directly detects change within visual data. However, an efficient prototype was built with 6% performance improvement in weighted metric combining the temporal-spatial module and the image-level module. It is validated that integration of modules with different source information can help to enhance the final capacity of the entire workflow.

      The next research step of the project would be to modify the current implementation of ConvRNN. If the numerical relationship is removed from the synthetic image data, ConvRNN should have similar performance as FCN theoretically. Also, CNN is worth trying to validate whether the temporal pattern matters in this dataset. Besides, by changing the size of the synthetic images, we can figure out how does the number of neighbour tiles impact the model performance.

      -
      - -
      -

      Appendix

      diff --git a/PROJ-REGBL/image/separator.gif b/PROJ-REGBL/image/separator.gif deleted file mode 100644 index 4d41cdcde084632d5e78d87f4dd08a99362f313e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1942 zcmV;H2Wj|6Nk%w1VE_SW0q0%-000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^s6Va%Ew3Wn>_CX>@2HM@dak03rDV0SW;A04x9i00001XaN8S{s8?6 z97wRB!Gj1BDqP60p~Hs|BTAe|v7*I`7&B_z$g!ixk03*e97(dI$&)Bks$9vkrOTHv zW6GRKv!>0PICJXU$+M@=pFo2O9ZIyQ(W6L{DqYI7sne%Wqe`7hwW`&tShH%~%C)Q4 zuVBN99ZR;X*|TWVs$I*rt=qS7(BTJr4xw7TUm@{kM%(=7Y&!9t#9!C>oFt6t5zwd>cgW6PdRySDAyxO3~? z&AYen-@tNG7S|l1w(~o_zLMrk;KVDkz_T4r=J3ZWfB@qKt~EXrquq z`e>w-9y)2InEH8XrkvinX{VsV`Dv)6ra5YIr>+G}8M(b>;$nq)ewb)X-EUDOb3$3<(G3)KP z;Pxf%xZRe^*SY9ktL|Rxwj1rcdc`a6v-IX=@4e0Di`TyV`g<3^_X=zm!SWhh7sBl- ztR=Vn&b#Zjp++omsMYRi@wXF)3-QMNc5Lp)AUix4!|0kU7s}*{ye`Qbs~i{0-pULY z&FQ)fFU%I({1(pH>Rd0+5&P^G(C!MYFVO)j{V$y$M=f>3bXGg{)mU>Jr`1_^J$0R2 zdo6a)RZ|S-*l0Jswb^f`?RLs#dmQK6bO*h*+-KLVH~zkHk39F@fP>Apn}7%2_sf45 zUbog=bJCx`RHAPF1hHar(XKgr?-B! z>YTGK`|Pg|4E61<-+j5`ykkwf>9z-7a_$H3Zv5BCFU)koPU~K=)JC_3w6xW;b^XP@ z4xTCV7<-Q?_}w?oDfyjdj3@fRieD-FnW}#${KUFXDgBkoZzul8+8-(ZkuVC>YE!rHBngdx=61aVkH;w39qVlw<;pMogFJrS{po^l})Bft7z6diF`B82W>l3J(`dvsvN4Gkd?TXJC`VVh cv5vmeAs#Jt$31Q_j(*fs9|IXip9BN|J0wB_kN^Mx diff --git a/PROJ-REGBL/index.html b/PROJ-REGBL/index.html index 9f5ed63..56ead94 100644 --- a/PROJ-REGBL/index.html +++ b/PROJ-REGBL/index.html @@ -431,10 +431,6 @@

      IntroductionThe construction year of buildings turns out to be complicated to gather, as adding new buildings to the register already impose an important workload even for the simple information. In addition, in many cases, the construction year of the building is missing or can not be easily collected to update the register.

      The Statistical Office mandated the STDL to perform researches on the possibility to automatically gather the construction year by analysing the swisstopo [3] National Maps [4]. Indeed, the Swiss national maps are known for their excellency, their availability on any geographical area, and for their temporal cover. The national maps are made with a rigorous and well controlled methodology from the 1950s and therefore they can be used as a reliable source of information to determine the buildings' construction year.

      The STDL was then responsible for performing the researches and developing a proof-of-concept to provide all the information needed to the Statistical Office for them to take the right decision on considering national maps as a reliable way of assigning a construction year for the buildings lacking information.

      -
      - -
      -

      Research Project Specifications

      Extracting the construction date out of the national maps is a real challenge, as the national maps are a heavy dataset, they are not easy to be considered as a whole. In addition, the Statistical Office needs the demonstration that it can be done in a reliable way and within a reasonable amount of time to limit the cost of such process. They are also subjected to strict tolerances on the efficiency of the construction years extraction through an automated process. The goal of at least 80% of overall success was then provided as a constraint to the STDL.

      As a result, the research specifications for the STDL were:

      @@ -449,10 +445,6 @@

      Research Project SpecificationsAssessing the results with a reliable metric to allow demonstrating the quality and reliability of the obtained construction years

    -
    - -
    -

    Research Data & Selected Areas

    In this research project, two datasets were considered: the building register itself and the national maps. As both datasets are heavy and complex, considering them entirely for such a research project would have been too complicated and unnecessary. It was then decided to focus on four areas selected for their representativeness of Swiss landscape:

      @@ -585,10 +577,6 @@

      National Maps

      One can see that a large portion of the 20th century can be covered using the maps with a very good resolution of around five to six years between the maps.

      -
      - -
      -

      Research Approaches

      In this research project, the main focus was put on the national maps to extract the construction year of buildings as the maps are sources on which we can rely and assess the results. The only drawback of the maps is their limited temporal coverage, as they only start to be available in the 1950s.

      This is the reason why another experimental approach was also added to address the cases of building being built before the 1950s. This secondary approach focused on a statistical methodology to verify to which extent it could be possible to assign a construction date even in the case no maps are available.

      @@ -601,10 +589,6 @@

      Research Approaches - - -

      Research Approach: National Maps

      In order to detect construction year of buildings, we need to be able to track them down on the maps across the temporal coverage. The RBD is providing the reference list of the building, each coming with a federal identifier (EGID) and a position. This position can then be used to track down the building on maps for its appearance or morphological change.

      As the maps are already selected, as the research areas, this research approach can be summarised in the following way:

      @@ -888,10 +872,6 @@

      Conclusion - - -

      Research Approach: Statistical

      As the availability of the topographic/national maps does not reach the integrity of all building's year of construction in the registry, an add-on was developed to infer this information, whenever there was this need for extrapolation. Usually, the maps availability reaches the 1950s, whilst in some cities the minimum year of construction can be in the order of the 12th century, e.g. The core of this statistical model is based on the Concentric Zones Model (Park and Burgess, 1925)[6] extended to the idea of the growth of the city from the a centre (Central Business District - CBD) to all inner areas. The concept behind this statistical approach can be seen below using the example of a crop of Basel city:

      @@ -978,10 +958,6 @@

      ResultsConclusion

      This add-on allows extrapolating the predictions to beyond the range of the topographical maps. Its predictions are limited, but the accuracy reached can be considered reasonable, once there is a considerable lack of information in this prediction range. Nor the dates in the RBD, nor the topographic maps can be fully trusted, ergo 15.6 years of error for the older buildings is acceptable, especially by considering the relative lack of spread in errors distribution. If a suggestion for improvement were to be given, a method for smoothing the intYEARpolator predictions could be interesting. This would possibly shift the distribution of the error into closer to a gaussian with mean zero. The dangerous found when searching for such an approach is that the year of construction of buildings does not seem to present a smooth surface, despite the spatial dependence. Hence, if this were to be considered, a balance between smoothing and variability would need to found.

      We also demonstrated a completely different perspective on how the spatial and temporal dimensions can be joined as the random variable predicted through spatial methodology was actually time. Therefore a strong demonstration of the importance of time in spatially related models and approaches was also given. The code for the intYEARpolator was developed in Python and it runs smoothly even with this quite big proportion of data. The singular case it can be quite time-demanding is in the case of high proportion of prediction points (missing values). It should also be reproducible to the whole Switzerland with no need for modification. A conditional argument is the use of concentric zones, that can be excluded in case of a total different pattern of processing time.

      -
      - -
      -

      Reproduction Resources

      The source code of the proof-of-concept for national maps can be found here :

        diff --git a/PROJ-TGLN/image/separator.gif b/PROJ-TGLN/image/separator.gif deleted file mode 100644 index 4d41cdcde084632d5e78d87f4dd08a99362f313e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1942 zcmV;H2Wj|6Nk%w1VE_SW0q0%-000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^s6Va%Ew3Wn>_CX>@2HM@dak03rDV0SW;A04x9i00001XaN8S{s8?6 z97wRB!Gj1BDqP60p~Hs|BTAe|v7*I`7&B_z$g!ixk03*e97(dI$&)Bks$9vkrOTHv zW6GRKv!>0PICJXU$+M@=pFo2O9ZIyQ(W6L{DqYI7sne%Wqe`7hwW`&tShH%~%C)Q4 zuVBN99ZR;X*|TWVs$I*rt=qS7(BTJr4xw7TUm@{kM%(=7Y&!9t#9!C>oFt6t5zwd>cgW6PdRySDAyxO3~? z&AYen-@tNG7S|l1w(~o_zLMrk;KVDkz_T4r=J3ZWfB@qKt~EXrquq z`e>w-9y)2InEH8XrkvinX{VsV`Dv)6ra5YIr>+G}8M(b>;$nq)ewb)X-EUDOb3$3<(G3)KP z;Pxf%xZRe^*SY9ktL|Rxwj1rcdc`a6v-IX=@4e0Di`TyV`g<3^_X=zm!SWhh7sBl- ztR=Vn&b#Zjp++omsMYRi@wXF)3-QMNc5Lp)AUix4!|0kU7s}*{ye`Qbs~i{0-pULY z&FQ)fFU%I({1(pH>Rd0+5&P^G(C!MYFVO)j{V$y$M=f>3bXGg{)mU>Jr`1_^J$0R2 zdo6a)RZ|S-*l0Jswb^f`?RLs#dmQK6bO*h*+-KLVH~zkHk39F@fP>Apn}7%2_sf45 zUbog=bJCx`RHAPF1hHar(XKgr?-B! z>YTGK`|Pg|4E61<-+j5`ykkwf>9z-7a_$H3Zv5BCFU)koPU~K=)JC_3w6xW;b^XP@ z4xTCV7<-Q?_}w?oDfyjdj3@fRieD-FnW}#${KUFXDgBkoZzul8+8-(ZkuVC>YE!rHBngdx=61aVkH;w39qVlw<;pMogFJrS{po^l})Bft7z6diF`B82W>l3J(`dvsvN4Gkd?TXJC`VVh cv5vmeAs#Jt$31Q_j(*fs9|IXip9BN|J0wB_kN^Mx diff --git a/PROJ-TGLN/index.html b/PROJ-TGLN/index.html index 33a7ebf..cb024c9 100644 --- a/PROJ-TGLN/index.html +++ b/PROJ-TGLN/index.html @@ -425,10 +425,6 @@

        -
        - -
        -

        1 Introduction

        1.1 Background

        Switzerland's direct payment system is the basis for sustainable, market-oriented agriculture. The federal government supports local farms in the form of various types of contributions and enables farming families to claim an adequate income. (cf. Art. 104 BV)

        @@ -456,10 +452,6 @@

        1.2 Silage Bales - -

      -

      2 Method

      2.1 Overview

      Sileage bale stacks are clearly visible on the newest 2019 layer of the 10cm Swissimage orthophoto provided by Swisstopo. A few hundred of these stacks were manually digitized as vector polygons with QGIS in a semi-automatic approach.

      @@ -527,10 +519,6 @@

      2.6 Post-Processing -
      - -
      -

      3 Results

      3.1 Metrics and Evaluation

      @@ -615,10 +603,6 @@

      3.3 Relevant Features for Delivery

      -
      - -
      -

      4 Discussion

      4.1 Feedback by the Agricultural Office

      The contact person at the agricultural office, Mr. T. Froehlich describes the detections as very accurate with a very low percentage of wrong detections. As a GIS product the detections layer can be used in the standard workflow in order to cross-check base datasets or to perform updates and corrections.

      @@ -626,10 +610,6 @@

      4.1 Feedback by the Agricultural

      Most farmers adhere to the policies and false declaration of areas followed by sanctions is extremely rare. Silage bales are therefore not the first priority when monitoring the advancements and updates considering the LN layer. Nevertheless these new detections allow the end users at the agricultural office to direct their eyes more quickly at relevant hotspots and spare them some aspects of the long and tidious manual search that was performed in the past.

      4.2 Outlook

      Silage bales are by far not the only object limiting the extent of the cultivable subsidized land. A much larger area is consumed by farm yards – heterogenous spaces around the central farm buildings. Monitoring the growth of these spaces into the LN layer would greatly diminuish the manual workload at the agricultural office. As these spaces might also be detectable by a similar approach, this project will continue to investigate the potential of the STDL Object Detection Framework now into this direction.

      -
      - -
      -

      References

      • diff --git a/PROJ-TGPOOL/image/separator.gif b/PROJ-TGPOOL/image/separator.gif deleted file mode 100644 index 4d41cdcde084632d5e78d87f4dd08a99362f313e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1942 zcmV;H2Wj|6Nk%w1VE_SW0q0%-000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^s6Va%Ew3Wn>_CX>@2HM@dak03rDV0SW;A04x9i00001XaN8S{s8?6 z97wRB!Gj1BDqP60p~Hs|BTAe|v7*I`7&B_z$g!ixk03*e97(dI$&)Bks$9vkrOTHv zW6GRKv!>0PICJXU$+M@=pFo2O9ZIyQ(W6L{DqYI7sne%Wqe`7hwW`&tShH%~%C)Q4 zuVBN99ZR;X*|TWVs$I*rt=qS7(BTJr4xw7TUm@{kM%(=7Y&!9t#9!C>oFt6t5zwd>cgW6PdRySDAyxO3~? z&AYen-@tNG7S|l1w(~o_zLMrk;KVDkz_T4r=J3ZWfB@qKt~EXrquq z`e>w-9y)2InEH8XrkvinX{VsV`Dv)6ra5YIr>+G}8M(b>;$nq)ewb)X-EUDOb3$3<(G3)KP z;Pxf%xZRe^*SY9ktL|Rxwj1rcdc`a6v-IX=@4e0Di`TyV`g<3^_X=zm!SWhh7sBl- ztR=Vn&b#Zjp++omsMYRi@wXF)3-QMNc5Lp)AUix4!|0kU7s}*{ye`Qbs~i{0-pULY z&FQ)fFU%I({1(pH>Rd0+5&P^G(C!MYFVO)j{V$y$M=f>3bXGg{)mU>Jr`1_^J$0R2 zdo6a)RZ|S-*l0Jswb^f`?RLs#dmQK6bO*h*+-KLVH~zkHk39F@fP>Apn}7%2_sf45 zUbog=bJCx`RHAPF1hHar(XKgr?-B! z>YTGK`|Pg|4E61<-+j5`ykkwf>9z-7a_$H3Zv5BCFU)koPU~K=)JC_3w6xW;b^XP@ z4xTCV7<-Q?_}w?oDfyjdj3@fRieD-FnW}#${KUFXDgBkoZzul8+8-(ZkuVC>YE!rHBngdx=61aVkH;w39qVlw<;pMogFJrS{po^l})Bft7z6diF`B82W>l3J(`dvsvN4Gkd?TXJC`VVh cv5vmeAs#Jt$31Q_j(*fs9|IXip9BN|J0wB_kN^Mx diff --git a/PROJ-TGPOOL/index.html b/PROJ-TGPOOL/index.html index b2d2fc3..28849a3 100644 --- a/PROJ-TGPOOL/index.html +++ b/PROJ-TGPOOL/index.html @@ -411,18 +411,10 @@

        SWIMMING POOL DETECTI January 2021 to April 2021 - Published on April 21, 2021


        Abstract: The Canton of Thurgau entrusted the STDL with the task of producing swimming pool detections over the cantonal area. Specifically interesting was to leverage the ground truth annotation data from the Canton of Geneva to generate a predictive model in Thurgau while using the publicly available SWISSIMAGE aerial imagery datasets provided by swisstopo. The STDL object detection framework produced highly accurate predictions of swimming pools in Thurgau and thereby proved transferability from one canton to another without having to manually redigitize annotations. These promising detections showcase the highly useful potential of this approach by greatly reducing the need of repetitive manual labour.

        -
        - -
        -

        Introduction

        Until February 2021 the Swiss Territorial Data Lab developed an approach based on Mask RCNN Deep Learning algorithms for the detection of objects on aerial images, with swimming pools serving as a demonstration object. The official cadastres of the Canton of Thurgau include – among many other objects – the registration of larger private swimming pools that are permanently anchored in the ground.

        The challenge is to keep the cadastre up to date on a regular basis which is usually done manually by surveying or verification with aerial imagery. Because the Canton of Thurgau (unlike the Canton of Geneva) does not maintain an own specific register of swimming pools, this study primarily serves as a technology demonstration.

        A secondary goal encompasses detailed knowledge transfer from the data scientist team at the STDL to the cantonal authorities such as providing insight and interpretation guidance into the performance metrics and raising awareness for the prerequisites of the detector framework.

        -
        - -
        -

        Methodology

        Process Overview

        @@ -523,10 +515,6 @@

        Dataset SplitInference and Assessment

        After training, tile by tile the entire “Prediction AoI” as well as the ground truth datasets presented to the final model for prediction generation. From a minimum confidence threshold up to 100% the model produces a segmentation mask for each swimming pool detection delimiting its proposed outer boundary. This boundary can be vectorized and transformed back from image space into map coordinates during post-processing. Through this process we can accumulate a consistent GIS-compatible vector layer for visualization, counting and further analysis.

        In case of the ground truth data the resulting vector layer can be intersected with the original input data (especially the “Test Subset”) to obtain unbiased model performance metrics. In case of a well-performing model the resulting vector layer can then be intersected with the “Prediction AoI”-derived Thurgau dataset to identify missing or surplus swimming pools in the cadastre.

        -
        - -
        -

        Results

        Metrics and Model Selection

        @@ -579,10 +567,6 @@

        False Positives - - -

        Conclusion

        Manual Evaluation

        In the city of Frauenfeld a sample district was chosen for manual evaluation by a STDL data scientist. Even though this task should ideally be performed by a local expert this analysis does provide some insight on the potential errors currently existing within the cadastre as well as the object detection quality. Within the sampled area a total of 99 identifiable swimming pool objects were found to be present.

        @@ -596,10 +580,6 @@

        Manual EvaluationInterpretation

        We can conclude that the use of annotation data gathered in another canton of Switzerland allows for highly accurate predictions in Thurgau using the freely and publicly available SWISSIMAGE dataset. We demonstrate that such a transferrable approach can therefore be applied within a relatively short time span to other cantons without the effort of manually digitizing objects in a new area. This is supported by the assumption that SWISSIMAGE is of the same consistent radiometrical and spatial quality we see in Thurgau over the whole country.

        Manual evaluation will stay paramount before authorities take for example legal action or perform updates and changes to the cadastre. Nevertheless a great amount of workload reduction can be achieved by redirecting the eyes of the experts to the detected or undetected areas that are worth looking at.

        -
        - -
        -

        References

        • diff --git a/PROJ-TREEDET/image/STDL-TreeDet-AssessmentScript-ComplexCase.svg b/PROJ-TREEDET/image/STDL-TreeDet-AssessmentScript-ComplexCase.svg index dda1a10..3697f3c 100644 --- a/PROJ-TREEDET/image/STDL-TreeDet-AssessmentScript-ComplexCase.svg +++ b/PROJ-TREEDET/image/STDL-TreeDet-AssessmentScript-ComplexCase.svg @@ -1,4 +1,4 @@ - - - + + +
          1 m
          1 m
          detected tree
          detected tree
          ground truth tree
          ground truth tree
          1 m
          1 m
          1 m
          1 m
          Text is not SVG - cannot display
          \ No newline at end of file diff --git a/PROJ-TREEDET/image/STDL-TreeDet-AssessmentScript-GraphComponents.svg b/PROJ-TREEDET/image/STDL-TreeDet-AssessmentScript-GraphComponents.svg index ab39a42..53581bf 100644 --- a/PROJ-TREEDET/image/STDL-TreeDet-AssessmentScript-GraphComponents.svg +++ b/PROJ-TREEDET/image/STDL-TreeDet-AssessmentScript-GraphComponents.svg @@ -1,4 +1,4 @@ - - - + + +
          1 m
          1 m
          1 m
          1 m
          1 m
          1 m
          D2
          D2
          D1
          D1
          D3
          D3
          GT3
          GT3
          GT1
          GT1
          GT2
          GT2
          detected tree
          detected tree
          ground truth tree
          ground truth tree
          Text is not SVG - cannot display
          \ No newline at end of file diff --git a/PROJ-TREEDET/image/STDL-TreeDet-AssessmentScript-TaggingInTheMostTrivialCase.svg b/PROJ-TREEDET/image/STDL-TreeDet-AssessmentScript-TaggingInTheMostTrivialCase.svg index 854c4b1..b78c360 100644 --- a/PROJ-TREEDET/image/STDL-TreeDet-AssessmentScript-TaggingInTheMostTrivialCase.svg +++ b/PROJ-TREEDET/image/STDL-TreeDet-AssessmentScript-TaggingInTheMostTrivialCase.svg @@ -1,4 +1,4 @@ - - - + + +
          1 m
          1 m
          detected tree
          detected tree
          ground truth tree
          ground truth tree
          TP
          TP
          1 m
          1 m
          FP
          FP
          TP
          TP
          FN
          FN
          Text is not SVG - cannot display
          \ No newline at end of file diff --git a/PROJ-TREEDET/image/separator.gif b/PROJ-TREEDET/image/separator.gif deleted file mode 100644 index 4d41cdcde084632d5e78d87f4dd08a99362f313e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1942 zcmV;H2Wj|6Nk%w1VE_SW0q0%-000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^s6Va%Ew3Wn>_CX>@2HM@dak03rDV0SW;A04x9i00001XaN8S{s8?6 z97wRB!Gj1BDqP60p~Hs|BTAe|v7*I`7&B_z$g!ixk03*e97(dI$&)Bks$9vkrOTHv zW6GRKv!>0PICJXU$+M@=pFo2O9ZIyQ(W6L{DqYI7sne%Wqe`7hwW`&tShH%~%C)Q4 zuVBN99ZR;X*|TWVs$I*rt=qS7(BTJr4xw7TUm@{kM%(=7Y&!9t#9!C>oFt6t5zwd>cgW6PdRySDAyxO3~? z&AYen-@tNG7S|l1w(~o_zLMrk;KVDkz_T4r=J3ZWfB@qKt~EXrquq z`e>w-9y)2InEH8XrkvinX{VsV`Dv)6ra5YIr>+G}8M(b>;$nq)ewb)X-EUDOb3$3<(G3)KP z;Pxf%xZRe^*SY9ktL|Rxwj1rcdc`a6v-IX=@4e0Di`TyV`g<3^_X=zm!SWhh7sBl- ztR=Vn&b#Zjp++omsMYRi@wXF)3-QMNc5Lp)AUix4!|0kU7s}*{ye`Qbs~i{0-pULY z&FQ)fFU%I({1(pH>Rd0+5&P^G(C!MYFVO)j{V$y$M=f>3bXGg{)mU>Jr`1_^J$0R2 zdo6a)RZ|S-*l0Jswb^f`?RLs#dmQK6bO*h*+-KLVH~zkHk39F@fP>Apn}7%2_sf45 zUbog=bJCx`RHAPF1hHar(XKgr?-B! z>YTGK`|Pg|4E61<-+j5`ykkwf>9z-7a_$H3Zv5BCFU)koPU~K=)JC_3w6xW;b^XP@ z4xTCV7<-Q?_}w?oDfyjdj3@fRieD-FnW}#${KUFXDgBkoZzul8+8-(ZkuVC>YE!rHBngdx=61aVkH;w39qVlw<;pMogFJrS{po^l})Bft7z6diF`B82W>l3J(`dvsvN4Gkd?TXJC`VVh cv5vmeAs#Jt$31Q_j(*fs9|IXip9BN|J0wB_kN^Mx diff --git a/PROJ-TREEDET/index.html b/PROJ-TREEDET/index.html index 119ad5f..a1040cd 100644 --- a/PROJ-TREEDET/index.html +++ b/PROJ-TREEDET/index.html @@ -473,10 +473,6 @@


          Abstract: Trees are essential assets, in urban context among others. Since several years, the Canton of Geneva maintains a digital inventory of isolated (or "urban") trees. This project aimed at designing a methodology to automatically update Geneva's tree inventory, using high-density LiDAR data and off-the-shelf software. Eventually, only the sub-task of detecting and geolocating trees was explored. Comparisons against ground truth data show that the task can be more or less tricky depending on how sparse or dense trees are. In mixed contexts, we managed to reach an accuracy of around 60%, which unfortunately is not high enough to foresee a fully unsupervised process. Still, as discussed in the concluding section there may be room for improvement.

          -
          - -
          -

          1. Introduction

          1.1 Context

          Human societies benefits from the presence of trees in cities and their surroundings. More specifically, as far as urban contexts are concerned, trees deliver many ecosystem services such as:

          @@ -879,10 +875,6 @@

          1.5.2 Digital Forestry Toolbox (DFT)stem detection (cf. this other tutorial).

        • We refer the reader to the official documentation for further information.

          -
          - -
          -

          2. Method

          As already stated, in spite of the thorough and ambitious objectives of this project (cf. here), only the

            @@ -1407,10 +1399,6 @@

            2.4.2 From counts to metrics - - -

            3. Results and discussion

            Figure 3.1 shows some of the tree detection trials we performed, using Terrascan and DFT. Each trial corresponds to a different set of parameters and is represented either by gray dots or colored diamonds in a precision-recall plot (see the image caption for further details).

            @@ -1697,10 +1685,6 @@

            3.5 Tre Figure 3.10: Result of the application of the best performing Terrascan parameters to the full dataset.

            -
            - -
            -

            4. Conclusion and outlook

            Despite all the efforts documented here above, the results we obtained are not as satisfactory as expected. Indeed, the metrics we managed to attain all sectors combined indicate that tree detections are neither reliable (low precision) nor exhaustive (low recall). Still, we think that results may be improved by further developing some ideas, which we sketch in the following.

            4.1 Further the DFT parameter space exploration

            @@ -1738,16 +1722,8 @@

            4.5 Use Machine Learningusing our best TerraScan/DFT model to segment the 3D point cloud;
          • using 2D ground truth data to filter out wrong segmentations.
          • -
            - -
            -

            5. Other resources

            The work documented here was the object of a Forum SITG which took place online on March 29, 2022. Videos and presentation materials can be found here.

            -
            - -
            -

            6. Acknowledgements

            This project was made possible thanks to a tight collaboration between the STDL team and some experts of the Canton of Neuchâtel (NE), the Canton of Geneva (GE), the Conservatoire et Jardin botaniques de la Ville de Genève (CJBG) and the University of Geneva (UNIGE). The STDL team acknowledges key contributions from Marc Riedo (SITN, NE), Bertrand Favre (OCAN, GE), Nicolas Wyler (CJBG) and Gregory Giuliani (UNIGE). We also wish to warmly thank Matthew Parkan for developing, maintaining and advising us on the Digital Forestry Toolbox.

            diff --git a/PROJ-TREEDET/resources/LAS_Preprocess_2021_cleaning.fmw b/PROJ-TREEDET/resources/LAS_Preprocess_2021_cleaning.fmw index fc604df..429187a 100644 --- a/PROJ-TREEDET/resources/LAS_Preprocess_2021_cleaning.fmw +++ b/PROJ-TREEDET/resources/LAS_Preprocess_2021_cleaning.fmw @@ -1,2479 +1,2479 @@ -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! - -FME_PYTHON_VERSION 37 -GUI IGNORE SourceDataset_LAS_1,LAS_IN_USE_SEARCH_ENVELOPE_LAS_1,LAS_IN_SEARCH_ENVELOPE_MINX_LAS_1,LAS_IN_SEARCH_ENVELOPE_MINY_LAS_1,LAS_IN_SEARCH_ENVELOPE_MAXX_LAS_1,LAS_IN_SEARCH_ENVELOPE_MAXY_LAS_1,LAS_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_LAS_1,LAS_IN_CLIP_TO_ENVELOPE_LAS_1,LAS_IN_NETWORK_AUTHENTICATION_LAS_1,SourceDataset_GEOTIFF_1,GEOTIFF_IN_APPLY_GCPS_GEOTIFF_1,GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_1,GEOTIFF_IN_USE_SEARCH_ENVELOPE_GEOTIFF_1,GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_1,GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_1,GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_1,GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_1,GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_1,GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_1,GEOTIFF_IN_GEOTIFF_RDR_ADV_PARM_GROUP_GEOTIFF_1,GEOTIFF_IN_PYRAMID_LEVEL_GEOTIFF_1,GEOTIFF_IN_PREFER_FILE_CS_UNITS_GEOTIFF_1,GEOTIFF_IN_READ_OFFSETS_IN_CS_UNITS_GEOTIFF_1,GEOTIFF_IN_IGNORE_RASTER_TYPE_KEY_GEOTIFF_1,GEOTIFF_IN_NETWORK_AUTHENTICATION_GEOTIFF_1,SourceDataset_GEOTIFF_2,GEOTIFF_IN_APPLY_GCPS_GEOTIFF_2,GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_2,GEOTIFF_IN_USE_SEARCH_ENVELOPE_GEOTIFF_2,GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_2,GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_2,GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_2,GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_2,GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_2,GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_2,GEOTIFF_IN_GEOTIFF_RDR_ADV_PARM_GROUP_GEOTIFF_2,GEOTIFF_IN_PYRAMID_LEVEL_GEOTIFF_2,GEOTIFF_IN_PREFER_FILE_CS_UNITS_GEOTIFF_2,GEOTIFF_IN_READ_OFFSETS_IN_CS_UNITS_GEOTIFF_2,GEOTIFF_IN_IGNORE_RASTER_TYPE_KEY_GEOTIFF_2,GEOTIFF_IN_NETWORK_AUTHENTICATION_GEOTIFF_2,DestDataset_LAS_2,LAS_OUT_FME_GROUP_NAMED1_LAS_2,LAS_OUT_VERSION_LAS_2,LAS_OUT_COMPRESSION_LAS_2,LAS_OUT_USER_GROUP_LAS_2,LAS_OUT_USER_COMPONENTS_LAS_2,LAS_OUT_ADVANCED_PARAMETERS_LAS_2,LAS_OUT_LAS_DATASET_FILE_LAS_2,LAS_OUT_ARCGIS_LAS_DATASET_LAS_2,LAS_OUT_COMPUTE_STATISTICS_ON_ARCGIS_LAS_DATASET_LAS_2,LAS_OUT_ZLAS_PARAMETERS_LAS_2,LAS_OUT_ZLAS_REARRANGE_POINTS_LAS_2,LAS_OUT_ZLAS_POINT_SPACING_SOURCE_LAS_2,LAS_OUT_ZLAS_POINT_SPACING_VALUE_LAS_2 -DEFAULT_MACRO SourceDataset_LAS G:\STDL\LIDAR_PAST\Comp_pretrait_2021\LAS_2021_norm045_10traj.las -GUI MULTIFILE SourceDataset_LAS LAS_Files(*.las;*.laz;*.zlas;*.lasd)|*.las;*.laz;*.zlas;*.lasd|LAS_Files(*.las)|*.las|Compressed_LAS_Files(*.laz)|*.laz|Esri_Optimized_LAS_Files(*.zlas)|*.zlas|Esri_LAS_Dataset_Files(*.lasd)|*.lasd|Compressed_Files(*.bz2;*.gz)|*.bz2;*.gz|Archive_Files(*.7z;*.7zip;*.rar;*.rvz;*.tar;*.tar.bz2;*.tar.gz;*.tgz;*.zip;*.zipx)|*.7z;*.7zip;*.rar;*.rvz;*.tar;*.tar.bz2;*.tar.gz;*.tgz;*.zip;*.zipx|All_files(*)|* Source ASPRS LAS File(s): -DEFAULT_MACRO SourceDataset_GEOTIFF G:\STDL\LIDAR_2021\LIDAR_new_selection\GT_zones\Murs_THOCHB_Buff05_rast.tif -GUI MULTIFILE SourceDataset_GEOTIFF GeoTIFF_Files(*.tif;*.tiff;*.itiff;*.ovr)|*.tif;*.tiff;*.itiff;*.ovr|Compressed_Files(*.bz2;*.gz)|*.bz2;*.gz|Archive_Files(*.7z;*.7zip;*.rar;*.rvz;*.tar;*.tar.bz2;*.tar.gz;*.tgz;*.zip;*.zipx)|*.7z;*.7zip;*.rar;*.rvz;*.tar;*.tar.bz2;*.tar.gz;*.tgz;*.zip;*.zipx|All_Files(*)|* Source GeoTIFF File(s): -DEFAULT_MACRO DestDataset_LAS G:\STDL\LIDAR_PAST\Comp_pretrait_2021 -GUI DIRNAME DestDataset_LAS Destination ASPRS LAS Folder: -DEFAULT_MACRO SourceDataset_GEOTIFF_3 G:\STDL\LIDAR_2021\LIDAR_new_selection\GT_zones\MNC_GE_Raster_2.tif -GUI MULTIFILE SourceDataset_GEOTIFF_3 GeoTIFF_Files(*.tif;*.tiff;*.itiff;*.ovr)|*.tif;*.tiff;*.itiff;*.ovr|Compressed_Files(*.bz2;*.gz)|*.bz2;*.gz|Archive_Files(*.7z;*.7zip;*.rar;*.rvz;*.tar;*.tar.bz2;*.tar.gz;*.tgz;*.zip;*.zipx)|*.7z;*.7zip;*.rar;*.rvz;*.tar;*.tar.bz2;*.tar.gz;*.tgz;*.zip;*.zipx|All_Files(*)|* Source GeoTIFF File(s): -INCLUDE [ if {{$(SourceDataset_LAS)} == {}} { puts_real {Parameter 'SourceDataset_LAS' must be given a value.}; exit 1; }; ] -INCLUDE [ if {{$(SourceDataset_GEOTIFF)} == {}} { puts_real {Parameter 'SourceDataset_GEOTIFF' must be given a value.}; exit 1; }; ] -INCLUDE [ if {{$(DestDataset_LAS)} == {}} { puts_real {Parameter 'DestDataset_LAS' must be given a value.}; exit 1; }; ] -INCLUDE [ if {{$(SourceDataset_GEOTIFF_3)} == {}} { puts_real {Parameter 'SourceDataset_GEOTIFF_3' must be given a value.}; exit 1; }; ] -#! START_HEADER -#! START_WB_HEADER -READER_TYPE MULTI_READER -MULTI_READER_TYPE{0} LAS -MULTI_READER_KEYWORD{0} LAS_1 -MULTI_READER_GEN_DIRECTIVES{0} USE_SEARCH_ENVELOPE,NO,CLIP_TO_ENVELOPE,NO,READER_META_ATTRIBUTES,fme_dataset,GROUP_BY_DATASET,No,_MERGE_SCHEMAS,YES,SEARCH_ENVELOPE_MAXX,0,SEARCH_ENVELOPE_MAXY,0,EXPOSE_ATTRS_GROUP,,SEARCH_ENVELOPE_COORDINATE_SYSTEM,,SEARCH_ENVELOPE_MINY,0,LAS_EXPOSE_FORMAT_ATTRS,,SEARCH_ENVELOPE_MINX,0 -MULTI_READER_TYPE{1} GEOTIFF -MULTI_READER_KEYWORD{1} GEOTIFF_1 -MULTI_READER_GEN_DIRECTIVES{1} APPLY_GCPS,NO,SEARCH_ENVELOPE_COORDINATE_SYSTEM,,SEARCH_ENVELOPE_MAXY,0,USE_SEARCH_ENVELOPE,NO,GCP_INTERPOLATION_METHOD,NearestNeighbor,GEOTIFF_EXPOSE_FORMAT_ATTRS,,SEARCH_ENVELOPE_MINX,0,SEARCH_ENVELOPE_MAXX,0,IGNORE_RASTER_TYPE_KEY,No,FEATURE_TYPE_NAME,FORMAT_NAME,EXPOSE_ATTRS_GROUP,,SEARCH_ENVELOPE_MINY,0,_MERGE_SCHEMAS,YES,PYRAMID_LEVEL,,GEOTIFF_RDR_ADV_PARM_GROUP,,PREFER_FILE_CS_UNITS,Yes,READ_OFFSETS_IN_CS_UNITS,No,READER_META_ATTRIBUTES,fme_datasetfme_basename,CLIP_TO_ENVELOPE,NO -MULTI_READER_TYPE{2} GEOTIFF -MULTI_READER_KEYWORD{2} GEOTIFF_2 -MULTI_READER_GEN_DIRECTIVES{2} IGNORE_RASTER_TYPE_KEY,No,GEOTIFF_EXPOSE_FORMAT_ATTRS,,PYRAMID_LEVEL,,USE_SEARCH_ENVELOPE,NO,SEARCH_ENVELOPE_MINX,0,SEARCH_ENVELOPE_MAXY,0,GCP_INTERPOLATION_METHOD,NearestNeighbor,GEOTIFF_RDR_ADV_PARM_GROUP,,EXPOSE_ATTRS_GROUP,,SEARCH_ENVELOPE_MAXX,0,CLIP_TO_ENVELOPE,NO,SEARCH_ENVELOPE_MINY,0,_MERGE_SCHEMAS,YES,PREFER_FILE_CS_UNITS,Yes,READER_META_ATTRIBUTES,fme_datasetfme_basename,READ_OFFSETS_IN_CS_UNITS,No,FEATURE_TYPE_NAME,FORMAT_NAME,APPLY_GCPS,NO,SEARCH_ENVELOPE_COORDINATE_SYSTEM, -WRITER_TYPE MULTI_WRITER -MULTI_WRITER_DATASET_ORDER BY_ID -MULTI_WRITER_FIRST_WRITER_ID 0 -MULTI_WRITER_TYPE{0} LAS -MULTI_WRITER_KEYWORD{0} LAS_2 -#! END_WB_HEADER -#! START_WB_HEADER -MACRO WB_KEYWORD "LAS_1" -#! END_WB_HEADER -#! START_SOURCE_HEADER LAS LAS_1 -# ======================================================================= -# The following GUI line prompts for a file to be used as the source LAS file. -# The user input is stored in a macro, which is then used to define -# the dataset to be read. -# The dataset this mapping file was generated from was: -#! END_SOURCE_HEADER -#! START_WB_HEADER -DEFAULT_MACRO SourceDataset -INCLUDE [ if {{$(SourceDataset)} != ""} { \ - puts {DEFAULT_MACRO SourceDataset_LAS_1 $(SourceDataset)} \ - } ] -#! END_WB_HEADER -#! START_SOURCE_HEADER LAS LAS_1 -DEFAULT_MACRO SourceDataset_LAS_1 $(SourceDataset_LAS) -GUI MULTIFILE SourceDataset_LAS_1 LAS_Files(*.las;*.laz;*.zlas;*.lasd)|*.las;*.laz;*.zlas;*.lasd|LAS_Files(*.las)|*.las|Compressed_LAS_Files(*.laz)|*.laz|Esri_Optimized_LAS_Files(*.zlas)|*.zlas|Esri_LAS_Dataset_Files(*.lasd)|*.lasd|All_files(*)|* Source ASPRS LAS File(s): -DEFAULT_MACRO LAS_IN_READER_META_ATTRIBUTES_LAS_1 fme_dataset -LAS_1_READER_META_ATTRIBUTES "$(LAS_IN_READER_META_ATTRIBUTES_LAS_1)" -DEFAULT_MACRO LAS_IN_GROUP_BY_DATASET_LAS_1 No -LAS_1_GROUP_BY_DATASET "$(LAS_IN_GROUP_BY_DATASET_LAS_1)" -DEFAULT_MACRO LAS_IN_EXPOSE_ATTRS_GROUP_LAS_1 -LAS_1_EXPOSE_ATTRS_GROUP "$(LAS_IN_EXPOSE_ATTRS_GROUP_LAS_1)" -# Include this file in source setting section to add external search envelope processing -# Zero as a default means we don't do any search -- this makes workbench happier -DEFAULT_MACRO LAS_IN_USE_SEARCH_ENVELOPE_LAS_1 NO -LAS_1_USE_SEARCH_ENVELOPE "$(LAS_IN_USE_SEARCH_ENVELOPE_LAS_1)" -GUI ACTIVEDISCLOSUREGROUP LAS_IN_USE_SEARCH_ENVELOPE_LAS_1 LAS_IN_SEARCH_ENVELOPE_MINX_LAS_1%LAS_IN_SEARCH_ENVELOPE_MINY_LAS_1%LAS_IN_SEARCH_ENVELOPE_MAXX_LAS_1%LAS_IN_SEARCH_ENVELOPE_MAXY_LAS_1%LAS_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_LAS_1%LAS_IN_CLIP_TO_ENVELOPE_LAS_1%LAS_IN_SEARCH_METHOD%LAS_IN_SEARCH_METHOD_FILTER%LAS_IN_SEARCH_ORDER%LAS_IN_SEARCH_FEATURE%LAS_IN_DUMMY_SEARCH_ENVELOPE_PARAMETER Use Search Envelope -# =========================================================================== -GUI LOOKUP LAS_IN_SEARCH_ENVELOPE_MINX_LAS_1 ,0 -DEFAULT_MACRO LAS_IN_SEARCH_ENVELOPE_MINX_LAS_1 0 -LAS_1_SEARCH_ENVELOPE "$(LAS_IN_SEARCH_ENVELOPE_MINX_LAS_1)" -GUI OPTIONAL FLOAT LAS_IN_SEARCH_ENVELOPE_MINX_LAS_1 Minimum X: -# =========================================================================== -GUI LOOKUP LAS_IN_SEARCH_ENVELOPE_MINY_LAS_1 ,0 -DEFAULT_MACRO LAS_IN_SEARCH_ENVELOPE_MINY_LAS_1 0 -LAS_1_SEARCH_ENVELOPE "$(LAS_IN_SEARCH_ENVELOPE_MINY_LAS_1)" -GUI OPTIONAL FLOAT LAS_IN_SEARCH_ENVELOPE_MINY_LAS_1 Minimum Y: -# =========================================================================== -GUI LOOKUP LAS_IN_SEARCH_ENVELOPE_MAXX_LAS_1 ,0 -DEFAULT_MACRO LAS_IN_SEARCH_ENVELOPE_MAXX_LAS_1 0 -LAS_1_SEARCH_ENVELOPE "$(LAS_IN_SEARCH_ENVELOPE_MAXX_LAS_1)" -GUI OPTIONAL FLOAT LAS_IN_SEARCH_ENVELOPE_MAXX_LAS_1 Maximum X: -# =========================================================================== -GUI LOOKUP LAS_IN_SEARCH_ENVELOPE_MAXY_LAS_1 ,0 -DEFAULT_MACRO LAS_IN_SEARCH_ENVELOPE_MAXY_LAS_1 0 -LAS_1_SEARCH_ENVELOPE "$(LAS_IN_SEARCH_ENVELOPE_MAXY_LAS_1)" -GUI OPTIONAL FLOAT LAS_IN_SEARCH_ENVELOPE_MAXY_LAS_1 Maximum Y: -# =========================================================================== -GUI LOOKUP LAS_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_LAS_1 , -DEFAULT_MACRO LAS_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_LAS_1 -LAS_1_SEARCH_ENVELOPE "$(LAS_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_LAS_1)" -GUI OPTIONAL COORDSYS LAS_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_LAS_1 Search Envelope Coordinate System: -# =========================================================================== -# BUG18999: We now have a soft clip to fall back on like native spatial index -# thus we are reintroducing the clip to envelop as an option for users. -# Defualt to soft clip as per the existing database readers we are emulating -GUI LOOKUP LAS_IN_CLIP_TO_ENVELOPE_LAS_1 ,NO -DEFAULT_MACRO LAS_IN_CLIP_TO_ENVELOPE_LAS_1 NO -LAS_1_CLIP_TO_ENVELOPE "$(LAS_IN_CLIP_TO_ENVELOPE_LAS_1)" -GUI OPTIONAL CHECKBOX LAS_IN_CLIP_TO_ENVELOPE_LAS_1 YES%NO Clip to Search Envelope -# =========================================================================== -DEFAULT_MACRO LAS_IN_NETWORK_AUTHENTICATION_LAS_1 -LAS_1_NETWORK_AUTHENTICATION "$(LAS_IN_NETWORK_AUTHENTICATION_LAS_1)" -GUI OPTIONAL AUTHENTICATOR LAS_IN_NETWORK_AUTHENTICATION_LAS_1 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication -# ============================================================================ -DEFAULT_MACRO LAS_IN_ATTRIBUTE_READING_LAS_1 ALL -LAS_1_ATTRIBUTE_READING "$(LAS_IN_ATTRIBUTE_READING_LAS_1)" -# ============================================================================ -LAS_1_GENERATE_FME_BUILD_NUM 20596 -LAS_1_DATASET "$(SourceDataset_LAS_1)" -#! END_SOURCE_HEADER -#! START_WB_HEADER -MACRO WB_KEYWORD "GEOTIFF_1" -#! END_WB_HEADER -#! START_SOURCE_HEADER GEOTIFF GEOTIFF_1 -# ======================================================================= -# The following GUI line prompts for a file to be used as the source GEOTIFF file. -# The user input is stored in a macro, which is then used to define -# the dataset to be read. -# The dataset this mapping file was generated from was: -#! END_SOURCE_HEADER -#! START_WB_HEADER -DEFAULT_MACRO SourceDataset -INCLUDE [ if {{$(SourceDataset)} != ""} { \ - puts {DEFAULT_MACRO SourceDataset_GEOTIFF_1 $(SourceDataset)} \ - } ] -#! END_WB_HEADER -#! START_SOURCE_HEADER GEOTIFF GEOTIFF_1 -DEFAULT_MACRO SourceDataset_GEOTIFF_1 $(SourceDataset_GEOTIFF) -GUI MULTIFILE SourceDataset_GEOTIFF_1 GeoTIFF_Files(*.tif;*.tiff;*.itiff;*.ovr)|*.tif;*.tiff;*.itiff;*.ovr|All_Files(*)|* Source GeoTIFF File(s): -DEFAULT_MACRO GEOTIFF_IN_READER_META_ATTRIBUTES_GEOTIFF_1 fme_dataset fme_basename -GEOTIFF_1_READER_META_ATTRIBUTES "$(GEOTIFF_IN_READER_META_ATTRIBUTES_GEOTIFF_1)" -DEFAULT_MACRO GEOTIFF_IN_FEATURE_TYPE_NAME_GEOTIFF_1 FORMAT_NAME -GEOTIFF_1_FEATURE_TYPE_NAME "$(GEOTIFF_IN_FEATURE_TYPE_NAME_GEOTIFF_1)" -DEFAULT_MACRO GEOTIFF_IN_APPLY_GCPS_GEOTIFF_1 NO -GEOTIFF_1_APPLY_GCPS "$(GEOTIFF_IN_APPLY_GCPS_GEOTIFF_1)" -GUI ACTIVEDISCLOSUREGROUP GEOTIFF_IN_APPLY_GCPS_GEOTIFF_1 GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_1 Apply GCP's -DEFAULT_MACRO GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_1 NearestNeighbor -GEOTIFF_1_GCP_INTERPOLATION_METHOD "$(GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_1)" -GUI LOOKUP_CHOICE GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_1 NearestNeighbor,NearestNeighbor%Bilinear,Bilinear%Bicubic,Bicubic GCP Interpolation Method -GUI LOOKUP GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_1 ,NearestNeighbor -DEFAULT_MACRO GEOTIFF_IN_EXPOSE_ATTRS_GROUP_GEOTIFF_1 -GEOTIFF_1_EXPOSE_ATTRS_GROUP "$(GEOTIFF_IN_EXPOSE_ATTRS_GROUP_GEOTIFF_1)" -# Include this file in source setting section to add external search envelope processing -# Zero as a default means we don't do any search -- this makes workbench happier -DEFAULT_MACRO GEOTIFF_IN_USE_SEARCH_ENVELOPE_GEOTIFF_1 NO -GEOTIFF_1_USE_SEARCH_ENVELOPE "$(GEOTIFF_IN_USE_SEARCH_ENVELOPE_GEOTIFF_1)" -GUI ACTIVEDISCLOSUREGROUP GEOTIFF_IN_USE_SEARCH_ENVELOPE_GEOTIFF_1 GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_1%GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_1%GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_1%GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_1%GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_1%GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_1%GEOTIFF_IN_SEARCH_METHOD%GEOTIFF_IN_SEARCH_METHOD_FILTER%GEOTIFF_IN_SEARCH_ORDER%GEOTIFF_IN_SEARCH_FEATURE%GEOTIFF_IN_DUMMY_SEARCH_ENVELOPE_PARAMETER Use Search Envelope -# =========================================================================== -GUI LOOKUP GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_1 ,0 -DEFAULT_MACRO GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_1 0 -GEOTIFF_1_SEARCH_ENVELOPE "$(GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_1)" -GUI OPTIONAL FLOAT GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_1 Minimum X: -# =========================================================================== -GUI LOOKUP GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_1 ,0 -DEFAULT_MACRO GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_1 0 -GEOTIFF_1_SEARCH_ENVELOPE "$(GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_1)" -GUI OPTIONAL FLOAT GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_1 Minimum Y: -# =========================================================================== -GUI LOOKUP GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_1 ,0 -DEFAULT_MACRO GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_1 0 -GEOTIFF_1_SEARCH_ENVELOPE "$(GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_1)" -GUI OPTIONAL FLOAT GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_1 Maximum X: -# =========================================================================== -GUI LOOKUP GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_1 ,0 -DEFAULT_MACRO GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_1 0 -GEOTIFF_1_SEARCH_ENVELOPE "$(GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_1)" -GUI OPTIONAL FLOAT GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_1 Maximum Y: -# =========================================================================== -GUI LOOKUP GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_1 , -DEFAULT_MACRO GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_1 -GEOTIFF_1_SEARCH_ENVELOPE "$(GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_1)" -GUI OPTIONAL COORDSYS GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_1 Search Envelope Coordinate System: -# =========================================================================== -# BUG18999: We now have a soft clip to fall back on like native spatial index -# thus we are reintroducing the clip to envelop as an option for users. -# Defualt to soft clip as per the existing database readers we are emulating -GUI LOOKUP GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_1 ,NO -DEFAULT_MACRO GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_1 NO -GEOTIFF_1_CLIP_TO_ENVELOPE "$(GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_1)" -GUI OPTIONAL CHECKBOX GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_1 YES%NO Clip to Search Envelope -DEFAULT_MACRO GEOTIFF_IN_GEOTIFF_RDR_ADV_PARM_GROUP_GEOTIFF_1 -GUI OPTIONAL DISCLOSUREGROUP GEOTIFF_IN_GEOTIFF_RDR_ADV_PARM_GROUP_GEOTIFF_1 GEOTIFF_IN_PYRAMID_LEVEL_GEOTIFF_1%GEOTIFF_IN_PREFER_FILE_CS_UNITS_GEOTIFF_1%GEOTIFF_IN_READ_OFFSETS_IN_CS_UNITS_GEOTIFF_1%GEOTIFF_IN_IGNORE_RASTER_TYPE_KEY_GEOTIFF_1 Advanced -DEFAULT_MACRO GEOTIFF_IN_PYRAMID_LEVEL_GEOTIFF_1 -GEOTIFF_1_PYRAMID_LEVEL "$(GEOTIFF_IN_PYRAMID_LEVEL_GEOTIFF_1)" -GUI OPTIONAL INTEGER GEOTIFF_IN_PYRAMID_LEVEL_GEOTIFF_1 Pyramid Level to Read: -DEFAULT_MACRO GEOTIFF_IN_PREFER_FILE_CS_UNITS_GEOTIFF_1 Yes -GEOTIFF_1_PREFER_FILE_CS_UNITS "$(GEOTIFF_IN_PREFER_FILE_CS_UNITS_GEOTIFF_1)" -GUI CHOICE GEOTIFF_IN_PREFER_FILE_CS_UNITS_GEOTIFF_1 Yes%No Prefer File Coordinate System Units: -DEFAULT_MACRO GEOTIFF_IN_READ_OFFSETS_IN_CS_UNITS_GEOTIFF_1 No -GEOTIFF_1_READ_OFFSETS_IN_CS_UNITS "$(GEOTIFF_IN_READ_OFFSETS_IN_CS_UNITS_GEOTIFF_1)" -GUI CHOICE GEOTIFF_IN_READ_OFFSETS_IN_CS_UNITS_GEOTIFF_1 Yes%No Offsets in Coordinate System Units: -DEFAULT_MACRO GEOTIFF_IN_IGNORE_RASTER_TYPE_KEY_GEOTIFF_1 No -GEOTIFF_1_IGNORE_RASTER_TYPE_KEY "$(GEOTIFF_IN_IGNORE_RASTER_TYPE_KEY_GEOTIFF_1)" -GUI CHOICE GEOTIFF_IN_IGNORE_RASTER_TYPE_KEY_GEOTIFF_1 Yes%No Ignore Raster Type Key: -# =========================================================================== -DEFAULT_MACRO GEOTIFF_IN_NETWORK_AUTHENTICATION_GEOTIFF_1 -GEOTIFF_1_NETWORK_AUTHENTICATION "$(GEOTIFF_IN_NETWORK_AUTHENTICATION_GEOTIFF_1)" -GUI OPTIONAL AUTHENTICATOR GEOTIFF_IN_NETWORK_AUTHENTICATION_GEOTIFF_1 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication -# ============================================================================ -DEFAULT_MACRO GEOTIFF_IN_ATTRIBUTE_READING_GEOTIFF_1 ALL -GEOTIFF_1_ATTRIBUTE_READING "$(GEOTIFF_IN_ATTRIBUTE_READING_GEOTIFF_1)" -# ============================================================================ -GEOTIFF_1_GENERATE_FME_BUILD_NUM 20596 -GEOTIFF_1_DATASET "$(SourceDataset_GEOTIFF_1)" -#! END_SOURCE_HEADER -#! START_WB_HEADER -MACRO WB_KEYWORD "GEOTIFF_2" -#! END_WB_HEADER -#! START_SOURCE_HEADER GEOTIFF GEOTIFF_2 -# ======================================================================= -# The following GUI line prompts for a file to be used as the source GEOTIFF file. -# The user input is stored in a macro, which is then used to define -# the dataset to be read. -# The dataset this mapping file was generated from was: -#! END_SOURCE_HEADER -#! START_WB_HEADER -DEFAULT_MACRO SourceDataset -INCLUDE [ if {{$(SourceDataset)} != ""} { \ - puts {DEFAULT_MACRO SourceDataset_GEOTIFF_2 $(SourceDataset)} \ - } ] -#! END_WB_HEADER -#! START_SOURCE_HEADER GEOTIFF GEOTIFF_2 -DEFAULT_MACRO SourceDataset_GEOTIFF_2 $(SourceDataset_GEOTIFF_3) -GUI MULTIFILE SourceDataset_GEOTIFF_2 GeoTIFF_Files(*.tif;*.tiff;*.itiff;*.ovr)|*.tif;*.tiff;*.itiff;*.ovr|All_Files(*)|* Source GeoTIFF File(s): -DEFAULT_MACRO GEOTIFF_IN_READER_META_ATTRIBUTES_GEOTIFF_2 fme_dataset fme_basename -GEOTIFF_2_READER_META_ATTRIBUTES "$(GEOTIFF_IN_READER_META_ATTRIBUTES_GEOTIFF_2)" -DEFAULT_MACRO GEOTIFF_IN_FEATURE_TYPE_NAME_GEOTIFF_2 FORMAT_NAME -GEOTIFF_2_FEATURE_TYPE_NAME "$(GEOTIFF_IN_FEATURE_TYPE_NAME_GEOTIFF_2)" -DEFAULT_MACRO GEOTIFF_IN_APPLY_GCPS_GEOTIFF_2 NO -GEOTIFF_2_APPLY_GCPS "$(GEOTIFF_IN_APPLY_GCPS_GEOTIFF_2)" -GUI ACTIVEDISCLOSUREGROUP GEOTIFF_IN_APPLY_GCPS_GEOTIFF_2 GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_2 Apply GCP's -DEFAULT_MACRO GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_2 NearestNeighbor -GEOTIFF_2_GCP_INTERPOLATION_METHOD "$(GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_2)" -GUI LOOKUP_CHOICE GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_2 NearestNeighbor,NearestNeighbor%Bilinear,Bilinear%Bicubic,Bicubic GCP Interpolation Method -GUI LOOKUP GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_2 ,NearestNeighbor -DEFAULT_MACRO GEOTIFF_IN_EXPOSE_ATTRS_GROUP_GEOTIFF_2 -GEOTIFF_2_EXPOSE_ATTRS_GROUP "$(GEOTIFF_IN_EXPOSE_ATTRS_GROUP_GEOTIFF_2)" -# Include this file in source setting section to add external search envelope processing -# Zero as a default means we don't do any search -- this makes workbench happier -DEFAULT_MACRO GEOTIFF_IN_USE_SEARCH_ENVELOPE_GEOTIFF_2 NO -GEOTIFF_2_USE_SEARCH_ENVELOPE "$(GEOTIFF_IN_USE_SEARCH_ENVELOPE_GEOTIFF_2)" -GUI ACTIVEDISCLOSUREGROUP GEOTIFF_IN_USE_SEARCH_ENVELOPE_GEOTIFF_2 GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_2%GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_2%GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_2%GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_2%GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_2%GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_2%GEOTIFF_IN_SEARCH_METHOD%GEOTIFF_IN_SEARCH_METHOD_FILTER%GEOTIFF_IN_SEARCH_ORDER%GEOTIFF_IN_SEARCH_FEATURE%GEOTIFF_IN_DUMMY_SEARCH_ENVELOPE_PARAMETER Use Search Envelope -# =========================================================================== -GUI LOOKUP GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_2 ,0 -DEFAULT_MACRO GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_2 0 -GEOTIFF_2_SEARCH_ENVELOPE "$(GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_2)" -GUI OPTIONAL FLOAT GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_2 Minimum X: -# =========================================================================== -GUI LOOKUP GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_2 ,0 -DEFAULT_MACRO GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_2 0 -GEOTIFF_2_SEARCH_ENVELOPE "$(GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_2)" -GUI OPTIONAL FLOAT GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_2 Minimum Y: -# =========================================================================== -GUI LOOKUP GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_2 ,0 -DEFAULT_MACRO GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_2 0 -GEOTIFF_2_SEARCH_ENVELOPE "$(GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_2)" -GUI OPTIONAL FLOAT GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_2 Maximum X: -# =========================================================================== -GUI LOOKUP GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_2 ,0 -DEFAULT_MACRO GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_2 0 -GEOTIFF_2_SEARCH_ENVELOPE "$(GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_2)" -GUI OPTIONAL FLOAT GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_2 Maximum Y: -# =========================================================================== -GUI LOOKUP GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_2 , -DEFAULT_MACRO GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_2 -GEOTIFF_2_SEARCH_ENVELOPE "$(GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_2)" -GUI OPTIONAL COORDSYS GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_2 Search Envelope Coordinate System: -# =========================================================================== -# BUG18999: We now have a soft clip to fall back on like native spatial index -# thus we are reintroducing the clip to envelop as an option for users. -# Defualt to soft clip as per the existing database readers we are emulating -GUI LOOKUP GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_2 ,NO -DEFAULT_MACRO GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_2 NO -GEOTIFF_2_CLIP_TO_ENVELOPE "$(GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_2)" -GUI OPTIONAL CHECKBOX GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_2 YES%NO Clip to Search Envelope -DEFAULT_MACRO GEOTIFF_IN_GEOTIFF_RDR_ADV_PARM_GROUP_GEOTIFF_2 -GUI OPTIONAL DISCLOSUREGROUP GEOTIFF_IN_GEOTIFF_RDR_ADV_PARM_GROUP_GEOTIFF_2 GEOTIFF_IN_PYRAMID_LEVEL_GEOTIFF_2%GEOTIFF_IN_PREFER_FILE_CS_UNITS_GEOTIFF_2%GEOTIFF_IN_READ_OFFSETS_IN_CS_UNITS_GEOTIFF_2%GEOTIFF_IN_IGNORE_RASTER_TYPE_KEY_GEOTIFF_2 Advanced -DEFAULT_MACRO GEOTIFF_IN_PYRAMID_LEVEL_GEOTIFF_2 -GEOTIFF_2_PYRAMID_LEVEL "$(GEOTIFF_IN_PYRAMID_LEVEL_GEOTIFF_2)" -GUI OPTIONAL INTEGER GEOTIFF_IN_PYRAMID_LEVEL_GEOTIFF_2 Pyramid Level to Read: -DEFAULT_MACRO GEOTIFF_IN_PREFER_FILE_CS_UNITS_GEOTIFF_2 Yes -GEOTIFF_2_PREFER_FILE_CS_UNITS "$(GEOTIFF_IN_PREFER_FILE_CS_UNITS_GEOTIFF_2)" -GUI CHOICE GEOTIFF_IN_PREFER_FILE_CS_UNITS_GEOTIFF_2 Yes%No Prefer File Coordinate System Units: -DEFAULT_MACRO GEOTIFF_IN_READ_OFFSETS_IN_CS_UNITS_GEOTIFF_2 No -GEOTIFF_2_READ_OFFSETS_IN_CS_UNITS "$(GEOTIFF_IN_READ_OFFSETS_IN_CS_UNITS_GEOTIFF_2)" -GUI CHOICE GEOTIFF_IN_READ_OFFSETS_IN_CS_UNITS_GEOTIFF_2 Yes%No Offsets in Coordinate System Units: -DEFAULT_MACRO GEOTIFF_IN_IGNORE_RASTER_TYPE_KEY_GEOTIFF_2 No -GEOTIFF_2_IGNORE_RASTER_TYPE_KEY "$(GEOTIFF_IN_IGNORE_RASTER_TYPE_KEY_GEOTIFF_2)" -GUI CHOICE GEOTIFF_IN_IGNORE_RASTER_TYPE_KEY_GEOTIFF_2 Yes%No Ignore Raster Type Key: -# =========================================================================== -DEFAULT_MACRO GEOTIFF_IN_NETWORK_AUTHENTICATION_GEOTIFF_2 -GEOTIFF_2_NETWORK_AUTHENTICATION "$(GEOTIFF_IN_NETWORK_AUTHENTICATION_GEOTIFF_2)" -GUI OPTIONAL AUTHENTICATOR GEOTIFF_IN_NETWORK_AUTHENTICATION_GEOTIFF_2 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication -# ============================================================================ -DEFAULT_MACRO GEOTIFF_IN_ATTRIBUTE_READING_GEOTIFF_2 ALL -GEOTIFF_2_ATTRIBUTE_READING "$(GEOTIFF_IN_ATTRIBUTE_READING_GEOTIFF_2)" -# ============================================================================ -GEOTIFF_2_GENERATE_FME_BUILD_NUM 20596 -GEOTIFF_2_DATASET "$(SourceDataset_GEOTIFF_2)" -#! END_SOURCE_HEADER -#! START_WB_HEADER -MACRO WB_KEYWORD "LAS_2" -#! END_WB_HEADER -#! START_DEST_HEADER LAS LAS_2 -# The following GUI lines prompt for a LAS file to be used as the -# the destination of the data. -# The user input is stored in a macro, which is then used to define -# the dataset to be written. -#! END_DEST_HEADER -#! START_WB_HEADER -DEFAULT_MACRO DestDataset -INCLUDE [ if {"$(DestDataset)" != ""} { \ - puts {DEFAULT_MACRO DestDataset_LAS_2 $(DestDataset)} \ - } ] -#! END_WB_HEADER -#! START_DEST_HEADER LAS LAS_2 -DEFAULT_MACRO DestDataset_LAS_2 $(DestDataset_LAS) -GUI DIRNAME DestDataset_LAS_2 Destination ASPRS LAS Folder: -DEFAULT_MACRO LAS_OUT_FME_GROUP_NAMED1_LAS_2 FME_DISCLOSURE_OPEN -GUI OPTIONAL DISCLOSUREGROUP LAS_OUT_FME_GROUP_NAMED1_LAS_2 LAS_OUT_VERSION_LAS_2%LAS_OUT_COMPRESSION_LAS_2 Parameters -# ============================================================================ -# Version -DEFAULT_MACRO LAS_OUT_VERSION_LAS_2 1.4 -LAS_2_VERSION "$(LAS_OUT_VERSION_LAS_2)" -GUI LOOKUP_CHOICE LAS_OUT_VERSION_LAS_2 1.0,1.0%1.1,1.1%1.2,1.2%1.3,1.3%"\"1.4 (Legacy Compatible)\",1.4-legacy-compatible"%1.4,1.4 ASPRS LAS Version: -# [PR#30472] Compression -DEFAULT_MACRO LAS_OUT_COMPRESSION_LAS_2 None -LAS_2_COMPRESSION "$(LAS_OUT_COMPRESSION_LAS_2)" -GUI ACTIVECHOICE LAS_OUT_COMPRESSION_LAS_2 None,LAS_OUT_ZLAS_PARAMETERS_LAS_2%LAZ,LAS_OUT_ZLAS_PARAMETERS_LAS_2%zLAS Compression -# This is a placeholder parameter that will be replaced with a custom table in the controller -DEFAULT_MACRO LAS_OUT_USER_GROUP_LAS_2 FME_DISCLOSURE_OPEN -GUI OPTIONAL DISCLOSUREGROUP LAS_OUT_USER_GROUP_LAS_2 LAS_OUT_USER_COMPONENTS_LAS_2 Additional User Components -DEFAULT_MACRO LAS_OUT_USER_COMPONENTS_LAS_2 DistanceNormalGroup -LAS_2_USER_COMPONENTS "$(LAS_OUT_USER_COMPONENTS_LAS_2)" -GUI OPTIONAL GUI_LINE_TABLE_ENCODED LAS_OUT_USER_COMPONENTS_LAS_2 NO_LABEL%ROW_DELIM:,%COL_DELIM:,%"User Components"%"STRING COMPONENTS" User Components -# ============================================================================ -# Opt in for destination dataset type vs format type validation -DEFAULT_MACRO LAS_OUT_DESTINATION_DATASETTYPE_VALIDATION_LAS_2 Yes -LAS_2_DESTINATION_DATASETTYPE_VALIDATION "$(LAS_OUT_DESTINATION_DATASETTYPE_VALIDATION_LAS_2)" -DEFAULT_MACRO LAS_OUT_COORDINATE_SYSTEM_GRANULARITY_LAS_2 FEATURE -LAS_2_COORDINATE_SYSTEM_GRANULARITY "$(LAS_OUT_COORDINATE_SYSTEM_GRANULARITY_LAS_2)" -DEFAULT_MACRO LAS_OUT_ADVANCED_PARAMETERS_LAS_2 FME_DISCLOSURE_CLOSED -GUI OPTIONAL DISCLOSUREGROUP LAS_OUT_ADVANCED_PARAMETERS_LAS_2 LAS_OUT_LAS_DATASET_FILE_LAS_2%LAS_OUT_ZLAS_PARAMETERS_LAS_2 Advanced -DEFAULT_MACRO LAS_OUT_LAS_DATASET_FILE_LAS_2 -GUI OPTIONAL DISCLOSUREGROUP LAS_OUT_LAS_DATASET_FILE_LAS_2 LAS_OUT_ARCGIS_LAS_DATASET_LAS_2%LAS_OUT_COMPUTE_STATISTICS_ON_ARCGIS_LAS_DATASET_LAS_2 LAS Dataset File -# The following GUI line provides the ability to create an -# Esri ArcGIS LAS Dataset encapsulating the LAS files produced -# by this translation. The LAS Dataset can then be used to view -# the output using Esri's tools. -DEFAULT_MACRO LAS_OUT_ARCGIS_LAS_DATASET_LAS_2 -LAS_2_ARCGIS_LAS_DATASET "$(LAS_OUT_ARCGIS_LAS_DATASET_LAS_2)" -GUI OPTIONAL TEXT LAS_OUT_ARCGIS_LAS_DATASET_LAS_2 ArcGIS LAS Dataset (.lasd) Filename -# The following GUI line determines whether statistics should -# be calculated on the ArcGIS LAS Dataset. This keyword is -# applicable when FME is creating an ArcGIS LAS Dataset. -DEFAULT_MACRO LAS_OUT_COMPUTE_STATISTICS_ON_ARCGIS_LAS_DATASET_LAS_2 No -LAS_2_COMPUTE_STATISTICS_ON_ARCGIS_LAS_DATASET "$(LAS_OUT_COMPUTE_STATISTICS_ON_ARCGIS_LAS_DATASET_LAS_2)" -GUI CHOICE LAS_OUT_COMPUTE_STATISTICS_ON_ARCGIS_LAS_DATASET_LAS_2 Yes%No Compute Statistics on ArcGIS LAS Dataset -DEFAULT_MACRO LAS_OUT_ZLAS_PARAMETERS_LAS_2 -GUI OPTIONAL DISCLOSUREGROUP LAS_OUT_ZLAS_PARAMETERS_LAS_2 LAS_OUT_ZLAS_REARRANGE_POINTS_LAS_2%LAS_OUT_ZLAS_POINT_SPACING_SOURCE_LAS_2%LAS_OUT_ZLAS_POINT_SPACING_VALUE_LAS_2 zLAS Parameters -DEFAULT_MACRO LAS_OUT_ZLAS_REARRANGE_POINTS_LAS_2 -LAS_2_ZLAS_REARRANGE_POINTS "$(LAS_OUT_ZLAS_REARRANGE_POINTS_LAS_2)" -GUI CHOICE LAS_OUT_ZLAS_REARRANGE_POINTS_LAS_2 Yes%No Rearrange Points for zLAS Compression -DEFAULT_MACRO LAS_OUT_ZLAS_POINT_SPACING_SOURCE_LAS_2 -LAS_2_ZLAS_POINT_SPACING_SOURCE "$(LAS_OUT_ZLAS_POINT_SPACING_SOURCE_LAS_2)" -GUI LOOKUP_CHOICE LAS_OUT_ZLAS_POINT_SPACING_SOURCE_LAS_2 "\"Scan Points\",scan"%"\"From Header\",header"%"\"Specify Value\",specify" zLAS Point Spacing Source -DEFAULT_MACRO LAS_OUT_ZLAS_POINT_SPACING_VALUE_LAS_2 -LAS_2_ZLAS_POINT_SPACING_VALUE "$(LAS_OUT_ZLAS_POINT_SPACING_VALUE_LAS_2)" -GUI FLOAT LAS_OUT_ZLAS_POINT_SPACING_VALUE_LAS_2 zLAS Point Spacing Value -# ============================================================================ -LAS_2_GENERATE_FME_BUILD_NUM 20596 -LAS_2_DATASET "$(DestDataset_LAS_2)" -#! END_DEST_HEADER -#! START_WB_HEADER -#! END_WB_HEADER -#! END_HEADER - -LOG_FILTER_MASK -1 -LOG_MAX_FEATURES 200 -LOG_MAX_RECORDED_FEATURES 200 -FME_REPROJECTION_ENGINE FME -FME_IMPLICIT_CSMAP_REPROJECTION_MODE Auto -FME_GEOMETRY_HANDLING Enhanced -FME_STROKE_MAX_DEVIATION 0 -DEFAULT_MACRO DATASET_KEYWORD_LAS_1 LAS_1 -DEFAULT_MACRO DATASET_KEYWORD_GEOTIFF_1 GEOTIFF_1 -DEFAULT_MACRO DATASET_KEYWORD_GEOTIFF_2 GEOTIFF_2 -DEFAULT_MACRO DATASET_KEYWORD_LAS_2 LAS_2 -# ------------------------------------------------------------------------- - -LAS_1_READER_META_ATTRIBUTES fme_feature_type fme_basename - -# ------------------------------------------------------------------------- - -GEOTIFF_1_READER_META_ATTRIBUTES fme_feature_type fme_basename - -# ------------------------------------------------------------------------- - -GEOTIFF_2_READER_META_ATTRIBUTES fme_feature_type fme_basename - -# ------------------------------------------------------------------------- - -LAS_2_COORDINATE_SYSTEM CH1903Plus_1.LV95/01 -MULTI_READER_CONTINUE_ON_READER_FAILURE No - -# ------------------------------------------------------------------------- - -MACRO WORKSPACE_NAME LAS_Pretraitement_2021_cleaning_MNC_class10 -MACRO FME_VIEWER_APP fmedatainspector -# ------------------------------------------------------------------------- -LAS_1_DEF LAS -# ------------------------------------------------------------------------- -GEOTIFF_1_DEF GEOTIFF -# ------------------------------------------------------------------------- -GEOTIFF_2_DEF GEOTIFF -# ------------------------------------------------------------------------- - -FACTORY_DEF * RoutingFactory FACTORY_NAME "Router and Unexpected Input Remover" COMMAND_PARM_EVALUATION SINGLE_PASS INPUT FEATURE_TYPE * ROUTE LAS LAS_1::LAS multi_reader_keyword,$(DATASET_KEYWORD_LAS_1) TO FME_GENERIC ::LAS ALIAS_GEOMETRY ROUTE GEOTIFF GEOTIFF_1::GEOTIFF multi_reader_keyword,$(DATASET_KEYWORD_GEOTIFF_1) TO FME_GENERIC ::GEOTIFF ALIAS_GEOMETRY ROUTE GEOTIFF GEOTIFF_2::GEOTIFF multi_reader_keyword,$(DATASET_KEYWORD_GEOTIFF_2) TO FME_GENERIC ::GEOTIFF ALIAS_GEOMETRY MERGE_INPUT Yes OUTPUT ROUTED FEATURE_TYPE * -LAS_1_MERGE_DEF LAS_1::LAS EXACT LAS -GEOTIFF_1_MERGE_DEF GEOTIFF_1::GEOTIFF EXACT GEOTIFF -GEOTIFF_2_MERGE_DEF GEOTIFF_2::GEOTIFF EXACT GEOTIFF -# ------------------------------------------------------------------------- - -FACTORY_DEF * TeeFactory FACTORY_NAME "LAS_LAS_1 Splitter" INPUT FEATURE_TYPE LAS OUTPUT FEATURE_TYPE LAS_LAS_1 -# ------------------------------------------------------------------------- - -FACTORY_DEF * TeeFactory FACTORY_NAME "GEOTIFF_GEOTIFF_1 Splitter" INPUT FEATURE_TYPE GEOTIFF multi_reader_keyword $(DATASET_KEYWORD_GEOTIFF_1) OUTPUT FEATURE_TYPE GEOTIFF_GEOTIFF_1 -# ------------------------------------------------------------------------- - -FACTORY_DEF * TeeFactory FACTORY_NAME "GEOTIFF_GEOTIFF_2 Splitter" INPUT FEATURE_TYPE GEOTIFF multi_reader_keyword $(DATASET_KEYWORD_GEOTIFF_2) OUTPUT FEATURE_TYPE GEOTIFF_GEOTIFF_2 -DEFAULT_MACRO WB_CURRENT_CONTEXT -# ------------------------------------------------------------------------- -FACTORY_DEF * PointCloudEvaluationFactory FACTORY_NAME PointCloudFilter INPUT FEATURE_TYPE LAS_LAS_1 MODE FILTER REJECT_INVALID_FEATURES YES FORCE_FLOAT_DIVISION yes EXPRESSION_LIST Componentclassification==4||Componentclassification==5||Componentclassification==10 FILTER_ATTRIBUTE __pc_internal_filter_attribute__ FILTER_ATTRIBUTE_VALUES_LIST Vgtationmoyenne4+haute5+trunks10 OUTPUT_UNFILTERED_POINTS "Yes" OUTPUT RESULT FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_0 OUTPUT FEATURE_TYPE PointCloudFilter_ -FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_TestFactory_0 INPUT FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_0 STRING_TEST @Value(__pc_internal_filter_attribute__) = Vgtationmoyenne4+haute5+trunks10 OUTPUT PASSED FEATURE_TYPE PointCloudFilter_Vgtationmoyenne4+haute5+trunks10 @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_1 -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_UNFILTERED INPUT FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_1 OUTPUT FEATURE_TYPE PointCloudFilter_ @RemoveAttributes(__pc_internal_filter_attribute__) -DEFAULT_MACRO _WB_BYPASS_TERMINATION No -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_ INPUT FEATURE_TYPE PointCloudFilter_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudFilteroutputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) -# ------------------------------------------------------------------------- -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudComponentAdder INPUT FEATURE_TYPE PointCloudFilter_Vgtationmoyenne4+haute5+trunks10 OUTPUT FEATURE_TYPE ___TOREJECTOR___ @RenameAttributes(FME_STRICT,___fme_rejection_code___,fme_rejection_code) @AddPointCloudComponents(REJECTABLE,mur,Real64,0,canopy,Real64,0) -FACTORY_DEF * TestFactory FACTORY_NAME PointCloudComponentAdder_Rejector INPUT FEATURE_TYPE ___TOREJECTOR___ TEST @Value(fme_rejection_code) != "" OUTPUT PASSED FEATURE_TYPE PointCloudComponentAdder_ @RemoveAttributes(___fme_rejection_code___) OUTPUT FAILED FEATURE_TYPE PointCloudComponentAdder_OUTPUT @RenameAttributes(FME_STRICT,fme_rejection_code,___fme_rejection_code___) -DEFAULT_MACRO _WB_BYPASS_TERMINATION No -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudComponentAdder_ INPUT FEATURE_TYPE PointCloudComponentAdder_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudComponentAdderoutputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) -# ------------------------------------------------------------------------- -INCLUDE [ if {[string equal {CUSTOM} {COLOR}]} { puts {MACRO PointCloudOnRasterComponentSetter_COMPONENT_LIST color_red,color_green,color_blue}; puts {MACRO PointCloudOnRasterComponentSetter_DEFAULT_VALUE_LIST}; } else { foreach {band component default} [split {0|mur|$(SourceDataset_GEOTIFF)} |] { lappend componentList "$component"; lappend defaultList "$default"; }; puts "MACRO PointCloudOnRasterComponentSetter_COMPONENT_LIST \"[join $componentList ,]\""; puts "MACRO PointCloudOnRasterComponentSetter_DEFAULT_VALUE_LIST \"[join $defaultList ,]\""; }; ] -FACTORY_DEF {*} RasterToPointCloudComponentFactory FACTORY_NAME PointCloudOnRasterComponentSetter INPUT FEATURE_TYPE PointCloudComponentAdder_OUTPUT INPUT FEATURE_TYPE GEOTIFF_GEOTIFF_1 FLUSH_WHEN_GROUPS_CHANGE No COMPONENT_LIST $(PointCloudOnRasterComponentSetter_COMPONENT_LIST) DEFAULT_VALUE $(PointCloudOnRasterComponentSetter_DEFAULT_VALUE_LIST) INTERPOLATION_TYPE_NAME NearestNeighbor EXTRACT_NODATA No DEFAULT_VALUES_OVERWRITE_DATA No REJECT_INVALID_FEATURES YES OUTPUT POINTCLOUD FEATURE_TYPE PointCloudOnRasterComponentSetter_PointCloud OUTPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_ -DEFAULT_MACRO _WB_BYPASS_TERMINATION No -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudOnRasterComponentSetter_ INPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudOnRasterComponentSetteroutputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) -# ------------------------------------------------------------------------- -FACTORY_DEF * PointCloudEvaluationFactory FACTORY_NAME PointCloudFilter_4 INPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_PointCloud MODE FILTER REJECT_INVALID_FEATURES YES FORCE_FLOAT_DIVISION yes EXPRESSION_LIST Componentclassification==4||Componentclassification==10 ; Componentclassification==5 FILTER_ATTRIBUTE __pc_internal_filter_attribute__ FILTER_ATTRIBUTE_VALUES_LIST 4-10 ; 5 OUTPUT_UNFILTERED_POINTS "Yes" OUTPUT RESULT FEATURE_TYPE PointCloudFilter_4_POINTCLOUDFILTERINPUTLINE_0 OUTPUT FEATURE_TYPE PointCloudFilter_4_ -FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_4_TestFactory_0 INPUT FEATURE_TYPE PointCloudFilter_4_POINTCLOUDFILTERINPUTLINE_0 STRING_TEST @Value(__pc_internal_filter_attribute__) = 4-10 OUTPUT PASSED FEATURE_TYPE PointCloudFilter_4_4-10 @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_4_POINTCLOUDFILTERINPUTLINE_1 -FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_4_TestFactory_1 INPUT FEATURE_TYPE PointCloudFilter_4_POINTCLOUDFILTERINPUTLINE_1 STRING_TEST @Value(__pc_internal_filter_attribute__) = 5 OUTPUT PASSED FEATURE_TYPE PointCloudFilter_4_5 @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_4_POINTCLOUDFILTERINPUTLINE_2 -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_4_UNFILTERED INPUT FEATURE_TYPE PointCloudFilter_4_POINTCLOUDFILTERINPUTLINE_2 OUTPUT FEATURE_TYPE PointCloudFilter_4_ @RemoveAttributes(__pc_internal_filter_attribute__) -FACTORY_DEF * TeeFactory FACTORY_NAME "PointCloudFilter_4 Transformer Output Nuker" INPUT FEATURE_TYPE PointCloudFilter_4_ -DEFAULT_MACRO _WB_BYPASS_TERMINATION No -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_4_ INPUT FEATURE_TYPE PointCloudFilter_4_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudFilter_4outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) -# ------------------------------------------------------------------------- -INCLUDE [ if {[string equal {CUSTOM} {COLOR}]} { puts {MACRO PointCloudOnRasterComponentSetter_3_COMPONENT_LIST color_red,color_green,color_blue}; puts {MACRO PointCloudOnRasterComponentSetter_3_DEFAULT_VALUE_LIST}; } else { foreach {band component default} [split {0|canopy|0} |] { lappend componentList "$component"; lappend defaultList "$default"; }; puts "MACRO PointCloudOnRasterComponentSetter_3_COMPONENT_LIST \"[join $componentList ,]\""; puts "MACRO PointCloudOnRasterComponentSetter_3_DEFAULT_VALUE_LIST \"[join $defaultList ,]\""; }; ] -FACTORY_DEF {*} RasterToPointCloudComponentFactory FACTORY_NAME PointCloudOnRasterComponentSetter_3 INPUT FEATURE_TYPE PointCloudFilter_4_4-10 INPUT FEATURE_TYPE GEOTIFF_GEOTIFF_2 FLUSH_WHEN_GROUPS_CHANGE No COMPONENT_LIST $(PointCloudOnRasterComponentSetter_3_COMPONENT_LIST) DEFAULT_VALUE $(PointCloudOnRasterComponentSetter_3_DEFAULT_VALUE_LIST) INTERPOLATION_TYPE_NAME NearestNeighbor EXTRACT_NODATA No DEFAULT_VALUES_OVERWRITE_DATA No REJECT_INVALID_FEATURES YES OUTPUT POINTCLOUD FEATURE_TYPE PointCloudOnRasterComponentSetter_3_PointCloud OUTPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_3_ -DEFAULT_MACRO _WB_BYPASS_TERMINATION No -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudOnRasterComponentSetter_3_ INPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_3_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudOnRasterComponentSetter_3outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) -# ------------------------------------------------------------------------- -FACTORY_DEF * PointCloudEvaluationFactory FACTORY_NAME PointCloudFilter_5 INPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_3_PointCloud MODE FILTER REJECT_INVALID_FEATURES YES FORCE_FLOAT_DIVISION yes EXPRESSION_LIST Componentcanopy1 FILTER_ATTRIBUTE __pc_internal_filter_attribute__ FILTER_ATTRIBUTE_VALUES_LIST 4-10out OUTPUT_UNFILTERED_POINTS "Yes" OUTPUT RESULT FEATURE_TYPE PointCloudFilter_5_POINTCLOUDFILTERINPUTLINE_0 OUTPUT FEATURE_TYPE PointCloudFilter_5_ -FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_5_TestFactory_0 INPUT FEATURE_TYPE PointCloudFilter_5_POINTCLOUDFILTERINPUTLINE_0 STRING_TEST @Value(__pc_internal_filter_attribute__) = 4-10out OUTPUT PASSED FEATURE_TYPE PointCloudFilter_5_4-10out @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_5_POINTCLOUDFILTERINPUTLINE_1 -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_5_UNFILTERED INPUT FEATURE_TYPE PointCloudFilter_5_POINTCLOUDFILTERINPUTLINE_1 OUTPUT FEATURE_TYPE PointCloudFilter_5_ @RemoveAttributes(__pc_internal_filter_attribute__) -DEFAULT_MACRO _WB_BYPASS_TERMINATION No -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_5_ INPUT FEATURE_TYPE PointCloudFilter_5_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudFilter_5outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) -# ------------------------------------------------------------------------- -FACTORY_DEF * PointCloudEvaluationFactory FACTORY_NAME PointCloudFilter_6 INPUT FEATURE_TYPE PointCloudFilter_5_ MODE FILTER REJECT_INVALID_FEATURES YES FORCE_FLOAT_DIVISION yes EXPRESSION_LIST Componentmur3 FILTER_ATTRIBUTE __pc_internal_filter_attribute__ FILTER_ATTRIBUTE_VALUES_LIST 4-10-mur OUTPUT_UNFILTERED_POINTS "Yes" OUTPUT RESULT FEATURE_TYPE PointCloudFilter_6_POINTCLOUDFILTERINPUTLINE_0 OUTPUT FEATURE_TYPE PointCloudFilter_6_ -FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_6_TestFactory_0 INPUT FEATURE_TYPE PointCloudFilter_6_POINTCLOUDFILTERINPUTLINE_0 STRING_TEST @Value(__pc_internal_filter_attribute__) = 4-10-mur OUTPUT PASSED FEATURE_TYPE PointCloudFilter_6_4-10-mur @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_6_POINTCLOUDFILTERINPUTLINE_1 -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_6_UNFILTERED INPUT FEATURE_TYPE PointCloudFilter_6_POINTCLOUDFILTERINPUTLINE_1 OUTPUT FEATURE_TYPE PointCloudFilter_6_ @RemoveAttributes(__pc_internal_filter_attribute__) -DEFAULT_MACRO _WB_BYPASS_TERMINATION No -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_6_ INPUT FEATURE_TYPE PointCloudFilter_6_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudFilter_6outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) -# ------------------------------------------------------------------------- -DEFAULT_MACRO PointCloudExpressionEvaluator_3_COMPONENT_LIST -DEFAULT_MACRO PointCloudExpressionEvaluator_3_COMPONENT_TYPE_LIST -DEFAULT_MACRO PointCloudExpressionEvaluator_3_EXPRESSION_LIST -INCLUDE [ foreach {component componenttype expression} [split {classification Auto 4}] { lappend lists(COMPONENT) $component; lappend lists(COMPONENT_TYPE) $componenttype; if [regexp {@EvaluateExpression\(STRING_ENCODED,(.*),.+\)} $expression -> unwrapped] { lappend lists(EXPRESSION) $unwrapped; } elseif [regexp {@EvaluateExpression\(FDIV,STRING_ENCODED,(.*),.+\)} $expression -> unwrapped] { lappend lists(EXPRESSION) $unwrapped; } else { lappend lists(EXPRESSION) $expression; }; }; foreach {listName} [array names lists] { puts "MACRO PointCloudExpressionEvaluator_3_${listName}_LIST \"[join $lists($listName) {;}]\""; }; ] -FACTORY_DEF * PointCloudEvaluationFactory FACTORY_NAME PointCloudExpressionEvaluator_3 INPUT FEATURE_TYPE PointCloudFilter_6_ MODE SET_COMPONENT_VALUES COMPONENT_LIST $(PointCloudExpressionEvaluator_3_COMPONENT_LIST) COMPONENT_TYPE_LIST $(PointCloudExpressionEvaluator_3_COMPONENT_TYPE_LIST) EXPRESSION_LIST $(PointCloudExpressionEvaluator_3_EXPRESSION_LIST) FORCE_FLOAT_DIVISION yes REJECT_INVALID_FEATURES YES OUTPUT RESULT FEATURE_TYPE PointCloudExpressionEvaluator_3_RESULT OUTPUT FEATURE_TYPE PointCloudExpressionEvaluator_3_ -DEFAULT_MACRO _WB_BYPASS_TERMINATION No -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudExpressionEvaluator_3_ INPUT FEATURE_TYPE PointCloudExpressionEvaluator_3_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudExpressionEvaluator_3outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) -# ------------------------------------------------------------------------- -FACTORY_DEF {*} VectorToPointCloudFactory FACTORY_NAME PointCloudCombiner_2___VectorMerger INPUT FEATURE_TYPE PointCloudFilter_5_4-10out INPUT FEATURE_TYPE PointCloudFilter_6_4-10-mur FLUSH_WHEN_GROUPS_CHANGE No ACCUMULATE_ATTRIBUTES yes EXTRACT_RASTER_NODATA no SPACING "1.0" MEASURES_TO_PRESERVE ATTRIBUTES_TO_PRESERVE REJECT_INVALID_FEATURES yes OUTPUT COERCED FEATURE_TYPE PointCloudCombiner_2___MergedVectorFeatures__ @SupplyAttributes(?,fme_basename,PointCloudCombiner_2) OUTPUT FEATURE_TYPE PointCloudCombiner_2_ -FACTORY_DEF {*} PointCloudCombinerFactory FACTORY_NAME PointCloudCombiner_2___Combiner INPUT FEATURE_TYPE PointCloudCombiner_2___MergedVectorFeatures__ FLUSH_WHEN_GROUPS_CHANGE No ACCUMULATE_ATTRIBUTES yes REJECT_INVALID_FEATURES yes OUTPUT MERGED FEATURE_TYPE PointCloudCombiner_2_OUTPUT OUTPUT FEATURE_TYPE PointCloudCombiner_2_ -DEFAULT_MACRO _WB_BYPASS_TERMINATION No -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudCombiner_2_ INPUT FEATURE_TYPE PointCloudCombiner_2_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudCombiner_2outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) -# ------------------------------------------------------------------------- -DEFAULT_MACRO PointCloudExpressionEvaluator_2_COMPONENT_LIST -DEFAULT_MACRO PointCloudExpressionEvaluator_2_COMPONENT_TYPE_LIST -DEFAULT_MACRO PointCloudExpressionEvaluator_2_EXPRESSION_LIST -INCLUDE [ foreach {component componenttype expression} [split {classification Auto 3}] { lappend lists(COMPONENT) $component; lappend lists(COMPONENT_TYPE) $componenttype; if [regexp {@EvaluateExpression\(STRING_ENCODED,(.*),.+\)} $expression -> unwrapped] { lappend lists(EXPRESSION) $unwrapped; } elseif [regexp {@EvaluateExpression\(FDIV,STRING_ENCODED,(.*),.+\)} $expression -> unwrapped] { lappend lists(EXPRESSION) $unwrapped; } else { lappend lists(EXPRESSION) $expression; }; }; foreach {listName} [array names lists] { puts "MACRO PointCloudExpressionEvaluator_2_${listName}_LIST \"[join $lists($listName) {;}]\""; }; ] -FACTORY_DEF * PointCloudEvaluationFactory FACTORY_NAME PointCloudExpressionEvaluator_2 INPUT FEATURE_TYPE PointCloudCombiner_2_OUTPUT MODE SET_COMPONENT_VALUES COMPONENT_LIST $(PointCloudExpressionEvaluator_2_COMPONENT_LIST) COMPONENT_TYPE_LIST $(PointCloudExpressionEvaluator_2_COMPONENT_TYPE_LIST) EXPRESSION_LIST $(PointCloudExpressionEvaluator_2_EXPRESSION_LIST) FORCE_FLOAT_DIVISION yes REJECT_INVALID_FEATURES YES OUTPUT RESULT FEATURE_TYPE PointCloudExpressionEvaluator_2_RESULT OUTPUT FEATURE_TYPE PointCloudExpressionEvaluator_2_ -DEFAULT_MACRO _WB_BYPASS_TERMINATION No -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudExpressionEvaluator_2_ INPUT FEATURE_TYPE PointCloudExpressionEvaluator_2_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudExpressionEvaluator_2outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) -# ------------------------------------------------------------------------- -FACTORY_DEF {*} VectorToPointCloudFactory FACTORY_NAME PointCloudCombiner___VectorMerger INPUT FEATURE_TYPE PointCloudExpressionEvaluator_2_RESULT INPUT FEATURE_TYPE PointCloudExpressionEvaluator_3_RESULT INPUT FEATURE_TYPE PointCloudFilter_ INPUT FEATURE_TYPE PointCloudFilter_4_5 FLUSH_WHEN_GROUPS_CHANGE No ACCUMULATE_ATTRIBUTES yes EXTRACT_RASTER_NODATA no SPACING "1.0" MEASURES_TO_PRESERVE ATTRIBUTES_TO_PRESERVE REJECT_INVALID_FEATURES yes OUTPUT COERCED FEATURE_TYPE PointCloudCombiner___MergedVectorFeatures__ @SupplyAttributes(?,fme_basename,PointCloudCombiner) OUTPUT FEATURE_TYPE PointCloudCombiner_ -FACTORY_DEF {*} PointCloudCombinerFactory FACTORY_NAME PointCloudCombiner___Combiner INPUT FEATURE_TYPE PointCloudCombiner___MergedVectorFeatures__ FLUSH_WHEN_GROUPS_CHANGE No ACCUMULATE_ATTRIBUTES yes REJECT_INVALID_FEATURES yes OUTPUT MERGED FEATURE_TYPE PointCloudCombiner_OUTPUT OUTPUT FEATURE_TYPE PointCloudCombiner_ -DEFAULT_MACRO _WB_BYPASS_TERMINATION No -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudCombiner_ INPUT FEATURE_TYPE PointCloudCombiner_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudCombineroutputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) -# ------------------------------------------------------------------------- - -FACTORY_DEF * RoutingFactory FACTORY_NAME "Destination Feature Type Routing Correlator" COMMAND_PARM_EVALUATION SINGLE_PASS INPUT FEATURE_TYPE * ROUTE FME_GENERIC PointCloudCombiner_OUTPUT TO LAS __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODEDfme_template_feature_typeLAS01,EvaluateExpressionATTR_CREATE_EXPR__wb_out_feat_type__atValueopenparenfme_basenamecloseparen_CLEANLAS01 COORDINATE_SYSTEM CH1903Plus_1.LV95/01 GEOMETRY FEATURE_TYPE_ATTRIBUTE __wb_out_feat_type__ OUTPUT ROUTED FEATURE_TYPE * OUTPUT NOT_ROUTED FEATURE_TYPE __nuke_me__ @Tcl2("FME_StatMessage 818059 [FME_GetAttribute fme_template_feature_type] 818060 818061 fme_warn") -# ------------------------------------------------------------------------- - -FACTORY_DEF * TeeFactory FACTORY_NAME "Final Output Nuker" INPUT FEATURE_TYPE __nuke_me__ - -# ------------------------------------------------------------------------- -LAS_2_DEF LAS01 +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! + +FME_PYTHON_VERSION 37 +GUI IGNORE SourceDataset_LAS_1,LAS_IN_USE_SEARCH_ENVELOPE_LAS_1,LAS_IN_SEARCH_ENVELOPE_MINX_LAS_1,LAS_IN_SEARCH_ENVELOPE_MINY_LAS_1,LAS_IN_SEARCH_ENVELOPE_MAXX_LAS_1,LAS_IN_SEARCH_ENVELOPE_MAXY_LAS_1,LAS_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_LAS_1,LAS_IN_CLIP_TO_ENVELOPE_LAS_1,LAS_IN_NETWORK_AUTHENTICATION_LAS_1,SourceDataset_GEOTIFF_1,GEOTIFF_IN_APPLY_GCPS_GEOTIFF_1,GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_1,GEOTIFF_IN_USE_SEARCH_ENVELOPE_GEOTIFF_1,GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_1,GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_1,GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_1,GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_1,GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_1,GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_1,GEOTIFF_IN_GEOTIFF_RDR_ADV_PARM_GROUP_GEOTIFF_1,GEOTIFF_IN_PYRAMID_LEVEL_GEOTIFF_1,GEOTIFF_IN_PREFER_FILE_CS_UNITS_GEOTIFF_1,GEOTIFF_IN_READ_OFFSETS_IN_CS_UNITS_GEOTIFF_1,GEOTIFF_IN_IGNORE_RASTER_TYPE_KEY_GEOTIFF_1,GEOTIFF_IN_NETWORK_AUTHENTICATION_GEOTIFF_1,SourceDataset_GEOTIFF_2,GEOTIFF_IN_APPLY_GCPS_GEOTIFF_2,GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_2,GEOTIFF_IN_USE_SEARCH_ENVELOPE_GEOTIFF_2,GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_2,GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_2,GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_2,GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_2,GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_2,GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_2,GEOTIFF_IN_GEOTIFF_RDR_ADV_PARM_GROUP_GEOTIFF_2,GEOTIFF_IN_PYRAMID_LEVEL_GEOTIFF_2,GEOTIFF_IN_PREFER_FILE_CS_UNITS_GEOTIFF_2,GEOTIFF_IN_READ_OFFSETS_IN_CS_UNITS_GEOTIFF_2,GEOTIFF_IN_IGNORE_RASTER_TYPE_KEY_GEOTIFF_2,GEOTIFF_IN_NETWORK_AUTHENTICATION_GEOTIFF_2,DestDataset_LAS_2,LAS_OUT_FME_GROUP_NAMED1_LAS_2,LAS_OUT_VERSION_LAS_2,LAS_OUT_COMPRESSION_LAS_2,LAS_OUT_USER_GROUP_LAS_2,LAS_OUT_USER_COMPONENTS_LAS_2,LAS_OUT_ADVANCED_PARAMETERS_LAS_2,LAS_OUT_LAS_DATASET_FILE_LAS_2,LAS_OUT_ARCGIS_LAS_DATASET_LAS_2,LAS_OUT_COMPUTE_STATISTICS_ON_ARCGIS_LAS_DATASET_LAS_2,LAS_OUT_ZLAS_PARAMETERS_LAS_2,LAS_OUT_ZLAS_REARRANGE_POINTS_LAS_2,LAS_OUT_ZLAS_POINT_SPACING_SOURCE_LAS_2,LAS_OUT_ZLAS_POINT_SPACING_VALUE_LAS_2 +DEFAULT_MACRO SourceDataset_LAS G:\STDL\LIDAR_PAST\Comp_pretrait_2021\LAS_2021_norm045_10traj.las +GUI MULTIFILE SourceDataset_LAS LAS_Files(*.las;*.laz;*.zlas;*.lasd)|*.las;*.laz;*.zlas;*.lasd|LAS_Files(*.las)|*.las|Compressed_LAS_Files(*.laz)|*.laz|Esri_Optimized_LAS_Files(*.zlas)|*.zlas|Esri_LAS_Dataset_Files(*.lasd)|*.lasd|Compressed_Files(*.bz2;*.gz)|*.bz2;*.gz|Archive_Files(*.7z;*.7zip;*.rar;*.rvz;*.tar;*.tar.bz2;*.tar.gz;*.tgz;*.zip;*.zipx)|*.7z;*.7zip;*.rar;*.rvz;*.tar;*.tar.bz2;*.tar.gz;*.tgz;*.zip;*.zipx|All_files(*)|* Source ASPRS LAS File(s): +DEFAULT_MACRO SourceDataset_GEOTIFF G:\STDL\LIDAR_2021\LIDAR_new_selection\GT_zones\Murs_THOCHB_Buff05_rast.tif +GUI MULTIFILE SourceDataset_GEOTIFF GeoTIFF_Files(*.tif;*.tiff;*.itiff;*.ovr)|*.tif;*.tiff;*.itiff;*.ovr|Compressed_Files(*.bz2;*.gz)|*.bz2;*.gz|Archive_Files(*.7z;*.7zip;*.rar;*.rvz;*.tar;*.tar.bz2;*.tar.gz;*.tgz;*.zip;*.zipx)|*.7z;*.7zip;*.rar;*.rvz;*.tar;*.tar.bz2;*.tar.gz;*.tgz;*.zip;*.zipx|All_Files(*)|* Source GeoTIFF File(s): +DEFAULT_MACRO DestDataset_LAS G:\STDL\LIDAR_PAST\Comp_pretrait_2021 +GUI DIRNAME DestDataset_LAS Destination ASPRS LAS Folder: +DEFAULT_MACRO SourceDataset_GEOTIFF_3 G:\STDL\LIDAR_2021\LIDAR_new_selection\GT_zones\MNC_GE_Raster_2.tif +GUI MULTIFILE SourceDataset_GEOTIFF_3 GeoTIFF_Files(*.tif;*.tiff;*.itiff;*.ovr)|*.tif;*.tiff;*.itiff;*.ovr|Compressed_Files(*.bz2;*.gz)|*.bz2;*.gz|Archive_Files(*.7z;*.7zip;*.rar;*.rvz;*.tar;*.tar.bz2;*.tar.gz;*.tgz;*.zip;*.zipx)|*.7z;*.7zip;*.rar;*.rvz;*.tar;*.tar.bz2;*.tar.gz;*.tgz;*.zip;*.zipx|All_Files(*)|* Source GeoTIFF File(s): +INCLUDE [ if {{$(SourceDataset_LAS)} == {}} { puts_real {Parameter 'SourceDataset_LAS' must be given a value.}; exit 1; }; ] +INCLUDE [ if {{$(SourceDataset_GEOTIFF)} == {}} { puts_real {Parameter 'SourceDataset_GEOTIFF' must be given a value.}; exit 1; }; ] +INCLUDE [ if {{$(DestDataset_LAS)} == {}} { puts_real {Parameter 'DestDataset_LAS' must be given a value.}; exit 1; }; ] +INCLUDE [ if {{$(SourceDataset_GEOTIFF_3)} == {}} { puts_real {Parameter 'SourceDataset_GEOTIFF_3' must be given a value.}; exit 1; }; ] +#! START_HEADER +#! START_WB_HEADER +READER_TYPE MULTI_READER +MULTI_READER_TYPE{0} LAS +MULTI_READER_KEYWORD{0} LAS_1 +MULTI_READER_GEN_DIRECTIVES{0} USE_SEARCH_ENVELOPE,NO,CLIP_TO_ENVELOPE,NO,READER_META_ATTRIBUTES,fme_dataset,GROUP_BY_DATASET,No,_MERGE_SCHEMAS,YES,SEARCH_ENVELOPE_MAXX,0,SEARCH_ENVELOPE_MAXY,0,EXPOSE_ATTRS_GROUP,,SEARCH_ENVELOPE_COORDINATE_SYSTEM,,SEARCH_ENVELOPE_MINY,0,LAS_EXPOSE_FORMAT_ATTRS,,SEARCH_ENVELOPE_MINX,0 +MULTI_READER_TYPE{1} GEOTIFF +MULTI_READER_KEYWORD{1} GEOTIFF_1 +MULTI_READER_GEN_DIRECTIVES{1} APPLY_GCPS,NO,SEARCH_ENVELOPE_COORDINATE_SYSTEM,,SEARCH_ENVELOPE_MAXY,0,USE_SEARCH_ENVELOPE,NO,GCP_INTERPOLATION_METHOD,NearestNeighbor,GEOTIFF_EXPOSE_FORMAT_ATTRS,,SEARCH_ENVELOPE_MINX,0,SEARCH_ENVELOPE_MAXX,0,IGNORE_RASTER_TYPE_KEY,No,FEATURE_TYPE_NAME,FORMAT_NAME,EXPOSE_ATTRS_GROUP,,SEARCH_ENVELOPE_MINY,0,_MERGE_SCHEMAS,YES,PYRAMID_LEVEL,,GEOTIFF_RDR_ADV_PARM_GROUP,,PREFER_FILE_CS_UNITS,Yes,READ_OFFSETS_IN_CS_UNITS,No,READER_META_ATTRIBUTES,fme_datasetfme_basename,CLIP_TO_ENVELOPE,NO +MULTI_READER_TYPE{2} GEOTIFF +MULTI_READER_KEYWORD{2} GEOTIFF_2 +MULTI_READER_GEN_DIRECTIVES{2} IGNORE_RASTER_TYPE_KEY,No,GEOTIFF_EXPOSE_FORMAT_ATTRS,,PYRAMID_LEVEL,,USE_SEARCH_ENVELOPE,NO,SEARCH_ENVELOPE_MINX,0,SEARCH_ENVELOPE_MAXY,0,GCP_INTERPOLATION_METHOD,NearestNeighbor,GEOTIFF_RDR_ADV_PARM_GROUP,,EXPOSE_ATTRS_GROUP,,SEARCH_ENVELOPE_MAXX,0,CLIP_TO_ENVELOPE,NO,SEARCH_ENVELOPE_MINY,0,_MERGE_SCHEMAS,YES,PREFER_FILE_CS_UNITS,Yes,READER_META_ATTRIBUTES,fme_datasetfme_basename,READ_OFFSETS_IN_CS_UNITS,No,FEATURE_TYPE_NAME,FORMAT_NAME,APPLY_GCPS,NO,SEARCH_ENVELOPE_COORDINATE_SYSTEM, +WRITER_TYPE MULTI_WRITER +MULTI_WRITER_DATASET_ORDER BY_ID +MULTI_WRITER_FIRST_WRITER_ID 0 +MULTI_WRITER_TYPE{0} LAS +MULTI_WRITER_KEYWORD{0} LAS_2 +#! END_WB_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "LAS_1" +#! END_WB_HEADER +#! START_SOURCE_HEADER LAS LAS_1 +# ======================================================================= +# The following GUI line prompts for a file to be used as the source LAS file. +# The user input is stored in a macro, which is then used to define +# the dataset to be read. +# The dataset this mapping file was generated from was: +#! END_SOURCE_HEADER +#! START_WB_HEADER +DEFAULT_MACRO SourceDataset +INCLUDE [ if {{$(SourceDataset)} != ""} { \ + puts {DEFAULT_MACRO SourceDataset_LAS_1 $(SourceDataset)} \ + } ] +#! END_WB_HEADER +#! START_SOURCE_HEADER LAS LAS_1 +DEFAULT_MACRO SourceDataset_LAS_1 $(SourceDataset_LAS) +GUI MULTIFILE SourceDataset_LAS_1 LAS_Files(*.las;*.laz;*.zlas;*.lasd)|*.las;*.laz;*.zlas;*.lasd|LAS_Files(*.las)|*.las|Compressed_LAS_Files(*.laz)|*.laz|Esri_Optimized_LAS_Files(*.zlas)|*.zlas|Esri_LAS_Dataset_Files(*.lasd)|*.lasd|All_files(*)|* Source ASPRS LAS File(s): +DEFAULT_MACRO LAS_IN_READER_META_ATTRIBUTES_LAS_1 fme_dataset +LAS_1_READER_META_ATTRIBUTES "$(LAS_IN_READER_META_ATTRIBUTES_LAS_1)" +DEFAULT_MACRO LAS_IN_GROUP_BY_DATASET_LAS_1 No +LAS_1_GROUP_BY_DATASET "$(LAS_IN_GROUP_BY_DATASET_LAS_1)" +DEFAULT_MACRO LAS_IN_EXPOSE_ATTRS_GROUP_LAS_1 +LAS_1_EXPOSE_ATTRS_GROUP "$(LAS_IN_EXPOSE_ATTRS_GROUP_LAS_1)" +# Include this file in source setting section to add external search envelope processing +# Zero as a default means we don't do any search -- this makes workbench happier +DEFAULT_MACRO LAS_IN_USE_SEARCH_ENVELOPE_LAS_1 NO +LAS_1_USE_SEARCH_ENVELOPE "$(LAS_IN_USE_SEARCH_ENVELOPE_LAS_1)" +GUI ACTIVEDISCLOSUREGROUP LAS_IN_USE_SEARCH_ENVELOPE_LAS_1 LAS_IN_SEARCH_ENVELOPE_MINX_LAS_1%LAS_IN_SEARCH_ENVELOPE_MINY_LAS_1%LAS_IN_SEARCH_ENVELOPE_MAXX_LAS_1%LAS_IN_SEARCH_ENVELOPE_MAXY_LAS_1%LAS_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_LAS_1%LAS_IN_CLIP_TO_ENVELOPE_LAS_1%LAS_IN_SEARCH_METHOD%LAS_IN_SEARCH_METHOD_FILTER%LAS_IN_SEARCH_ORDER%LAS_IN_SEARCH_FEATURE%LAS_IN_DUMMY_SEARCH_ENVELOPE_PARAMETER Use Search Envelope +# =========================================================================== +GUI LOOKUP LAS_IN_SEARCH_ENVELOPE_MINX_LAS_1 ,0 +DEFAULT_MACRO LAS_IN_SEARCH_ENVELOPE_MINX_LAS_1 0 +LAS_1_SEARCH_ENVELOPE "$(LAS_IN_SEARCH_ENVELOPE_MINX_LAS_1)" +GUI OPTIONAL FLOAT LAS_IN_SEARCH_ENVELOPE_MINX_LAS_1 Minimum X: +# =========================================================================== +GUI LOOKUP LAS_IN_SEARCH_ENVELOPE_MINY_LAS_1 ,0 +DEFAULT_MACRO LAS_IN_SEARCH_ENVELOPE_MINY_LAS_1 0 +LAS_1_SEARCH_ENVELOPE "$(LAS_IN_SEARCH_ENVELOPE_MINY_LAS_1)" +GUI OPTIONAL FLOAT LAS_IN_SEARCH_ENVELOPE_MINY_LAS_1 Minimum Y: +# =========================================================================== +GUI LOOKUP LAS_IN_SEARCH_ENVELOPE_MAXX_LAS_1 ,0 +DEFAULT_MACRO LAS_IN_SEARCH_ENVELOPE_MAXX_LAS_1 0 +LAS_1_SEARCH_ENVELOPE "$(LAS_IN_SEARCH_ENVELOPE_MAXX_LAS_1)" +GUI OPTIONAL FLOAT LAS_IN_SEARCH_ENVELOPE_MAXX_LAS_1 Maximum X: +# =========================================================================== +GUI LOOKUP LAS_IN_SEARCH_ENVELOPE_MAXY_LAS_1 ,0 +DEFAULT_MACRO LAS_IN_SEARCH_ENVELOPE_MAXY_LAS_1 0 +LAS_1_SEARCH_ENVELOPE "$(LAS_IN_SEARCH_ENVELOPE_MAXY_LAS_1)" +GUI OPTIONAL FLOAT LAS_IN_SEARCH_ENVELOPE_MAXY_LAS_1 Maximum Y: +# =========================================================================== +GUI LOOKUP LAS_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_LAS_1 , +DEFAULT_MACRO LAS_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_LAS_1 +LAS_1_SEARCH_ENVELOPE "$(LAS_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_LAS_1)" +GUI OPTIONAL COORDSYS LAS_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_LAS_1 Search Envelope Coordinate System: +# =========================================================================== +# BUG18999: We now have a soft clip to fall back on like native spatial index +# thus we are reintroducing the clip to envelop as an option for users. +# Defualt to soft clip as per the existing database readers we are emulating +GUI LOOKUP LAS_IN_CLIP_TO_ENVELOPE_LAS_1 ,NO +DEFAULT_MACRO LAS_IN_CLIP_TO_ENVELOPE_LAS_1 NO +LAS_1_CLIP_TO_ENVELOPE "$(LAS_IN_CLIP_TO_ENVELOPE_LAS_1)" +GUI OPTIONAL CHECKBOX LAS_IN_CLIP_TO_ENVELOPE_LAS_1 YES%NO Clip to Search Envelope +# =========================================================================== +DEFAULT_MACRO LAS_IN_NETWORK_AUTHENTICATION_LAS_1 +LAS_1_NETWORK_AUTHENTICATION "$(LAS_IN_NETWORK_AUTHENTICATION_LAS_1)" +GUI OPTIONAL AUTHENTICATOR LAS_IN_NETWORK_AUTHENTICATION_LAS_1 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication +# ============================================================================ +DEFAULT_MACRO LAS_IN_ATTRIBUTE_READING_LAS_1 ALL +LAS_1_ATTRIBUTE_READING "$(LAS_IN_ATTRIBUTE_READING_LAS_1)" +# ============================================================================ +LAS_1_GENERATE_FME_BUILD_NUM 20596 +LAS_1_DATASET "$(SourceDataset_LAS_1)" +#! END_SOURCE_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "GEOTIFF_1" +#! END_WB_HEADER +#! START_SOURCE_HEADER GEOTIFF GEOTIFF_1 +# ======================================================================= +# The following GUI line prompts for a file to be used as the source GEOTIFF file. +# The user input is stored in a macro, which is then used to define +# the dataset to be read. +# The dataset this mapping file was generated from was: +#! END_SOURCE_HEADER +#! START_WB_HEADER +DEFAULT_MACRO SourceDataset +INCLUDE [ if {{$(SourceDataset)} != ""} { \ + puts {DEFAULT_MACRO SourceDataset_GEOTIFF_1 $(SourceDataset)} \ + } ] +#! END_WB_HEADER +#! START_SOURCE_HEADER GEOTIFF GEOTIFF_1 +DEFAULT_MACRO SourceDataset_GEOTIFF_1 $(SourceDataset_GEOTIFF) +GUI MULTIFILE SourceDataset_GEOTIFF_1 GeoTIFF_Files(*.tif;*.tiff;*.itiff;*.ovr)|*.tif;*.tiff;*.itiff;*.ovr|All_Files(*)|* Source GeoTIFF File(s): +DEFAULT_MACRO GEOTIFF_IN_READER_META_ATTRIBUTES_GEOTIFF_1 fme_dataset fme_basename +GEOTIFF_1_READER_META_ATTRIBUTES "$(GEOTIFF_IN_READER_META_ATTRIBUTES_GEOTIFF_1)" +DEFAULT_MACRO GEOTIFF_IN_FEATURE_TYPE_NAME_GEOTIFF_1 FORMAT_NAME +GEOTIFF_1_FEATURE_TYPE_NAME "$(GEOTIFF_IN_FEATURE_TYPE_NAME_GEOTIFF_1)" +DEFAULT_MACRO GEOTIFF_IN_APPLY_GCPS_GEOTIFF_1 NO +GEOTIFF_1_APPLY_GCPS "$(GEOTIFF_IN_APPLY_GCPS_GEOTIFF_1)" +GUI ACTIVEDISCLOSUREGROUP GEOTIFF_IN_APPLY_GCPS_GEOTIFF_1 GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_1 Apply GCP's +DEFAULT_MACRO GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_1 NearestNeighbor +GEOTIFF_1_GCP_INTERPOLATION_METHOD "$(GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_1)" +GUI LOOKUP_CHOICE GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_1 NearestNeighbor,NearestNeighbor%Bilinear,Bilinear%Bicubic,Bicubic GCP Interpolation Method +GUI LOOKUP GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_1 ,NearestNeighbor +DEFAULT_MACRO GEOTIFF_IN_EXPOSE_ATTRS_GROUP_GEOTIFF_1 +GEOTIFF_1_EXPOSE_ATTRS_GROUP "$(GEOTIFF_IN_EXPOSE_ATTRS_GROUP_GEOTIFF_1)" +# Include this file in source setting section to add external search envelope processing +# Zero as a default means we don't do any search -- this makes workbench happier +DEFAULT_MACRO GEOTIFF_IN_USE_SEARCH_ENVELOPE_GEOTIFF_1 NO +GEOTIFF_1_USE_SEARCH_ENVELOPE "$(GEOTIFF_IN_USE_SEARCH_ENVELOPE_GEOTIFF_1)" +GUI ACTIVEDISCLOSUREGROUP GEOTIFF_IN_USE_SEARCH_ENVELOPE_GEOTIFF_1 GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_1%GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_1%GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_1%GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_1%GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_1%GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_1%GEOTIFF_IN_SEARCH_METHOD%GEOTIFF_IN_SEARCH_METHOD_FILTER%GEOTIFF_IN_SEARCH_ORDER%GEOTIFF_IN_SEARCH_FEATURE%GEOTIFF_IN_DUMMY_SEARCH_ENVELOPE_PARAMETER Use Search Envelope +# =========================================================================== +GUI LOOKUP GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_1 ,0 +DEFAULT_MACRO GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_1 0 +GEOTIFF_1_SEARCH_ENVELOPE "$(GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_1)" +GUI OPTIONAL FLOAT GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_1 Minimum X: +# =========================================================================== +GUI LOOKUP GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_1 ,0 +DEFAULT_MACRO GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_1 0 +GEOTIFF_1_SEARCH_ENVELOPE "$(GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_1)" +GUI OPTIONAL FLOAT GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_1 Minimum Y: +# =========================================================================== +GUI LOOKUP GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_1 ,0 +DEFAULT_MACRO GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_1 0 +GEOTIFF_1_SEARCH_ENVELOPE "$(GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_1)" +GUI OPTIONAL FLOAT GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_1 Maximum X: +# =========================================================================== +GUI LOOKUP GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_1 ,0 +DEFAULT_MACRO GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_1 0 +GEOTIFF_1_SEARCH_ENVELOPE "$(GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_1)" +GUI OPTIONAL FLOAT GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_1 Maximum Y: +# =========================================================================== +GUI LOOKUP GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_1 , +DEFAULT_MACRO GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_1 +GEOTIFF_1_SEARCH_ENVELOPE "$(GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_1)" +GUI OPTIONAL COORDSYS GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_1 Search Envelope Coordinate System: +# =========================================================================== +# BUG18999: We now have a soft clip to fall back on like native spatial index +# thus we are reintroducing the clip to envelop as an option for users. +# Defualt to soft clip as per the existing database readers we are emulating +GUI LOOKUP GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_1 ,NO +DEFAULT_MACRO GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_1 NO +GEOTIFF_1_CLIP_TO_ENVELOPE "$(GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_1)" +GUI OPTIONAL CHECKBOX GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_1 YES%NO Clip to Search Envelope +DEFAULT_MACRO GEOTIFF_IN_GEOTIFF_RDR_ADV_PARM_GROUP_GEOTIFF_1 +GUI OPTIONAL DISCLOSUREGROUP GEOTIFF_IN_GEOTIFF_RDR_ADV_PARM_GROUP_GEOTIFF_1 GEOTIFF_IN_PYRAMID_LEVEL_GEOTIFF_1%GEOTIFF_IN_PREFER_FILE_CS_UNITS_GEOTIFF_1%GEOTIFF_IN_READ_OFFSETS_IN_CS_UNITS_GEOTIFF_1%GEOTIFF_IN_IGNORE_RASTER_TYPE_KEY_GEOTIFF_1 Advanced +DEFAULT_MACRO GEOTIFF_IN_PYRAMID_LEVEL_GEOTIFF_1 +GEOTIFF_1_PYRAMID_LEVEL "$(GEOTIFF_IN_PYRAMID_LEVEL_GEOTIFF_1)" +GUI OPTIONAL INTEGER GEOTIFF_IN_PYRAMID_LEVEL_GEOTIFF_1 Pyramid Level to Read: +DEFAULT_MACRO GEOTIFF_IN_PREFER_FILE_CS_UNITS_GEOTIFF_1 Yes +GEOTIFF_1_PREFER_FILE_CS_UNITS "$(GEOTIFF_IN_PREFER_FILE_CS_UNITS_GEOTIFF_1)" +GUI CHOICE GEOTIFF_IN_PREFER_FILE_CS_UNITS_GEOTIFF_1 Yes%No Prefer File Coordinate System Units: +DEFAULT_MACRO GEOTIFF_IN_READ_OFFSETS_IN_CS_UNITS_GEOTIFF_1 No +GEOTIFF_1_READ_OFFSETS_IN_CS_UNITS "$(GEOTIFF_IN_READ_OFFSETS_IN_CS_UNITS_GEOTIFF_1)" +GUI CHOICE GEOTIFF_IN_READ_OFFSETS_IN_CS_UNITS_GEOTIFF_1 Yes%No Offsets in Coordinate System Units: +DEFAULT_MACRO GEOTIFF_IN_IGNORE_RASTER_TYPE_KEY_GEOTIFF_1 No +GEOTIFF_1_IGNORE_RASTER_TYPE_KEY "$(GEOTIFF_IN_IGNORE_RASTER_TYPE_KEY_GEOTIFF_1)" +GUI CHOICE GEOTIFF_IN_IGNORE_RASTER_TYPE_KEY_GEOTIFF_1 Yes%No Ignore Raster Type Key: +# =========================================================================== +DEFAULT_MACRO GEOTIFF_IN_NETWORK_AUTHENTICATION_GEOTIFF_1 +GEOTIFF_1_NETWORK_AUTHENTICATION "$(GEOTIFF_IN_NETWORK_AUTHENTICATION_GEOTIFF_1)" +GUI OPTIONAL AUTHENTICATOR GEOTIFF_IN_NETWORK_AUTHENTICATION_GEOTIFF_1 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication +# ============================================================================ +DEFAULT_MACRO GEOTIFF_IN_ATTRIBUTE_READING_GEOTIFF_1 ALL +GEOTIFF_1_ATTRIBUTE_READING "$(GEOTIFF_IN_ATTRIBUTE_READING_GEOTIFF_1)" +# ============================================================================ +GEOTIFF_1_GENERATE_FME_BUILD_NUM 20596 +GEOTIFF_1_DATASET "$(SourceDataset_GEOTIFF_1)" +#! END_SOURCE_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "GEOTIFF_2" +#! END_WB_HEADER +#! START_SOURCE_HEADER GEOTIFF GEOTIFF_2 +# ======================================================================= +# The following GUI line prompts for a file to be used as the source GEOTIFF file. +# The user input is stored in a macro, which is then used to define +# the dataset to be read. +# The dataset this mapping file was generated from was: +#! END_SOURCE_HEADER +#! START_WB_HEADER +DEFAULT_MACRO SourceDataset +INCLUDE [ if {{$(SourceDataset)} != ""} { \ + puts {DEFAULT_MACRO SourceDataset_GEOTIFF_2 $(SourceDataset)} \ + } ] +#! END_WB_HEADER +#! START_SOURCE_HEADER GEOTIFF GEOTIFF_2 +DEFAULT_MACRO SourceDataset_GEOTIFF_2 $(SourceDataset_GEOTIFF_3) +GUI MULTIFILE SourceDataset_GEOTIFF_2 GeoTIFF_Files(*.tif;*.tiff;*.itiff;*.ovr)|*.tif;*.tiff;*.itiff;*.ovr|All_Files(*)|* Source GeoTIFF File(s): +DEFAULT_MACRO GEOTIFF_IN_READER_META_ATTRIBUTES_GEOTIFF_2 fme_dataset fme_basename +GEOTIFF_2_READER_META_ATTRIBUTES "$(GEOTIFF_IN_READER_META_ATTRIBUTES_GEOTIFF_2)" +DEFAULT_MACRO GEOTIFF_IN_FEATURE_TYPE_NAME_GEOTIFF_2 FORMAT_NAME +GEOTIFF_2_FEATURE_TYPE_NAME "$(GEOTIFF_IN_FEATURE_TYPE_NAME_GEOTIFF_2)" +DEFAULT_MACRO GEOTIFF_IN_APPLY_GCPS_GEOTIFF_2 NO +GEOTIFF_2_APPLY_GCPS "$(GEOTIFF_IN_APPLY_GCPS_GEOTIFF_2)" +GUI ACTIVEDISCLOSUREGROUP GEOTIFF_IN_APPLY_GCPS_GEOTIFF_2 GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_2 Apply GCP's +DEFAULT_MACRO GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_2 NearestNeighbor +GEOTIFF_2_GCP_INTERPOLATION_METHOD "$(GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_2)" +GUI LOOKUP_CHOICE GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_2 NearestNeighbor,NearestNeighbor%Bilinear,Bilinear%Bicubic,Bicubic GCP Interpolation Method +GUI LOOKUP GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_2 ,NearestNeighbor +DEFAULT_MACRO GEOTIFF_IN_EXPOSE_ATTRS_GROUP_GEOTIFF_2 +GEOTIFF_2_EXPOSE_ATTRS_GROUP "$(GEOTIFF_IN_EXPOSE_ATTRS_GROUP_GEOTIFF_2)" +# Include this file in source setting section to add external search envelope processing +# Zero as a default means we don't do any search -- this makes workbench happier +DEFAULT_MACRO GEOTIFF_IN_USE_SEARCH_ENVELOPE_GEOTIFF_2 NO +GEOTIFF_2_USE_SEARCH_ENVELOPE "$(GEOTIFF_IN_USE_SEARCH_ENVELOPE_GEOTIFF_2)" +GUI ACTIVEDISCLOSUREGROUP GEOTIFF_IN_USE_SEARCH_ENVELOPE_GEOTIFF_2 GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_2%GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_2%GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_2%GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_2%GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_2%GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_2%GEOTIFF_IN_SEARCH_METHOD%GEOTIFF_IN_SEARCH_METHOD_FILTER%GEOTIFF_IN_SEARCH_ORDER%GEOTIFF_IN_SEARCH_FEATURE%GEOTIFF_IN_DUMMY_SEARCH_ENVELOPE_PARAMETER Use Search Envelope +# =========================================================================== +GUI LOOKUP GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_2 ,0 +DEFAULT_MACRO GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_2 0 +GEOTIFF_2_SEARCH_ENVELOPE "$(GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_2)" +GUI OPTIONAL FLOAT GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_2 Minimum X: +# =========================================================================== +GUI LOOKUP GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_2 ,0 +DEFAULT_MACRO GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_2 0 +GEOTIFF_2_SEARCH_ENVELOPE "$(GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_2)" +GUI OPTIONAL FLOAT GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_2 Minimum Y: +# =========================================================================== +GUI LOOKUP GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_2 ,0 +DEFAULT_MACRO GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_2 0 +GEOTIFF_2_SEARCH_ENVELOPE "$(GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_2)" +GUI OPTIONAL FLOAT GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_2 Maximum X: +# =========================================================================== +GUI LOOKUP GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_2 ,0 +DEFAULT_MACRO GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_2 0 +GEOTIFF_2_SEARCH_ENVELOPE "$(GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_2)" +GUI OPTIONAL FLOAT GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_2 Maximum Y: +# =========================================================================== +GUI LOOKUP GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_2 , +DEFAULT_MACRO GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_2 +GEOTIFF_2_SEARCH_ENVELOPE "$(GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_2)" +GUI OPTIONAL COORDSYS GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_2 Search Envelope Coordinate System: +# =========================================================================== +# BUG18999: We now have a soft clip to fall back on like native spatial index +# thus we are reintroducing the clip to envelop as an option for users. +# Defualt to soft clip as per the existing database readers we are emulating +GUI LOOKUP GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_2 ,NO +DEFAULT_MACRO GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_2 NO +GEOTIFF_2_CLIP_TO_ENVELOPE "$(GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_2)" +GUI OPTIONAL CHECKBOX GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_2 YES%NO Clip to Search Envelope +DEFAULT_MACRO GEOTIFF_IN_GEOTIFF_RDR_ADV_PARM_GROUP_GEOTIFF_2 +GUI OPTIONAL DISCLOSUREGROUP GEOTIFF_IN_GEOTIFF_RDR_ADV_PARM_GROUP_GEOTIFF_2 GEOTIFF_IN_PYRAMID_LEVEL_GEOTIFF_2%GEOTIFF_IN_PREFER_FILE_CS_UNITS_GEOTIFF_2%GEOTIFF_IN_READ_OFFSETS_IN_CS_UNITS_GEOTIFF_2%GEOTIFF_IN_IGNORE_RASTER_TYPE_KEY_GEOTIFF_2 Advanced +DEFAULT_MACRO GEOTIFF_IN_PYRAMID_LEVEL_GEOTIFF_2 +GEOTIFF_2_PYRAMID_LEVEL "$(GEOTIFF_IN_PYRAMID_LEVEL_GEOTIFF_2)" +GUI OPTIONAL INTEGER GEOTIFF_IN_PYRAMID_LEVEL_GEOTIFF_2 Pyramid Level to Read: +DEFAULT_MACRO GEOTIFF_IN_PREFER_FILE_CS_UNITS_GEOTIFF_2 Yes +GEOTIFF_2_PREFER_FILE_CS_UNITS "$(GEOTIFF_IN_PREFER_FILE_CS_UNITS_GEOTIFF_2)" +GUI CHOICE GEOTIFF_IN_PREFER_FILE_CS_UNITS_GEOTIFF_2 Yes%No Prefer File Coordinate System Units: +DEFAULT_MACRO GEOTIFF_IN_READ_OFFSETS_IN_CS_UNITS_GEOTIFF_2 No +GEOTIFF_2_READ_OFFSETS_IN_CS_UNITS "$(GEOTIFF_IN_READ_OFFSETS_IN_CS_UNITS_GEOTIFF_2)" +GUI CHOICE GEOTIFF_IN_READ_OFFSETS_IN_CS_UNITS_GEOTIFF_2 Yes%No Offsets in Coordinate System Units: +DEFAULT_MACRO GEOTIFF_IN_IGNORE_RASTER_TYPE_KEY_GEOTIFF_2 No +GEOTIFF_2_IGNORE_RASTER_TYPE_KEY "$(GEOTIFF_IN_IGNORE_RASTER_TYPE_KEY_GEOTIFF_2)" +GUI CHOICE GEOTIFF_IN_IGNORE_RASTER_TYPE_KEY_GEOTIFF_2 Yes%No Ignore Raster Type Key: +# =========================================================================== +DEFAULT_MACRO GEOTIFF_IN_NETWORK_AUTHENTICATION_GEOTIFF_2 +GEOTIFF_2_NETWORK_AUTHENTICATION "$(GEOTIFF_IN_NETWORK_AUTHENTICATION_GEOTIFF_2)" +GUI OPTIONAL AUTHENTICATOR GEOTIFF_IN_NETWORK_AUTHENTICATION_GEOTIFF_2 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication +# ============================================================================ +DEFAULT_MACRO GEOTIFF_IN_ATTRIBUTE_READING_GEOTIFF_2 ALL +GEOTIFF_2_ATTRIBUTE_READING "$(GEOTIFF_IN_ATTRIBUTE_READING_GEOTIFF_2)" +# ============================================================================ +GEOTIFF_2_GENERATE_FME_BUILD_NUM 20596 +GEOTIFF_2_DATASET "$(SourceDataset_GEOTIFF_2)" +#! END_SOURCE_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "LAS_2" +#! END_WB_HEADER +#! START_DEST_HEADER LAS LAS_2 +# The following GUI lines prompt for a LAS file to be used as the +# the destination of the data. +# The user input is stored in a macro, which is then used to define +# the dataset to be written. +#! END_DEST_HEADER +#! START_WB_HEADER +DEFAULT_MACRO DestDataset +INCLUDE [ if {"$(DestDataset)" != ""} { \ + puts {DEFAULT_MACRO DestDataset_LAS_2 $(DestDataset)} \ + } ] +#! END_WB_HEADER +#! START_DEST_HEADER LAS LAS_2 +DEFAULT_MACRO DestDataset_LAS_2 $(DestDataset_LAS) +GUI DIRNAME DestDataset_LAS_2 Destination ASPRS LAS Folder: +DEFAULT_MACRO LAS_OUT_FME_GROUP_NAMED1_LAS_2 FME_DISCLOSURE_OPEN +GUI OPTIONAL DISCLOSUREGROUP LAS_OUT_FME_GROUP_NAMED1_LAS_2 LAS_OUT_VERSION_LAS_2%LAS_OUT_COMPRESSION_LAS_2 Parameters +# ============================================================================ +# Version +DEFAULT_MACRO LAS_OUT_VERSION_LAS_2 1.4 +LAS_2_VERSION "$(LAS_OUT_VERSION_LAS_2)" +GUI LOOKUP_CHOICE LAS_OUT_VERSION_LAS_2 1.0,1.0%1.1,1.1%1.2,1.2%1.3,1.3%"\"1.4 (Legacy Compatible)\",1.4-legacy-compatible"%1.4,1.4 ASPRS LAS Version: +# [PR#30472] Compression +DEFAULT_MACRO LAS_OUT_COMPRESSION_LAS_2 None +LAS_2_COMPRESSION "$(LAS_OUT_COMPRESSION_LAS_2)" +GUI ACTIVECHOICE LAS_OUT_COMPRESSION_LAS_2 None,LAS_OUT_ZLAS_PARAMETERS_LAS_2%LAZ,LAS_OUT_ZLAS_PARAMETERS_LAS_2%zLAS Compression +# This is a placeholder parameter that will be replaced with a custom table in the controller +DEFAULT_MACRO LAS_OUT_USER_GROUP_LAS_2 FME_DISCLOSURE_OPEN +GUI OPTIONAL DISCLOSUREGROUP LAS_OUT_USER_GROUP_LAS_2 LAS_OUT_USER_COMPONENTS_LAS_2 Additional User Components +DEFAULT_MACRO LAS_OUT_USER_COMPONENTS_LAS_2 DistanceNormalGroup +LAS_2_USER_COMPONENTS "$(LAS_OUT_USER_COMPONENTS_LAS_2)" +GUI OPTIONAL GUI_LINE_TABLE_ENCODED LAS_OUT_USER_COMPONENTS_LAS_2 NO_LABEL%ROW_DELIM:,%COL_DELIM:,%"User Components"%"STRING COMPONENTS" User Components +# ============================================================================ +# Opt in for destination dataset type vs format type validation +DEFAULT_MACRO LAS_OUT_DESTINATION_DATASETTYPE_VALIDATION_LAS_2 Yes +LAS_2_DESTINATION_DATASETTYPE_VALIDATION "$(LAS_OUT_DESTINATION_DATASETTYPE_VALIDATION_LAS_2)" +DEFAULT_MACRO LAS_OUT_COORDINATE_SYSTEM_GRANULARITY_LAS_2 FEATURE +LAS_2_COORDINATE_SYSTEM_GRANULARITY "$(LAS_OUT_COORDINATE_SYSTEM_GRANULARITY_LAS_2)" +DEFAULT_MACRO LAS_OUT_ADVANCED_PARAMETERS_LAS_2 FME_DISCLOSURE_CLOSED +GUI OPTIONAL DISCLOSUREGROUP LAS_OUT_ADVANCED_PARAMETERS_LAS_2 LAS_OUT_LAS_DATASET_FILE_LAS_2%LAS_OUT_ZLAS_PARAMETERS_LAS_2 Advanced +DEFAULT_MACRO LAS_OUT_LAS_DATASET_FILE_LAS_2 +GUI OPTIONAL DISCLOSUREGROUP LAS_OUT_LAS_DATASET_FILE_LAS_2 LAS_OUT_ARCGIS_LAS_DATASET_LAS_2%LAS_OUT_COMPUTE_STATISTICS_ON_ARCGIS_LAS_DATASET_LAS_2 LAS Dataset File +# The following GUI line provides the ability to create an +# Esri ArcGIS LAS Dataset encapsulating the LAS files produced +# by this translation. The LAS Dataset can then be used to view +# the output using Esri's tools. +DEFAULT_MACRO LAS_OUT_ARCGIS_LAS_DATASET_LAS_2 +LAS_2_ARCGIS_LAS_DATASET "$(LAS_OUT_ARCGIS_LAS_DATASET_LAS_2)" +GUI OPTIONAL TEXT LAS_OUT_ARCGIS_LAS_DATASET_LAS_2 ArcGIS LAS Dataset (.lasd) Filename +# The following GUI line determines whether statistics should +# be calculated on the ArcGIS LAS Dataset. This keyword is +# applicable when FME is creating an ArcGIS LAS Dataset. +DEFAULT_MACRO LAS_OUT_COMPUTE_STATISTICS_ON_ARCGIS_LAS_DATASET_LAS_2 No +LAS_2_COMPUTE_STATISTICS_ON_ARCGIS_LAS_DATASET "$(LAS_OUT_COMPUTE_STATISTICS_ON_ARCGIS_LAS_DATASET_LAS_2)" +GUI CHOICE LAS_OUT_COMPUTE_STATISTICS_ON_ARCGIS_LAS_DATASET_LAS_2 Yes%No Compute Statistics on ArcGIS LAS Dataset +DEFAULT_MACRO LAS_OUT_ZLAS_PARAMETERS_LAS_2 +GUI OPTIONAL DISCLOSUREGROUP LAS_OUT_ZLAS_PARAMETERS_LAS_2 LAS_OUT_ZLAS_REARRANGE_POINTS_LAS_2%LAS_OUT_ZLAS_POINT_SPACING_SOURCE_LAS_2%LAS_OUT_ZLAS_POINT_SPACING_VALUE_LAS_2 zLAS Parameters +DEFAULT_MACRO LAS_OUT_ZLAS_REARRANGE_POINTS_LAS_2 +LAS_2_ZLAS_REARRANGE_POINTS "$(LAS_OUT_ZLAS_REARRANGE_POINTS_LAS_2)" +GUI CHOICE LAS_OUT_ZLAS_REARRANGE_POINTS_LAS_2 Yes%No Rearrange Points for zLAS Compression +DEFAULT_MACRO LAS_OUT_ZLAS_POINT_SPACING_SOURCE_LAS_2 +LAS_2_ZLAS_POINT_SPACING_SOURCE "$(LAS_OUT_ZLAS_POINT_SPACING_SOURCE_LAS_2)" +GUI LOOKUP_CHOICE LAS_OUT_ZLAS_POINT_SPACING_SOURCE_LAS_2 "\"Scan Points\",scan"%"\"From Header\",header"%"\"Specify Value\",specify" zLAS Point Spacing Source +DEFAULT_MACRO LAS_OUT_ZLAS_POINT_SPACING_VALUE_LAS_2 +LAS_2_ZLAS_POINT_SPACING_VALUE "$(LAS_OUT_ZLAS_POINT_SPACING_VALUE_LAS_2)" +GUI FLOAT LAS_OUT_ZLAS_POINT_SPACING_VALUE_LAS_2 zLAS Point Spacing Value +# ============================================================================ +LAS_2_GENERATE_FME_BUILD_NUM 20596 +LAS_2_DATASET "$(DestDataset_LAS_2)" +#! END_DEST_HEADER +#! START_WB_HEADER +#! END_WB_HEADER +#! END_HEADER + +LOG_FILTER_MASK -1 +LOG_MAX_FEATURES 200 +LOG_MAX_RECORDED_FEATURES 200 +FME_REPROJECTION_ENGINE FME +FME_IMPLICIT_CSMAP_REPROJECTION_MODE Auto +FME_GEOMETRY_HANDLING Enhanced +FME_STROKE_MAX_DEVIATION 0 +DEFAULT_MACRO DATASET_KEYWORD_LAS_1 LAS_1 +DEFAULT_MACRO DATASET_KEYWORD_GEOTIFF_1 GEOTIFF_1 +DEFAULT_MACRO DATASET_KEYWORD_GEOTIFF_2 GEOTIFF_2 +DEFAULT_MACRO DATASET_KEYWORD_LAS_2 LAS_2 +# ------------------------------------------------------------------------- + +LAS_1_READER_META_ATTRIBUTES fme_feature_type fme_basename + +# ------------------------------------------------------------------------- + +GEOTIFF_1_READER_META_ATTRIBUTES fme_feature_type fme_basename + +# ------------------------------------------------------------------------- + +GEOTIFF_2_READER_META_ATTRIBUTES fme_feature_type fme_basename + +# ------------------------------------------------------------------------- + +LAS_2_COORDINATE_SYSTEM CH1903Plus_1.LV95/01 +MULTI_READER_CONTINUE_ON_READER_FAILURE No + +# ------------------------------------------------------------------------- + +MACRO WORKSPACE_NAME LAS_Pretraitement_2021_cleaning_MNC_class10 +MACRO FME_VIEWER_APP fmedatainspector +# ------------------------------------------------------------------------- +LAS_1_DEF LAS +# ------------------------------------------------------------------------- +GEOTIFF_1_DEF GEOTIFF +# ------------------------------------------------------------------------- +GEOTIFF_2_DEF GEOTIFF +# ------------------------------------------------------------------------- + +FACTORY_DEF * RoutingFactory FACTORY_NAME "Router and Unexpected Input Remover" COMMAND_PARM_EVALUATION SINGLE_PASS INPUT FEATURE_TYPE * ROUTE LAS LAS_1::LAS multi_reader_keyword,$(DATASET_KEYWORD_LAS_1) TO FME_GENERIC ::LAS ALIAS_GEOMETRY ROUTE GEOTIFF GEOTIFF_1::GEOTIFF multi_reader_keyword,$(DATASET_KEYWORD_GEOTIFF_1) TO FME_GENERIC ::GEOTIFF ALIAS_GEOMETRY ROUTE GEOTIFF GEOTIFF_2::GEOTIFF multi_reader_keyword,$(DATASET_KEYWORD_GEOTIFF_2) TO FME_GENERIC ::GEOTIFF ALIAS_GEOMETRY MERGE_INPUT Yes OUTPUT ROUTED FEATURE_TYPE * +LAS_1_MERGE_DEF LAS_1::LAS EXACT LAS +GEOTIFF_1_MERGE_DEF GEOTIFF_1::GEOTIFF EXACT GEOTIFF +GEOTIFF_2_MERGE_DEF GEOTIFF_2::GEOTIFF EXACT GEOTIFF +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME "LAS_LAS_1 Splitter" INPUT FEATURE_TYPE LAS OUTPUT FEATURE_TYPE LAS_LAS_1 +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME "GEOTIFF_GEOTIFF_1 Splitter" INPUT FEATURE_TYPE GEOTIFF multi_reader_keyword $(DATASET_KEYWORD_GEOTIFF_1) OUTPUT FEATURE_TYPE GEOTIFF_GEOTIFF_1 +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME "GEOTIFF_GEOTIFF_2 Splitter" INPUT FEATURE_TYPE GEOTIFF multi_reader_keyword $(DATASET_KEYWORD_GEOTIFF_2) OUTPUT FEATURE_TYPE GEOTIFF_GEOTIFF_2 +DEFAULT_MACRO WB_CURRENT_CONTEXT +# ------------------------------------------------------------------------- +FACTORY_DEF * PointCloudEvaluationFactory FACTORY_NAME PointCloudFilter INPUT FEATURE_TYPE LAS_LAS_1 MODE FILTER REJECT_INVALID_FEATURES YES FORCE_FLOAT_DIVISION yes EXPRESSION_LIST Componentclassification==4||Componentclassification==5||Componentclassification==10 FILTER_ATTRIBUTE __pc_internal_filter_attribute__ FILTER_ATTRIBUTE_VALUES_LIST Vgtationmoyenne4+haute5+trunks10 OUTPUT_UNFILTERED_POINTS "Yes" OUTPUT RESULT FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_0 OUTPUT FEATURE_TYPE PointCloudFilter_ +FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_TestFactory_0 INPUT FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_0 STRING_TEST @Value(__pc_internal_filter_attribute__) = Vgtationmoyenne4+haute5+trunks10 OUTPUT PASSED FEATURE_TYPE PointCloudFilter_Vgtationmoyenne4+haute5+trunks10 @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_1 +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_UNFILTERED INPUT FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_1 OUTPUT FEATURE_TYPE PointCloudFilter_ @RemoveAttributes(__pc_internal_filter_attribute__) +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_ INPUT FEATURE_TYPE PointCloudFilter_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudFilteroutputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) +# ------------------------------------------------------------------------- +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudComponentAdder INPUT FEATURE_TYPE PointCloudFilter_Vgtationmoyenne4+haute5+trunks10 OUTPUT FEATURE_TYPE ___TOREJECTOR___ @RenameAttributes(FME_STRICT,___fme_rejection_code___,fme_rejection_code) @AddPointCloudComponents(REJECTABLE,mur,Real64,0,canopy,Real64,0) +FACTORY_DEF * TestFactory FACTORY_NAME PointCloudComponentAdder_Rejector INPUT FEATURE_TYPE ___TOREJECTOR___ TEST @Value(fme_rejection_code) != "" OUTPUT PASSED FEATURE_TYPE PointCloudComponentAdder_ @RemoveAttributes(___fme_rejection_code___) OUTPUT FAILED FEATURE_TYPE PointCloudComponentAdder_OUTPUT @RenameAttributes(FME_STRICT,fme_rejection_code,___fme_rejection_code___) +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudComponentAdder_ INPUT FEATURE_TYPE PointCloudComponentAdder_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudComponentAdderoutputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) +# ------------------------------------------------------------------------- +INCLUDE [ if {[string equal {CUSTOM} {COLOR}]} { puts {MACRO PointCloudOnRasterComponentSetter_COMPONENT_LIST color_red,color_green,color_blue}; puts {MACRO PointCloudOnRasterComponentSetter_DEFAULT_VALUE_LIST}; } else { foreach {band component default} [split {0|mur|$(SourceDataset_GEOTIFF)} |] { lappend componentList "$component"; lappend defaultList "$default"; }; puts "MACRO PointCloudOnRasterComponentSetter_COMPONENT_LIST \"[join $componentList ,]\""; puts "MACRO PointCloudOnRasterComponentSetter_DEFAULT_VALUE_LIST \"[join $defaultList ,]\""; }; ] +FACTORY_DEF {*} RasterToPointCloudComponentFactory FACTORY_NAME PointCloudOnRasterComponentSetter INPUT FEATURE_TYPE PointCloudComponentAdder_OUTPUT INPUT FEATURE_TYPE GEOTIFF_GEOTIFF_1 FLUSH_WHEN_GROUPS_CHANGE No COMPONENT_LIST $(PointCloudOnRasterComponentSetter_COMPONENT_LIST) DEFAULT_VALUE $(PointCloudOnRasterComponentSetter_DEFAULT_VALUE_LIST) INTERPOLATION_TYPE_NAME NearestNeighbor EXTRACT_NODATA No DEFAULT_VALUES_OVERWRITE_DATA No REJECT_INVALID_FEATURES YES OUTPUT POINTCLOUD FEATURE_TYPE PointCloudOnRasterComponentSetter_PointCloud OUTPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_ +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudOnRasterComponentSetter_ INPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudOnRasterComponentSetteroutputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) +# ------------------------------------------------------------------------- +FACTORY_DEF * PointCloudEvaluationFactory FACTORY_NAME PointCloudFilter_4 INPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_PointCloud MODE FILTER REJECT_INVALID_FEATURES YES FORCE_FLOAT_DIVISION yes EXPRESSION_LIST Componentclassification==4||Componentclassification==10 ; Componentclassification==5 FILTER_ATTRIBUTE __pc_internal_filter_attribute__ FILTER_ATTRIBUTE_VALUES_LIST 4-10 ; 5 OUTPUT_UNFILTERED_POINTS "Yes" OUTPUT RESULT FEATURE_TYPE PointCloudFilter_4_POINTCLOUDFILTERINPUTLINE_0 OUTPUT FEATURE_TYPE PointCloudFilter_4_ +FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_4_TestFactory_0 INPUT FEATURE_TYPE PointCloudFilter_4_POINTCLOUDFILTERINPUTLINE_0 STRING_TEST @Value(__pc_internal_filter_attribute__) = 4-10 OUTPUT PASSED FEATURE_TYPE PointCloudFilter_4_4-10 @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_4_POINTCLOUDFILTERINPUTLINE_1 +FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_4_TestFactory_1 INPUT FEATURE_TYPE PointCloudFilter_4_POINTCLOUDFILTERINPUTLINE_1 STRING_TEST @Value(__pc_internal_filter_attribute__) = 5 OUTPUT PASSED FEATURE_TYPE PointCloudFilter_4_5 @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_4_POINTCLOUDFILTERINPUTLINE_2 +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_4_UNFILTERED INPUT FEATURE_TYPE PointCloudFilter_4_POINTCLOUDFILTERINPUTLINE_2 OUTPUT FEATURE_TYPE PointCloudFilter_4_ @RemoveAttributes(__pc_internal_filter_attribute__) +FACTORY_DEF * TeeFactory FACTORY_NAME "PointCloudFilter_4 Transformer Output Nuker" INPUT FEATURE_TYPE PointCloudFilter_4_ +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_4_ INPUT FEATURE_TYPE PointCloudFilter_4_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudFilter_4outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) +# ------------------------------------------------------------------------- +INCLUDE [ if {[string equal {CUSTOM} {COLOR}]} { puts {MACRO PointCloudOnRasterComponentSetter_3_COMPONENT_LIST color_red,color_green,color_blue}; puts {MACRO PointCloudOnRasterComponentSetter_3_DEFAULT_VALUE_LIST}; } else { foreach {band component default} [split {0|canopy|0} |] { lappend componentList "$component"; lappend defaultList "$default"; }; puts "MACRO PointCloudOnRasterComponentSetter_3_COMPONENT_LIST \"[join $componentList ,]\""; puts "MACRO PointCloudOnRasterComponentSetter_3_DEFAULT_VALUE_LIST \"[join $defaultList ,]\""; }; ] +FACTORY_DEF {*} RasterToPointCloudComponentFactory FACTORY_NAME PointCloudOnRasterComponentSetter_3 INPUT FEATURE_TYPE PointCloudFilter_4_4-10 INPUT FEATURE_TYPE GEOTIFF_GEOTIFF_2 FLUSH_WHEN_GROUPS_CHANGE No COMPONENT_LIST $(PointCloudOnRasterComponentSetter_3_COMPONENT_LIST) DEFAULT_VALUE $(PointCloudOnRasterComponentSetter_3_DEFAULT_VALUE_LIST) INTERPOLATION_TYPE_NAME NearestNeighbor EXTRACT_NODATA No DEFAULT_VALUES_OVERWRITE_DATA No REJECT_INVALID_FEATURES YES OUTPUT POINTCLOUD FEATURE_TYPE PointCloudOnRasterComponentSetter_3_PointCloud OUTPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_3_ +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudOnRasterComponentSetter_3_ INPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_3_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudOnRasterComponentSetter_3outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) +# ------------------------------------------------------------------------- +FACTORY_DEF * PointCloudEvaluationFactory FACTORY_NAME PointCloudFilter_5 INPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_3_PointCloud MODE FILTER REJECT_INVALID_FEATURES YES FORCE_FLOAT_DIVISION yes EXPRESSION_LIST Componentcanopy1 FILTER_ATTRIBUTE __pc_internal_filter_attribute__ FILTER_ATTRIBUTE_VALUES_LIST 4-10out OUTPUT_UNFILTERED_POINTS "Yes" OUTPUT RESULT FEATURE_TYPE PointCloudFilter_5_POINTCLOUDFILTERINPUTLINE_0 OUTPUT FEATURE_TYPE PointCloudFilter_5_ +FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_5_TestFactory_0 INPUT FEATURE_TYPE PointCloudFilter_5_POINTCLOUDFILTERINPUTLINE_0 STRING_TEST @Value(__pc_internal_filter_attribute__) = 4-10out OUTPUT PASSED FEATURE_TYPE PointCloudFilter_5_4-10out @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_5_POINTCLOUDFILTERINPUTLINE_1 +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_5_UNFILTERED INPUT FEATURE_TYPE PointCloudFilter_5_POINTCLOUDFILTERINPUTLINE_1 OUTPUT FEATURE_TYPE PointCloudFilter_5_ @RemoveAttributes(__pc_internal_filter_attribute__) +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_5_ INPUT FEATURE_TYPE PointCloudFilter_5_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudFilter_5outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) +# ------------------------------------------------------------------------- +FACTORY_DEF * PointCloudEvaluationFactory FACTORY_NAME PointCloudFilter_6 INPUT FEATURE_TYPE PointCloudFilter_5_ MODE FILTER REJECT_INVALID_FEATURES YES FORCE_FLOAT_DIVISION yes EXPRESSION_LIST Componentmur3 FILTER_ATTRIBUTE __pc_internal_filter_attribute__ FILTER_ATTRIBUTE_VALUES_LIST 4-10-mur OUTPUT_UNFILTERED_POINTS "Yes" OUTPUT RESULT FEATURE_TYPE PointCloudFilter_6_POINTCLOUDFILTERINPUTLINE_0 OUTPUT FEATURE_TYPE PointCloudFilter_6_ +FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_6_TestFactory_0 INPUT FEATURE_TYPE PointCloudFilter_6_POINTCLOUDFILTERINPUTLINE_0 STRING_TEST @Value(__pc_internal_filter_attribute__) = 4-10-mur OUTPUT PASSED FEATURE_TYPE PointCloudFilter_6_4-10-mur @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_6_POINTCLOUDFILTERINPUTLINE_1 +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_6_UNFILTERED INPUT FEATURE_TYPE PointCloudFilter_6_POINTCLOUDFILTERINPUTLINE_1 OUTPUT FEATURE_TYPE PointCloudFilter_6_ @RemoveAttributes(__pc_internal_filter_attribute__) +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_6_ INPUT FEATURE_TYPE PointCloudFilter_6_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudFilter_6outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) +# ------------------------------------------------------------------------- +DEFAULT_MACRO PointCloudExpressionEvaluator_3_COMPONENT_LIST +DEFAULT_MACRO PointCloudExpressionEvaluator_3_COMPONENT_TYPE_LIST +DEFAULT_MACRO PointCloudExpressionEvaluator_3_EXPRESSION_LIST +INCLUDE [ foreach {component componenttype expression} [split {classification Auto 4}] { lappend lists(COMPONENT) $component; lappend lists(COMPONENT_TYPE) $componenttype; if [regexp {@EvaluateExpression\(STRING_ENCODED,(.*),.+\)} $expression -> unwrapped] { lappend lists(EXPRESSION) $unwrapped; } elseif [regexp {@EvaluateExpression\(FDIV,STRING_ENCODED,(.*),.+\)} $expression -> unwrapped] { lappend lists(EXPRESSION) $unwrapped; } else { lappend lists(EXPRESSION) $expression; }; }; foreach {listName} [array names lists] { puts "MACRO PointCloudExpressionEvaluator_3_${listName}_LIST \"[join $lists($listName) {;}]\""; }; ] +FACTORY_DEF * PointCloudEvaluationFactory FACTORY_NAME PointCloudExpressionEvaluator_3 INPUT FEATURE_TYPE PointCloudFilter_6_ MODE SET_COMPONENT_VALUES COMPONENT_LIST $(PointCloudExpressionEvaluator_3_COMPONENT_LIST) COMPONENT_TYPE_LIST $(PointCloudExpressionEvaluator_3_COMPONENT_TYPE_LIST) EXPRESSION_LIST $(PointCloudExpressionEvaluator_3_EXPRESSION_LIST) FORCE_FLOAT_DIVISION yes REJECT_INVALID_FEATURES YES OUTPUT RESULT FEATURE_TYPE PointCloudExpressionEvaluator_3_RESULT OUTPUT FEATURE_TYPE PointCloudExpressionEvaluator_3_ +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudExpressionEvaluator_3_ INPUT FEATURE_TYPE PointCloudExpressionEvaluator_3_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudExpressionEvaluator_3outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) +# ------------------------------------------------------------------------- +FACTORY_DEF {*} VectorToPointCloudFactory FACTORY_NAME PointCloudCombiner_2___VectorMerger INPUT FEATURE_TYPE PointCloudFilter_5_4-10out INPUT FEATURE_TYPE PointCloudFilter_6_4-10-mur FLUSH_WHEN_GROUPS_CHANGE No ACCUMULATE_ATTRIBUTES yes EXTRACT_RASTER_NODATA no SPACING "1.0" MEASURES_TO_PRESERVE ATTRIBUTES_TO_PRESERVE REJECT_INVALID_FEATURES yes OUTPUT COERCED FEATURE_TYPE PointCloudCombiner_2___MergedVectorFeatures__ @SupplyAttributes(?,fme_basename,PointCloudCombiner_2) OUTPUT FEATURE_TYPE PointCloudCombiner_2_ +FACTORY_DEF {*} PointCloudCombinerFactory FACTORY_NAME PointCloudCombiner_2___Combiner INPUT FEATURE_TYPE PointCloudCombiner_2___MergedVectorFeatures__ FLUSH_WHEN_GROUPS_CHANGE No ACCUMULATE_ATTRIBUTES yes REJECT_INVALID_FEATURES yes OUTPUT MERGED FEATURE_TYPE PointCloudCombiner_2_OUTPUT OUTPUT FEATURE_TYPE PointCloudCombiner_2_ +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudCombiner_2_ INPUT FEATURE_TYPE PointCloudCombiner_2_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudCombiner_2outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) +# ------------------------------------------------------------------------- +DEFAULT_MACRO PointCloudExpressionEvaluator_2_COMPONENT_LIST +DEFAULT_MACRO PointCloudExpressionEvaluator_2_COMPONENT_TYPE_LIST +DEFAULT_MACRO PointCloudExpressionEvaluator_2_EXPRESSION_LIST +INCLUDE [ foreach {component componenttype expression} [split {classification Auto 3}] { lappend lists(COMPONENT) $component; lappend lists(COMPONENT_TYPE) $componenttype; if [regexp {@EvaluateExpression\(STRING_ENCODED,(.*),.+\)} $expression -> unwrapped] { lappend lists(EXPRESSION) $unwrapped; } elseif [regexp {@EvaluateExpression\(FDIV,STRING_ENCODED,(.*),.+\)} $expression -> unwrapped] { lappend lists(EXPRESSION) $unwrapped; } else { lappend lists(EXPRESSION) $expression; }; }; foreach {listName} [array names lists] { puts "MACRO PointCloudExpressionEvaluator_2_${listName}_LIST \"[join $lists($listName) {;}]\""; }; ] +FACTORY_DEF * PointCloudEvaluationFactory FACTORY_NAME PointCloudExpressionEvaluator_2 INPUT FEATURE_TYPE PointCloudCombiner_2_OUTPUT MODE SET_COMPONENT_VALUES COMPONENT_LIST $(PointCloudExpressionEvaluator_2_COMPONENT_LIST) COMPONENT_TYPE_LIST $(PointCloudExpressionEvaluator_2_COMPONENT_TYPE_LIST) EXPRESSION_LIST $(PointCloudExpressionEvaluator_2_EXPRESSION_LIST) FORCE_FLOAT_DIVISION yes REJECT_INVALID_FEATURES YES OUTPUT RESULT FEATURE_TYPE PointCloudExpressionEvaluator_2_RESULT OUTPUT FEATURE_TYPE PointCloudExpressionEvaluator_2_ +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudExpressionEvaluator_2_ INPUT FEATURE_TYPE PointCloudExpressionEvaluator_2_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudExpressionEvaluator_2outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) +# ------------------------------------------------------------------------- +FACTORY_DEF {*} VectorToPointCloudFactory FACTORY_NAME PointCloudCombiner___VectorMerger INPUT FEATURE_TYPE PointCloudExpressionEvaluator_2_RESULT INPUT FEATURE_TYPE PointCloudExpressionEvaluator_3_RESULT INPUT FEATURE_TYPE PointCloudFilter_ INPUT FEATURE_TYPE PointCloudFilter_4_5 FLUSH_WHEN_GROUPS_CHANGE No ACCUMULATE_ATTRIBUTES yes EXTRACT_RASTER_NODATA no SPACING "1.0" MEASURES_TO_PRESERVE ATTRIBUTES_TO_PRESERVE REJECT_INVALID_FEATURES yes OUTPUT COERCED FEATURE_TYPE PointCloudCombiner___MergedVectorFeatures__ @SupplyAttributes(?,fme_basename,PointCloudCombiner) OUTPUT FEATURE_TYPE PointCloudCombiner_ +FACTORY_DEF {*} PointCloudCombinerFactory FACTORY_NAME PointCloudCombiner___Combiner INPUT FEATURE_TYPE PointCloudCombiner___MergedVectorFeatures__ FLUSH_WHEN_GROUPS_CHANGE No ACCUMULATE_ATTRIBUTES yes REJECT_INVALID_FEATURES yes OUTPUT MERGED FEATURE_TYPE PointCloudCombiner_OUTPUT OUTPUT FEATURE_TYPE PointCloudCombiner_ +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudCombiner_ INPUT FEATURE_TYPE PointCloudCombiner_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudCombineroutputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) +# ------------------------------------------------------------------------- + +FACTORY_DEF * RoutingFactory FACTORY_NAME "Destination Feature Type Routing Correlator" COMMAND_PARM_EVALUATION SINGLE_PASS INPUT FEATURE_TYPE * ROUTE FME_GENERIC PointCloudCombiner_OUTPUT TO LAS __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODEDfme_template_feature_typeLAS01,EvaluateExpressionATTR_CREATE_EXPR__wb_out_feat_type__atValueopenparenfme_basenamecloseparen_CLEANLAS01 COORDINATE_SYSTEM CH1903Plus_1.LV95/01 GEOMETRY FEATURE_TYPE_ATTRIBUTE __wb_out_feat_type__ OUTPUT ROUTED FEATURE_TYPE * OUTPUT NOT_ROUTED FEATURE_TYPE __nuke_me__ @Tcl2("FME_StatMessage 818059 [FME_GetAttribute fme_template_feature_type] 818060 818061 fme_warn") +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME "Final Output Nuker" INPUT FEATURE_TYPE __nuke_me__ + +# ------------------------------------------------------------------------- +LAS_2_DEF LAS01 diff --git a/PROJ-TREEDET/resources/LAS_Preprocess_2021_cleaning_alternative.fmw b/PROJ-TREEDET/resources/LAS_Preprocess_2021_cleaning_alternative.fmw index 5fd0bf8..f2602f8 100644 --- a/PROJ-TREEDET/resources/LAS_Preprocess_2021_cleaning_alternative.fmw +++ b/PROJ-TREEDET/resources/LAS_Preprocess_2021_cleaning_alternative.fmw @@ -1,2654 +1,2654 @@ -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! -#! - -FME_PYTHON_VERSION 37 -GUI IGNORE SourceDataset_LAS_1,LAS_IN_USE_SEARCH_ENVELOPE_LAS_1,LAS_IN_SEARCH_ENVELOPE_MINX_LAS_1,LAS_IN_SEARCH_ENVELOPE_MINY_LAS_1,LAS_IN_SEARCH_ENVELOPE_MAXX_LAS_1,LAS_IN_SEARCH_ENVELOPE_MAXY_LAS_1,LAS_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_LAS_1,LAS_IN_CLIP_TO_ENVELOPE_LAS_1,LAS_IN_NETWORK_AUTHENTICATION_LAS_1,SourceDataset_GEOTIFF_1,GEOTIFF_IN_APPLY_GCPS_GEOTIFF_1,GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_1,GEOTIFF_IN_USE_SEARCH_ENVELOPE_GEOTIFF_1,GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_1,GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_1,GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_1,GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_1,GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_1,GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_1,GEOTIFF_IN_GEOTIFF_RDR_ADV_PARM_GROUP_GEOTIFF_1,GEOTIFF_IN_PYRAMID_LEVEL_GEOTIFF_1,GEOTIFF_IN_PREFER_FILE_CS_UNITS_GEOTIFF_1,GEOTIFF_IN_READ_OFFSETS_IN_CS_UNITS_GEOTIFF_1,GEOTIFF_IN_IGNORE_RASTER_TYPE_KEY_GEOTIFF_1,GEOTIFF_IN_NETWORK_AUTHENTICATION_GEOTIFF_1,DestDataset_LAS_2,LAS_OUT_FME_GROUP_NAMED1_LAS_2,LAS_OUT_VERSION_LAS_2,LAS_OUT_COMPRESSION_LAS_2,LAS_OUT_USER_GROUP_LAS_2,LAS_OUT_USER_COMPONENTS_LAS_2,LAS_OUT_ADVANCED_PARAMETERS_LAS_2,LAS_OUT_LAS_DATASET_FILE_LAS_2,LAS_OUT_ARCGIS_LAS_DATASET_LAS_2,LAS_OUT_COMPUTE_STATISTICS_ON_ARCGIS_LAS_DATASET_LAS_2,LAS_OUT_ZLAS_PARAMETERS_LAS_2,LAS_OUT_ZLAS_REARRANGE_POINTS_LAS_2,LAS_OUT_ZLAS_POINT_SPACING_SOURCE_LAS_2,LAS_OUT_ZLAS_POINT_SPACING_VALUE_LAS_2 -DEFAULT_MACRO SourceDataset_LAS G:\STDL\LIDAR_2021\LIDAR_new_selection\LAS_GT_sectors\LAS_GT_sectors\TEST_cleaning\Test_cleaning_1\GT_Bel_Air_Buf20.las -GUI MULTIFILE SourceDataset_LAS LAS_Files(*.las;*.laz;*.zlas;*.lasd)|*.las;*.laz;*.zlas;*.lasd|LAS_Files(*.las)|*.las|Compressed_LAS_Files(*.laz)|*.laz|Esri_Optimized_LAS_Files(*.zlas)|*.zlas|Esri_LAS_Dataset_Files(*.lasd)|*.lasd|Compressed_Files(*.bz2;*.gz)|*.bz2;*.gz|Archive_Files(*.7z;*.7zip;*.rar;*.rvz;*.tar;*.tar.bz2;*.tar.gz;*.tgz;*.zip;*.zipx)|*.7z;*.7zip;*.rar;*.rvz;*.tar;*.tar.bz2;*.tar.gz;*.tgz;*.zip;*.zipx|All_files(*)|* Source ASPRS LAS File(s): -DEFAULT_MACRO SourceDataset_GEOTIFF G:\STDL\LIDAR_2021\LIDAR_new_selection\GT_zones\Murs_THOCHB_Buff05_rast.tif -GUI MULTIFILE SourceDataset_GEOTIFF GeoTIFF_Files(*.tif;*.tiff;*.itiff;*.ovr)|*.tif;*.tiff;*.itiff;*.ovr|Compressed_Files(*.bz2;*.gz)|*.bz2;*.gz|Archive_Files(*.7z;*.7zip;*.rar;*.rvz;*.tar;*.tar.bz2;*.tar.gz;*.tgz;*.zip;*.zipx)|*.7z;*.7zip;*.rar;*.rvz;*.tar;*.tar.bz2;*.tar.gz;*.tgz;*.zip;*.zipx|All_Files(*)|* Source GeoTIFF File(s): -DEFAULT_MACRO DestDataset_LAS G:\STDL\LIDAR_2021\LIDAR_new_selection\LAS_GT_sectors\LAS_GT_sectors\TEST_cleaning\Test_cleaning_1 -GUI DIRNAME DestDataset_LAS Destination ASPRS LAS Folder: -INCLUDE [ if {{$(SourceDataset_LAS)} == {}} { puts_real {Parameter 'SourceDataset_LAS' must be given a value.}; exit 1; }; ] -INCLUDE [ if {{$(SourceDataset_GEOTIFF)} == {}} { puts_real {Parameter 'SourceDataset_GEOTIFF' must be given a value.}; exit 1; }; ] -INCLUDE [ if {{$(DestDataset_LAS)} == {}} { puts_real {Parameter 'DestDataset_LAS' must be given a value.}; exit 1; }; ] -#! START_HEADER -#! START_WB_HEADER -READER_TYPE MULTI_READER -MULTI_READER_TYPE{0} LAS -MULTI_READER_KEYWORD{0} LAS_1 -MULTI_READER_GEN_DIRECTIVES{0} USE_SEARCH_ENVELOPE,NO,CLIP_TO_ENVELOPE,NO,READER_META_ATTRIBUTES,fme_dataset,GROUP_BY_DATASET,No,_MERGE_SCHEMAS,YES,SEARCH_ENVELOPE_MAXX,0,SEARCH_ENVELOPE_MAXY,0,EXPOSE_ATTRS_GROUP,,SEARCH_ENVELOPE_COORDINATE_SYSTEM,,SEARCH_ENVELOPE_MINY,0,LAS_EXPOSE_FORMAT_ATTRS,,SEARCH_ENVELOPE_MINX,0 -MULTI_READER_TYPE{1} GEOTIFF -MULTI_READER_KEYWORD{1} GEOTIFF_1 -MULTI_READER_GEN_DIRECTIVES{1} APPLY_GCPS,NO,SEARCH_ENVELOPE_COORDINATE_SYSTEM,,SEARCH_ENVELOPE_MAXY,0,USE_SEARCH_ENVELOPE,NO,GCP_INTERPOLATION_METHOD,NearestNeighbor,GEOTIFF_EXPOSE_FORMAT_ATTRS,,SEARCH_ENVELOPE_MINX,0,SEARCH_ENVELOPE_MAXX,0,IGNORE_RASTER_TYPE_KEY,No,FEATURE_TYPE_NAME,FORMAT_NAME,EXPOSE_ATTRS_GROUP,,SEARCH_ENVELOPE_MINY,0,_MERGE_SCHEMAS,YES,PYRAMID_LEVEL,,GEOTIFF_RDR_ADV_PARM_GROUP,,PREFER_FILE_CS_UNITS,Yes,READ_OFFSETS_IN_CS_UNITS,No,READER_META_ATTRIBUTES,fme_datasetfme_basename,CLIP_TO_ENVELOPE,NO -WRITER_TYPE MULTI_WRITER -MULTI_WRITER_DATASET_ORDER BY_ID -MULTI_WRITER_FIRST_WRITER_ID 0 -MULTI_WRITER_TYPE{0} LAS -MULTI_WRITER_KEYWORD{0} LAS_2 -#! END_WB_HEADER -#! START_WB_HEADER -MACRO WB_KEYWORD "LAS_1" -#! END_WB_HEADER -#! START_SOURCE_HEADER LAS LAS_1 -# ======================================================================= -# The following GUI line prompts for a file to be used as the source LAS file. -# The user input is stored in a macro, which is then used to define -# the dataset to be read. -# The dataset this mapping file was generated from was: -#! END_SOURCE_HEADER -#! START_WB_HEADER -DEFAULT_MACRO SourceDataset -INCLUDE [ if {{$(SourceDataset)} != ""} { \ - puts {DEFAULT_MACRO SourceDataset_LAS_1 $(SourceDataset)} \ - } ] -#! END_WB_HEADER -#! START_SOURCE_HEADER LAS LAS_1 -DEFAULT_MACRO SourceDataset_LAS_1 $(SourceDataset_LAS) -GUI MULTIFILE SourceDataset_LAS_1 LAS_Files(*.las;*.laz;*.zlas;*.lasd)|*.las;*.laz;*.zlas;*.lasd|LAS_Files(*.las)|*.las|Compressed_LAS_Files(*.laz)|*.laz|Esri_Optimized_LAS_Files(*.zlas)|*.zlas|Esri_LAS_Dataset_Files(*.lasd)|*.lasd|All_files(*)|* Source ASPRS LAS File(s): -DEFAULT_MACRO LAS_IN_READER_META_ATTRIBUTES_LAS_1 fme_dataset -LAS_1_READER_META_ATTRIBUTES "$(LAS_IN_READER_META_ATTRIBUTES_LAS_1)" -DEFAULT_MACRO LAS_IN_GROUP_BY_DATASET_LAS_1 No -LAS_1_GROUP_BY_DATASET "$(LAS_IN_GROUP_BY_DATASET_LAS_1)" -DEFAULT_MACRO LAS_IN_EXPOSE_ATTRS_GROUP_LAS_1 -LAS_1_EXPOSE_ATTRS_GROUP "$(LAS_IN_EXPOSE_ATTRS_GROUP_LAS_1)" -# Include this file in source setting section to add external search envelope processing -# Zero as a default means we don't do any search -- this makes workbench happier -DEFAULT_MACRO LAS_IN_USE_SEARCH_ENVELOPE_LAS_1 NO -LAS_1_USE_SEARCH_ENVELOPE "$(LAS_IN_USE_SEARCH_ENVELOPE_LAS_1)" -GUI ACTIVEDISCLOSUREGROUP LAS_IN_USE_SEARCH_ENVELOPE_LAS_1 LAS_IN_SEARCH_ENVELOPE_MINX_LAS_1%LAS_IN_SEARCH_ENVELOPE_MINY_LAS_1%LAS_IN_SEARCH_ENVELOPE_MAXX_LAS_1%LAS_IN_SEARCH_ENVELOPE_MAXY_LAS_1%LAS_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_LAS_1%LAS_IN_CLIP_TO_ENVELOPE_LAS_1%LAS_IN_SEARCH_METHOD%LAS_IN_SEARCH_METHOD_FILTER%LAS_IN_SEARCH_ORDER%LAS_IN_SEARCH_FEATURE%LAS_IN_DUMMY_SEARCH_ENVELOPE_PARAMETER Use Search Envelope -# =========================================================================== -GUI LOOKUP LAS_IN_SEARCH_ENVELOPE_MINX_LAS_1 ,0 -DEFAULT_MACRO LAS_IN_SEARCH_ENVELOPE_MINX_LAS_1 0 -LAS_1_SEARCH_ENVELOPE "$(LAS_IN_SEARCH_ENVELOPE_MINX_LAS_1)" -GUI OPTIONAL FLOAT LAS_IN_SEARCH_ENVELOPE_MINX_LAS_1 Minimum X: -# =========================================================================== -GUI LOOKUP LAS_IN_SEARCH_ENVELOPE_MINY_LAS_1 ,0 -DEFAULT_MACRO LAS_IN_SEARCH_ENVELOPE_MINY_LAS_1 0 -LAS_1_SEARCH_ENVELOPE "$(LAS_IN_SEARCH_ENVELOPE_MINY_LAS_1)" -GUI OPTIONAL FLOAT LAS_IN_SEARCH_ENVELOPE_MINY_LAS_1 Minimum Y: -# =========================================================================== -GUI LOOKUP LAS_IN_SEARCH_ENVELOPE_MAXX_LAS_1 ,0 -DEFAULT_MACRO LAS_IN_SEARCH_ENVELOPE_MAXX_LAS_1 0 -LAS_1_SEARCH_ENVELOPE "$(LAS_IN_SEARCH_ENVELOPE_MAXX_LAS_1)" -GUI OPTIONAL FLOAT LAS_IN_SEARCH_ENVELOPE_MAXX_LAS_1 Maximum X: -# =========================================================================== -GUI LOOKUP LAS_IN_SEARCH_ENVELOPE_MAXY_LAS_1 ,0 -DEFAULT_MACRO LAS_IN_SEARCH_ENVELOPE_MAXY_LAS_1 0 -LAS_1_SEARCH_ENVELOPE "$(LAS_IN_SEARCH_ENVELOPE_MAXY_LAS_1)" -GUI OPTIONAL FLOAT LAS_IN_SEARCH_ENVELOPE_MAXY_LAS_1 Maximum Y: -# =========================================================================== -GUI LOOKUP LAS_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_LAS_1 , -DEFAULT_MACRO LAS_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_LAS_1 -LAS_1_SEARCH_ENVELOPE "$(LAS_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_LAS_1)" -GUI OPTIONAL COORDSYS LAS_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_LAS_1 Search Envelope Coordinate System: -# =========================================================================== -# BUG18999: We now have a soft clip to fall back on like native spatial index -# thus we are reintroducing the clip to envelop as an option for users. -# Defualt to soft clip as per the existing database readers we are emulating -GUI LOOKUP LAS_IN_CLIP_TO_ENVELOPE_LAS_1 ,NO -DEFAULT_MACRO LAS_IN_CLIP_TO_ENVELOPE_LAS_1 NO -LAS_1_CLIP_TO_ENVELOPE "$(LAS_IN_CLIP_TO_ENVELOPE_LAS_1)" -GUI OPTIONAL CHECKBOX LAS_IN_CLIP_TO_ENVELOPE_LAS_1 YES%NO Clip to Search Envelope -# =========================================================================== -DEFAULT_MACRO LAS_IN_NETWORK_AUTHENTICATION_LAS_1 -LAS_1_NETWORK_AUTHENTICATION "$(LAS_IN_NETWORK_AUTHENTICATION_LAS_1)" -GUI OPTIONAL AUTHENTICATOR LAS_IN_NETWORK_AUTHENTICATION_LAS_1 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication -# ============================================================================ -DEFAULT_MACRO LAS_IN_ATTRIBUTE_READING_LAS_1 ALL -LAS_1_ATTRIBUTE_READING "$(LAS_IN_ATTRIBUTE_READING_LAS_1)" -# ============================================================================ -LAS_1_GENERATE_FME_BUILD_NUM 20596 -LAS_1_DATASET "$(SourceDataset_LAS_1)" -#! END_SOURCE_HEADER -#! START_WB_HEADER -MACRO WB_KEYWORD "GEOTIFF_1" -#! END_WB_HEADER -#! START_SOURCE_HEADER GEOTIFF GEOTIFF_1 -# ======================================================================= -# The following GUI line prompts for a file to be used as the source GEOTIFF file. -# The user input is stored in a macro, which is then used to define -# the dataset to be read. -# The dataset this mapping file was generated from was: -#! END_SOURCE_HEADER -#! START_WB_HEADER -DEFAULT_MACRO SourceDataset -INCLUDE [ if {{$(SourceDataset)} != ""} { \ - puts {DEFAULT_MACRO SourceDataset_GEOTIFF_1 $(SourceDataset)} \ - } ] -#! END_WB_HEADER -#! START_SOURCE_HEADER GEOTIFF GEOTIFF_1 -DEFAULT_MACRO SourceDataset_GEOTIFF_1 $(SourceDataset_GEOTIFF) -GUI MULTIFILE SourceDataset_GEOTIFF_1 GeoTIFF_Files(*.tif;*.tiff;*.itiff;*.ovr)|*.tif;*.tiff;*.itiff;*.ovr|All_Files(*)|* Source GeoTIFF File(s): -DEFAULT_MACRO GEOTIFF_IN_READER_META_ATTRIBUTES_GEOTIFF_1 fme_dataset fme_basename -GEOTIFF_1_READER_META_ATTRIBUTES "$(GEOTIFF_IN_READER_META_ATTRIBUTES_GEOTIFF_1)" -DEFAULT_MACRO GEOTIFF_IN_FEATURE_TYPE_NAME_GEOTIFF_1 FORMAT_NAME -GEOTIFF_1_FEATURE_TYPE_NAME "$(GEOTIFF_IN_FEATURE_TYPE_NAME_GEOTIFF_1)" -DEFAULT_MACRO GEOTIFF_IN_APPLY_GCPS_GEOTIFF_1 NO -GEOTIFF_1_APPLY_GCPS "$(GEOTIFF_IN_APPLY_GCPS_GEOTIFF_1)" -GUI ACTIVEDISCLOSUREGROUP GEOTIFF_IN_APPLY_GCPS_GEOTIFF_1 GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_1 Apply GCP's -DEFAULT_MACRO GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_1 NearestNeighbor -GEOTIFF_1_GCP_INTERPOLATION_METHOD "$(GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_1)" -GUI LOOKUP_CHOICE GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_1 NearestNeighbor,NearestNeighbor%Bilinear,Bilinear%Bicubic,Bicubic GCP Interpolation Method -GUI LOOKUP GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_1 ,NearestNeighbor -DEFAULT_MACRO GEOTIFF_IN_EXPOSE_ATTRS_GROUP_GEOTIFF_1 -GEOTIFF_1_EXPOSE_ATTRS_GROUP "$(GEOTIFF_IN_EXPOSE_ATTRS_GROUP_GEOTIFF_1)" -# Include this file in source setting section to add external search envelope processing -# Zero as a default means we don't do any search -- this makes workbench happier -DEFAULT_MACRO GEOTIFF_IN_USE_SEARCH_ENVELOPE_GEOTIFF_1 NO -GEOTIFF_1_USE_SEARCH_ENVELOPE "$(GEOTIFF_IN_USE_SEARCH_ENVELOPE_GEOTIFF_1)" -GUI ACTIVEDISCLOSUREGROUP GEOTIFF_IN_USE_SEARCH_ENVELOPE_GEOTIFF_1 GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_1%GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_1%GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_1%GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_1%GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_1%GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_1%GEOTIFF_IN_SEARCH_METHOD%GEOTIFF_IN_SEARCH_METHOD_FILTER%GEOTIFF_IN_SEARCH_ORDER%GEOTIFF_IN_SEARCH_FEATURE%GEOTIFF_IN_DUMMY_SEARCH_ENVELOPE_PARAMETER Use Search Envelope -# =========================================================================== -GUI LOOKUP GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_1 ,0 -DEFAULT_MACRO GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_1 0 -GEOTIFF_1_SEARCH_ENVELOPE "$(GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_1)" -GUI OPTIONAL FLOAT GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_1 Minimum X: -# =========================================================================== -GUI LOOKUP GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_1 ,0 -DEFAULT_MACRO GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_1 0 -GEOTIFF_1_SEARCH_ENVELOPE "$(GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_1)" -GUI OPTIONAL FLOAT GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_1 Minimum Y: -# =========================================================================== -GUI LOOKUP GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_1 ,0 -DEFAULT_MACRO GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_1 0 -GEOTIFF_1_SEARCH_ENVELOPE "$(GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_1)" -GUI OPTIONAL FLOAT GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_1 Maximum X: -# =========================================================================== -GUI LOOKUP GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_1 ,0 -DEFAULT_MACRO GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_1 0 -GEOTIFF_1_SEARCH_ENVELOPE "$(GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_1)" -GUI OPTIONAL FLOAT GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_1 Maximum Y: -# =========================================================================== -GUI LOOKUP GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_1 , -DEFAULT_MACRO GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_1 -GEOTIFF_1_SEARCH_ENVELOPE "$(GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_1)" -GUI OPTIONAL COORDSYS GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_1 Search Envelope Coordinate System: -# =========================================================================== -# BUG18999: We now have a soft clip to fall back on like native spatial index -# thus we are reintroducing the clip to envelop as an option for users. -# Defualt to soft clip as per the existing database readers we are emulating -GUI LOOKUP GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_1 ,NO -DEFAULT_MACRO GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_1 NO -GEOTIFF_1_CLIP_TO_ENVELOPE "$(GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_1)" -GUI OPTIONAL CHECKBOX GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_1 YES%NO Clip to Search Envelope -DEFAULT_MACRO GEOTIFF_IN_GEOTIFF_RDR_ADV_PARM_GROUP_GEOTIFF_1 -GUI OPTIONAL DISCLOSUREGROUP GEOTIFF_IN_GEOTIFF_RDR_ADV_PARM_GROUP_GEOTIFF_1 GEOTIFF_IN_PYRAMID_LEVEL_GEOTIFF_1%GEOTIFF_IN_PREFER_FILE_CS_UNITS_GEOTIFF_1%GEOTIFF_IN_READ_OFFSETS_IN_CS_UNITS_GEOTIFF_1%GEOTIFF_IN_IGNORE_RASTER_TYPE_KEY_GEOTIFF_1 Advanced -DEFAULT_MACRO GEOTIFF_IN_PYRAMID_LEVEL_GEOTIFF_1 -GEOTIFF_1_PYRAMID_LEVEL "$(GEOTIFF_IN_PYRAMID_LEVEL_GEOTIFF_1)" -GUI OPTIONAL INTEGER GEOTIFF_IN_PYRAMID_LEVEL_GEOTIFF_1 Pyramid Level to Read: -DEFAULT_MACRO GEOTIFF_IN_PREFER_FILE_CS_UNITS_GEOTIFF_1 Yes -GEOTIFF_1_PREFER_FILE_CS_UNITS "$(GEOTIFF_IN_PREFER_FILE_CS_UNITS_GEOTIFF_1)" -GUI CHOICE GEOTIFF_IN_PREFER_FILE_CS_UNITS_GEOTIFF_1 Yes%No Prefer File Coordinate System Units: -DEFAULT_MACRO GEOTIFF_IN_READ_OFFSETS_IN_CS_UNITS_GEOTIFF_1 No -GEOTIFF_1_READ_OFFSETS_IN_CS_UNITS "$(GEOTIFF_IN_READ_OFFSETS_IN_CS_UNITS_GEOTIFF_1)" -GUI CHOICE GEOTIFF_IN_READ_OFFSETS_IN_CS_UNITS_GEOTIFF_1 Yes%No Offsets in Coordinate System Units: -DEFAULT_MACRO GEOTIFF_IN_IGNORE_RASTER_TYPE_KEY_GEOTIFF_1 No -GEOTIFF_1_IGNORE_RASTER_TYPE_KEY "$(GEOTIFF_IN_IGNORE_RASTER_TYPE_KEY_GEOTIFF_1)" -GUI CHOICE GEOTIFF_IN_IGNORE_RASTER_TYPE_KEY_GEOTIFF_1 Yes%No Ignore Raster Type Key: -# =========================================================================== -DEFAULT_MACRO GEOTIFF_IN_NETWORK_AUTHENTICATION_GEOTIFF_1 -GEOTIFF_1_NETWORK_AUTHENTICATION "$(GEOTIFF_IN_NETWORK_AUTHENTICATION_GEOTIFF_1)" -GUI OPTIONAL AUTHENTICATOR GEOTIFF_IN_NETWORK_AUTHENTICATION_GEOTIFF_1 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication -# ============================================================================ -DEFAULT_MACRO GEOTIFF_IN_ATTRIBUTE_READING_GEOTIFF_1 ALL -GEOTIFF_1_ATTRIBUTE_READING "$(GEOTIFF_IN_ATTRIBUTE_READING_GEOTIFF_1)" -# ============================================================================ -GEOTIFF_1_GENERATE_FME_BUILD_NUM 20596 -GEOTIFF_1_DATASET "$(SourceDataset_GEOTIFF_1)" -#! END_SOURCE_HEADER -#! START_WB_HEADER -MACRO WB_KEYWORD "LAS_2" -#! END_WB_HEADER -#! START_DEST_HEADER LAS LAS_2 -# The following GUI lines prompt for a LAS file to be used as the -# the destination of the data. -# The user input is stored in a macro, which is then used to define -# the dataset to be written. -#! END_DEST_HEADER -#! START_WB_HEADER -DEFAULT_MACRO DestDataset -INCLUDE [ if {"$(DestDataset)" != ""} { \ - puts {DEFAULT_MACRO DestDataset_LAS_2 $(DestDataset)} \ - } ] -#! END_WB_HEADER -#! START_DEST_HEADER LAS LAS_2 -DEFAULT_MACRO DestDataset_LAS_2 $(DestDataset_LAS) -GUI DIRNAME DestDataset_LAS_2 Destination ASPRS LAS Folder: -DEFAULT_MACRO LAS_OUT_FME_GROUP_NAMED1_LAS_2 -GUI OPTIONAL DISCLOSUREGROUP LAS_OUT_FME_GROUP_NAMED1_LAS_2 LAS_OUT_VERSION_LAS_2%LAS_OUT_COMPRESSION_LAS_2 Parameters -# ============================================================================ -# Version -DEFAULT_MACRO LAS_OUT_VERSION_LAS_2 1.2 -LAS_2_VERSION "$(LAS_OUT_VERSION_LAS_2)" -GUI LOOKUP_CHOICE LAS_OUT_VERSION_LAS_2 1.0,1.0%1.1,1.1%1.2,1.2%1.3,1.3%"\"1.4 (Legacy Compatible)\",1.4-legacy-compatible"%1.4,1.4 ASPRS LAS Version: -# [PR#30472] Compression -DEFAULT_MACRO LAS_OUT_COMPRESSION_LAS_2 None -LAS_2_COMPRESSION "$(LAS_OUT_COMPRESSION_LAS_2)" -GUI ACTIVECHOICE LAS_OUT_COMPRESSION_LAS_2 None,LAS_OUT_ZLAS_PARAMETERS_LAS_2%LAZ,LAS_OUT_ZLAS_PARAMETERS_LAS_2%zLAS Compression -# This is a placeholder parameter that will be replaced with a custom table in the controller -DEFAULT_MACRO LAS_OUT_USER_GROUP_LAS_2 -GUI OPTIONAL DISCLOSUREGROUP LAS_OUT_USER_GROUP_LAS_2 LAS_OUT_USER_COMPONENTS_LAS_2 Additional User Components -DEFAULT_MACRO LAS_OUT_USER_COMPONENTS_LAS_2 -LAS_2_USER_COMPONENTS "$(LAS_OUT_USER_COMPONENTS_LAS_2)" -GUI OPTIONAL GUI_LINE_TABLE_ENCODED LAS_OUT_USER_COMPONENTS_LAS_2 NO_LABEL%ROW_DELIM:,%COL_DELIM:,%"User Components"%"STRING COMPONENTS" User Components -# ============================================================================ -# Opt in for destination dataset type vs format type validation -DEFAULT_MACRO LAS_OUT_DESTINATION_DATASETTYPE_VALIDATION_LAS_2 Yes -LAS_2_DESTINATION_DATASETTYPE_VALIDATION "$(LAS_OUT_DESTINATION_DATASETTYPE_VALIDATION_LAS_2)" -DEFAULT_MACRO LAS_OUT_COORDINATE_SYSTEM_GRANULARITY_LAS_2 FEATURE -LAS_2_COORDINATE_SYSTEM_GRANULARITY "$(LAS_OUT_COORDINATE_SYSTEM_GRANULARITY_LAS_2)" -DEFAULT_MACRO LAS_OUT_ADVANCED_PARAMETERS_LAS_2 -GUI OPTIONAL DISCLOSUREGROUP LAS_OUT_ADVANCED_PARAMETERS_LAS_2 LAS_OUT_LAS_DATASET_FILE_LAS_2%LAS_OUT_ZLAS_PARAMETERS_LAS_2 Advanced -DEFAULT_MACRO LAS_OUT_LAS_DATASET_FILE_LAS_2 -GUI OPTIONAL DISCLOSUREGROUP LAS_OUT_LAS_DATASET_FILE_LAS_2 LAS_OUT_ARCGIS_LAS_DATASET_LAS_2%LAS_OUT_COMPUTE_STATISTICS_ON_ARCGIS_LAS_DATASET_LAS_2 LAS Dataset File -# The following GUI line provides the ability to create an -# Esri ArcGIS LAS Dataset encapsulating the LAS files produced -# by this translation. The LAS Dataset can then be used to view -# the output using Esri's tools. -DEFAULT_MACRO LAS_OUT_ARCGIS_LAS_DATASET_LAS_2 -LAS_2_ARCGIS_LAS_DATASET "$(LAS_OUT_ARCGIS_LAS_DATASET_LAS_2)" -GUI OPTIONAL TEXT LAS_OUT_ARCGIS_LAS_DATASET_LAS_2 ArcGIS LAS Dataset (.lasd) Filename -# The following GUI line determines whether statistics should -# be calculated on the ArcGIS LAS Dataset. This keyword is -# applicable when FME is creating an ArcGIS LAS Dataset. -DEFAULT_MACRO LAS_OUT_COMPUTE_STATISTICS_ON_ARCGIS_LAS_DATASET_LAS_2 No -LAS_2_COMPUTE_STATISTICS_ON_ARCGIS_LAS_DATASET "$(LAS_OUT_COMPUTE_STATISTICS_ON_ARCGIS_LAS_DATASET_LAS_2)" -GUI CHOICE LAS_OUT_COMPUTE_STATISTICS_ON_ARCGIS_LAS_DATASET_LAS_2 Yes%No Compute Statistics on ArcGIS LAS Dataset -DEFAULT_MACRO LAS_OUT_ZLAS_PARAMETERS_LAS_2 -GUI OPTIONAL DISCLOSUREGROUP LAS_OUT_ZLAS_PARAMETERS_LAS_2 LAS_OUT_ZLAS_REARRANGE_POINTS_LAS_2%LAS_OUT_ZLAS_POINT_SPACING_SOURCE_LAS_2%LAS_OUT_ZLAS_POINT_SPACING_VALUE_LAS_2 zLAS Parameters -DEFAULT_MACRO LAS_OUT_ZLAS_REARRANGE_POINTS_LAS_2 -LAS_2_ZLAS_REARRANGE_POINTS "$(LAS_OUT_ZLAS_REARRANGE_POINTS_LAS_2)" -GUI CHOICE LAS_OUT_ZLAS_REARRANGE_POINTS_LAS_2 Yes%No Rearrange Points for zLAS Compression -DEFAULT_MACRO LAS_OUT_ZLAS_POINT_SPACING_SOURCE_LAS_2 -LAS_2_ZLAS_POINT_SPACING_SOURCE "$(LAS_OUT_ZLAS_POINT_SPACING_SOURCE_LAS_2)" -GUI LOOKUP_CHOICE LAS_OUT_ZLAS_POINT_SPACING_SOURCE_LAS_2 "\"Scan Points\",scan"%"\"From Header\",header"%"\"Specify Value\",specify" zLAS Point Spacing Source -DEFAULT_MACRO LAS_OUT_ZLAS_POINT_SPACING_VALUE_LAS_2 -LAS_2_ZLAS_POINT_SPACING_VALUE "$(LAS_OUT_ZLAS_POINT_SPACING_VALUE_LAS_2)" -GUI FLOAT LAS_OUT_ZLAS_POINT_SPACING_VALUE_LAS_2 zLAS Point Spacing Value -# ============================================================================ -LAS_2_GENERATE_FME_BUILD_NUM 20596 -LAS_2_DATASET "$(DestDataset_LAS_2)" -#! END_DEST_HEADER -#! START_WB_HEADER -#! END_WB_HEADER -#! END_HEADER - -LOG_FILTER_MASK -1 -LOG_MAX_FEATURES 200 -LOG_MAX_RECORDED_FEATURES 200 -FME_REPROJECTION_ENGINE FME -FME_IMPLICIT_CSMAP_REPROJECTION_MODE Auto -FME_GEOMETRY_HANDLING Enhanced -FME_STROKE_MAX_DEVIATION 0 -DEFAULT_MACRO DATASET_KEYWORD_LAS_1 LAS_1 -DEFAULT_MACRO DATASET_KEYWORD_GEOTIFF_1 GEOTIFF_1 -DEFAULT_MACRO DATASET_KEYWORD_LAS_2 LAS_2 -# ------------------------------------------------------------------------- - -LAS_1_READER_META_ATTRIBUTES fme_feature_type fme_basename - -# ------------------------------------------------------------------------- - -GEOTIFF_1_READER_META_ATTRIBUTES fme_feature_type fme_basename - -# ------------------------------------------------------------------------- - -MULTI_READER_CONTINUE_ON_READER_FAILURE No - -# ------------------------------------------------------------------------- - -MACRO WORKSPACE_NAME LAS_Pretraitement_2021_cleaning_MNHC -MACRO FME_VIEWER_APP fmedatainspector -# ------------------------------------------------------------------------- - -INCLUDE [ if {[info exists env(FME_TEMP)] && [file isdirectory $env(FME_TEMP)]} {set gVisualizerTemp $env(FME_TEMP)} elseif {[info exists env(TEMP)] && [file isdirectory $env(TEMP)]} {set gVisualizerTemp $env(TEMP)} elseif { $tcl_platform(platform) == "unix" } {set gVisualizerTemp "/tmp"} else {set gVisualizerTemp c:}; regsub -all {[ ,&]} {$(WORKSPACE_NAME)} {_} wsname; set gVisualizerTemp $gVisualizerTemp/${wsname}_[clock format [clock seconds] -format %H%M%S]; puts "MACRO WORKSPACE_TEMP_DIR $gVisualizerTemp"; -MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/inspector.ffs -MACRO VISUALIZER_SCHEMA_FILE $(WORKSPACE_TEMP_DIR)/inspector.fsc -MACRO VISUALIZER_CREATE_SPATIAL_INDEX YES -# ------------------------------------------------------------------------- -LAS_1_DEF LAS -# ------------------------------------------------------------------------- -GEOTIFF_1_DEF GEOTIFF -# ------------------------------------------------------------------------- - -FACTORY_DEF * RoutingFactory FACTORY_NAME "Router and Unexpected Input Remover" COMMAND_PARM_EVALUATION SINGLE_PASS INPUT FEATURE_TYPE * ROUTE LAS LAS_1::LAS multi_reader_keyword,$(DATASET_KEYWORD_LAS_1) TO FME_GENERIC ::LAS ALIAS_GEOMETRY ROUTE GEOTIFF GEOTIFF_1::GEOTIFF multi_reader_keyword,$(DATASET_KEYWORD_GEOTIFF_1) TO FME_GENERIC ::GEOTIFF ALIAS_GEOMETRY MERGE_INPUT Yes OUTPUT ROUTED FEATURE_TYPE * -LAS_1_MERGE_DEF LAS_1::LAS EXACT LAS -GEOTIFF_1_MERGE_DEF GEOTIFF_1::GEOTIFF EXACT GEOTIFF -# ------------------------------------------------------------------------- - -FACTORY_DEF * TeeFactory FACTORY_NAME "LAS_LAS_1 Splitter" INPUT FEATURE_TYPE LAS OUTPUT FEATURE_TYPE LAS_LAS_1 -# ------------------------------------------------------------------------- - -FACTORY_DEF * TeeFactory FACTORY_NAME "GEOTIFF_GEOTIFF_1 Splitter" INPUT FEATURE_TYPE GEOTIFF OUTPUT FEATURE_TYPE GEOTIFF_GEOTIFF_1 -DEFAULT_MACRO WB_CURRENT_CONTEXT -# ------------------------------------------------------------------------- -FACTORY_DEF * PointCloudEvaluationFactory FACTORY_NAME PointCloudFilter INPUT FEATURE_TYPE LAS_LAS_1 MODE FILTER REJECT_INVALID_FEATURES YES FORCE_FLOAT_DIVISION yes EXPRESSION_LIST Componentclassification==2||Componentclassification==9 ; Componentclassification==4||Componentclassification==5 FILTER_ATTRIBUTE __pc_internal_filter_attribute__ FILTER_ATTRIBUTE_VALUES_LIST Ground2+Water9 ; Vgtationmoyenne4+haute5 OUTPUT_UNFILTERED_POINTS "Yes" OUTPUT RESULT FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_0 OUTPUT FEATURE_TYPE PointCloudFilter_ -FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_TestFactory_0 INPUT FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_0 STRING_TEST @Value(__pc_internal_filter_attribute__) = Ground2+Water9 OUTPUT PASSED FEATURE_TYPE PointCloudFilter_Ground2+Water9 @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_1 -FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_TestFactory_1 INPUT FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_1 STRING_TEST @Value(__pc_internal_filter_attribute__) = Vgtationmoyenne4+haute5 OUTPUT PASSED FEATURE_TYPE PointCloudFilter_Vgtationmoyenne4+haute5 @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_2 -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_UNFILTERED INPUT FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_2 OUTPUT FEATURE_TYPE PointCloudFilter_ @RemoveAttributes(__pc_internal_filter_attribute__) -FACTORY_DEF * TeeFactory FACTORY_NAME "PointCloudFilter Ground2+Water9 Splitter" INPUT FEATURE_TYPE PointCloudFilter_Ground2+Water9 OUTPUT FEATURE_TYPE PointCloudFilter_Ground2+Water9_0_iQyPhi3mnFo= OUTPUT FEATURE_TYPE PointCloudFilter_Ground2+Water9_1_WXAwGkpiE4A= -DEFAULT_MACRO _WB_BYPASS_TERMINATION No -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_ INPUT FEATURE_TYPE PointCloudFilter_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudFilteroutputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) -# ------------------------------------------------------------------------- -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudComponentAdder INPUT FEATURE_TYPE PointCloudFilter_Vgtationmoyenne4+haute5 OUTPUT FEATURE_TYPE ___TOREJECTOR___ @RenameAttributes(FME_STRICT,___fme_rejection_code___,fme_rejection_code) @AddPointCloudComponents(REJECTABLE,z_ground,Real64,0,z_max,Real64,0,mur,Real64,0) -FACTORY_DEF * TestFactory FACTORY_NAME PointCloudComponentAdder_Rejector INPUT FEATURE_TYPE ___TOREJECTOR___ TEST @Value(fme_rejection_code) != "" OUTPUT PASSED FEATURE_TYPE PointCloudComponentAdder_ @RemoveAttributes(___fme_rejection_code___) OUTPUT FAILED FEATURE_TYPE PointCloudComponentAdder_OUTPUT @RenameAttributes(FME_STRICT,fme_rejection_code,___fme_rejection_code___) -DEFAULT_MACRO _WB_BYPASS_TERMINATION No -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudComponentAdder_ INPUT FEATURE_TYPE PointCloudComponentAdder_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudComponentAdderoutputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) -# ------------------------------------------------------------------------- -FACTORY_DEF {*} SurfaceModelFactory FACTORY_NAME RasterDEMGenerator FLUSH_WHEN_GROUPS_CHANGE No INPUT POINTS FEATURE_TYPE PointCloudFilter_Ground2+Water9_0_iQyPhi3mnFo= TOLERANCE 0.1 SAMPLE_SPACING 0.4 0.4 INTERPOLATION_TYPE AUTO NODATA_VALUE -32767.0 REJECT_INVALID_GEOM YES OUTPUT DEM_RASTER FEATURE_TYPE RasterDEMGenerator_DEM_RASTER @SupplyAttributes(?,fme_basename,RasterDEMGenerator) OUTPUT REJECTED FEATURE_TYPE RasterDEMGenerator_ -DEFAULT_MACRO _WB_BYPASS_TERMINATION No -FACTORY_DEF * TeeFactory FACTORY_NAME RasterDEMGenerator_ INPUT FEATURE_TYPE RasterDEMGenerator_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, RasterDEMGeneratoroutputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) -# ------------------------------------------------------------------------- -INCLUDE [ if {[string equal {CUSTOM} {COLOR}]} { puts {MACRO PointCloudOnRasterComponentSetter_2_COMPONENT_LIST color_red,color_green,color_blue}; puts {MACRO PointCloudOnRasterComponentSetter_2_DEFAULT_VALUE_LIST}; } else { foreach {band component default} [split {0|z_ground|0} |] { lappend componentList "$component"; lappend defaultList "$default"; }; puts "MACRO PointCloudOnRasterComponentSetter_2_COMPONENT_LIST \"[join $componentList ,]\""; puts "MACRO PointCloudOnRasterComponentSetter_2_DEFAULT_VALUE_LIST \"[join $defaultList ,]\""; }; ] -FACTORY_DEF {*} RasterToPointCloudComponentFactory FACTORY_NAME PointCloudOnRasterComponentSetter_2 INPUT FEATURE_TYPE PointCloudComponentAdder_OUTPUT INPUT FEATURE_TYPE RasterDEMGenerator_DEM_RASTER FLUSH_WHEN_GROUPS_CHANGE No COMPONENT_LIST $(PointCloudOnRasterComponentSetter_2_COMPONENT_LIST) DEFAULT_VALUE $(PointCloudOnRasterComponentSetter_2_DEFAULT_VALUE_LIST) INTERPOLATION_TYPE_NAME NearestNeighbor EXTRACT_NODATA No DEFAULT_VALUES_OVERWRITE_DATA No REJECT_INVALID_FEATURES YES OUTPUT POINTCLOUD FEATURE_TYPE PointCloudOnRasterComponentSetter_2_PointCloud OUTPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_2_ -FACTORY_DEF * TeeFactory FACTORY_NAME "PointCloudOnRasterComponentSetter_2 PointCloud Splitter" INPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_2_PointCloud OUTPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_2_PointCloud_0_Cp3PFkJGvQM= OUTPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_2_PointCloud_1_pOvQ2H97RY4= -DEFAULT_MACRO _WB_BYPASS_TERMINATION No -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudOnRasterComponentSetter_2_ INPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_2_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudOnRasterComponentSetter_2outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) -# ------------------------------------------------------------------------- -INCLUDE [ if {[string equal {CUSTOM} {COLOR}]} { puts {MACRO PointCloudOnRasterComponentSetter_COMPONENT_LIST color_red,color_green,color_blue}; puts {MACRO PointCloudOnRasterComponentSetter_DEFAULT_VALUE_LIST}; } else { foreach {band component default} [split {0|mur|$(SourceDataset_GEOTIFF)} |] { lappend componentList "$component"; lappend defaultList "$default"; }; puts "MACRO PointCloudOnRasterComponentSetter_COMPONENT_LIST \"[join $componentList ,]\""; puts "MACRO PointCloudOnRasterComponentSetter_DEFAULT_VALUE_LIST \"[join $defaultList ,]\""; }; ] -FACTORY_DEF {*} RasterToPointCloudComponentFactory FACTORY_NAME PointCloudOnRasterComponentSetter INPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_2_PointCloud_1_pOvQ2H97RY4= INPUT FEATURE_TYPE GEOTIFF_GEOTIFF_1 FLUSH_WHEN_GROUPS_CHANGE No COMPONENT_LIST $(PointCloudOnRasterComponentSetter_COMPONENT_LIST) DEFAULT_VALUE $(PointCloudOnRasterComponentSetter_DEFAULT_VALUE_LIST) INTERPOLATION_TYPE_NAME NearestNeighbor EXTRACT_NODATA No DEFAULT_VALUES_OVERWRITE_DATA No REJECT_INVALID_FEATURES YES OUTPUT POINTCLOUD FEATURE_TYPE PointCloudOnRasterComponentSetter_PointCloud OUTPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_ -DEFAULT_MACRO _WB_BYPASS_TERMINATION No -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudOnRasterComponentSetter_ INPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudOnRasterComponentSetteroutputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) -# ------------------------------------------------------------------------- -FACTORY_DEF * PointCloudEvaluationFactory FACTORY_NAME PointCloudFilter_4 INPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_PointCloud MODE FILTER REJECT_INVALID_FEATURES YES FORCE_FLOAT_DIVISION yes EXPRESSION_LIST Componentclassification==4 ; Componentclassification==5 FILTER_ATTRIBUTE __pc_internal_filter_attribute__ FILTER_ATTRIBUTE_VALUES_LIST 4 ; 5 OUTPUT_UNFILTERED_POINTS "Yes" OUTPUT RESULT FEATURE_TYPE PointCloudFilter_4_POINTCLOUDFILTERINPUTLINE_0 OUTPUT FEATURE_TYPE PointCloudFilter_4_ -FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_4_TestFactory_0 INPUT FEATURE_TYPE PointCloudFilter_4_POINTCLOUDFILTERINPUTLINE_0 STRING_TEST @Value(__pc_internal_filter_attribute__) = 4 OUTPUT PASSED FEATURE_TYPE PointCloudFilter_4_4 @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_4_POINTCLOUDFILTERINPUTLINE_1 -FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_4_TestFactory_1 INPUT FEATURE_TYPE PointCloudFilter_4_POINTCLOUDFILTERINPUTLINE_1 STRING_TEST @Value(__pc_internal_filter_attribute__) = 5 OUTPUT PASSED FEATURE_TYPE PointCloudFilter_4_5 @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_4_POINTCLOUDFILTERINPUTLINE_2 -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_4_UNFILTERED INPUT FEATURE_TYPE PointCloudFilter_4_POINTCLOUDFILTERINPUTLINE_2 OUTPUT FEATURE_TYPE PointCloudFilter_4_ @RemoveAttributes(__pc_internal_filter_attribute__) -FACTORY_DEF * TeeFactory FACTORY_NAME "PointCloudFilter_4 Transformer Output Nuker" INPUT FEATURE_TYPE PointCloudFilter_4_ -DEFAULT_MACRO _WB_BYPASS_TERMINATION No -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_4_ INPUT FEATURE_TYPE PointCloudFilter_4_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudFilter_4outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) -# ------------------------------------------------------------------------- -DEFAULT_MACRO PointCloudExpressionEvaluator_COMPONENT_LIST -DEFAULT_MACRO PointCloudExpressionEvaluator_COMPONENT_TYPE_LIST -DEFAULT_MACRO PointCloudExpressionEvaluator_EXPRESSION_LIST -INCLUDE [ foreach {component componenttype expression} [split {z Real32 @EvaluateExpression(FDIV,STRING_ENCODED,Componentz-Componentz_ground,PointCloudExpressionEvaluator)}] { lappend lists(COMPONENT) $component; lappend lists(COMPONENT_TYPE) $componenttype; if [regexp {@EvaluateExpression\(STRING_ENCODED,(.*),.+\)} $expression -> unwrapped] { lappend lists(EXPRESSION) $unwrapped; } elseif [regexp {@EvaluateExpression\(FDIV,STRING_ENCODED,(.*),.+\)} $expression -> unwrapped] { lappend lists(EXPRESSION) $unwrapped; } else { lappend lists(EXPRESSION) $expression; }; }; foreach {listName} [array names lists] { puts "MACRO PointCloudExpressionEvaluator_${listName}_LIST \"[join $lists($listName) {;}]\""; }; ] -FACTORY_DEF * PointCloudEvaluationFactory FACTORY_NAME PointCloudExpressionEvaluator INPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_2_PointCloud_0_Cp3PFkJGvQM= MODE SET_COMPONENT_VALUES COMPONENT_LIST $(PointCloudExpressionEvaluator_COMPONENT_LIST) COMPONENT_TYPE_LIST $(PointCloudExpressionEvaluator_COMPONENT_TYPE_LIST) EXPRESSION_LIST $(PointCloudExpressionEvaluator_EXPRESSION_LIST) FORCE_FLOAT_DIVISION yes REJECT_INVALID_FEATURES YES OUTPUT RESULT FEATURE_TYPE PointCloudExpressionEvaluator_RESULT OUTPUT FEATURE_TYPE PointCloudExpressionEvaluator_ -DEFAULT_MACRO _WB_BYPASS_TERMINATION No -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudExpressionEvaluator_ INPUT FEATURE_TYPE PointCloudExpressionEvaluator_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudExpressionEvaluatoroutputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) -# ------------------------------------------------------------------------- -FACTORY_DEF * PointCloudEvaluationFactory FACTORY_NAME PointCloudFilter_3 INPUT FEATURE_TYPE PointCloudExpressionEvaluator_RESULT MODE FILTER REJECT_INVALID_FEATURES YES FORCE_FLOAT_DIVISION yes EXPRESSION_LIST Componentz0 ; Componentz50 FILTER_ATTRIBUTE __pc_internal_filter_attribute__ FILTER_ATTRIBUTE_VALUES_LIST Negativepoints ; Aberrantheightpointshigherthan50m OUTPUT_UNFILTERED_POINTS "Yes" OUTPUT RESULT FEATURE_TYPE PointCloudFilter_3_POINTCLOUDFILTERINPUTLINE_0 OUTPUT FEATURE_TYPE PointCloudFilter_3_ -FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_3_TestFactory_0 INPUT FEATURE_TYPE PointCloudFilter_3_POINTCLOUDFILTERINPUTLINE_0 STRING_TEST @Value(__pc_internal_filter_attribute__) = Negativepoints OUTPUT PASSED FEATURE_TYPE PointCloudFilter_3_Negativepoints @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_3_POINTCLOUDFILTERINPUTLINE_1 -FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_3_TestFactory_1 INPUT FEATURE_TYPE PointCloudFilter_3_POINTCLOUDFILTERINPUTLINE_1 STRING_TEST @Value(__pc_internal_filter_attribute__) = Aberrantheightpointshigherthan50m OUTPUT PASSED FEATURE_TYPE PointCloudFilter_3_Aberrantheightpointshigherthan50m @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_3_POINTCLOUDFILTERINPUTLINE_2 -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_3_UNFILTERED INPUT FEATURE_TYPE PointCloudFilter_3_POINTCLOUDFILTERINPUTLINE_2 OUTPUT FEATURE_TYPE PointCloudFilter_3_ @RemoveAttributes(__pc_internal_filter_attribute__) -FACTORY_DEF * TeeFactory FACTORY_NAME "PointCloudFilter_3 Negativepoints Transformer Output Nuker" INPUT FEATURE_TYPE PointCloudFilter_3_Negativepoints -FACTORY_DEF * TeeFactory FACTORY_NAME "PointCloudFilter_3 Aberrantheightpointshigherthan50m Transformer Output Nuker" INPUT FEATURE_TYPE PointCloudFilter_3_Aberrantheightpointshigherthan50m -DEFAULT_MACRO _WB_BYPASS_TERMINATION No -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_3_ INPUT FEATURE_TYPE PointCloudFilter_3_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudFilter_3outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) -# ------------------------------------------------------------------------- -FACTORY_DEF {*} SurfaceModelFactory FACTORY_NAME RasterDEMGenerator_2 FLUSH_WHEN_GROUPS_CHANGE No INPUT POINTS FEATURE_TYPE PointCloudFilter_3_ TOLERANCE 0.1 SAMPLE_SPACING 0.4 0.4 INTERPOLATION_TYPE AUTO NODATA_VALUE -32767.0 REJECT_INVALID_GEOM YES OUTPUT DEM_RASTER FEATURE_TYPE RasterDEMGenerator_2_DEM_RASTER @SupplyAttributes(?,fme_basename,RasterDEMGenerator_2) OUTPUT REJECTED FEATURE_TYPE RasterDEMGenerator_2_ -DEFAULT_MACRO _WB_BYPASS_TERMINATION No -FACTORY_DEF * TeeFactory FACTORY_NAME RasterDEMGenerator_2_ INPUT FEATURE_TYPE RasterDEMGenerator_2_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, RasterDEMGenerator_2outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) -# ------------------------------------------------------------------------- -INCLUDE [ if {[string equal {CUSTOM} {COLOR}]} { puts {MACRO PointCloudOnRasterComponentSetter_3_COMPONENT_LIST color_red,color_green,color_blue}; puts {MACRO PointCloudOnRasterComponentSetter_3_DEFAULT_VALUE_LIST}; } else { foreach {band component default} [split {0|z_max|0} |] { lappend componentList "$component"; lappend defaultList "$default"; }; puts "MACRO PointCloudOnRasterComponentSetter_3_COMPONENT_LIST \"[join $componentList ,]\""; puts "MACRO PointCloudOnRasterComponentSetter_3_DEFAULT_VALUE_LIST \"[join $defaultList ,]\""; }; ] -FACTORY_DEF {*} RasterToPointCloudComponentFactory FACTORY_NAME PointCloudOnRasterComponentSetter_3 INPUT FEATURE_TYPE PointCloudFilter_4_4 INPUT FEATURE_TYPE RasterDEMGenerator_2_DEM_RASTER FLUSH_WHEN_GROUPS_CHANGE No COMPONENT_LIST $(PointCloudOnRasterComponentSetter_3_COMPONENT_LIST) DEFAULT_VALUE $(PointCloudOnRasterComponentSetter_3_DEFAULT_VALUE_LIST) INTERPOLATION_TYPE_NAME NearestNeighbor EXTRACT_NODATA No DEFAULT_VALUES_OVERWRITE_DATA No REJECT_INVALID_FEATURES YES OUTPUT POINTCLOUD FEATURE_TYPE PointCloudOnRasterComponentSetter_3_PointCloud OUTPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_3_ -DEFAULT_MACRO _WB_BYPASS_TERMINATION No -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudOnRasterComponentSetter_3_ INPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_3_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudOnRasterComponentSetter_3outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) -# ------------------------------------------------------------------------- -FACTORY_DEF * PointCloudEvaluationFactory FACTORY_NAME PointCloudFilter_5 INPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_3_PointCloud MODE FILTER REJECT_INVALID_FEATURES YES FORCE_FLOAT_DIVISION yes EXPRESSION_LIST Componentz_max=3 FILTER_ATTRIBUTE __pc_internal_filter_attribute__ FILTER_ATTRIBUTE_VALUES_LIST 4out OUTPUT_UNFILTERED_POINTS "Yes" OUTPUT RESULT FEATURE_TYPE PointCloudFilter_5_POINTCLOUDFILTERINPUTLINE_0 OUTPUT FEATURE_TYPE PointCloudFilter_5_ -FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_5_TestFactory_0 INPUT FEATURE_TYPE PointCloudFilter_5_POINTCLOUDFILTERINPUTLINE_0 STRING_TEST @Value(__pc_internal_filter_attribute__) = 4out OUTPUT PASSED FEATURE_TYPE PointCloudFilter_5_4out @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_5_POINTCLOUDFILTERINPUTLINE_1 -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_5_UNFILTERED INPUT FEATURE_TYPE PointCloudFilter_5_POINTCLOUDFILTERINPUTLINE_1 OUTPUT FEATURE_TYPE PointCloudFilter_5_ @RemoveAttributes(__pc_internal_filter_attribute__) -FACTORY_DEF * TeeFactory FACTORY_NAME "PointCloudFilter_5 4out Splitter" INPUT FEATURE_TYPE PointCloudFilter_5_4out OUTPUT FEATURE_TYPE PointCloudFilter_5_4out_0_MZflbMncRTk= OUTPUT FEATURE_TYPE PointCloudFilter_5_4out_1_8onCNNziEwg= -DEFAULT_MACRO _WB_BYPASS_TERMINATION No -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_5_ INPUT FEATURE_TYPE PointCloudFilter_5_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudFilter_5outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) -# ------------------------------------------------------------------------- -FACTORY_DEF * PointCloudEvaluationFactory FACTORY_NAME PointCloudFilter_6 INPUT FEATURE_TYPE PointCloudFilter_5_ MODE FILTER REJECT_INVALID_FEATURES YES FORCE_FLOAT_DIVISION yes EXPRESSION_LIST Componentmur3 FILTER_ATTRIBUTE __pc_internal_filter_attribute__ FILTER_ATTRIBUTE_VALUES_LIST 4-mur OUTPUT_UNFILTERED_POINTS "Yes" OUTPUT RESULT FEATURE_TYPE PointCloudFilter_6_POINTCLOUDFILTERINPUTLINE_0 OUTPUT FEATURE_TYPE PointCloudFilter_6_ -FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_6_TestFactory_0 INPUT FEATURE_TYPE PointCloudFilter_6_POINTCLOUDFILTERINPUTLINE_0 STRING_TEST @Value(__pc_internal_filter_attribute__) = 4-mur OUTPUT PASSED FEATURE_TYPE PointCloudFilter_6_4-mur @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_6_POINTCLOUDFILTERINPUTLINE_1 -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_6_UNFILTERED INPUT FEATURE_TYPE PointCloudFilter_6_POINTCLOUDFILTERINPUTLINE_1 OUTPUT FEATURE_TYPE PointCloudFilter_6_ @RemoveAttributes(__pc_internal_filter_attribute__) -DEFAULT_MACRO _WB_BYPASS_TERMINATION No -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_6_ INPUT FEATURE_TYPE PointCloudFilter_6_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudFilter_6outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) -# ------------------------------------------------------------------------- -FACTORY_DEF {*} VectorToPointCloudFactory FACTORY_NAME PointCloudCombiner_2___VectorMerger INPUT FEATURE_TYPE PointCloudFilter_5_4out_1_8onCNNziEwg= INPUT FEATURE_TYPE PointCloudFilter_6_4-mur FLUSH_WHEN_GROUPS_CHANGE No ACCUMULATE_ATTRIBUTES yes EXTRACT_RASTER_NODATA no SPACING "1.0" MEASURES_TO_PRESERVE ATTRIBUTES_TO_PRESERVE REJECT_INVALID_FEATURES yes OUTPUT COERCED FEATURE_TYPE PointCloudCombiner_2___MergedVectorFeatures__ @SupplyAttributes(?,fme_basename,PointCloudCombiner_2) OUTPUT FEATURE_TYPE PointCloudCombiner_2_ -FACTORY_DEF {*} PointCloudCombinerFactory FACTORY_NAME PointCloudCombiner_2___Combiner INPUT FEATURE_TYPE PointCloudCombiner_2___MergedVectorFeatures__ FLUSH_WHEN_GROUPS_CHANGE No ACCUMULATE_ATTRIBUTES yes REJECT_INVALID_FEATURES yes OUTPUT MERGED FEATURE_TYPE PointCloudCombiner_2_OUTPUT OUTPUT FEATURE_TYPE PointCloudCombiner_2_ -DEFAULT_MACRO _WB_BYPASS_TERMINATION No -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudCombiner_2_ INPUT FEATURE_TYPE PointCloudCombiner_2_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudCombiner_2outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) -# ------------------------------------------------------------------------- -DEFAULT_MACRO PointCloudExpressionEvaluator_2_COMPONENT_LIST -DEFAULT_MACRO PointCloudExpressionEvaluator_2_COMPONENT_TYPE_LIST -DEFAULT_MACRO PointCloudExpressionEvaluator_2_EXPRESSION_LIST -INCLUDE [ foreach {component componenttype expression} [split {classification Auto 3}] { lappend lists(COMPONENT) $component; lappend lists(COMPONENT_TYPE) $componenttype; if [regexp {@EvaluateExpression\(STRING_ENCODED,(.*),.+\)} $expression -> unwrapped] { lappend lists(EXPRESSION) $unwrapped; } elseif [regexp {@EvaluateExpression\(FDIV,STRING_ENCODED,(.*),.+\)} $expression -> unwrapped] { lappend lists(EXPRESSION) $unwrapped; } else { lappend lists(EXPRESSION) $expression; }; }; foreach {listName} [array names lists] { puts "MACRO PointCloudExpressionEvaluator_2_${listName}_LIST \"[join $lists($listName) {;}]\""; }; ] -FACTORY_DEF * PointCloudEvaluationFactory FACTORY_NAME PointCloudExpressionEvaluator_2 INPUT FEATURE_TYPE PointCloudCombiner_2_OUTPUT MODE SET_COMPONENT_VALUES COMPONENT_LIST $(PointCloudExpressionEvaluator_2_COMPONENT_LIST) COMPONENT_TYPE_LIST $(PointCloudExpressionEvaluator_2_COMPONENT_TYPE_LIST) EXPRESSION_LIST $(PointCloudExpressionEvaluator_2_EXPRESSION_LIST) FORCE_FLOAT_DIVISION yes REJECT_INVALID_FEATURES YES OUTPUT RESULT FEATURE_TYPE PointCloudExpressionEvaluator_2_RESULT OUTPUT FEATURE_TYPE PointCloudExpressionEvaluator_2_ -DEFAULT_MACRO _WB_BYPASS_TERMINATION No -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudExpressionEvaluator_2_ INPUT FEATURE_TYPE PointCloudExpressionEvaluator_2_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudExpressionEvaluator_2outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) -# ------------------------------------------------------------------------- -FACTORY_DEF {*} VectorToPointCloudFactory FACTORY_NAME PointCloudCombiner___VectorMerger INPUT FEATURE_TYPE PointCloudFilter_Ground2+Water9_1_WXAwGkpiE4A= INPUT FEATURE_TYPE PointCloudExpressionEvaluator_2_RESULT INPUT FEATURE_TYPE PointCloudFilter_4_5 INPUT FEATURE_TYPE PointCloudFilter_6_ INPUT FEATURE_TYPE PointCloudFilter_ FLUSH_WHEN_GROUPS_CHANGE No ACCUMULATE_ATTRIBUTES yes EXTRACT_RASTER_NODATA no SPACING "1.0" MEASURES_TO_PRESERVE ATTRIBUTES_TO_PRESERVE REJECT_INVALID_FEATURES yes OUTPUT COERCED FEATURE_TYPE PointCloudCombiner___MergedVectorFeatures__ @SupplyAttributes(?,fme_basename,PointCloudCombiner) OUTPUT FEATURE_TYPE PointCloudCombiner_ -FACTORY_DEF {*} PointCloudCombinerFactory FACTORY_NAME PointCloudCombiner___Combiner INPUT FEATURE_TYPE PointCloudCombiner___MergedVectorFeatures__ FLUSH_WHEN_GROUPS_CHANGE No ACCUMULATE_ATTRIBUTES yes REJECT_INVALID_FEATURES yes OUTPUT MERGED FEATURE_TYPE PointCloudCombiner_OUTPUT OUTPUT FEATURE_TYPE PointCloudCombiner_ -DEFAULT_MACRO _WB_BYPASS_TERMINATION No -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudCombiner_ INPUT FEATURE_TYPE PointCloudCombiner_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudCombineroutputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) -# ------------------------------------------------------------------------- -FACTORY_DEF * PointCloudEvaluationFactory FACTORY_NAME PointCloudFilter_7 INPUT FEATURE_TYPE PointCloudFilter_5_4out_0_MZflbMncRTk= MODE FILTER REJECT_INVALID_FEATURES YES FORCE_FLOAT_DIVISION yes EXPRESSION_LIST Componentmur3 FILTER_ATTRIBUTE __pc_internal_filter_attribute__ FILTER_ATTRIBUTE_VALUES_LIST 4-mur OUTPUT_UNFILTERED_POINTS "Yes" OUTPUT RESULT FEATURE_TYPE PointCloudFilter_7_POINTCLOUDFILTERINPUTLINE_0 OUTPUT FEATURE_TYPE PointCloudFilter_7_ -FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_7_TestFactory_0 INPUT FEATURE_TYPE PointCloudFilter_7_POINTCLOUDFILTERINPUTLINE_0 STRING_TEST @Value(__pc_internal_filter_attribute__) = 4-mur OUTPUT PASSED FEATURE_TYPE PointCloudFilter_7_4-mur @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_7_POINTCLOUDFILTERINPUTLINE_1 -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_7_UNFILTERED INPUT FEATURE_TYPE PointCloudFilter_7_POINTCLOUDFILTERINPUTLINE_1 OUTPUT FEATURE_TYPE PointCloudFilter_7_ @RemoveAttributes(__pc_internal_filter_attribute__) -FACTORY_DEF * TeeFactory FACTORY_NAME "PointCloudFilter_7 Transformer Output Nuker" INPUT FEATURE_TYPE PointCloudFilter_7_ -DEFAULT_MACRO _WB_BYPASS_TERMINATION No -FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_7_ INPUT FEATURE_TYPE PointCloudFilter_7_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudFilter_7outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) -# ------------------------------------------------------------------------- -# Assumption is that the workspace temp dir has been already set and created. See controldefs.cpp - ControlDefs::writeVisualizerTempDir -DEFAULT_MACRO WORKSPACE_TEMP_DIR -INCLUDE [ set safeName "[regsub -all {[^a-zA-Z0-9]} {4-mur_2} _]_[expr round(rand() * 1000000)]_[clock clicks -milliseconds]"; puts "MACRO SAFE_FFS_NAME $safeName"; ] -FACTORY_DEF {*} InspectorFactory FACTORY_NAME 4-mur_2_Prepper COMMAND_PARM_EVALUATION SINGLE_PASS INPUT FEATURE_TYPE PointCloudFilter_7_4-mur GROUP_ATTRIBUTE __inspector_feature_type_attr__ GROUP_BY { } GROUP_ATTRIBUTE_PREFIX { 4-mur_2 } RASTER_REDUCTION NoReduction POINT_CLOUD_REDUCTION NO_THINNING OUTPUT RESULT FEATURE_TYPE __viewme__ -# Now route all the features into the recorder, changing their -# feature type to the transformer name so that they view nicely -DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/$(SAFE_FFS_NAME).ffs -DEFAULT_MACRO VISUALIZER_CREATE_SPATIAL_INDEX NO -# [PR#45549] The Data Inspector will limit the maximum number of features -# it reads on WIN32, so we will correspondingly limit the number of -# features we record here using the MAX_FEATURES_TO_RECORD directive. -FACTORY_DEF * RecorderFactory FACTORY_NAME 4-mur_2_Recorder COMMAND_PARM_EVALUATION SINGLE_PASS INPUT FEATURE_TYPE __viewme__ _wb_termination_feature Yes @FeatureType(TERMINATOR_@Value(_wb_termination_xformer)) INPUT FEATURE_TYPE __viewme__ @FeatureType(@Value(__inspector_feature_type_attr__)) @RemoveAttributes(__inspector_feature_type_attr__) FEATURE_FILE "$(VISUALIZER_FEATURE_FILE)" STORE_SCANNED_SCHEMA YES NORMALIZE_LIST_ATTRIBUTES_ON_SCHEMA YES CREATE_SPATIAL_INDEX "$(VISUALIZER_CREATE_SPATIAL_INDEX)" INSPECTOR "$(VISUALIZER_CREATE_SPATIAL_INDEX)" FSC_SCHEMA fme_basename,varchar50 MODE RECORD STORE_SCANNED_METADATA RECORD_DIRECTLY_TO_DISK YES MAX_FEATURES_TO_RECORD WIN32 2000000 -# ------------------------------------------------------------------------- - -FACTORY_DEF * RoutingFactory FACTORY_NAME "Destination Feature Type Routing Correlator" COMMAND_PARM_EVALUATION SINGLE_PASS INPUT FEATURE_TYPE * ROUTE FME_GENERIC PointCloudCombiner_OUTPUT TO LAS __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODEDfme_template_feature_typeLAS01,EvaluateExpressionATTR_CREATE_EXPR__wb_out_feat_type__atValueopenparenfme_basenamecloseparen_CLEANLAS01 GEOMETRY FEATURE_TYPE_ATTRIBUTE __wb_out_feat_type__ OUTPUT ROUTED FEATURE_TYPE * OUTPUT NOT_ROUTED FEATURE_TYPE __nuke_me__ @Tcl2("FME_StatMessage 818059 [FME_GetAttribute fme_template_feature_type] 818060 818061 fme_warn") -# ------------------------------------------------------------------------- - -FACTORY_DEF * TeeFactory FACTORY_NAME "Final Output Nuker" INPUT FEATURE_TYPE __nuke_me__ - -# ------------------------------------------------------------------------- - -DEFAULT_MACRO FME_LAUNCH_VIEWER_APP NO -FACTORY_DEF * CreationFactory FACTORY_NAME VisualizerProcessor CREATE_AT_END OUTPUT FEATURE_TYPE __NUKEME__ @TCL("if {{$(FME_LAUNCH_VIEWER_APP)} == {YES}} { if [file exists {$(WORKSPACE_TEMP_DIR)}] {set files [glob -nocomplain -directory {$(WORKSPACE_TEMP_DIR)} -tails *.ffs]; if {[llength $files] == 1} { set theFile {$(WORKSPACE_TEMP_DIR)/}; append theFile [lindex $files 0]; eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042 --visualizer --single-application --delete-on-close --no-source-prompt -f FFS \042$theFile\042 & \175; } elseif { [llength $files] == 0 } { catch { file delete -force {$(WORKSPACE_TEMP_DIR)} }; } else { set filesNoExt {}; set lastfile {}; foreach {fileName} [lsort $files] { set fileNoExt [string trimright $fileName {.ffs}]; if [regexp {(.*)_[0-9]*$} $fileNoExt wholething fileNoExtBase] { if { $fileNoExtBase == $lastfile } { continue } }; set lastfile $fileNoExt; lappend filesNoExt $fileNoExt }; eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042 --visualizer --single-application --delete-on-close --no-source-prompt -d {$(WORKSPACE_TEMP_DIR)} -a ffs -f FFS $filesNoExt & \175; }; }; }; ") -FACTORY_DEF * TeeFactory FACTORY_NAME VisualizerCleaner INPUT FEATURE_TYPE __NUKEME__ -# ------------------------------------------------------------------------- -LAS_2_DEF LAS01 +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! +#! + +FME_PYTHON_VERSION 37 +GUI IGNORE SourceDataset_LAS_1,LAS_IN_USE_SEARCH_ENVELOPE_LAS_1,LAS_IN_SEARCH_ENVELOPE_MINX_LAS_1,LAS_IN_SEARCH_ENVELOPE_MINY_LAS_1,LAS_IN_SEARCH_ENVELOPE_MAXX_LAS_1,LAS_IN_SEARCH_ENVELOPE_MAXY_LAS_1,LAS_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_LAS_1,LAS_IN_CLIP_TO_ENVELOPE_LAS_1,LAS_IN_NETWORK_AUTHENTICATION_LAS_1,SourceDataset_GEOTIFF_1,GEOTIFF_IN_APPLY_GCPS_GEOTIFF_1,GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_1,GEOTIFF_IN_USE_SEARCH_ENVELOPE_GEOTIFF_1,GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_1,GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_1,GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_1,GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_1,GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_1,GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_1,GEOTIFF_IN_GEOTIFF_RDR_ADV_PARM_GROUP_GEOTIFF_1,GEOTIFF_IN_PYRAMID_LEVEL_GEOTIFF_1,GEOTIFF_IN_PREFER_FILE_CS_UNITS_GEOTIFF_1,GEOTIFF_IN_READ_OFFSETS_IN_CS_UNITS_GEOTIFF_1,GEOTIFF_IN_IGNORE_RASTER_TYPE_KEY_GEOTIFF_1,GEOTIFF_IN_NETWORK_AUTHENTICATION_GEOTIFF_1,DestDataset_LAS_2,LAS_OUT_FME_GROUP_NAMED1_LAS_2,LAS_OUT_VERSION_LAS_2,LAS_OUT_COMPRESSION_LAS_2,LAS_OUT_USER_GROUP_LAS_2,LAS_OUT_USER_COMPONENTS_LAS_2,LAS_OUT_ADVANCED_PARAMETERS_LAS_2,LAS_OUT_LAS_DATASET_FILE_LAS_2,LAS_OUT_ARCGIS_LAS_DATASET_LAS_2,LAS_OUT_COMPUTE_STATISTICS_ON_ARCGIS_LAS_DATASET_LAS_2,LAS_OUT_ZLAS_PARAMETERS_LAS_2,LAS_OUT_ZLAS_REARRANGE_POINTS_LAS_2,LAS_OUT_ZLAS_POINT_SPACING_SOURCE_LAS_2,LAS_OUT_ZLAS_POINT_SPACING_VALUE_LAS_2 +DEFAULT_MACRO SourceDataset_LAS G:\STDL\LIDAR_2021\LIDAR_new_selection\LAS_GT_sectors\LAS_GT_sectors\TEST_cleaning\Test_cleaning_1\GT_Bel_Air_Buf20.las +GUI MULTIFILE SourceDataset_LAS LAS_Files(*.las;*.laz;*.zlas;*.lasd)|*.las;*.laz;*.zlas;*.lasd|LAS_Files(*.las)|*.las|Compressed_LAS_Files(*.laz)|*.laz|Esri_Optimized_LAS_Files(*.zlas)|*.zlas|Esri_LAS_Dataset_Files(*.lasd)|*.lasd|Compressed_Files(*.bz2;*.gz)|*.bz2;*.gz|Archive_Files(*.7z;*.7zip;*.rar;*.rvz;*.tar;*.tar.bz2;*.tar.gz;*.tgz;*.zip;*.zipx)|*.7z;*.7zip;*.rar;*.rvz;*.tar;*.tar.bz2;*.tar.gz;*.tgz;*.zip;*.zipx|All_files(*)|* Source ASPRS LAS File(s): +DEFAULT_MACRO SourceDataset_GEOTIFF G:\STDL\LIDAR_2021\LIDAR_new_selection\GT_zones\Murs_THOCHB_Buff05_rast.tif +GUI MULTIFILE SourceDataset_GEOTIFF GeoTIFF_Files(*.tif;*.tiff;*.itiff;*.ovr)|*.tif;*.tiff;*.itiff;*.ovr|Compressed_Files(*.bz2;*.gz)|*.bz2;*.gz|Archive_Files(*.7z;*.7zip;*.rar;*.rvz;*.tar;*.tar.bz2;*.tar.gz;*.tgz;*.zip;*.zipx)|*.7z;*.7zip;*.rar;*.rvz;*.tar;*.tar.bz2;*.tar.gz;*.tgz;*.zip;*.zipx|All_Files(*)|* Source GeoTIFF File(s): +DEFAULT_MACRO DestDataset_LAS G:\STDL\LIDAR_2021\LIDAR_new_selection\LAS_GT_sectors\LAS_GT_sectors\TEST_cleaning\Test_cleaning_1 +GUI DIRNAME DestDataset_LAS Destination ASPRS LAS Folder: +INCLUDE [ if {{$(SourceDataset_LAS)} == {}} { puts_real {Parameter 'SourceDataset_LAS' must be given a value.}; exit 1; }; ] +INCLUDE [ if {{$(SourceDataset_GEOTIFF)} == {}} { puts_real {Parameter 'SourceDataset_GEOTIFF' must be given a value.}; exit 1; }; ] +INCLUDE [ if {{$(DestDataset_LAS)} == {}} { puts_real {Parameter 'DestDataset_LAS' must be given a value.}; exit 1; }; ] +#! START_HEADER +#! START_WB_HEADER +READER_TYPE MULTI_READER +MULTI_READER_TYPE{0} LAS +MULTI_READER_KEYWORD{0} LAS_1 +MULTI_READER_GEN_DIRECTIVES{0} USE_SEARCH_ENVELOPE,NO,CLIP_TO_ENVELOPE,NO,READER_META_ATTRIBUTES,fme_dataset,GROUP_BY_DATASET,No,_MERGE_SCHEMAS,YES,SEARCH_ENVELOPE_MAXX,0,SEARCH_ENVELOPE_MAXY,0,EXPOSE_ATTRS_GROUP,,SEARCH_ENVELOPE_COORDINATE_SYSTEM,,SEARCH_ENVELOPE_MINY,0,LAS_EXPOSE_FORMAT_ATTRS,,SEARCH_ENVELOPE_MINX,0 +MULTI_READER_TYPE{1} GEOTIFF +MULTI_READER_KEYWORD{1} GEOTIFF_1 +MULTI_READER_GEN_DIRECTIVES{1} APPLY_GCPS,NO,SEARCH_ENVELOPE_COORDINATE_SYSTEM,,SEARCH_ENVELOPE_MAXY,0,USE_SEARCH_ENVELOPE,NO,GCP_INTERPOLATION_METHOD,NearestNeighbor,GEOTIFF_EXPOSE_FORMAT_ATTRS,,SEARCH_ENVELOPE_MINX,0,SEARCH_ENVELOPE_MAXX,0,IGNORE_RASTER_TYPE_KEY,No,FEATURE_TYPE_NAME,FORMAT_NAME,EXPOSE_ATTRS_GROUP,,SEARCH_ENVELOPE_MINY,0,_MERGE_SCHEMAS,YES,PYRAMID_LEVEL,,GEOTIFF_RDR_ADV_PARM_GROUP,,PREFER_FILE_CS_UNITS,Yes,READ_OFFSETS_IN_CS_UNITS,No,READER_META_ATTRIBUTES,fme_datasetfme_basename,CLIP_TO_ENVELOPE,NO +WRITER_TYPE MULTI_WRITER +MULTI_WRITER_DATASET_ORDER BY_ID +MULTI_WRITER_FIRST_WRITER_ID 0 +MULTI_WRITER_TYPE{0} LAS +MULTI_WRITER_KEYWORD{0} LAS_2 +#! END_WB_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "LAS_1" +#! END_WB_HEADER +#! START_SOURCE_HEADER LAS LAS_1 +# ======================================================================= +# The following GUI line prompts for a file to be used as the source LAS file. +# The user input is stored in a macro, which is then used to define +# the dataset to be read. +# The dataset this mapping file was generated from was: +#! END_SOURCE_HEADER +#! START_WB_HEADER +DEFAULT_MACRO SourceDataset +INCLUDE [ if {{$(SourceDataset)} != ""} { \ + puts {DEFAULT_MACRO SourceDataset_LAS_1 $(SourceDataset)} \ + } ] +#! END_WB_HEADER +#! START_SOURCE_HEADER LAS LAS_1 +DEFAULT_MACRO SourceDataset_LAS_1 $(SourceDataset_LAS) +GUI MULTIFILE SourceDataset_LAS_1 LAS_Files(*.las;*.laz;*.zlas;*.lasd)|*.las;*.laz;*.zlas;*.lasd|LAS_Files(*.las)|*.las|Compressed_LAS_Files(*.laz)|*.laz|Esri_Optimized_LAS_Files(*.zlas)|*.zlas|Esri_LAS_Dataset_Files(*.lasd)|*.lasd|All_files(*)|* Source ASPRS LAS File(s): +DEFAULT_MACRO LAS_IN_READER_META_ATTRIBUTES_LAS_1 fme_dataset +LAS_1_READER_META_ATTRIBUTES "$(LAS_IN_READER_META_ATTRIBUTES_LAS_1)" +DEFAULT_MACRO LAS_IN_GROUP_BY_DATASET_LAS_1 No +LAS_1_GROUP_BY_DATASET "$(LAS_IN_GROUP_BY_DATASET_LAS_1)" +DEFAULT_MACRO LAS_IN_EXPOSE_ATTRS_GROUP_LAS_1 +LAS_1_EXPOSE_ATTRS_GROUP "$(LAS_IN_EXPOSE_ATTRS_GROUP_LAS_1)" +# Include this file in source setting section to add external search envelope processing +# Zero as a default means we don't do any search -- this makes workbench happier +DEFAULT_MACRO LAS_IN_USE_SEARCH_ENVELOPE_LAS_1 NO +LAS_1_USE_SEARCH_ENVELOPE "$(LAS_IN_USE_SEARCH_ENVELOPE_LAS_1)" +GUI ACTIVEDISCLOSUREGROUP LAS_IN_USE_SEARCH_ENVELOPE_LAS_1 LAS_IN_SEARCH_ENVELOPE_MINX_LAS_1%LAS_IN_SEARCH_ENVELOPE_MINY_LAS_1%LAS_IN_SEARCH_ENVELOPE_MAXX_LAS_1%LAS_IN_SEARCH_ENVELOPE_MAXY_LAS_1%LAS_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_LAS_1%LAS_IN_CLIP_TO_ENVELOPE_LAS_1%LAS_IN_SEARCH_METHOD%LAS_IN_SEARCH_METHOD_FILTER%LAS_IN_SEARCH_ORDER%LAS_IN_SEARCH_FEATURE%LAS_IN_DUMMY_SEARCH_ENVELOPE_PARAMETER Use Search Envelope +# =========================================================================== +GUI LOOKUP LAS_IN_SEARCH_ENVELOPE_MINX_LAS_1 ,0 +DEFAULT_MACRO LAS_IN_SEARCH_ENVELOPE_MINX_LAS_1 0 +LAS_1_SEARCH_ENVELOPE "$(LAS_IN_SEARCH_ENVELOPE_MINX_LAS_1)" +GUI OPTIONAL FLOAT LAS_IN_SEARCH_ENVELOPE_MINX_LAS_1 Minimum X: +# =========================================================================== +GUI LOOKUP LAS_IN_SEARCH_ENVELOPE_MINY_LAS_1 ,0 +DEFAULT_MACRO LAS_IN_SEARCH_ENVELOPE_MINY_LAS_1 0 +LAS_1_SEARCH_ENVELOPE "$(LAS_IN_SEARCH_ENVELOPE_MINY_LAS_1)" +GUI OPTIONAL FLOAT LAS_IN_SEARCH_ENVELOPE_MINY_LAS_1 Minimum Y: +# =========================================================================== +GUI LOOKUP LAS_IN_SEARCH_ENVELOPE_MAXX_LAS_1 ,0 +DEFAULT_MACRO LAS_IN_SEARCH_ENVELOPE_MAXX_LAS_1 0 +LAS_1_SEARCH_ENVELOPE "$(LAS_IN_SEARCH_ENVELOPE_MAXX_LAS_1)" +GUI OPTIONAL FLOAT LAS_IN_SEARCH_ENVELOPE_MAXX_LAS_1 Maximum X: +# =========================================================================== +GUI LOOKUP LAS_IN_SEARCH_ENVELOPE_MAXY_LAS_1 ,0 +DEFAULT_MACRO LAS_IN_SEARCH_ENVELOPE_MAXY_LAS_1 0 +LAS_1_SEARCH_ENVELOPE "$(LAS_IN_SEARCH_ENVELOPE_MAXY_LAS_1)" +GUI OPTIONAL FLOAT LAS_IN_SEARCH_ENVELOPE_MAXY_LAS_1 Maximum Y: +# =========================================================================== +GUI LOOKUP LAS_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_LAS_1 , +DEFAULT_MACRO LAS_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_LAS_1 +LAS_1_SEARCH_ENVELOPE "$(LAS_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_LAS_1)" +GUI OPTIONAL COORDSYS LAS_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_LAS_1 Search Envelope Coordinate System: +# =========================================================================== +# BUG18999: We now have a soft clip to fall back on like native spatial index +# thus we are reintroducing the clip to envelop as an option for users. +# Defualt to soft clip as per the existing database readers we are emulating +GUI LOOKUP LAS_IN_CLIP_TO_ENVELOPE_LAS_1 ,NO +DEFAULT_MACRO LAS_IN_CLIP_TO_ENVELOPE_LAS_1 NO +LAS_1_CLIP_TO_ENVELOPE "$(LAS_IN_CLIP_TO_ENVELOPE_LAS_1)" +GUI OPTIONAL CHECKBOX LAS_IN_CLIP_TO_ENVELOPE_LAS_1 YES%NO Clip to Search Envelope +# =========================================================================== +DEFAULT_MACRO LAS_IN_NETWORK_AUTHENTICATION_LAS_1 +LAS_1_NETWORK_AUTHENTICATION "$(LAS_IN_NETWORK_AUTHENTICATION_LAS_1)" +GUI OPTIONAL AUTHENTICATOR LAS_IN_NETWORK_AUTHENTICATION_LAS_1 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication +# ============================================================================ +DEFAULT_MACRO LAS_IN_ATTRIBUTE_READING_LAS_1 ALL +LAS_1_ATTRIBUTE_READING "$(LAS_IN_ATTRIBUTE_READING_LAS_1)" +# ============================================================================ +LAS_1_GENERATE_FME_BUILD_NUM 20596 +LAS_1_DATASET "$(SourceDataset_LAS_1)" +#! END_SOURCE_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "GEOTIFF_1" +#! END_WB_HEADER +#! START_SOURCE_HEADER GEOTIFF GEOTIFF_1 +# ======================================================================= +# The following GUI line prompts for a file to be used as the source GEOTIFF file. +# The user input is stored in a macro, which is then used to define +# the dataset to be read. +# The dataset this mapping file was generated from was: +#! END_SOURCE_HEADER +#! START_WB_HEADER +DEFAULT_MACRO SourceDataset +INCLUDE [ if {{$(SourceDataset)} != ""} { \ + puts {DEFAULT_MACRO SourceDataset_GEOTIFF_1 $(SourceDataset)} \ + } ] +#! END_WB_HEADER +#! START_SOURCE_HEADER GEOTIFF GEOTIFF_1 +DEFAULT_MACRO SourceDataset_GEOTIFF_1 $(SourceDataset_GEOTIFF) +GUI MULTIFILE SourceDataset_GEOTIFF_1 GeoTIFF_Files(*.tif;*.tiff;*.itiff;*.ovr)|*.tif;*.tiff;*.itiff;*.ovr|All_Files(*)|* Source GeoTIFF File(s): +DEFAULT_MACRO GEOTIFF_IN_READER_META_ATTRIBUTES_GEOTIFF_1 fme_dataset fme_basename +GEOTIFF_1_READER_META_ATTRIBUTES "$(GEOTIFF_IN_READER_META_ATTRIBUTES_GEOTIFF_1)" +DEFAULT_MACRO GEOTIFF_IN_FEATURE_TYPE_NAME_GEOTIFF_1 FORMAT_NAME +GEOTIFF_1_FEATURE_TYPE_NAME "$(GEOTIFF_IN_FEATURE_TYPE_NAME_GEOTIFF_1)" +DEFAULT_MACRO GEOTIFF_IN_APPLY_GCPS_GEOTIFF_1 NO +GEOTIFF_1_APPLY_GCPS "$(GEOTIFF_IN_APPLY_GCPS_GEOTIFF_1)" +GUI ACTIVEDISCLOSUREGROUP GEOTIFF_IN_APPLY_GCPS_GEOTIFF_1 GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_1 Apply GCP's +DEFAULT_MACRO GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_1 NearestNeighbor +GEOTIFF_1_GCP_INTERPOLATION_METHOD "$(GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_1)" +GUI LOOKUP_CHOICE GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_1 NearestNeighbor,NearestNeighbor%Bilinear,Bilinear%Bicubic,Bicubic GCP Interpolation Method +GUI LOOKUP GEOTIFF_IN_GCP_INTERPOLATION_METHOD_GEOTIFF_1 ,NearestNeighbor +DEFAULT_MACRO GEOTIFF_IN_EXPOSE_ATTRS_GROUP_GEOTIFF_1 +GEOTIFF_1_EXPOSE_ATTRS_GROUP "$(GEOTIFF_IN_EXPOSE_ATTRS_GROUP_GEOTIFF_1)" +# Include this file in source setting section to add external search envelope processing +# Zero as a default means we don't do any search -- this makes workbench happier +DEFAULT_MACRO GEOTIFF_IN_USE_SEARCH_ENVELOPE_GEOTIFF_1 NO +GEOTIFF_1_USE_SEARCH_ENVELOPE "$(GEOTIFF_IN_USE_SEARCH_ENVELOPE_GEOTIFF_1)" +GUI ACTIVEDISCLOSUREGROUP GEOTIFF_IN_USE_SEARCH_ENVELOPE_GEOTIFF_1 GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_1%GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_1%GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_1%GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_1%GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_1%GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_1%GEOTIFF_IN_SEARCH_METHOD%GEOTIFF_IN_SEARCH_METHOD_FILTER%GEOTIFF_IN_SEARCH_ORDER%GEOTIFF_IN_SEARCH_FEATURE%GEOTIFF_IN_DUMMY_SEARCH_ENVELOPE_PARAMETER Use Search Envelope +# =========================================================================== +GUI LOOKUP GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_1 ,0 +DEFAULT_MACRO GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_1 0 +GEOTIFF_1_SEARCH_ENVELOPE "$(GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_1)" +GUI OPTIONAL FLOAT GEOTIFF_IN_SEARCH_ENVELOPE_MINX_GEOTIFF_1 Minimum X: +# =========================================================================== +GUI LOOKUP GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_1 ,0 +DEFAULT_MACRO GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_1 0 +GEOTIFF_1_SEARCH_ENVELOPE "$(GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_1)" +GUI OPTIONAL FLOAT GEOTIFF_IN_SEARCH_ENVELOPE_MINY_GEOTIFF_1 Minimum Y: +# =========================================================================== +GUI LOOKUP GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_1 ,0 +DEFAULT_MACRO GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_1 0 +GEOTIFF_1_SEARCH_ENVELOPE "$(GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_1)" +GUI OPTIONAL FLOAT GEOTIFF_IN_SEARCH_ENVELOPE_MAXX_GEOTIFF_1 Maximum X: +# =========================================================================== +GUI LOOKUP GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_1 ,0 +DEFAULT_MACRO GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_1 0 +GEOTIFF_1_SEARCH_ENVELOPE "$(GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_1)" +GUI OPTIONAL FLOAT GEOTIFF_IN_SEARCH_ENVELOPE_MAXY_GEOTIFF_1 Maximum Y: +# =========================================================================== +GUI LOOKUP GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_1 , +DEFAULT_MACRO GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_1 +GEOTIFF_1_SEARCH_ENVELOPE "$(GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_1)" +GUI OPTIONAL COORDSYS GEOTIFF_IN_SEARCH_ENVELOPE_COORDINATE_SYSTEM_GEOTIFF_1 Search Envelope Coordinate System: +# =========================================================================== +# BUG18999: We now have a soft clip to fall back on like native spatial index +# thus we are reintroducing the clip to envelop as an option for users. +# Defualt to soft clip as per the existing database readers we are emulating +GUI LOOKUP GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_1 ,NO +DEFAULT_MACRO GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_1 NO +GEOTIFF_1_CLIP_TO_ENVELOPE "$(GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_1)" +GUI OPTIONAL CHECKBOX GEOTIFF_IN_CLIP_TO_ENVELOPE_GEOTIFF_1 YES%NO Clip to Search Envelope +DEFAULT_MACRO GEOTIFF_IN_GEOTIFF_RDR_ADV_PARM_GROUP_GEOTIFF_1 +GUI OPTIONAL DISCLOSUREGROUP GEOTIFF_IN_GEOTIFF_RDR_ADV_PARM_GROUP_GEOTIFF_1 GEOTIFF_IN_PYRAMID_LEVEL_GEOTIFF_1%GEOTIFF_IN_PREFER_FILE_CS_UNITS_GEOTIFF_1%GEOTIFF_IN_READ_OFFSETS_IN_CS_UNITS_GEOTIFF_1%GEOTIFF_IN_IGNORE_RASTER_TYPE_KEY_GEOTIFF_1 Advanced +DEFAULT_MACRO GEOTIFF_IN_PYRAMID_LEVEL_GEOTIFF_1 +GEOTIFF_1_PYRAMID_LEVEL "$(GEOTIFF_IN_PYRAMID_LEVEL_GEOTIFF_1)" +GUI OPTIONAL INTEGER GEOTIFF_IN_PYRAMID_LEVEL_GEOTIFF_1 Pyramid Level to Read: +DEFAULT_MACRO GEOTIFF_IN_PREFER_FILE_CS_UNITS_GEOTIFF_1 Yes +GEOTIFF_1_PREFER_FILE_CS_UNITS "$(GEOTIFF_IN_PREFER_FILE_CS_UNITS_GEOTIFF_1)" +GUI CHOICE GEOTIFF_IN_PREFER_FILE_CS_UNITS_GEOTIFF_1 Yes%No Prefer File Coordinate System Units: +DEFAULT_MACRO GEOTIFF_IN_READ_OFFSETS_IN_CS_UNITS_GEOTIFF_1 No +GEOTIFF_1_READ_OFFSETS_IN_CS_UNITS "$(GEOTIFF_IN_READ_OFFSETS_IN_CS_UNITS_GEOTIFF_1)" +GUI CHOICE GEOTIFF_IN_READ_OFFSETS_IN_CS_UNITS_GEOTIFF_1 Yes%No Offsets in Coordinate System Units: +DEFAULT_MACRO GEOTIFF_IN_IGNORE_RASTER_TYPE_KEY_GEOTIFF_1 No +GEOTIFF_1_IGNORE_RASTER_TYPE_KEY "$(GEOTIFF_IN_IGNORE_RASTER_TYPE_KEY_GEOTIFF_1)" +GUI CHOICE GEOTIFF_IN_IGNORE_RASTER_TYPE_KEY_GEOTIFF_1 Yes%No Ignore Raster Type Key: +# =========================================================================== +DEFAULT_MACRO GEOTIFF_IN_NETWORK_AUTHENTICATION_GEOTIFF_1 +GEOTIFF_1_NETWORK_AUTHENTICATION "$(GEOTIFF_IN_NETWORK_AUTHENTICATION_GEOTIFF_1)" +GUI OPTIONAL AUTHENTICATOR GEOTIFF_IN_NETWORK_AUTHENTICATION_GEOTIFF_1 CONTAINER%GROUP%CONTAINER_TITLE%"Network Authentication"%PROMPT_TYPE%NETWORK Network Authentication +# ============================================================================ +DEFAULT_MACRO GEOTIFF_IN_ATTRIBUTE_READING_GEOTIFF_1 ALL +GEOTIFF_1_ATTRIBUTE_READING "$(GEOTIFF_IN_ATTRIBUTE_READING_GEOTIFF_1)" +# ============================================================================ +GEOTIFF_1_GENERATE_FME_BUILD_NUM 20596 +GEOTIFF_1_DATASET "$(SourceDataset_GEOTIFF_1)" +#! END_SOURCE_HEADER +#! START_WB_HEADER +MACRO WB_KEYWORD "LAS_2" +#! END_WB_HEADER +#! START_DEST_HEADER LAS LAS_2 +# The following GUI lines prompt for a LAS file to be used as the +# the destination of the data. +# The user input is stored in a macro, which is then used to define +# the dataset to be written. +#! END_DEST_HEADER +#! START_WB_HEADER +DEFAULT_MACRO DestDataset +INCLUDE [ if {"$(DestDataset)" != ""} { \ + puts {DEFAULT_MACRO DestDataset_LAS_2 $(DestDataset)} \ + } ] +#! END_WB_HEADER +#! START_DEST_HEADER LAS LAS_2 +DEFAULT_MACRO DestDataset_LAS_2 $(DestDataset_LAS) +GUI DIRNAME DestDataset_LAS_2 Destination ASPRS LAS Folder: +DEFAULT_MACRO LAS_OUT_FME_GROUP_NAMED1_LAS_2 +GUI OPTIONAL DISCLOSUREGROUP LAS_OUT_FME_GROUP_NAMED1_LAS_2 LAS_OUT_VERSION_LAS_2%LAS_OUT_COMPRESSION_LAS_2 Parameters +# ============================================================================ +# Version +DEFAULT_MACRO LAS_OUT_VERSION_LAS_2 1.2 +LAS_2_VERSION "$(LAS_OUT_VERSION_LAS_2)" +GUI LOOKUP_CHOICE LAS_OUT_VERSION_LAS_2 1.0,1.0%1.1,1.1%1.2,1.2%1.3,1.3%"\"1.4 (Legacy Compatible)\",1.4-legacy-compatible"%1.4,1.4 ASPRS LAS Version: +# [PR#30472] Compression +DEFAULT_MACRO LAS_OUT_COMPRESSION_LAS_2 None +LAS_2_COMPRESSION "$(LAS_OUT_COMPRESSION_LAS_2)" +GUI ACTIVECHOICE LAS_OUT_COMPRESSION_LAS_2 None,LAS_OUT_ZLAS_PARAMETERS_LAS_2%LAZ,LAS_OUT_ZLAS_PARAMETERS_LAS_2%zLAS Compression +# This is a placeholder parameter that will be replaced with a custom table in the controller +DEFAULT_MACRO LAS_OUT_USER_GROUP_LAS_2 +GUI OPTIONAL DISCLOSUREGROUP LAS_OUT_USER_GROUP_LAS_2 LAS_OUT_USER_COMPONENTS_LAS_2 Additional User Components +DEFAULT_MACRO LAS_OUT_USER_COMPONENTS_LAS_2 +LAS_2_USER_COMPONENTS "$(LAS_OUT_USER_COMPONENTS_LAS_2)" +GUI OPTIONAL GUI_LINE_TABLE_ENCODED LAS_OUT_USER_COMPONENTS_LAS_2 NO_LABEL%ROW_DELIM:,%COL_DELIM:,%"User Components"%"STRING COMPONENTS" User Components +# ============================================================================ +# Opt in for destination dataset type vs format type validation +DEFAULT_MACRO LAS_OUT_DESTINATION_DATASETTYPE_VALIDATION_LAS_2 Yes +LAS_2_DESTINATION_DATASETTYPE_VALIDATION "$(LAS_OUT_DESTINATION_DATASETTYPE_VALIDATION_LAS_2)" +DEFAULT_MACRO LAS_OUT_COORDINATE_SYSTEM_GRANULARITY_LAS_2 FEATURE +LAS_2_COORDINATE_SYSTEM_GRANULARITY "$(LAS_OUT_COORDINATE_SYSTEM_GRANULARITY_LAS_2)" +DEFAULT_MACRO LAS_OUT_ADVANCED_PARAMETERS_LAS_2 +GUI OPTIONAL DISCLOSUREGROUP LAS_OUT_ADVANCED_PARAMETERS_LAS_2 LAS_OUT_LAS_DATASET_FILE_LAS_2%LAS_OUT_ZLAS_PARAMETERS_LAS_2 Advanced +DEFAULT_MACRO LAS_OUT_LAS_DATASET_FILE_LAS_2 +GUI OPTIONAL DISCLOSUREGROUP LAS_OUT_LAS_DATASET_FILE_LAS_2 LAS_OUT_ARCGIS_LAS_DATASET_LAS_2%LAS_OUT_COMPUTE_STATISTICS_ON_ARCGIS_LAS_DATASET_LAS_2 LAS Dataset File +# The following GUI line provides the ability to create an +# Esri ArcGIS LAS Dataset encapsulating the LAS files produced +# by this translation. The LAS Dataset can then be used to view +# the output using Esri's tools. +DEFAULT_MACRO LAS_OUT_ARCGIS_LAS_DATASET_LAS_2 +LAS_2_ARCGIS_LAS_DATASET "$(LAS_OUT_ARCGIS_LAS_DATASET_LAS_2)" +GUI OPTIONAL TEXT LAS_OUT_ARCGIS_LAS_DATASET_LAS_2 ArcGIS LAS Dataset (.lasd) Filename +# The following GUI line determines whether statistics should +# be calculated on the ArcGIS LAS Dataset. This keyword is +# applicable when FME is creating an ArcGIS LAS Dataset. +DEFAULT_MACRO LAS_OUT_COMPUTE_STATISTICS_ON_ARCGIS_LAS_DATASET_LAS_2 No +LAS_2_COMPUTE_STATISTICS_ON_ARCGIS_LAS_DATASET "$(LAS_OUT_COMPUTE_STATISTICS_ON_ARCGIS_LAS_DATASET_LAS_2)" +GUI CHOICE LAS_OUT_COMPUTE_STATISTICS_ON_ARCGIS_LAS_DATASET_LAS_2 Yes%No Compute Statistics on ArcGIS LAS Dataset +DEFAULT_MACRO LAS_OUT_ZLAS_PARAMETERS_LAS_2 +GUI OPTIONAL DISCLOSUREGROUP LAS_OUT_ZLAS_PARAMETERS_LAS_2 LAS_OUT_ZLAS_REARRANGE_POINTS_LAS_2%LAS_OUT_ZLAS_POINT_SPACING_SOURCE_LAS_2%LAS_OUT_ZLAS_POINT_SPACING_VALUE_LAS_2 zLAS Parameters +DEFAULT_MACRO LAS_OUT_ZLAS_REARRANGE_POINTS_LAS_2 +LAS_2_ZLAS_REARRANGE_POINTS "$(LAS_OUT_ZLAS_REARRANGE_POINTS_LAS_2)" +GUI CHOICE LAS_OUT_ZLAS_REARRANGE_POINTS_LAS_2 Yes%No Rearrange Points for zLAS Compression +DEFAULT_MACRO LAS_OUT_ZLAS_POINT_SPACING_SOURCE_LAS_2 +LAS_2_ZLAS_POINT_SPACING_SOURCE "$(LAS_OUT_ZLAS_POINT_SPACING_SOURCE_LAS_2)" +GUI LOOKUP_CHOICE LAS_OUT_ZLAS_POINT_SPACING_SOURCE_LAS_2 "\"Scan Points\",scan"%"\"From Header\",header"%"\"Specify Value\",specify" zLAS Point Spacing Source +DEFAULT_MACRO LAS_OUT_ZLAS_POINT_SPACING_VALUE_LAS_2 +LAS_2_ZLAS_POINT_SPACING_VALUE "$(LAS_OUT_ZLAS_POINT_SPACING_VALUE_LAS_2)" +GUI FLOAT LAS_OUT_ZLAS_POINT_SPACING_VALUE_LAS_2 zLAS Point Spacing Value +# ============================================================================ +LAS_2_GENERATE_FME_BUILD_NUM 20596 +LAS_2_DATASET "$(DestDataset_LAS_2)" +#! END_DEST_HEADER +#! START_WB_HEADER +#! END_WB_HEADER +#! END_HEADER + +LOG_FILTER_MASK -1 +LOG_MAX_FEATURES 200 +LOG_MAX_RECORDED_FEATURES 200 +FME_REPROJECTION_ENGINE FME +FME_IMPLICIT_CSMAP_REPROJECTION_MODE Auto +FME_GEOMETRY_HANDLING Enhanced +FME_STROKE_MAX_DEVIATION 0 +DEFAULT_MACRO DATASET_KEYWORD_LAS_1 LAS_1 +DEFAULT_MACRO DATASET_KEYWORD_GEOTIFF_1 GEOTIFF_1 +DEFAULT_MACRO DATASET_KEYWORD_LAS_2 LAS_2 +# ------------------------------------------------------------------------- + +LAS_1_READER_META_ATTRIBUTES fme_feature_type fme_basename + +# ------------------------------------------------------------------------- + +GEOTIFF_1_READER_META_ATTRIBUTES fme_feature_type fme_basename + +# ------------------------------------------------------------------------- + +MULTI_READER_CONTINUE_ON_READER_FAILURE No + +# ------------------------------------------------------------------------- + +MACRO WORKSPACE_NAME LAS_Pretraitement_2021_cleaning_MNHC +MACRO FME_VIEWER_APP fmedatainspector +# ------------------------------------------------------------------------- + +INCLUDE [ if {[info exists env(FME_TEMP)] && [file isdirectory $env(FME_TEMP)]} {set gVisualizerTemp $env(FME_TEMP)} elseif {[info exists env(TEMP)] && [file isdirectory $env(TEMP)]} {set gVisualizerTemp $env(TEMP)} elseif { $tcl_platform(platform) == "unix" } {set gVisualizerTemp "/tmp"} else {set gVisualizerTemp c:}; regsub -all {[ ,&]} {$(WORKSPACE_NAME)} {_} wsname; set gVisualizerTemp $gVisualizerTemp/${wsname}_[clock format [clock seconds] -format %H%M%S]; puts "MACRO WORKSPACE_TEMP_DIR $gVisualizerTemp"; +MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/inspector.ffs +MACRO VISUALIZER_SCHEMA_FILE $(WORKSPACE_TEMP_DIR)/inspector.fsc +MACRO VISUALIZER_CREATE_SPATIAL_INDEX YES +# ------------------------------------------------------------------------- +LAS_1_DEF LAS +# ------------------------------------------------------------------------- +GEOTIFF_1_DEF GEOTIFF +# ------------------------------------------------------------------------- + +FACTORY_DEF * RoutingFactory FACTORY_NAME "Router and Unexpected Input Remover" COMMAND_PARM_EVALUATION SINGLE_PASS INPUT FEATURE_TYPE * ROUTE LAS LAS_1::LAS multi_reader_keyword,$(DATASET_KEYWORD_LAS_1) TO FME_GENERIC ::LAS ALIAS_GEOMETRY ROUTE GEOTIFF GEOTIFF_1::GEOTIFF multi_reader_keyword,$(DATASET_KEYWORD_GEOTIFF_1) TO FME_GENERIC ::GEOTIFF ALIAS_GEOMETRY MERGE_INPUT Yes OUTPUT ROUTED FEATURE_TYPE * +LAS_1_MERGE_DEF LAS_1::LAS EXACT LAS +GEOTIFF_1_MERGE_DEF GEOTIFF_1::GEOTIFF EXACT GEOTIFF +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME "LAS_LAS_1 Splitter" INPUT FEATURE_TYPE LAS OUTPUT FEATURE_TYPE LAS_LAS_1 +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME "GEOTIFF_GEOTIFF_1 Splitter" INPUT FEATURE_TYPE GEOTIFF OUTPUT FEATURE_TYPE GEOTIFF_GEOTIFF_1 +DEFAULT_MACRO WB_CURRENT_CONTEXT +# ------------------------------------------------------------------------- +FACTORY_DEF * PointCloudEvaluationFactory FACTORY_NAME PointCloudFilter INPUT FEATURE_TYPE LAS_LAS_1 MODE FILTER REJECT_INVALID_FEATURES YES FORCE_FLOAT_DIVISION yes EXPRESSION_LIST Componentclassification==2||Componentclassification==9 ; Componentclassification==4||Componentclassification==5 FILTER_ATTRIBUTE __pc_internal_filter_attribute__ FILTER_ATTRIBUTE_VALUES_LIST Ground2+Water9 ; Vgtationmoyenne4+haute5 OUTPUT_UNFILTERED_POINTS "Yes" OUTPUT RESULT FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_0 OUTPUT FEATURE_TYPE PointCloudFilter_ +FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_TestFactory_0 INPUT FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_0 STRING_TEST @Value(__pc_internal_filter_attribute__) = Ground2+Water9 OUTPUT PASSED FEATURE_TYPE PointCloudFilter_Ground2+Water9 @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_1 +FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_TestFactory_1 INPUT FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_1 STRING_TEST @Value(__pc_internal_filter_attribute__) = Vgtationmoyenne4+haute5 OUTPUT PASSED FEATURE_TYPE PointCloudFilter_Vgtationmoyenne4+haute5 @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_2 +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_UNFILTERED INPUT FEATURE_TYPE PointCloudFilter_POINTCLOUDFILTERINPUTLINE_2 OUTPUT FEATURE_TYPE PointCloudFilter_ @RemoveAttributes(__pc_internal_filter_attribute__) +FACTORY_DEF * TeeFactory FACTORY_NAME "PointCloudFilter Ground2+Water9 Splitter" INPUT FEATURE_TYPE PointCloudFilter_Ground2+Water9 OUTPUT FEATURE_TYPE PointCloudFilter_Ground2+Water9_0_iQyPhi3mnFo= OUTPUT FEATURE_TYPE PointCloudFilter_Ground2+Water9_1_WXAwGkpiE4A= +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_ INPUT FEATURE_TYPE PointCloudFilter_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudFilteroutputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) +# ------------------------------------------------------------------------- +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudComponentAdder INPUT FEATURE_TYPE PointCloudFilter_Vgtationmoyenne4+haute5 OUTPUT FEATURE_TYPE ___TOREJECTOR___ @RenameAttributes(FME_STRICT,___fme_rejection_code___,fme_rejection_code) @AddPointCloudComponents(REJECTABLE,z_ground,Real64,0,z_max,Real64,0,mur,Real64,0) +FACTORY_DEF * TestFactory FACTORY_NAME PointCloudComponentAdder_Rejector INPUT FEATURE_TYPE ___TOREJECTOR___ TEST @Value(fme_rejection_code) != "" OUTPUT PASSED FEATURE_TYPE PointCloudComponentAdder_ @RemoveAttributes(___fme_rejection_code___) OUTPUT FAILED FEATURE_TYPE PointCloudComponentAdder_OUTPUT @RenameAttributes(FME_STRICT,fme_rejection_code,___fme_rejection_code___) +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudComponentAdder_ INPUT FEATURE_TYPE PointCloudComponentAdder_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudComponentAdderoutputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) +# ------------------------------------------------------------------------- +FACTORY_DEF {*} SurfaceModelFactory FACTORY_NAME RasterDEMGenerator FLUSH_WHEN_GROUPS_CHANGE No INPUT POINTS FEATURE_TYPE PointCloudFilter_Ground2+Water9_0_iQyPhi3mnFo= TOLERANCE 0.1 SAMPLE_SPACING 0.4 0.4 INTERPOLATION_TYPE AUTO NODATA_VALUE -32767.0 REJECT_INVALID_GEOM YES OUTPUT DEM_RASTER FEATURE_TYPE RasterDEMGenerator_DEM_RASTER @SupplyAttributes(?,fme_basename,RasterDEMGenerator) OUTPUT REJECTED FEATURE_TYPE RasterDEMGenerator_ +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TeeFactory FACTORY_NAME RasterDEMGenerator_ INPUT FEATURE_TYPE RasterDEMGenerator_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, RasterDEMGeneratoroutputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) +# ------------------------------------------------------------------------- +INCLUDE [ if {[string equal {CUSTOM} {COLOR}]} { puts {MACRO PointCloudOnRasterComponentSetter_2_COMPONENT_LIST color_red,color_green,color_blue}; puts {MACRO PointCloudOnRasterComponentSetter_2_DEFAULT_VALUE_LIST}; } else { foreach {band component default} [split {0|z_ground|0} |] { lappend componentList "$component"; lappend defaultList "$default"; }; puts "MACRO PointCloudOnRasterComponentSetter_2_COMPONENT_LIST \"[join $componentList ,]\""; puts "MACRO PointCloudOnRasterComponentSetter_2_DEFAULT_VALUE_LIST \"[join $defaultList ,]\""; }; ] +FACTORY_DEF {*} RasterToPointCloudComponentFactory FACTORY_NAME PointCloudOnRasterComponentSetter_2 INPUT FEATURE_TYPE PointCloudComponentAdder_OUTPUT INPUT FEATURE_TYPE RasterDEMGenerator_DEM_RASTER FLUSH_WHEN_GROUPS_CHANGE No COMPONENT_LIST $(PointCloudOnRasterComponentSetter_2_COMPONENT_LIST) DEFAULT_VALUE $(PointCloudOnRasterComponentSetter_2_DEFAULT_VALUE_LIST) INTERPOLATION_TYPE_NAME NearestNeighbor EXTRACT_NODATA No DEFAULT_VALUES_OVERWRITE_DATA No REJECT_INVALID_FEATURES YES OUTPUT POINTCLOUD FEATURE_TYPE PointCloudOnRasterComponentSetter_2_PointCloud OUTPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_2_ +FACTORY_DEF * TeeFactory FACTORY_NAME "PointCloudOnRasterComponentSetter_2 PointCloud Splitter" INPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_2_PointCloud OUTPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_2_PointCloud_0_Cp3PFkJGvQM= OUTPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_2_PointCloud_1_pOvQ2H97RY4= +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudOnRasterComponentSetter_2_ INPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_2_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudOnRasterComponentSetter_2outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) +# ------------------------------------------------------------------------- +INCLUDE [ if {[string equal {CUSTOM} {COLOR}]} { puts {MACRO PointCloudOnRasterComponentSetter_COMPONENT_LIST color_red,color_green,color_blue}; puts {MACRO PointCloudOnRasterComponentSetter_DEFAULT_VALUE_LIST}; } else { foreach {band component default} [split {0|mur|$(SourceDataset_GEOTIFF)} |] { lappend componentList "$component"; lappend defaultList "$default"; }; puts "MACRO PointCloudOnRasterComponentSetter_COMPONENT_LIST \"[join $componentList ,]\""; puts "MACRO PointCloudOnRasterComponentSetter_DEFAULT_VALUE_LIST \"[join $defaultList ,]\""; }; ] +FACTORY_DEF {*} RasterToPointCloudComponentFactory FACTORY_NAME PointCloudOnRasterComponentSetter INPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_2_PointCloud_1_pOvQ2H97RY4= INPUT FEATURE_TYPE GEOTIFF_GEOTIFF_1 FLUSH_WHEN_GROUPS_CHANGE No COMPONENT_LIST $(PointCloudOnRasterComponentSetter_COMPONENT_LIST) DEFAULT_VALUE $(PointCloudOnRasterComponentSetter_DEFAULT_VALUE_LIST) INTERPOLATION_TYPE_NAME NearestNeighbor EXTRACT_NODATA No DEFAULT_VALUES_OVERWRITE_DATA No REJECT_INVALID_FEATURES YES OUTPUT POINTCLOUD FEATURE_TYPE PointCloudOnRasterComponentSetter_PointCloud OUTPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_ +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudOnRasterComponentSetter_ INPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudOnRasterComponentSetteroutputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) +# ------------------------------------------------------------------------- +FACTORY_DEF * PointCloudEvaluationFactory FACTORY_NAME PointCloudFilter_4 INPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_PointCloud MODE FILTER REJECT_INVALID_FEATURES YES FORCE_FLOAT_DIVISION yes EXPRESSION_LIST Componentclassification==4 ; Componentclassification==5 FILTER_ATTRIBUTE __pc_internal_filter_attribute__ FILTER_ATTRIBUTE_VALUES_LIST 4 ; 5 OUTPUT_UNFILTERED_POINTS "Yes" OUTPUT RESULT FEATURE_TYPE PointCloudFilter_4_POINTCLOUDFILTERINPUTLINE_0 OUTPUT FEATURE_TYPE PointCloudFilter_4_ +FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_4_TestFactory_0 INPUT FEATURE_TYPE PointCloudFilter_4_POINTCLOUDFILTERINPUTLINE_0 STRING_TEST @Value(__pc_internal_filter_attribute__) = 4 OUTPUT PASSED FEATURE_TYPE PointCloudFilter_4_4 @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_4_POINTCLOUDFILTERINPUTLINE_1 +FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_4_TestFactory_1 INPUT FEATURE_TYPE PointCloudFilter_4_POINTCLOUDFILTERINPUTLINE_1 STRING_TEST @Value(__pc_internal_filter_attribute__) = 5 OUTPUT PASSED FEATURE_TYPE PointCloudFilter_4_5 @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_4_POINTCLOUDFILTERINPUTLINE_2 +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_4_UNFILTERED INPUT FEATURE_TYPE PointCloudFilter_4_POINTCLOUDFILTERINPUTLINE_2 OUTPUT FEATURE_TYPE PointCloudFilter_4_ @RemoveAttributes(__pc_internal_filter_attribute__) +FACTORY_DEF * TeeFactory FACTORY_NAME "PointCloudFilter_4 Transformer Output Nuker" INPUT FEATURE_TYPE PointCloudFilter_4_ +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_4_ INPUT FEATURE_TYPE PointCloudFilter_4_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudFilter_4outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) +# ------------------------------------------------------------------------- +DEFAULT_MACRO PointCloudExpressionEvaluator_COMPONENT_LIST +DEFAULT_MACRO PointCloudExpressionEvaluator_COMPONENT_TYPE_LIST +DEFAULT_MACRO PointCloudExpressionEvaluator_EXPRESSION_LIST +INCLUDE [ foreach {component componenttype expression} [split {z Real32 @EvaluateExpression(FDIV,STRING_ENCODED,Componentz-Componentz_ground,PointCloudExpressionEvaluator)}] { lappend lists(COMPONENT) $component; lappend lists(COMPONENT_TYPE) $componenttype; if [regexp {@EvaluateExpression\(STRING_ENCODED,(.*),.+\)} $expression -> unwrapped] { lappend lists(EXPRESSION) $unwrapped; } elseif [regexp {@EvaluateExpression\(FDIV,STRING_ENCODED,(.*),.+\)} $expression -> unwrapped] { lappend lists(EXPRESSION) $unwrapped; } else { lappend lists(EXPRESSION) $expression; }; }; foreach {listName} [array names lists] { puts "MACRO PointCloudExpressionEvaluator_${listName}_LIST \"[join $lists($listName) {;}]\""; }; ] +FACTORY_DEF * PointCloudEvaluationFactory FACTORY_NAME PointCloudExpressionEvaluator INPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_2_PointCloud_0_Cp3PFkJGvQM= MODE SET_COMPONENT_VALUES COMPONENT_LIST $(PointCloudExpressionEvaluator_COMPONENT_LIST) COMPONENT_TYPE_LIST $(PointCloudExpressionEvaluator_COMPONENT_TYPE_LIST) EXPRESSION_LIST $(PointCloudExpressionEvaluator_EXPRESSION_LIST) FORCE_FLOAT_DIVISION yes REJECT_INVALID_FEATURES YES OUTPUT RESULT FEATURE_TYPE PointCloudExpressionEvaluator_RESULT OUTPUT FEATURE_TYPE PointCloudExpressionEvaluator_ +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudExpressionEvaluator_ INPUT FEATURE_TYPE PointCloudExpressionEvaluator_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudExpressionEvaluatoroutputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) +# ------------------------------------------------------------------------- +FACTORY_DEF * PointCloudEvaluationFactory FACTORY_NAME PointCloudFilter_3 INPUT FEATURE_TYPE PointCloudExpressionEvaluator_RESULT MODE FILTER REJECT_INVALID_FEATURES YES FORCE_FLOAT_DIVISION yes EXPRESSION_LIST Componentz0 ; Componentz50 FILTER_ATTRIBUTE __pc_internal_filter_attribute__ FILTER_ATTRIBUTE_VALUES_LIST Negativepoints ; Aberrantheightpointshigherthan50m OUTPUT_UNFILTERED_POINTS "Yes" OUTPUT RESULT FEATURE_TYPE PointCloudFilter_3_POINTCLOUDFILTERINPUTLINE_0 OUTPUT FEATURE_TYPE PointCloudFilter_3_ +FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_3_TestFactory_0 INPUT FEATURE_TYPE PointCloudFilter_3_POINTCLOUDFILTERINPUTLINE_0 STRING_TEST @Value(__pc_internal_filter_attribute__) = Negativepoints OUTPUT PASSED FEATURE_TYPE PointCloudFilter_3_Negativepoints @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_3_POINTCLOUDFILTERINPUTLINE_1 +FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_3_TestFactory_1 INPUT FEATURE_TYPE PointCloudFilter_3_POINTCLOUDFILTERINPUTLINE_1 STRING_TEST @Value(__pc_internal_filter_attribute__) = Aberrantheightpointshigherthan50m OUTPUT PASSED FEATURE_TYPE PointCloudFilter_3_Aberrantheightpointshigherthan50m @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_3_POINTCLOUDFILTERINPUTLINE_2 +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_3_UNFILTERED INPUT FEATURE_TYPE PointCloudFilter_3_POINTCLOUDFILTERINPUTLINE_2 OUTPUT FEATURE_TYPE PointCloudFilter_3_ @RemoveAttributes(__pc_internal_filter_attribute__) +FACTORY_DEF * TeeFactory FACTORY_NAME "PointCloudFilter_3 Negativepoints Transformer Output Nuker" INPUT FEATURE_TYPE PointCloudFilter_3_Negativepoints +FACTORY_DEF * TeeFactory FACTORY_NAME "PointCloudFilter_3 Aberrantheightpointshigherthan50m Transformer Output Nuker" INPUT FEATURE_TYPE PointCloudFilter_3_Aberrantheightpointshigherthan50m +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_3_ INPUT FEATURE_TYPE PointCloudFilter_3_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudFilter_3outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) +# ------------------------------------------------------------------------- +FACTORY_DEF {*} SurfaceModelFactory FACTORY_NAME RasterDEMGenerator_2 FLUSH_WHEN_GROUPS_CHANGE No INPUT POINTS FEATURE_TYPE PointCloudFilter_3_ TOLERANCE 0.1 SAMPLE_SPACING 0.4 0.4 INTERPOLATION_TYPE AUTO NODATA_VALUE -32767.0 REJECT_INVALID_GEOM YES OUTPUT DEM_RASTER FEATURE_TYPE RasterDEMGenerator_2_DEM_RASTER @SupplyAttributes(?,fme_basename,RasterDEMGenerator_2) OUTPUT REJECTED FEATURE_TYPE RasterDEMGenerator_2_ +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TeeFactory FACTORY_NAME RasterDEMGenerator_2_ INPUT FEATURE_TYPE RasterDEMGenerator_2_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, RasterDEMGenerator_2outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) +# ------------------------------------------------------------------------- +INCLUDE [ if {[string equal {CUSTOM} {COLOR}]} { puts {MACRO PointCloudOnRasterComponentSetter_3_COMPONENT_LIST color_red,color_green,color_blue}; puts {MACRO PointCloudOnRasterComponentSetter_3_DEFAULT_VALUE_LIST}; } else { foreach {band component default} [split {0|z_max|0} |] { lappend componentList "$component"; lappend defaultList "$default"; }; puts "MACRO PointCloudOnRasterComponentSetter_3_COMPONENT_LIST \"[join $componentList ,]\""; puts "MACRO PointCloudOnRasterComponentSetter_3_DEFAULT_VALUE_LIST \"[join $defaultList ,]\""; }; ] +FACTORY_DEF {*} RasterToPointCloudComponentFactory FACTORY_NAME PointCloudOnRasterComponentSetter_3 INPUT FEATURE_TYPE PointCloudFilter_4_4 INPUT FEATURE_TYPE RasterDEMGenerator_2_DEM_RASTER FLUSH_WHEN_GROUPS_CHANGE No COMPONENT_LIST $(PointCloudOnRasterComponentSetter_3_COMPONENT_LIST) DEFAULT_VALUE $(PointCloudOnRasterComponentSetter_3_DEFAULT_VALUE_LIST) INTERPOLATION_TYPE_NAME NearestNeighbor EXTRACT_NODATA No DEFAULT_VALUES_OVERWRITE_DATA No REJECT_INVALID_FEATURES YES OUTPUT POINTCLOUD FEATURE_TYPE PointCloudOnRasterComponentSetter_3_PointCloud OUTPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_3_ +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudOnRasterComponentSetter_3_ INPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_3_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudOnRasterComponentSetter_3outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) +# ------------------------------------------------------------------------- +FACTORY_DEF * PointCloudEvaluationFactory FACTORY_NAME PointCloudFilter_5 INPUT FEATURE_TYPE PointCloudOnRasterComponentSetter_3_PointCloud MODE FILTER REJECT_INVALID_FEATURES YES FORCE_FLOAT_DIVISION yes EXPRESSION_LIST Componentz_max=3 FILTER_ATTRIBUTE __pc_internal_filter_attribute__ FILTER_ATTRIBUTE_VALUES_LIST 4out OUTPUT_UNFILTERED_POINTS "Yes" OUTPUT RESULT FEATURE_TYPE PointCloudFilter_5_POINTCLOUDFILTERINPUTLINE_0 OUTPUT FEATURE_TYPE PointCloudFilter_5_ +FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_5_TestFactory_0 INPUT FEATURE_TYPE PointCloudFilter_5_POINTCLOUDFILTERINPUTLINE_0 STRING_TEST @Value(__pc_internal_filter_attribute__) = 4out OUTPUT PASSED FEATURE_TYPE PointCloudFilter_5_4out @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_5_POINTCLOUDFILTERINPUTLINE_1 +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_5_UNFILTERED INPUT FEATURE_TYPE PointCloudFilter_5_POINTCLOUDFILTERINPUTLINE_1 OUTPUT FEATURE_TYPE PointCloudFilter_5_ @RemoveAttributes(__pc_internal_filter_attribute__) +FACTORY_DEF * TeeFactory FACTORY_NAME "PointCloudFilter_5 4out Splitter" INPUT FEATURE_TYPE PointCloudFilter_5_4out OUTPUT FEATURE_TYPE PointCloudFilter_5_4out_0_MZflbMncRTk= OUTPUT FEATURE_TYPE PointCloudFilter_5_4out_1_8onCNNziEwg= +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_5_ INPUT FEATURE_TYPE PointCloudFilter_5_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudFilter_5outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) +# ------------------------------------------------------------------------- +FACTORY_DEF * PointCloudEvaluationFactory FACTORY_NAME PointCloudFilter_6 INPUT FEATURE_TYPE PointCloudFilter_5_ MODE FILTER REJECT_INVALID_FEATURES YES FORCE_FLOAT_DIVISION yes EXPRESSION_LIST Componentmur3 FILTER_ATTRIBUTE __pc_internal_filter_attribute__ FILTER_ATTRIBUTE_VALUES_LIST 4-mur OUTPUT_UNFILTERED_POINTS "Yes" OUTPUT RESULT FEATURE_TYPE PointCloudFilter_6_POINTCLOUDFILTERINPUTLINE_0 OUTPUT FEATURE_TYPE PointCloudFilter_6_ +FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_6_TestFactory_0 INPUT FEATURE_TYPE PointCloudFilter_6_POINTCLOUDFILTERINPUTLINE_0 STRING_TEST @Value(__pc_internal_filter_attribute__) = 4-mur OUTPUT PASSED FEATURE_TYPE PointCloudFilter_6_4-mur @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_6_POINTCLOUDFILTERINPUTLINE_1 +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_6_UNFILTERED INPUT FEATURE_TYPE PointCloudFilter_6_POINTCLOUDFILTERINPUTLINE_1 OUTPUT FEATURE_TYPE PointCloudFilter_6_ @RemoveAttributes(__pc_internal_filter_attribute__) +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_6_ INPUT FEATURE_TYPE PointCloudFilter_6_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudFilter_6outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) +# ------------------------------------------------------------------------- +FACTORY_DEF {*} VectorToPointCloudFactory FACTORY_NAME PointCloudCombiner_2___VectorMerger INPUT FEATURE_TYPE PointCloudFilter_5_4out_1_8onCNNziEwg= INPUT FEATURE_TYPE PointCloudFilter_6_4-mur FLUSH_WHEN_GROUPS_CHANGE No ACCUMULATE_ATTRIBUTES yes EXTRACT_RASTER_NODATA no SPACING "1.0" MEASURES_TO_PRESERVE ATTRIBUTES_TO_PRESERVE REJECT_INVALID_FEATURES yes OUTPUT COERCED FEATURE_TYPE PointCloudCombiner_2___MergedVectorFeatures__ @SupplyAttributes(?,fme_basename,PointCloudCombiner_2) OUTPUT FEATURE_TYPE PointCloudCombiner_2_ +FACTORY_DEF {*} PointCloudCombinerFactory FACTORY_NAME PointCloudCombiner_2___Combiner INPUT FEATURE_TYPE PointCloudCombiner_2___MergedVectorFeatures__ FLUSH_WHEN_GROUPS_CHANGE No ACCUMULATE_ATTRIBUTES yes REJECT_INVALID_FEATURES yes OUTPUT MERGED FEATURE_TYPE PointCloudCombiner_2_OUTPUT OUTPUT FEATURE_TYPE PointCloudCombiner_2_ +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudCombiner_2_ INPUT FEATURE_TYPE PointCloudCombiner_2_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudCombiner_2outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) +# ------------------------------------------------------------------------- +DEFAULT_MACRO PointCloudExpressionEvaluator_2_COMPONENT_LIST +DEFAULT_MACRO PointCloudExpressionEvaluator_2_COMPONENT_TYPE_LIST +DEFAULT_MACRO PointCloudExpressionEvaluator_2_EXPRESSION_LIST +INCLUDE [ foreach {component componenttype expression} [split {classification Auto 3}] { lappend lists(COMPONENT) $component; lappend lists(COMPONENT_TYPE) $componenttype; if [regexp {@EvaluateExpression\(STRING_ENCODED,(.*),.+\)} $expression -> unwrapped] { lappend lists(EXPRESSION) $unwrapped; } elseif [regexp {@EvaluateExpression\(FDIV,STRING_ENCODED,(.*),.+\)} $expression -> unwrapped] { lappend lists(EXPRESSION) $unwrapped; } else { lappend lists(EXPRESSION) $expression; }; }; foreach {listName} [array names lists] { puts "MACRO PointCloudExpressionEvaluator_2_${listName}_LIST \"[join $lists($listName) {;}]\""; }; ] +FACTORY_DEF * PointCloudEvaluationFactory FACTORY_NAME PointCloudExpressionEvaluator_2 INPUT FEATURE_TYPE PointCloudCombiner_2_OUTPUT MODE SET_COMPONENT_VALUES COMPONENT_LIST $(PointCloudExpressionEvaluator_2_COMPONENT_LIST) COMPONENT_TYPE_LIST $(PointCloudExpressionEvaluator_2_COMPONENT_TYPE_LIST) EXPRESSION_LIST $(PointCloudExpressionEvaluator_2_EXPRESSION_LIST) FORCE_FLOAT_DIVISION yes REJECT_INVALID_FEATURES YES OUTPUT RESULT FEATURE_TYPE PointCloudExpressionEvaluator_2_RESULT OUTPUT FEATURE_TYPE PointCloudExpressionEvaluator_2_ +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudExpressionEvaluator_2_ INPUT FEATURE_TYPE PointCloudExpressionEvaluator_2_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudExpressionEvaluator_2outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) +# ------------------------------------------------------------------------- +FACTORY_DEF {*} VectorToPointCloudFactory FACTORY_NAME PointCloudCombiner___VectorMerger INPUT FEATURE_TYPE PointCloudFilter_Ground2+Water9_1_WXAwGkpiE4A= INPUT FEATURE_TYPE PointCloudExpressionEvaluator_2_RESULT INPUT FEATURE_TYPE PointCloudFilter_4_5 INPUT FEATURE_TYPE PointCloudFilter_6_ INPUT FEATURE_TYPE PointCloudFilter_ FLUSH_WHEN_GROUPS_CHANGE No ACCUMULATE_ATTRIBUTES yes EXTRACT_RASTER_NODATA no SPACING "1.0" MEASURES_TO_PRESERVE ATTRIBUTES_TO_PRESERVE REJECT_INVALID_FEATURES yes OUTPUT COERCED FEATURE_TYPE PointCloudCombiner___MergedVectorFeatures__ @SupplyAttributes(?,fme_basename,PointCloudCombiner) OUTPUT FEATURE_TYPE PointCloudCombiner_ +FACTORY_DEF {*} PointCloudCombinerFactory FACTORY_NAME PointCloudCombiner___Combiner INPUT FEATURE_TYPE PointCloudCombiner___MergedVectorFeatures__ FLUSH_WHEN_GROUPS_CHANGE No ACCUMULATE_ATTRIBUTES yes REJECT_INVALID_FEATURES yes OUTPUT MERGED FEATURE_TYPE PointCloudCombiner_OUTPUT OUTPUT FEATURE_TYPE PointCloudCombiner_ +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudCombiner_ INPUT FEATURE_TYPE PointCloudCombiner_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudCombineroutputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) +# ------------------------------------------------------------------------- +FACTORY_DEF * PointCloudEvaluationFactory FACTORY_NAME PointCloudFilter_7 INPUT FEATURE_TYPE PointCloudFilter_5_4out_0_MZflbMncRTk= MODE FILTER REJECT_INVALID_FEATURES YES FORCE_FLOAT_DIVISION yes EXPRESSION_LIST Componentmur3 FILTER_ATTRIBUTE __pc_internal_filter_attribute__ FILTER_ATTRIBUTE_VALUES_LIST 4-mur OUTPUT_UNFILTERED_POINTS "Yes" OUTPUT RESULT FEATURE_TYPE PointCloudFilter_7_POINTCLOUDFILTERINPUTLINE_0 OUTPUT FEATURE_TYPE PointCloudFilter_7_ +FACTORY_DEF * TestFactory FACTORY_NAME PointCloudFilter_7_TestFactory_0 INPUT FEATURE_TYPE PointCloudFilter_7_POINTCLOUDFILTERINPUTLINE_0 STRING_TEST @Value(__pc_internal_filter_attribute__) = 4-mur OUTPUT PASSED FEATURE_TYPE PointCloudFilter_7_4-mur @RemoveAttributes(__pc_internal_filter_attribute__) OUTPUT FAILED FEATURE_TYPE PointCloudFilter_7_POINTCLOUDFILTERINPUTLINE_1 +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_7_UNFILTERED INPUT FEATURE_TYPE PointCloudFilter_7_POINTCLOUDFILTERINPUTLINE_1 OUTPUT FEATURE_TYPE PointCloudFilter_7_ @RemoveAttributes(__pc_internal_filter_attribute__) +FACTORY_DEF * TeeFactory FACTORY_NAME "PointCloudFilter_7 Transformer Output Nuker" INPUT FEATURE_TYPE PointCloudFilter_7_ +DEFAULT_MACRO _WB_BYPASS_TERMINATION No +FACTORY_DEF * TeeFactory FACTORY_NAME PointCloudFilter_7_ INPUT FEATURE_TYPE PointCloudFilter_7_ OUTPUT FAILED FEATURE_TYPE * @Abort(ENCODED, PointCloudFilter_7outputaRejectedfeature.TocontinuetranslationwhenfeaturesarerejectedchangeWorkspaceParametersTranslationRejectedFeatureHandlingtoContinueTranslation) +# ------------------------------------------------------------------------- +# Assumption is that the workspace temp dir has been already set and created. See controldefs.cpp - ControlDefs::writeVisualizerTempDir +DEFAULT_MACRO WORKSPACE_TEMP_DIR +INCLUDE [ set safeName "[regsub -all {[^a-zA-Z0-9]} {4-mur_2} _]_[expr round(rand() * 1000000)]_[clock clicks -milliseconds]"; puts "MACRO SAFE_FFS_NAME $safeName"; ] +FACTORY_DEF {*} InspectorFactory FACTORY_NAME 4-mur_2_Prepper COMMAND_PARM_EVALUATION SINGLE_PASS INPUT FEATURE_TYPE PointCloudFilter_7_4-mur GROUP_ATTRIBUTE __inspector_feature_type_attr__ GROUP_BY { } GROUP_ATTRIBUTE_PREFIX { 4-mur_2 } RASTER_REDUCTION NoReduction POINT_CLOUD_REDUCTION NO_THINNING OUTPUT RESULT FEATURE_TYPE __viewme__ +# Now route all the features into the recorder, changing their +# feature type to the transformer name so that they view nicely +DEFAULT_MACRO VISUALIZER_FEATURE_FILE $(WORKSPACE_TEMP_DIR)/$(SAFE_FFS_NAME).ffs +DEFAULT_MACRO VISUALIZER_CREATE_SPATIAL_INDEX NO +# [PR#45549] The Data Inspector will limit the maximum number of features +# it reads on WIN32, so we will correspondingly limit the number of +# features we record here using the MAX_FEATURES_TO_RECORD directive. +FACTORY_DEF * RecorderFactory FACTORY_NAME 4-mur_2_Recorder COMMAND_PARM_EVALUATION SINGLE_PASS INPUT FEATURE_TYPE __viewme__ _wb_termination_feature Yes @FeatureType(TERMINATOR_@Value(_wb_termination_xformer)) INPUT FEATURE_TYPE __viewme__ @FeatureType(@Value(__inspector_feature_type_attr__)) @RemoveAttributes(__inspector_feature_type_attr__) FEATURE_FILE "$(VISUALIZER_FEATURE_FILE)" STORE_SCANNED_SCHEMA YES NORMALIZE_LIST_ATTRIBUTES_ON_SCHEMA YES CREATE_SPATIAL_INDEX "$(VISUALIZER_CREATE_SPATIAL_INDEX)" INSPECTOR "$(VISUALIZER_CREATE_SPATIAL_INDEX)" FSC_SCHEMA fme_basename,varchar50 MODE RECORD STORE_SCANNED_METADATA RECORD_DIRECTLY_TO_DISK YES MAX_FEATURES_TO_RECORD WIN32 2000000 +# ------------------------------------------------------------------------- + +FACTORY_DEF * RoutingFactory FACTORY_NAME "Destination Feature Type Routing Correlator" COMMAND_PARM_EVALUATION SINGLE_PASS INPUT FEATURE_TYPE * ROUTE FME_GENERIC PointCloudCombiner_OUTPUT TO LAS __GO_TO_FINAL_OUTPUT_ROUTER__ multi_writer_id,0,SupplyAttributesENCODEDfme_template_feature_typeLAS01,EvaluateExpressionATTR_CREATE_EXPR__wb_out_feat_type__atValueopenparenfme_basenamecloseparen_CLEANLAS01 GEOMETRY FEATURE_TYPE_ATTRIBUTE __wb_out_feat_type__ OUTPUT ROUTED FEATURE_TYPE * OUTPUT NOT_ROUTED FEATURE_TYPE __nuke_me__ @Tcl2("FME_StatMessage 818059 [FME_GetAttribute fme_template_feature_type] 818060 818061 fme_warn") +# ------------------------------------------------------------------------- + +FACTORY_DEF * TeeFactory FACTORY_NAME "Final Output Nuker" INPUT FEATURE_TYPE __nuke_me__ + +# ------------------------------------------------------------------------- + +DEFAULT_MACRO FME_LAUNCH_VIEWER_APP NO +FACTORY_DEF * CreationFactory FACTORY_NAME VisualizerProcessor CREATE_AT_END OUTPUT FEATURE_TYPE __NUKEME__ @TCL("if {{$(FME_LAUNCH_VIEWER_APP)} == {YES}} { if [file exists {$(WORKSPACE_TEMP_DIR)}] {set files [glob -nocomplain -directory {$(WORKSPACE_TEMP_DIR)} -tails *.ffs]; if {[llength $files] == 1} { set theFile {$(WORKSPACE_TEMP_DIR)/}; append theFile [lindex $files 0]; eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042 --visualizer --single-application --delete-on-close --no-source-prompt -f FFS \042$theFile\042 & \175; } elseif { [llength $files] == 0 } { catch { file delete -force {$(WORKSPACE_TEMP_DIR)} }; } else { set filesNoExt {}; set lastfile {}; foreach {fileName} [lsort $files] { set fileNoExt [string trimright $fileName {.ffs}]; if [regexp {(.*)_[0-9]*$} $fileNoExt wholething fileNoExtBase] { if { $fileNoExtBase == $lastfile } { continue } }; set lastfile $fileNoExt; lappend filesNoExt $fileNoExt }; eval FME_Execute System \173\042$(FME_HOME_UNIX)/fmedatainspector\042 --visualizer --single-application --delete-on-close --no-source-prompt -d {$(WORKSPACE_TEMP_DIR)} -a ffs -f FFS $filesNoExt & \175; }; }; }; ") +FACTORY_DEF * TeeFactory FACTORY_NAME VisualizerCleaner INPUT FEATURE_TYPE __NUKEME__ +# ------------------------------------------------------------------------- +LAS_2_DEF LAS01 diff --git a/TASK-4RAS/image/description b/TASK-4RAS/image/description index 2db40a0..9bde5eb 100644 --- a/TASK-4RAS/image/description +++ b/TASK-4RAS/image/description @@ -1 +1 @@ -mixed-models.jpg : illustration of mixed models in the 4D plateform (LIADR, INTERLIS, Mesh) +mixed-models.jpg : illustration of mixed models in the 4D plateform (LIADR, INTERLIS, Mesh) diff --git a/TASK-DIFF/image/asymetric-illustration.svg b/TASK-DIFF/image/asymetric-illustration.svg index 41c8a12..c58cac4 100644 --- a/TASK-DIFF/image/asymetric-illustration.svg +++ b/TASK-DIFF/image/asymetric-illustration.svg @@ -1,709 +1,709 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - Time - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + Time + + + + + + + + + + + + + + + + + + + diff --git a/TASK-DIFF/image/separator.gif b/TASK-DIFF/image/separator.gif deleted file mode 100644 index 4d41cdcde084632d5e78d87f4dd08a99362f313e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1942 zcmV;H2Wj|6Nk%w1VE_SW0q0%-000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^s6Va%Ew3Wn>_CX>@2HM@dak03rDV0SW;A04x9i00001XaN8S{s8?6 z97wRB!Gj1BDqP60p~Hs|BTAe|v7*I`7&B_z$g!ixk03*e97(dI$&)Bks$9vkrOTHv zW6GRKv!>0PICJXU$+M@=pFo2O9ZIyQ(W6L{DqYI7sne%Wqe`7hwW`&tShH%~%C)Q4 zuVBN99ZR;X*|TWVs$I*rt=qS7(BTJr4xw7TUm@{kM%(=7Y&!9t#9!C>oFt6t5zwd>cgW6PdRySDAyxO3~? z&AYen-@tNG7S|l1w(~o_zLMrk;KVDkz_T4r=J3ZWfB@qKt~EXrquq z`e>w-9y)2InEH8XrkvinX{VsV`Dv)6ra5YIr>+G}8M(b>;$nq)ewb)X-EUDOb3$3<(G3)KP z;Pxf%xZRe^*SY9ktL|Rxwj1rcdc`a6v-IX=@4e0Di`TyV`g<3^_X=zm!SWhh7sBl- ztR=Vn&b#Zjp++omsMYRi@wXF)3-QMNc5Lp)AUix4!|0kU7s}*{ye`Qbs~i{0-pULY z&FQ)fFU%I({1(pH>Rd0+5&P^G(C!MYFVO)j{V$y$M=f>3bXGg{)mU>Jr`1_^J$0R2 zdo6a)RZ|S-*l0Jswb^f`?RLs#dmQK6bO*h*+-KLVH~zkHk39F@fP>Apn}7%2_sf45 zUbog=bJCx`RHAPF1hHar(XKgr?-B! z>YTGK`|Pg|4E61<-+j5`ykkwf>9z-7a_$H3Zv5BCFU)koPU~K=)JC_3w6xW;b^XP@ z4xTCV7<-Q?_}w?oDfyjdj3@fRieD-FnW}#${KUFXDgBkoZzul8+8-(ZkuVC>YE!rHBngdx=61aVkH;w39qVlw<;pMogFJrS{po^l})Bft7z6diF`B82W>l3J(`dvsvN4Gkd?TXJC`VVh cv5vmeAs#Jt$31Q_j(*fs9|IXip9BN|J0wB_kN^Mx diff --git a/TASK-DIFF/index.html b/TASK-DIFF/index.html index f48bdf9..4680a90 100644 --- a/TASK-DIFF/index.html +++ b/TASK-DIFF/index.html @@ -491,10 +491,6 @@

            Task Context : Difference DetectionAs one can see, AND convolutions allow detecting, through the black spots, large area of structural changes between the two times and also, with more care, allow guessing smaller differences. Nevertheless, reading and interpreting such representation remains complex for users.

            The goal of this task is then to tackle these two drawbacks, allowing the platform to detect changes not only for point-based models but also for vector-based models and to implement a variation of the XOR operator for point-based models allowing to efficiently highlight the structural evolution. The task consists then in the implementation, testing and validation of a difference detection algorithm suitable for any type of model and to conduct a formal analysis on the best rendering techniques.

            -
            - -
            -

            Methodology

            A step by step methodology is defined to address the problem of difference detection in the platform. In a first phase, the algorithm will be developed and validated on vector-based models as follows :

              @@ -545,10 +541,6 @@

              Methodology

            In addition, the development of difference detection algorithm has to be conducted keeping in mind the possible future evolutions of the platform such as addition of layers (separation of data), implementation of a multi-scale approach of the time dimension and addition of raster data in the platform.

            -
            - -
            -

            First Phase : Synthetic Variations

            In order to implements the vector-based difference detection algorithm, sets of data are considered as base on which synthetic differences are applied to simulate the evolution of the territory. This approach allows focusing on well controlled data to formally benchmark the results of the implemented algorithm. Experiments are conducted using these data to formally evaluate the performance of the developed algorithm.

            Selected Resources and Models

            @@ -782,10 +774,6 @@

            Conclusion : First PhaseThe user-based experiments showed that using the platform interface, a human can significantly outperform the result of a naive automated process operating on the models themselves. The experiments showed that the user is able to efficiently search and find through space and time the evolutions of the territory appearing in the data.

            Of course, as the model size and complexity increases, the user-driven interface starts to show its limits. In such a case, the process-based experiments showed that automated processes can take over these more complicated searches through methods allowing performing exhaustive detection over wide models in a matter of several minutes.

            At this point, the developments and validations of the algorithm, and its variations, were conducted on synthetic modifications introduced in models using controlled procedures. The next phase focuses on formal data extracted from land registers.

            -
            - -
            -

            Second Phase : True Variations

            In this second phase, also dedicated to vector-based models, the focus is set on applying the developed difference detection algorithm on true land register models. Two sets of data are considered in order to address short-term and long-term difference detection.

            Selected Resources and Models

            @@ -1014,10 +1002,6 @@

            Conclusion : Second PhaseIndeed, on the Geneva models, a large amount of differences is detected even on a relative short period of time (two years). In addition to the regular updates, following the territory evolution, a large amount of corrections is made to keep the model in the correct reference frame. The Swiss federal system can also add complexity, as all Cantons have to align themselves on a common set of expectations.

            In such a case, the difference detection turned out to be an interesting tool to understand and follows the corrections made to the model in addition to the regular updates. On the Geneva case, we illustrated that, by detecting it in the difference model, the correction on the coordinates frame on large pieces of the territory. This shows how the difference detection can be seen as a service that can help to keep track of the life of the model by detecting and checking these type of modifications.

            As a result, difference detection can be a tool for the user of the land register but can also be a tool for the land register authorities themselves. The difference models can be used to check and audit the evolution of the models, helping the required follow-up on the applied correction and updates.

            -
            - -
            -

            Third Phase : Point-Based Models

            In this third and last phase, the developed algorithm for difference detection on vector models is tested on point-based ones. As mentioned in the introduction, the platform was already implementing logical operators allowing comparing point-based models across time. As illustrated in the introduction, only the AND operator allowed emphasizing differences, but rendering them as missing part of the composite models. It was then difficult for the user to determine and analyze those differences.

            The goal of this last phase is to determine in which extend the developed algorithm is able to improve the initial results of point-based logical operators and how it can be adapted to provide better detection of differences.

            @@ -1269,20 +1253,12 @@

            Third PhaseSynthesis

            As a synthesis, it is clear that models are carrying a large amount of richness themselves, that is already a challenge to exploit, but it is also clear that a large amount of information can be found between the versions of the models. The difference detection algorithm brings a first tool that demonstrate the ability to reach and start to exploit these informations.

            More than the content of the models itself, the understanding of the evolution of this content is a major topic especially in the field of geodata as they represent, transcript, the evolution of the surveyed territory. It then appears clear that being able to reach and exploit the information contained in-between the models is a major advantage as it allows understanding what are these models, that is four dimensional objects.

            -
            - -
            -

            Perspectives

            Many perspectives are opened following the implementation and analysis of the difference detection. Several perspectives, mostly technical, are presented here as a final section.

            In the first place, as raster are entering the set of data that can be injected in the platform, evolution of the difference detection could be applied to the platform, taking advantage of the evolution of machine learning. The possibility of detected differences in images could lead to very interesting perspective through the data communication features of the platform.

            Another perspective could be to allow the platform to separate the data into formal layers, the separation being only currently ensure by type and times. Splitting data into layers would allow applying difference detection in a much more controlled manner, leading to difference models focused on very specific elements of the model temporal evolution.

            The addition of layer could also be the starting point to the notion of data convolution micro language. Currently, data communication and difference detection only apply through the specification of two different and parallel navigation time. The users, or processes, have to specify each of the two time position in order to obtain the mixed of differences models they need.

            An interesting evolution would be to replace these two navigation time by a small and simple micro language allowing the user to compare more than two times in a more complex manner. This could also benefit from data separation through layer. Such micro language could allow to compare two, three or more models, or layers, and would also open the access the mixed models of differences models such as comparing the difference detection between point-based and vector-based models, which would then be a comparison of a comparison.

            -
            - -
            -

            Reproduction Resources

            To reproduce the presented experiments, the STDL 4D framework has to be used and can be found here :

              @@ -1335,10 +1311,6 @@

              Reproduction Resources

            You can contact STDL for any question regarding the reproduction of the presented results.

            -
            - -
            -

            Auxiliary Developments & Corrections

            In addition to the main developments made, some additional scripts and other corrections have been made to solve auxiliary problems or to improve the code according to the developed features during this task. The auxiliary developments are summarized here :

              @@ -1373,10 +1345,6 @@

              Auxiliary Developments & Correct

              Developments of various scripts for plots and figures creations.

            -
            - -
            -

            References

            [1] REFRAME, SwissTopo, https://www.swisstopo.admin.ch/de/karten-daten-online/calculation-services.html

            diff --git a/TASK-IDET/image/separator.gif b/TASK-IDET/image/separator.gif deleted file mode 100644 index 4d41cdcde084632d5e78d87f4dd08a99362f313e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 1942 zcmV;H2Wj|6Nk%w1VE_SW0q0%-000010RaL60s{jB1Ox;H1qB8M1_uWR2nYxX2?+`c z3JVJh3=9kn4Gj(s4i66x5D*X%5fKs+5)%^>6ciK{6%`g178e&67#J8C85tTH8XFrM z92^`S9UUGX9v>ecARr(iAt53nA|oRsBqSsyB_$>%CMPE+C@3f?DJd!{Dl021EG#T7 zEiEoCE-x=HFfcGNF)=bSGBYzXG&D3dH8nOiHa9mnI5;>tIXOByIy*Z%JUl!-Jv}}? zK0iM{KtMo2K|w-7LPJACL_|bIMMXwNMn^|SNJvOYNl8jdN=r*iOiWBoO-)WtPESuy zP*6}&QBhJ-Qd3h?R8&+|RaI72R##V7SXfwDSy@_IT3cINTwGjTU0q&YUSD5dU|?Wj zVPRroVq;@tWMpJzWo2e&W@l$-XlQ6@X=!R|YHMq2Y;0_8ZEbFDZf|dIaBy&OadC2T za&vQYbaZreb#-=jc6WDoczAeud3kzzdV70&e0+R;eSLm@et&;|fPjF3fq{a8f`fyD zgoK2Jg@uNOhKGlTh=_=ZiHVAeii?YjjEszpjg5|uj*pLzkdTm(k&%*;l9Q8@l$4Z} zm6ev3mY0{8n3$NEnVFiJnwy)OoSdAUot>VZo}ZteprD|kp`oIpqNAguq@<*!rKP5( zrl+T;sHmu^si~@}s;jH3tgNi9t*x%EuCK4Ju&}VPv9YqUva_?Zw6wIfwY9dkwzs#p zxVX5vxw*Q!y1To(yu7@dCU$jHda z$;ryf%FD~k%*@Qq&CSlv&d<-!(9qD)(b3Y<($mw^)YR0~)z#M4*4Nk9*x1lt)=I7_<=;-L_>FMg~>g((4 z?Ck9A?d|UF?(gsK@bK{Q@$vHV^7Hfa^z`)g_4W4l_V@Sq`1ttw`T6?#`uqF){QUg= z{r&#_{{R2~A^s6Va%Ew3Wn>_CX>@2HM@dak03rDV0SW;A04x9i00001XaN8S{s8?6 z97wRB!Gj1BDqP60p~Hs|BTAe|v7*I`7&B_z$g!ixk03*e97(dI$&)Bks$9vkrOTHv zW6GRKv!>0PICJXU$+M@=pFo2O9ZIyQ(W6L{DqYI7sne%Wqe`7hwW`&tShH%~%C)Q4 zuVBN99ZR;X*|TWVs$I*rt=qS7(BTJr4xw7TUm@{kM%(=7Y&!9t#9!C>oFt6t5zwd>cgW6PdRySDAyxO3~? z&AYen-@tNG7S|l1w(~o_zLMrk;KVDkz_T4r=J3ZWfB@qKt~EXrquq z`e>w-9y)2InEH8XrkvinX{VsV`Dv)6ra5YIr>+G}8M(b>;$nq)ewb)X-EUDOb3$3<(G3)KP z;Pxf%xZRe^*SY9ktL|Rxwj1rcdc`a6v-IX=@4e0Di`TyV`g<3^_X=zm!SWhh7sBl- ztR=Vn&b#Zjp++omsMYRi@wXF)3-QMNc5Lp)AUix4!|0kU7s}*{ye`Qbs~i{0-pULY z&FQ)fFU%I({1(pH>Rd0+5&P^G(C!MYFVO)j{V$y$M=f>3bXGg{)mU>Jr`1_^J$0R2 zdo6a)RZ|S-*l0Jswb^f`?RLs#dmQK6bO*h*+-KLVH~zkHk39F@fP>Apn}7%2_sf45 zUbog=bJCx`RHAPF1hHar(XKgr?-B! z>YTGK`|Pg|4E61<-+j5`ykkwf>9z-7a_$H3Zv5BCFU)koPU~K=)JC_3w6xW;b^XP@ z4xTCV7<-Q?_}w?oDfyjdj3@fRieD-FnW}#${KUFXDgBkoZzul8+8-(ZkuVC>YE!rHBngdx=61aVkH;w39qVlw<;pMogFJrS{po^l})Bft7z6diF`B82W>l3J(`dvsvN4Gkd?TXJC`VVh cv5vmeAs#Jt$31Q_j(*fs9|IXip9BN|J0wB_kN^Mx diff --git a/TASK-IDET/index.html b/TASK-IDET/index.html index 2d186eb..cc36724 100644 --- a/TASK-IDET/index.html +++ b/TASK-IDET/index.html @@ -360,10 +360,6 @@

            IntroductionA generic framework was developed within the STDL, allowing the usage of state-of-the-art machine learning methods to detect objects in aerial images. Such framework allows one to leverage aerial images e.g. to provide valuable hints towards the update of cadastral information. At least as far as Switzerland is concerned, high-resolution (< 30 cm Ground Sample Distance) are acquired at the cantonal and federal scales on a regular basis. An inventory of the STDL's applications will be provided at the end of this article.

            The STDL's object detection framework is powered at its core by Detectron2, a Python library developed by the Facebook Artificial Intelligence Research group and released under the Apache 2.0 open-source license. Detectron2 includes methods to train models performing various tasks, object detection and instance segmentation to name a few. Specific pieces of code were written by the STDL to pre-process data to be input to Detectron2, as well as to post-process outputs and turn them into meaningful information for the projects being developed. More precisely, our developments enable the usage of Detectron2 with georeferenced images and labels.

            Our workflow goes through the steps described here-below.

            -
            - -
            -

            Workflow

            1. Tileset generation

            Typically, aerial coverages are made accessible through Web Services, publicly or privately. While making opaque to the user the server-side tiling and file-based structure, these Web Services can efficiently generate raster images on-demand depending on the parameters sent by the requesting client. These parameters include:

            @@ -476,10 +472,6 @@

            4. Assessment5. Iterate until results are satisfactory

            Several training sessions can be executed, using different values of the various hyper-parameters involved in the process. As a matter of fact, reviewing and improving ground truth data is also part of the hyper-parameter tuning (cf. "From Model-centric to Data-centric Artificial Intelligence''). Keeping track of the above-mentioned metrics across multiple realizations, eventually an optimal model should be found (at least, a local optimum).

            The exploration of the hyper-parameter space is a tedious task, which consumes time as well as human and computing resources. It can be performed in a more or less systematic/heuristic way, depending on the experience of the operator as well as on the features offered by the code. Typically, a partial exploration is enough to obtain acceptable results. Within the STDL team, it is customary to first perform some iterations until "decent scores" are obtained, then to involve beneficiaries and domain experts in the continuous evaluation and improvement of results, until satisfactory results are obtained. These exchanges between data scientists and domain experts are also key to raise both communities' awareness of the virtues and flaws of machine learning approaches.

            -
            - -
            -

            Use cases

            Here is a list of the successful applications of the object detection framework described in this article:

            -
            - -
            -

            Concluding remarks

            The STDL's object detection framework is still under development and receives updates as new use cases are tackled.

            diff --git a/assets/javascripts/config.js b/assets/javascripts/config.js index 8cf0d6b..ca24057 100644 --- a/assets/javascripts/config.js +++ b/assets/javascripts/config.js @@ -1,12 +1,12 @@ -window.MathJax = { - tex: { - inlineMath: [["\\(", "\\)"]], - displayMath: [["\\[", "\\]"]], - processEscapes: true, - processEnvironments: true - }, - options: { - ignoreHtmlClass: ".*|", - processHtmlClass: "arithmatex" - } +window.MathJax = { + tex: { + inlineMath: [["\\(", "\\)"]], + displayMath: [["\\[", "\\]"]], + processEscapes: true, + processEnvironments: true + }, + options: { + ignoreHtmlClass: ".*|", + processHtmlClass: "arithmatex" + } }; \ No newline at end of file diff --git a/search/search_index.json b/search/search_index.json index 4e3aecb..d753400 100644 --- a/search/search_index.json +++ b/search/search_index.json @@ -1 +1 @@ -{"config":{"indexing":"full","lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"Swiss Territorial Data Lab - STDL \u00b6 The STDL aims to promote collective innovation around the Swiss territory and its digital copy. It mainly explores the possibilities provided by data science to improve official land registering. A multidisciplinary team composed of cantonal, federal and academic partners is reinforced by engineers specialized in geographical data science to tackle the challenges around the management of territorial data-sets. The developed STDL platform codes and documentation are published under open licenses to allow partners and Swiss territory management actors to leverage the developed technologies. Exploratory Projects \u00b6 Exploratory projects in the field of the Swiss territorial data are conducted at the demand of institutions or actors of the Swiss territory. The exploratory projects are conducted with the supervision of the principal in order to closely analyze the answers to the specifications along the project. The goal of exploratory project aims to provide proof-of-concept and expertise in the application of technologies to Swiss territorial data. Automatic detection and observation of mineral extraction sites in Switzerland January 2024 Cl\u00e9mence Herny (ExoLabs) - Shanci Li (Uzufly) - Alessandro Cerioni (Etat de Gen\u00e8ve) - Roxane Pott (Swisstopo) Proposed by the Federal Office of Topography swisstopo - TASK-DQRY The study of the evolution of mineral extraction sites (MES) is primordial for the management of mineral resources and the assessment of their environmental impact. In this context, swisstopo has solicited the STDL to automate the vectorisation of MES over the years. This tedious task was previously carried out manually and was not regularly updated. Automatic object detection using a deep learning method was applied to SWISSIMAGE RGB orthophotos with a spatial resolution of 1.6 m px -1 . The trained model proved its ability to accurately detect MES, achieving a f1-score of 82%. Detection by inference was performed on images from 1999 to 2021, enabling us to track the evolution of potential MES over several years. Although the results are satisfactory, a careful examination of the detections must be carried out by experts to validate them as true MES. Despite this remaining manual work involved, the process is faster than a full manual vectorisation and can be used in the future to keep MES information up-to-date. Full article Dieback of beech trees: methodology for determining the health state of beech trees from airborne images and LiDAR point clouds August 2023 Clotilde Marmy (ExoLabs) - Gwena\u00eblle Salamin (ExoLabs) - Alessandro Cerioni (Canton of Geneva) - Roxane Pott (swisstopo) Proposed by the Republic and Canton of Jura - PROJ-HETRES Beech trees are sensitive to drought and repeated episodes can cause dieback. This issue affects the Jura forests requiring the development of new tools for forest management. In this project, descriptors for the health state of beech trees were derived from LiDAR point clouds, airborne images and satellite images to train a random forest predicting the health state per tree in a study area (5 km\u00b2) in Ajoie. A map with three classes was produced: healthy, unhealthy, dead. Metrics computed on the test dataset revealed that the model trained with all the descriptors has an overall accuracy up to 0.79, as well as the model trained only with descriptors derived from airborne imagery. When all the descriptors are used, the yearly difference of NDVI between 2018 and 2019, the standard deviation of the blue band, the mean of the NIR band, the mean of the NDVI, the standard deviation of the canopy cover and the LiDAR reflectance appear to be important descriptors. Full article Using spatio-temporal neighbor data information to detect changes in land use and land cover April 2023 Shanci Li (Uzufly) - Alessandro Cerioni (Canton of Geneva) - Clotilde Marmy (ExoLabs) - Roxane Pott (swisstopo) Proposed by the Swiss Federal Statistical Office - PROJ-LANDSTATS From 2020 on, the Swiss Federal Statistical Office started to update the land use/cover statistics over Switzerland for the fifth time. To help and lessen the heavy workload of the interpretation process, partially or fully automated approaches are being considered. The goal of this project was to evaluate the role of spatio-temporal neighbors in predicting class changes between two periods for each survey sample point. The methodolgy focused on change detection, by finding as many unchanged tiles as possible and miss as few changed tiles as possible. Logistic regression was used to assess the contribution of spatial and temporal neighbors to the change detection. While time deactivation and less-neighbors have a 0.2% decrease on the balanced accuracy, the space deactivation causes 1% decrease. Furthermore, XGBoost, random forest (RF), fully convolutional network (FCN) and recurrent convolutional neural network (RCNN) performance are compared by the means of a custom metric, established with the help of the interpretation team. For the spatial-temporal module, FCN outperforms all the models with a value of 0.259 for the custom metric, whereas the logistic regression indicates a custom metrics of 0.249. Then, FCN and RF are tested to combine the best performing model with the model trained by OFS on image data only. When using temporal-spatial neighors and image data as inputs, the final integration module achieves 0.438 in custom metric, against 0.374 when only the the image data is used.It was conclude that temporal-spatial neighbors showed that they could light the process of tile interpretation. Full article Classification of road surfaces March 2023 Gwena\u00eblle Salamin (swisstopo) - Cl\u00e9mence Herny (Exolabs) - Roxane Pott (swisstopo) - Alessandro Cerioni (Canton of Geneva) Proposed by the Federal Office of Topography swisstopo - PROJ-ROADSURF The Swiss road network extends over 83\u2019274 km. Information about the type of road surface is useful not only for the Swiss Federal Roads Office and engineering companies, but also for cyclists and hikers. Currently, the data creation and update is entirely done manually at the Swiss Federal Office of Topography. This is a time-consuming and methodical task, potentially suitable to automation by data science methods. The goal of this project is classifying Swiss roads according to their surface type, natural or artificial. We first searched for statistical differences between these two classes, in order to then perform supervised classification based on machine-learning methods. As we could not find any discriminant feature, we used deep learning methods. Full article Tree Detection from Point Clouds for the Canton of Geneva March 2022 Alessandro Cerioni (Canton of Geneva) - Flann Chambers (University of Geneva) - Gilles Gay des Combes (CJBG - City of Geneva and University of Geneva) - Adrian Meyer (FHNW) - Roxane Pott (swisstopo) Proposed by the Canton of Geneva - PROJ-TREEDET Trees are essential assets, in urban context among others. Since several years, the Canton of Geneva maintains a digital inventory of isolated (or \"urban\") trees. This project aimed at designing a methodology to automatically update Geneva's tree inventory, using high-density LiDAR data and off-the-shelf software. Eventually, only the sub-task of detecting and geolocating trees was explored. Comparisons against ground truth data show that the task can be more or less tricky depending on how sparse or dense trees are. In mixed contexts, we managed to reach an accuracy of around 60%, which unfortunately is not high enough to foresee a fully unsupervised process. Still, as discussed in the concluding section there may be room for improvement. Full article Detection of thermal panels on canton territory to follow renewable energy deployment February 2022 Nils Hamel (UNIGE) - Huriel Reichel (FHNW) Project in collaboration with Geneva and Neuch\u00e2tel States - TASK-TPNL Deployment of renewable energy becomes a major stake in front of our societies challenges. This imposes authorities and domain expert to promote and to demonstrate the deployment of such energetic solutions. In case of thermal panels, politics ask domain expert to certify, along the year, of the amount of deployed surface. In front of such challenge, this project aims to determine to which extent data science can ease the survey of thermal panel installations deployment and how the work of domain expert can be eased. Full article Automatic detection of quarries and the lithology below them in Switzerland January 2022 Huriel Reichel (FHNW) - Nils Hamel (UNIGE) Proposed by the Federal Office of Topography swisstopo - TASK-DQRY Mining is an important economic activity in Switzerland and therefore it is monitored by the Confederation through swisstopo. To this points, the identification of quarries has been mode manually, which even being done with very high quality, unfortunately does not follow the constant changing and updating pattern of these features. For this reason, swisstopo contacted the STDL to automatically detect quarries through the whole country. The training was done using SWISSIMAGE with 10cm spatial resolution and the Deep Learning Framework from the STDL. Moreover there were two iteration steps with the domain expert which included the manual correction of detection for new training. Interaction with the domain expert was very relevant for final results and summing to his appreciation, an f1-score of 85% was obtained in the end, which due to peculiar characteristics of quarries can be considered an optimal result. Full article Updating the \u00abCultivable Area\u00bb Layer of the Agricultural Office, Canton of Thurgau June 2021 Adrian Meyer (FHNW) - Pascal Salath\u00e9 (FHNW) Proposed by the Canton of Thurgau - PROJ-TGLN The Cultivable agricultural area layer (\"LN, Landwirtschaftliche Nutzfl\u00e4che\") is a GIS vector product maintained by the cantonal agricultural offices and serves as the key calculation index for the receipt of direct subsidy contributions to farms. The canton of Thurgau requested a spatial vector layer indicating locations and area consumption extent of the largest silage bale deposits intersecting with the known LN area, since areas used for silage bale storage are not eligible for subsidies. Having detections of such objects readily available greatly reduces the workload of the responsible official by directing the monitoring process to the relevant hotspots. Ultimately public economical damage can be prevented which would result from the payout of unjustified subsidy contributions. Full article Swimming Pool Detection for the Canton of Thurgau April 2021 Adrian Meyer (FHNW) - Alessandro Cerioni (Canton of Geneva) Proposed by the Canton of Thurgau - PROJ-TGPOOL The Canton of Thurgau entrusted the STDL with the task of producing swimming pool detections over the cantonal area. Specifically interesting was to leverage the ground truth annotation data from the Canton of Geneva to generate a predictive model in Thurgau while using the publicly available SWISSIMAGE aerial imagery datasets provided by swisstopo. The STDL object detection framework produced highly accurate predictions of swimming pools in Thurgau and thereby proved transferability from one canton to another without having to manually redigitize annotations. These promising detections showcase the highly useful potential of this approach by greatly reducing the need of repetitive manual labour. Full article Completion of the federal register of buildings and dwellings February 2021 Nils Hamel (UNIGE) - Huriel Reichel (swisstopo) Proposed by the Federal Statistical Office - TASK-REGBL The Swiss Federal Statistical Office is in charge of the national Register of of Buildings and Dwellings (RBD) which keep tracks of every existing building in Switzerland. Currently, the register is being completed with building in addition to regular dwellings to offer a reliable and official source of information. The completion of the register introduced issue dues to missing information and their difficulty to be collected. The construction years of the building is one missing information for large amount of register entries. The Statistical Office mandated the STDL to investigate on the possibility to use the Swiss National Maps to extract this missing information using an automated process. A research was conducted in this direction with the development of a proof-of-concept and a reliable methodology to assess the obtained results. Full article Swimming Pool Detection from Aerial Images over the Canton of Geneva January 2021 Alessandro Cerioni (Canton of Geneva) - Adrian Meyer (FHNW) Proposed by the Canton of Geneva - PROJ-GEPOOL Object detection is one of the computer vision tasks which can benefit from Deep Learning methods. The STDL team managed to leverage state-of-art methods and already existing open datasets to first build a swimming pool detector, then to use it to potentially detect unregistered swimming pools over the Canton of Geneva. Despite the success of our approach, we will argue that domain expertise still remains key to post-process detections in order to tell objects which are subject to registration from those which aren't. Pairing semi-automatic Deep Learning methods with domain expertise turns out to pave the way to novel workflows allowing administrations to keep cadastral information up to date. Full article Difference models applied to the land register November 2020 Nils Hamel (UNIGE) - Huriel Reichel (swisstopo) Project scheduled in the STDL research roadmap - TASK-DTRK Being able to track modifications in the evolution of geographical datasets is one important aspect in territory management, as a large amount of information can be extracted out of differences models. Differences detection can also be a tool used to assess the evolution of a geographical model through time. In this research project, we apply differences detection on INTERLIS models of the official Swiss land registers in order to emphasize and follow its evolution and to demonstrate that change in reference frames can be detected and assessed. Full article Research Developments \u00b6 Research developments are conducted aside of the research projects to provide a framework of tools and expertise around the Swiss territorial data and related technologies. The research developments are conducted according to the research plan established by the data scientists and validated by the steering committee. OBJECT DETECTION FRAMEWORK November 2021 Alessandro Cerioni (Canton of Geneva) - Cl\u00e9mence Herny (Exolabs) - Adrian Meyer (FHNW) - Gwena\u00eblle Salamin (Exolabs) Project scheduled in the STDL research roadmap - TASK-IDET This strategic component of the STDL consists of the automated analysis of geospatial images using deep learning while providing practical applications for specific use cases. The overall goal is the extraction of vectorized semantic information from remote sensing data. The involved case studies revolve around concrete object detection use cases deploying modern machine learning methods and utilizing a multitude of available datasets. The goal is to arrive at a prototypical platform for object detection which is highly useful not only for cadastre specialists and authorities but also for stakeholders at various contact points in society. Full article AUTOMATIC DETECTION OF CHANGES IN THE ENVIRONMENT November 2020 Nils Hamel (UNIGE) Project scheduled in the STDL research roadmap - TASK-DIFF Developed at EPFL with the collaboration of Cadastre Suisse to handle large scale geographical models of different nature, the STDL 4D platform offers a robust and efficient indexation methodology allowing to manage storage and access to large-scale models. In addition to spatial indexation, the platform also includes time as part of the indexation, allowing any area to be described by models in both spatial and temporal dimensions. In this development project, the notion of model temporal derivative is explored and proof-of-concepts are implemented in the platform. The goal is to demonstrate that, in addition to their formal content, models coming with different temporal versions can be derived along the time dimension to compute difference models. Such proof-of-concept is developed for both point cloud and vectorial models, demonstrating that the indexation formalism of the platform is able to ease considerably the computation of difference models. This research project demonstrates that the time dimension can be fully exploited in order to access the data it holds. Full article Steering Committee \u00b6 The steering committee of the Swiss Territorial Data Lab is composed of Swiss public administrations bringing their expertise and competences to guide the conducted projects and developments. Members of the STDL steering committee Submitting a project \u00b6 To submit a project to the STDL, simply fill this form . To contact the STDL, please write an email to info@stdl.ch . We will reply as soon as possible!","title":"Homepage"},{"location":"#swiss-territorial-data-lab-stdl","text":"The STDL aims to promote collective innovation around the Swiss territory and its digital copy. It mainly explores the possibilities provided by data science to improve official land registering. A multidisciplinary team composed of cantonal, federal and academic partners is reinforced by engineers specialized in geographical data science to tackle the challenges around the management of territorial data-sets. The developed STDL platform codes and documentation are published under open licenses to allow partners and Swiss territory management actors to leverage the developed technologies.","title":"Swiss Territorial Data Lab - STDL"},{"location":"#exploratory-projects","text":"Exploratory projects in the field of the Swiss territorial data are conducted at the demand of institutions or actors of the Swiss territory. The exploratory projects are conducted with the supervision of the principal in order to closely analyze the answers to the specifications along the project. The goal of exploratory project aims to provide proof-of-concept and expertise in the application of technologies to Swiss territorial data. Automatic detection and observation of mineral extraction sites in Switzerland January 2024 Cl\u00e9mence Herny (ExoLabs) - Shanci Li (Uzufly) - Alessandro Cerioni (Etat de Gen\u00e8ve) - Roxane Pott (Swisstopo) Proposed by the Federal Office of Topography swisstopo - TASK-DQRY The study of the evolution of mineral extraction sites (MES) is primordial for the management of mineral resources and the assessment of their environmental impact. In this context, swisstopo has solicited the STDL to automate the vectorisation of MES over the years. This tedious task was previously carried out manually and was not regularly updated. Automatic object detection using a deep learning method was applied to SWISSIMAGE RGB orthophotos with a spatial resolution of 1.6 m px -1 . The trained model proved its ability to accurately detect MES, achieving a f1-score of 82%. Detection by inference was performed on images from 1999 to 2021, enabling us to track the evolution of potential MES over several years. Although the results are satisfactory, a careful examination of the detections must be carried out by experts to validate them as true MES. Despite this remaining manual work involved, the process is faster than a full manual vectorisation and can be used in the future to keep MES information up-to-date. Full article Dieback of beech trees: methodology for determining the health state of beech trees from airborne images and LiDAR point clouds August 2023 Clotilde Marmy (ExoLabs) - Gwena\u00eblle Salamin (ExoLabs) - Alessandro Cerioni (Canton of Geneva) - Roxane Pott (swisstopo) Proposed by the Republic and Canton of Jura - PROJ-HETRES Beech trees are sensitive to drought and repeated episodes can cause dieback. This issue affects the Jura forests requiring the development of new tools for forest management. In this project, descriptors for the health state of beech trees were derived from LiDAR point clouds, airborne images and satellite images to train a random forest predicting the health state per tree in a study area (5 km\u00b2) in Ajoie. A map with three classes was produced: healthy, unhealthy, dead. Metrics computed on the test dataset revealed that the model trained with all the descriptors has an overall accuracy up to 0.79, as well as the model trained only with descriptors derived from airborne imagery. When all the descriptors are used, the yearly difference of NDVI between 2018 and 2019, the standard deviation of the blue band, the mean of the NIR band, the mean of the NDVI, the standard deviation of the canopy cover and the LiDAR reflectance appear to be important descriptors. Full article Using spatio-temporal neighbor data information to detect changes in land use and land cover April 2023 Shanci Li (Uzufly) - Alessandro Cerioni (Canton of Geneva) - Clotilde Marmy (ExoLabs) - Roxane Pott (swisstopo) Proposed by the Swiss Federal Statistical Office - PROJ-LANDSTATS From 2020 on, the Swiss Federal Statistical Office started to update the land use/cover statistics over Switzerland for the fifth time. To help and lessen the heavy workload of the interpretation process, partially or fully automated approaches are being considered. The goal of this project was to evaluate the role of spatio-temporal neighbors in predicting class changes between two periods for each survey sample point. The methodolgy focused on change detection, by finding as many unchanged tiles as possible and miss as few changed tiles as possible. Logistic regression was used to assess the contribution of spatial and temporal neighbors to the change detection. While time deactivation and less-neighbors have a 0.2% decrease on the balanced accuracy, the space deactivation causes 1% decrease. Furthermore, XGBoost, random forest (RF), fully convolutional network (FCN) and recurrent convolutional neural network (RCNN) performance are compared by the means of a custom metric, established with the help of the interpretation team. For the spatial-temporal module, FCN outperforms all the models with a value of 0.259 for the custom metric, whereas the logistic regression indicates a custom metrics of 0.249. Then, FCN and RF are tested to combine the best performing model with the model trained by OFS on image data only. When using temporal-spatial neighors and image data as inputs, the final integration module achieves 0.438 in custom metric, against 0.374 when only the the image data is used.It was conclude that temporal-spatial neighbors showed that they could light the process of tile interpretation. Full article Classification of road surfaces March 2023 Gwena\u00eblle Salamin (swisstopo) - Cl\u00e9mence Herny (Exolabs) - Roxane Pott (swisstopo) - Alessandro Cerioni (Canton of Geneva) Proposed by the Federal Office of Topography swisstopo - PROJ-ROADSURF The Swiss road network extends over 83\u2019274 km. Information about the type of road surface is useful not only for the Swiss Federal Roads Office and engineering companies, but also for cyclists and hikers. Currently, the data creation and update is entirely done manually at the Swiss Federal Office of Topography. This is a time-consuming and methodical task, potentially suitable to automation by data science methods. The goal of this project is classifying Swiss roads according to their surface type, natural or artificial. We first searched for statistical differences between these two classes, in order to then perform supervised classification based on machine-learning methods. As we could not find any discriminant feature, we used deep learning methods. Full article Tree Detection from Point Clouds for the Canton of Geneva March 2022 Alessandro Cerioni (Canton of Geneva) - Flann Chambers (University of Geneva) - Gilles Gay des Combes (CJBG - City of Geneva and University of Geneva) - Adrian Meyer (FHNW) - Roxane Pott (swisstopo) Proposed by the Canton of Geneva - PROJ-TREEDET Trees are essential assets, in urban context among others. Since several years, the Canton of Geneva maintains a digital inventory of isolated (or \"urban\") trees. This project aimed at designing a methodology to automatically update Geneva's tree inventory, using high-density LiDAR data and off-the-shelf software. Eventually, only the sub-task of detecting and geolocating trees was explored. Comparisons against ground truth data show that the task can be more or less tricky depending on how sparse or dense trees are. In mixed contexts, we managed to reach an accuracy of around 60%, which unfortunately is not high enough to foresee a fully unsupervised process. Still, as discussed in the concluding section there may be room for improvement. Full article Detection of thermal panels on canton territory to follow renewable energy deployment February 2022 Nils Hamel (UNIGE) - Huriel Reichel (FHNW) Project in collaboration with Geneva and Neuch\u00e2tel States - TASK-TPNL Deployment of renewable energy becomes a major stake in front of our societies challenges. This imposes authorities and domain expert to promote and to demonstrate the deployment of such energetic solutions. In case of thermal panels, politics ask domain expert to certify, along the year, of the amount of deployed surface. In front of such challenge, this project aims to determine to which extent data science can ease the survey of thermal panel installations deployment and how the work of domain expert can be eased. Full article Automatic detection of quarries and the lithology below them in Switzerland January 2022 Huriel Reichel (FHNW) - Nils Hamel (UNIGE) Proposed by the Federal Office of Topography swisstopo - TASK-DQRY Mining is an important economic activity in Switzerland and therefore it is monitored by the Confederation through swisstopo. To this points, the identification of quarries has been mode manually, which even being done with very high quality, unfortunately does not follow the constant changing and updating pattern of these features. For this reason, swisstopo contacted the STDL to automatically detect quarries through the whole country. The training was done using SWISSIMAGE with 10cm spatial resolution and the Deep Learning Framework from the STDL. Moreover there were two iteration steps with the domain expert which included the manual correction of detection for new training. Interaction with the domain expert was very relevant for final results and summing to his appreciation, an f1-score of 85% was obtained in the end, which due to peculiar characteristics of quarries can be considered an optimal result. Full article Updating the \u00abCultivable Area\u00bb Layer of the Agricultural Office, Canton of Thurgau June 2021 Adrian Meyer (FHNW) - Pascal Salath\u00e9 (FHNW) Proposed by the Canton of Thurgau - PROJ-TGLN The Cultivable agricultural area layer (\"LN, Landwirtschaftliche Nutzfl\u00e4che\") is a GIS vector product maintained by the cantonal agricultural offices and serves as the key calculation index for the receipt of direct subsidy contributions to farms. The canton of Thurgau requested a spatial vector layer indicating locations and area consumption extent of the largest silage bale deposits intersecting with the known LN area, since areas used for silage bale storage are not eligible for subsidies. Having detections of such objects readily available greatly reduces the workload of the responsible official by directing the monitoring process to the relevant hotspots. Ultimately public economical damage can be prevented which would result from the payout of unjustified subsidy contributions. Full article Swimming Pool Detection for the Canton of Thurgau April 2021 Adrian Meyer (FHNW) - Alessandro Cerioni (Canton of Geneva) Proposed by the Canton of Thurgau - PROJ-TGPOOL The Canton of Thurgau entrusted the STDL with the task of producing swimming pool detections over the cantonal area. Specifically interesting was to leverage the ground truth annotation data from the Canton of Geneva to generate a predictive model in Thurgau while using the publicly available SWISSIMAGE aerial imagery datasets provided by swisstopo. The STDL object detection framework produced highly accurate predictions of swimming pools in Thurgau and thereby proved transferability from one canton to another without having to manually redigitize annotations. These promising detections showcase the highly useful potential of this approach by greatly reducing the need of repetitive manual labour. Full article Completion of the federal register of buildings and dwellings February 2021 Nils Hamel (UNIGE) - Huriel Reichel (swisstopo) Proposed by the Federal Statistical Office - TASK-REGBL The Swiss Federal Statistical Office is in charge of the national Register of of Buildings and Dwellings (RBD) which keep tracks of every existing building in Switzerland. Currently, the register is being completed with building in addition to regular dwellings to offer a reliable and official source of information. The completion of the register introduced issue dues to missing information and their difficulty to be collected. The construction years of the building is one missing information for large amount of register entries. The Statistical Office mandated the STDL to investigate on the possibility to use the Swiss National Maps to extract this missing information using an automated process. A research was conducted in this direction with the development of a proof-of-concept and a reliable methodology to assess the obtained results. Full article Swimming Pool Detection from Aerial Images over the Canton of Geneva January 2021 Alessandro Cerioni (Canton of Geneva) - Adrian Meyer (FHNW) Proposed by the Canton of Geneva - PROJ-GEPOOL Object detection is one of the computer vision tasks which can benefit from Deep Learning methods. The STDL team managed to leverage state-of-art methods and already existing open datasets to first build a swimming pool detector, then to use it to potentially detect unregistered swimming pools over the Canton of Geneva. Despite the success of our approach, we will argue that domain expertise still remains key to post-process detections in order to tell objects which are subject to registration from those which aren't. Pairing semi-automatic Deep Learning methods with domain expertise turns out to pave the way to novel workflows allowing administrations to keep cadastral information up to date. Full article Difference models applied to the land register November 2020 Nils Hamel (UNIGE) - Huriel Reichel (swisstopo) Project scheduled in the STDL research roadmap - TASK-DTRK Being able to track modifications in the evolution of geographical datasets is one important aspect in territory management, as a large amount of information can be extracted out of differences models. Differences detection can also be a tool used to assess the evolution of a geographical model through time. In this research project, we apply differences detection on INTERLIS models of the official Swiss land registers in order to emphasize and follow its evolution and to demonstrate that change in reference frames can be detected and assessed. Full article","title":"Exploratory Projects"},{"location":"#research-developments","text":"Research developments are conducted aside of the research projects to provide a framework of tools and expertise around the Swiss territorial data and related technologies. The research developments are conducted according to the research plan established by the data scientists and validated by the steering committee. OBJECT DETECTION FRAMEWORK November 2021 Alessandro Cerioni (Canton of Geneva) - Cl\u00e9mence Herny (Exolabs) - Adrian Meyer (FHNW) - Gwena\u00eblle Salamin (Exolabs) Project scheduled in the STDL research roadmap - TASK-IDET This strategic component of the STDL consists of the automated analysis of geospatial images using deep learning while providing practical applications for specific use cases. The overall goal is the extraction of vectorized semantic information from remote sensing data. The involved case studies revolve around concrete object detection use cases deploying modern machine learning methods and utilizing a multitude of available datasets. The goal is to arrive at a prototypical platform for object detection which is highly useful not only for cadastre specialists and authorities but also for stakeholders at various contact points in society. Full article AUTOMATIC DETECTION OF CHANGES IN THE ENVIRONMENT November 2020 Nils Hamel (UNIGE) Project scheduled in the STDL research roadmap - TASK-DIFF Developed at EPFL with the collaboration of Cadastre Suisse to handle large scale geographical models of different nature, the STDL 4D platform offers a robust and efficient indexation methodology allowing to manage storage and access to large-scale models. In addition to spatial indexation, the platform also includes time as part of the indexation, allowing any area to be described by models in both spatial and temporal dimensions. In this development project, the notion of model temporal derivative is explored and proof-of-concepts are implemented in the platform. The goal is to demonstrate that, in addition to their formal content, models coming with different temporal versions can be derived along the time dimension to compute difference models. Such proof-of-concept is developed for both point cloud and vectorial models, demonstrating that the indexation formalism of the platform is able to ease considerably the computation of difference models. This research project demonstrates that the time dimension can be fully exploited in order to access the data it holds. Full article","title":"Research Developments"},{"location":"#steering-committee","text":"The steering committee of the Swiss Territorial Data Lab is composed of Swiss public administrations bringing their expertise and competences to guide the conducted projects and developments. Members of the STDL steering committee","title":"Steering Committee"},{"location":"#submitting-a-project","text":"To submit a project to the STDL, simply fill this form . To contact the STDL, please write an email to info@stdl.ch . We will reply as soon as possible!","title":"Submitting a project"},{"location":"PROJ-DQRY/","text":"Automatic Detection of Quarries and the Lithology below them in Switzerland \u00b6 Huriel Reichel (FHNW) - Nils Hamel (UNIGE) Supervision : Nils Hamel (UNIGE) - Raphael Rollier (swisstopo) Proposed by swisstopo - PROJ-DQRY June 2021 to January 2022 - Published on January 30th, 2022 Abstract : Mining is an important economic activity in Switzerland and therefore it is monitored by the Confederation through swisstopo. To this points, the identification of quarries has been made manually, which even being done with very high quality, unfortunately does not follow the constant changing and updating pattern of these features. For this reason, swisstopo contacted the STDL to automatically detect quarries through the whole country. The training was done using SWISSIMAGE with 10cm spatial resolution and the Deep Learning Framework from the STDL. Moreover there were two iteration steps with the domain expert which included the manual correction of detection for new training. Interaction with the domain expert was very relevant for final results and summing to his appreciation, an F1 Score of 85% was obtained in the end, which due to peculiar characteristics of quarries can be considered an optimal result. 1 - Introduction \u00b6 Mining is an important economic activity worldwide and this is also the case in Switzerland. The Confederation topographic office (swisstopo) is responsible for monitoring the presence of quarries and also the materials being explored. This is extremely relevant for planning the demand and shortage of explored materials and also their transportation through the country. As this of federal importance the mapping of these features is already done. Although this work is very detailed and accurate, quarries have a very characteristical updating pattern. Quarries can appear and disappear in a matter of a few months, in especial when they are relatively small, as in Switzerland. Therefore it is of interest of swisstopo to make an automatic detection of quarries in a way that it is also reproducible in time. A strategy offen offered by the Swiss Territorial Data Lab is the automatic detection of several objects in aerial imagery through deep learning, following our Object Detection Framework . In this case it is fully applicable as quarries in Switzerland are relatively small, so high resolution imagery is required, which is something our Neural Network has proven to tackle with mastery in past projects. This high resolution imagery is also reachable through SWISSIMAGE , aerial images from swisstopo that cover almost the whole country with a 10cm pixel size (GSD). Nevertheless, in order to train our neural network, and as it's usually the case in deep learning, several labelled images are required. These data work as ground truth so that the neural network \"learns\" what's the object to be detected and which should not. For this purpose, the work from the topographic landscape model ( TLM ) team of swisstopo has been of extreme importance. Among different surface features, quarries have been mapped all over Switzerland with a highly detailed scale. Although the high quality and precision of the labels from TLM, quarries are constantly changing, appearing and disappearing, and therefore the labels are not always synchronized with the images from SWISSIMAGE. This lack of of synchronization between these sets of data can be seen in Figure 1, where in the left one has the year of mapping of TLM and on the right the year of the SWISSIMAGE flights. Figure 1 : Comparison of TLM (left) and SWISSIMAGE (right) temporality. For this purpose, a two-times interaction was necessary with the domain expert. In order to have a ground truth that was fully synchronized with SWISSIMAGE we required two stages of training : one making use of the TLM data and a second one with a manual correction of the predicted labels from the first interaction. It is of crucial importance to state that this correction needed to be made by the domain expert so that he could carefully check each detection in pre-defined tiles. With that in hands, we could go further with a more trustworthy training. As stated, it is of interest of swisstopo to also identify the material being explored by every quarry. For that purpose, it was recommended the usage of the GeoCover dataset from swisstopo as well. This dataset a vector layer of the the geological cover of the whole Switzerland, which challenged us to cross the detector predictions with such vector information. In summary, the challenge of the STDL was to investigate to which extent is it possible to automatically detect quarries using Deep Learning considering their high update ratio using aerial imagery. 2 - Methodology \u00b6 First of all the \"area of interest\" must be identified. This is where the detection and training took place. In this case, a polygon of the whole Switzerland was used. After that, the area of interest is divided in several tiles of fixed size. This is then defining the slicing of SWISSIMAGE (given as WMS). For this study, tiles of different sizes were tested, being 500x500m tiles defined for final usage. Following the resolution of the images must be defined, which, again, after several tests, was defined as 512x512 pixels. For validation purposes the data is then split into Training, Validation and Testing. The training data-set is used inside the network for its learning; the validation is completely apart from training and used only to check results and testing is used for cross-validation. 70% of the data was used for training, 15% for validation and 15% for testing. To what concerns the labels, the ones from TLM were manually checked so that a group of approximately 250 labels with full synchronization with the SWISSIMAGE were found and recorded. Following, the first row training passes through the same framework from former STDL projects. We make use of a predictive Recursive-Convolutional Neural Network with ResNet-50 backbone provided by Detectron2 . A deeper explanation of the network functionality can be found here and here . Even with different parameters set, it was observed that predictions were including too much false positives, which were mainly made of snow. Most probably the reflectance of snow is similar to the one of quarries and this needed a special treatment. For this purpose, a filtering of the results was used. First of all the features were filtered based on the score values (0.9) and then by elevation, using the SRTM digital elevation model. As snow usually does not precipitate below around 1155 m, this was used as threshold. Finally an area threshold is also passed (using smallest predictions area) and predictions are merged. A more detailed description of how to operate this first filter can be seen here . Once several tests were performed, the new predictions were sent back to the domain expert for detailed revision with a rigid protocol. This included the removal of false positives and the inclusion of false negatives, mainly. This was performed by 4 different experts from swisstopo in 4 regions with the same amount of tiles to be analyzed. It is important to the state again the importance of domain expertise in this step, as a very careful and manual evaluation of what is and what is not a quarry must be made. Once the predictions were corrected, a new session of training was performed using different parameters. Once again, the same resolution and tile size were used as in the first iteration (512x512m tiles with 512x512 pixels of resolution), although this time a new filtering was developed. Very similar to the first one, but in a different order, allowing more aesthetical predictions in the end, something the domain expert was also carrying about. This procedure is summarized in figure 2. Figure 2 : Methodology applied for the detection of quarries and new training sessions. In the end, in order to also include the geological information of the detected quarries, a third layer resulting of the intersection of both the predictions and the GeoCover labels is created. This was done in a way that the final user can click to obtain both information on the quarry (when not a pure prediction) and the information of the geology/lithology on this part of the quarry. As a result, each resulting intersection poylgon contains both information from quarry and GeoCover. In order to evaluate the obtained results, the F1 Score was computed and also the final predictions were compared to the corrected labels from the domain expert side. This was done visually by acquiring the centroid of each quarry detected and by a heat-map, allowing one to detect the spatial pattern of detections. The heat-map was computed using 10'000 m radius and a 100 m pixel size. 3 - Results & Discussion \u00b6 In the first iteration, when the neural was trained with some labels of the TLM vector data, an optimal F1 score of approximately 0.78 was obtained. The figure 3 shows the behavior of the precision, recall and F1 score for the final model selected. Figure 3 : Precision, Recall and F1 score of the first iteration (using TLM data). Given the predictions resulting from the correction by the domain experts, there was an outstanding improve in the F1 score obtained, which was of approximately 0.85 in its optimal, as seen in figure 4. A total of 1265 were found in Switzerland after filtering. Figure 4 : Precision, Recall and F1 score of the second iteration (using data corrected by the domain expert). Figure 5 demonstrates some examples of detected quarries and this one can have some notion of the quality of the shape of the detections and how they mark the real-world quarries. Examples of false positives and false negatives, unfortunately still present in the detections are also shown. This is also an interesting demonstration of how some objects that are very similar to quarries, in the point of view of non-experts and how they may influence the results. These examples of errors are also an interesting indication of the importance of domain expertise in evaluating machine made results. Figure 5 : Examples of detected quarries, with true positive, false negative and false positive. To check on the validity of the new predictions generated, the centroid of them was plot along the centroid of the corrected labels, so one could check the spatial pattern of them and this way evaluate if they were respecting the same behavior. Figure 6 shows this plot. Figure 6 : Disposition of the centroids of assessed predictions and final predictions. One can see that despite some slight differences, the overall pattern is very similar among the disposition of the predictions. A very similar result can be seen with the computed heat-map of these points, seen in figure 7. Figure 7 : Heatmap of assessed predictions and final predictions. There is a small area to the west of the country where there were less detections than desired and in general there were more predictions than before. The objective of the heat-map is more to give a general view of the results than giving an exact comparison, as a point is created for every feature and the new filter used tended to smooth the results and join many features into a single one too. At the end the results were also intersected with GeoCover, which provide the Swiss soil detailed lithology, and an example of the results can be seen below using the QGIS Software. Figure 8 : Intersection of predictions with GeoCover seen in QGIS. Finally and most important, the domain expert was highly satisfied with this work, due to the support it can give to swisstopo and the TLM team in mapping the future quarries. The domain expert also demonstrated interest in pursuing the work by investigating the temporal pattern of quarries and detecting the volume of material in each quarry. 4 - Conclusion \u00b6 Through this collaboration with swisstopo, we managed to demonstrate that data science is able to provide relevant and efficient tool to ease complex and time-consuming task. With the produced inventory of the quarries on the whole Swiss territory, we were able to provide a quasi-exhaustive view of the situation to the domain expert, leading him to have a better view of the exploitation sites. This is of importance and a major step forward compared to the previous situation. Indeed, before this project, the only solution available to the domain expert was to gather all the federal and cantonal data, through non-standardized and time-consuming process, to hope having a beginning of an inventory, with temporality issues. With the developed prototype, within hours, the entire SWISSIMAGE data-set can be processed and turn into a full scale inventory, guiding the domain expert directly toward its interests. The resulting geographical layer can then be seen as the result of this demonstrator, able to turn the aerial images into a simple polygonal layer representing the quarries, with little false positive and false negative, providing the required view for the domain expert understanding of the Swiss situation. With such a result, it is possible to convolve it with all the other existing data, with the GeoCover in the first place. This lithology model of the Swiss soil can be intersected with the produced quarries layer in order to create a secondary geographical layer merging both quarries location and quarries soil type, leading to a powerful analyzing tool for the domain expert. The produced demonstrator shows that it is possible, in hours, to deduce a simple and reliable geographical layer based on a simple set of orthomosaic. The STDL then was able to prove the possibility to repeat the process along the time dimension, for future and past images, opening the way to build and rebuild the history and evolution of the quarries. With such a process, it will be possible to compute statistical quantities on the long term to catch the evolution and the resources, leading to more reliable strategical understanding of the Swiss resources and sovereignty.","title":"Automatic Detection of Quarries and the Lithology below them in Switzerland"},{"location":"PROJ-DQRY/#automatic-detection-of-quarries-and-the-lithology-below-them-in-switzerland","text":"Huriel Reichel (FHNW) - Nils Hamel (UNIGE) Supervision : Nils Hamel (UNIGE) - Raphael Rollier (swisstopo) Proposed by swisstopo - PROJ-DQRY June 2021 to January 2022 - Published on January 30th, 2022 Abstract : Mining is an important economic activity in Switzerland and therefore it is monitored by the Confederation through swisstopo. To this points, the identification of quarries has been made manually, which even being done with very high quality, unfortunately does not follow the constant changing and updating pattern of these features. For this reason, swisstopo contacted the STDL to automatically detect quarries through the whole country. The training was done using SWISSIMAGE with 10cm spatial resolution and the Deep Learning Framework from the STDL. Moreover there were two iteration steps with the domain expert which included the manual correction of detection for new training. Interaction with the domain expert was very relevant for final results and summing to his appreciation, an F1 Score of 85% was obtained in the end, which due to peculiar characteristics of quarries can be considered an optimal result.","title":"Automatic Detection of Quarries and the Lithology below them in Switzerland"},{"location":"PROJ-DQRY/#1-introduction","text":"Mining is an important economic activity worldwide and this is also the case in Switzerland. The Confederation topographic office (swisstopo) is responsible for monitoring the presence of quarries and also the materials being explored. This is extremely relevant for planning the demand and shortage of explored materials and also their transportation through the country. As this of federal importance the mapping of these features is already done. Although this work is very detailed and accurate, quarries have a very characteristical updating pattern. Quarries can appear and disappear in a matter of a few months, in especial when they are relatively small, as in Switzerland. Therefore it is of interest of swisstopo to make an automatic detection of quarries in a way that it is also reproducible in time. A strategy offen offered by the Swiss Territorial Data Lab is the automatic detection of several objects in aerial imagery through deep learning, following our Object Detection Framework . In this case it is fully applicable as quarries in Switzerland are relatively small, so high resolution imagery is required, which is something our Neural Network has proven to tackle with mastery in past projects. This high resolution imagery is also reachable through SWISSIMAGE , aerial images from swisstopo that cover almost the whole country with a 10cm pixel size (GSD). Nevertheless, in order to train our neural network, and as it's usually the case in deep learning, several labelled images are required. These data work as ground truth so that the neural network \"learns\" what's the object to be detected and which should not. For this purpose, the work from the topographic landscape model ( TLM ) team of swisstopo has been of extreme importance. Among different surface features, quarries have been mapped all over Switzerland with a highly detailed scale. Although the high quality and precision of the labels from TLM, quarries are constantly changing, appearing and disappearing, and therefore the labels are not always synchronized with the images from SWISSIMAGE. This lack of of synchronization between these sets of data can be seen in Figure 1, where in the left one has the year of mapping of TLM and on the right the year of the SWISSIMAGE flights. Figure 1 : Comparison of TLM (left) and SWISSIMAGE (right) temporality. For this purpose, a two-times interaction was necessary with the domain expert. In order to have a ground truth that was fully synchronized with SWISSIMAGE we required two stages of training : one making use of the TLM data and a second one with a manual correction of the predicted labels from the first interaction. It is of crucial importance to state that this correction needed to be made by the domain expert so that he could carefully check each detection in pre-defined tiles. With that in hands, we could go further with a more trustworthy training. As stated, it is of interest of swisstopo to also identify the material being explored by every quarry. For that purpose, it was recommended the usage of the GeoCover dataset from swisstopo as well. This dataset a vector layer of the the geological cover of the whole Switzerland, which challenged us to cross the detector predictions with such vector information. In summary, the challenge of the STDL was to investigate to which extent is it possible to automatically detect quarries using Deep Learning considering their high update ratio using aerial imagery.","title":"1 - Introduction"},{"location":"PROJ-DQRY/#2-methodology","text":"First of all the \"area of interest\" must be identified. This is where the detection and training took place. In this case, a polygon of the whole Switzerland was used. After that, the area of interest is divided in several tiles of fixed size. This is then defining the slicing of SWISSIMAGE (given as WMS). For this study, tiles of different sizes were tested, being 500x500m tiles defined for final usage. Following the resolution of the images must be defined, which, again, after several tests, was defined as 512x512 pixels. For validation purposes the data is then split into Training, Validation and Testing. The training data-set is used inside the network for its learning; the validation is completely apart from training and used only to check results and testing is used for cross-validation. 70% of the data was used for training, 15% for validation and 15% for testing. To what concerns the labels, the ones from TLM were manually checked so that a group of approximately 250 labels with full synchronization with the SWISSIMAGE were found and recorded. Following, the first row training passes through the same framework from former STDL projects. We make use of a predictive Recursive-Convolutional Neural Network with ResNet-50 backbone provided by Detectron2 . A deeper explanation of the network functionality can be found here and here . Even with different parameters set, it was observed that predictions were including too much false positives, which were mainly made of snow. Most probably the reflectance of snow is similar to the one of quarries and this needed a special treatment. For this purpose, a filtering of the results was used. First of all the features were filtered based on the score values (0.9) and then by elevation, using the SRTM digital elevation model. As snow usually does not precipitate below around 1155 m, this was used as threshold. Finally an area threshold is also passed (using smallest predictions area) and predictions are merged. A more detailed description of how to operate this first filter can be seen here . Once several tests were performed, the new predictions were sent back to the domain expert for detailed revision with a rigid protocol. This included the removal of false positives and the inclusion of false negatives, mainly. This was performed by 4 different experts from swisstopo in 4 regions with the same amount of tiles to be analyzed. It is important to the state again the importance of domain expertise in this step, as a very careful and manual evaluation of what is and what is not a quarry must be made. Once the predictions were corrected, a new session of training was performed using different parameters. Once again, the same resolution and tile size were used as in the first iteration (512x512m tiles with 512x512 pixels of resolution), although this time a new filtering was developed. Very similar to the first one, but in a different order, allowing more aesthetical predictions in the end, something the domain expert was also carrying about. This procedure is summarized in figure 2. Figure 2 : Methodology applied for the detection of quarries and new training sessions. In the end, in order to also include the geological information of the detected quarries, a third layer resulting of the intersection of both the predictions and the GeoCover labels is created. This was done in a way that the final user can click to obtain both information on the quarry (when not a pure prediction) and the information of the geology/lithology on this part of the quarry. As a result, each resulting intersection poylgon contains both information from quarry and GeoCover. In order to evaluate the obtained results, the F1 Score was computed and also the final predictions were compared to the corrected labels from the domain expert side. This was done visually by acquiring the centroid of each quarry detected and by a heat-map, allowing one to detect the spatial pattern of detections. The heat-map was computed using 10'000 m radius and a 100 m pixel size.","title":"2 - Methodology"},{"location":"PROJ-DQRY/#3-results-discussion","text":"In the first iteration, when the neural was trained with some labels of the TLM vector data, an optimal F1 score of approximately 0.78 was obtained. The figure 3 shows the behavior of the precision, recall and F1 score for the final model selected. Figure 3 : Precision, Recall and F1 score of the first iteration (using TLM data). Given the predictions resulting from the correction by the domain experts, there was an outstanding improve in the F1 score obtained, which was of approximately 0.85 in its optimal, as seen in figure 4. A total of 1265 were found in Switzerland after filtering. Figure 4 : Precision, Recall and F1 score of the second iteration (using data corrected by the domain expert). Figure 5 demonstrates some examples of detected quarries and this one can have some notion of the quality of the shape of the detections and how they mark the real-world quarries. Examples of false positives and false negatives, unfortunately still present in the detections are also shown. This is also an interesting demonstration of how some objects that are very similar to quarries, in the point of view of non-experts and how they may influence the results. These examples of errors are also an interesting indication of the importance of domain expertise in evaluating machine made results. Figure 5 : Examples of detected quarries, with true positive, false negative and false positive. To check on the validity of the new predictions generated, the centroid of them was plot along the centroid of the corrected labels, so one could check the spatial pattern of them and this way evaluate if they were respecting the same behavior. Figure 6 shows this plot. Figure 6 : Disposition of the centroids of assessed predictions and final predictions. One can see that despite some slight differences, the overall pattern is very similar among the disposition of the predictions. A very similar result can be seen with the computed heat-map of these points, seen in figure 7. Figure 7 : Heatmap of assessed predictions and final predictions. There is a small area to the west of the country where there were less detections than desired and in general there were more predictions than before. The objective of the heat-map is more to give a general view of the results than giving an exact comparison, as a point is created for every feature and the new filter used tended to smooth the results and join many features into a single one too. At the end the results were also intersected with GeoCover, which provide the Swiss soil detailed lithology, and an example of the results can be seen below using the QGIS Software. Figure 8 : Intersection of predictions with GeoCover seen in QGIS. Finally and most important, the domain expert was highly satisfied with this work, due to the support it can give to swisstopo and the TLM team in mapping the future quarries. The domain expert also demonstrated interest in pursuing the work by investigating the temporal pattern of quarries and detecting the volume of material in each quarry.","title":"3 - Results & Discussion"},{"location":"PROJ-DQRY/#4-conclusion","text":"Through this collaboration with swisstopo, we managed to demonstrate that data science is able to provide relevant and efficient tool to ease complex and time-consuming task. With the produced inventory of the quarries on the whole Swiss territory, we were able to provide a quasi-exhaustive view of the situation to the domain expert, leading him to have a better view of the exploitation sites. This is of importance and a major step forward compared to the previous situation. Indeed, before this project, the only solution available to the domain expert was to gather all the federal and cantonal data, through non-standardized and time-consuming process, to hope having a beginning of an inventory, with temporality issues. With the developed prototype, within hours, the entire SWISSIMAGE data-set can be processed and turn into a full scale inventory, guiding the domain expert directly toward its interests. The resulting geographical layer can then be seen as the result of this demonstrator, able to turn the aerial images into a simple polygonal layer representing the quarries, with little false positive and false negative, providing the required view for the domain expert understanding of the Swiss situation. With such a result, it is possible to convolve it with all the other existing data, with the GeoCover in the first place. This lithology model of the Swiss soil can be intersected with the produced quarries layer in order to create a secondary geographical layer merging both quarries location and quarries soil type, leading to a powerful analyzing tool for the domain expert. The produced demonstrator shows that it is possible, in hours, to deduce a simple and reliable geographical layer based on a simple set of orthomosaic. The STDL then was able to prove the possibility to repeat the process along the time dimension, for future and past images, opening the way to build and rebuild the history and evolution of the quarries. With such a process, it will be possible to compute statistical quantities on the long term to catch the evolution and the resources, leading to more reliable strategical understanding of the Swiss resources and sovereignty.","title":"4 - Conclusion"},{"location":"PROJ-DQRY-TM/","text":"Automatic detection and observation of mineral extraction sites in Switzerland \u00b6 Cl\u00e9mence Herny (Exolabs), Shanci Li (Uzufly), Alessandro Cerioni (\u00c9tat de Gen\u00e8ve), Roxane Pott (swisstopo) Proposed by swisstopo - PROJ-DQRY-TM October 2022 to February 2023 - Published on January 2024 Abstract : Studying the evolution of mineral extraction sites (MES) is of primary importance for assessing the availability of mineral resources, managing MES and evaluating the impact of mining activity on the environment. In Switzerland, MES are inventoried at local level by the cantons and at federal level by swisstopo. The latter performs manual vectorisation of MES boundaries. Unfortunately, although the data is of high quality, it is not regularly updated. To automate this tedious task and to better observe the evolution of MES, swisstopo has solicited the STDL to carry out an automatic detection of MES in Switzerland over the years. We performed instance segmentation using a deep learning method to automatically detect MES in RGB aerial images with a spatial resolution of 1.6 m px -1 . The detection model was trained with 266 labels and orthophotos from the SWISSIMAGE RGB mosaic published in 2020. The selected trained model achieved a f1-score of 82% on the validation dataset. The model was used to do detection by inference of potential MES in SWISSIMAGE RGB orthophotos from 1999 to 2021. The model shows good ability to detect potential MES with about 82% of labels detected for the 2020 SWISSIMAGE mosaic. The detections obtained with SWISSIMAGE orthophotos acquired over different years can be tracked to observe their temporal evolution. The framework developed can perform detection in an area of interest (about a third of Switzerland at the most) in just a few hours, which is a major advantage over manual mapping. We acknowledge that there are some missed and false detections in the final product, and the results need to be reviewed and validated by domain experts before being analysed and interpreted. The results can be used to perform statistics over time and update MES evolution in future image acquisitions. 1. Introduction \u00b6 1.1 Context \u00b6 Mineral extraction constitutes a strategic activity worldwide, including in Switzerland. Demand for mineral resources has been growing significantly in recent decades 1 , mainly due to the rapid increase in the production of batteries and electronic chips, or buildings construction, for example. As a result, the exploitation of some resources, such as rare earth elements, lithium, or sand, is putting pressure on their availability. Being able to observe the development of mineral extraction sites (MES) is of primary importance to adapting mining strategy and anticipating demand and shortage. Mining has also strong environmental and societal impact 2 3 . It implies the extraction of rocks and minerals from water ponds, cliffs, and quarries. The surface affected, initially natural areas, can reach up to thousands of square kilometres 1 . The extraction of some minerals could lead to soil and water pollution and involves polluting truck transport. Economic and political interests of some resources might overwhelm land protection, and conflicts are gradually intensifying 2 . MES are dynamic features that can evolve according to singular patterns, especially if they are small, as is the case in Switzerland. A site can expand horizontally and vertically or be filled to recover the site 4 2 3 5 . Changes can happen quickly, in a couple of months. As a results, updating the MES inventory can be challenging. There is a significant demand for effective MES observation of development worldwide. Majority of MES mapping is performed manually by visual inspection of images 1 . Alternatively, recent improvements in the availability of high spatial and temporal resolution space/airborne imagery and computational methods have encouraged the development of automated image processing. Supervised classification of spectral images is an effective method but requires complex workflow 6 4 2 . More recently, few studies have implemented deep learning algorithms to train models to detect extraction sites in images and have shown high levels of accuracy 3 . In Switzerland, MES management is historically regulated on a canton-based level using GIS data, including information about the MES location, extent, and extracted materials among others. At the federal level, swisstopo and the Federal Office of Statistics (FSO) observe the development of MES. swisstopo has carried out a detailed manual delineation of MES based on SWISSIMAGE dataset over Switzerland. In the scope to fasten and improving the process of MES mapping in Switzerland, we developed a method for automating MES detection over the years. Ultimately, the goal is to keep the database up to date when new images are acquired. The results can be statistically process to better assess the MES evolution over time in Switzerland. 1.2. Approach \u00b6 The STDL has developed a framework named object-detector to automatically detect objects in a georeferenced imagery dataset based on deep learning method. The framework can be adapted to detect MES (also referred as quarry in the project) in Switzerland. A project to automatically detect MES in Switzerland 7 has been carried out by the STDL in 2021 ( detector-interface framework). Detection of potential MES obtained by automatic detection on the 2020 SWISSIMAGE mosaic has already been delivered to swisstopo (layer 2021_10_STDL_QC1 ). The method has proven its efficiency detecting MES. The numerical model trained with the object detector achieved a f1-score of 82% and detected about 1200 potential MES over Switzerland. In this project, we aim to continue this work and extend it to a second objective, that of observing MES evolution over time. The main challenge is to prove the algorithm reliability for detecting objects in a multi-year dataset images acquired with different sensors. The project workflow is synthesised in Figure 1. First, a deep learning algorithm is trained using a manually mapped MES dataset that serves as ground truth (GT). After evaluating the performance of the trained model, the selected one was used to perform inference detection for a given year dataset and area of interest (AoI). The results were filtered to discard irrelevant detection. The operation was repeated over several years. Finally, each potential MES detected was tracked over the years to observe its evolution. Figure 1: Workflow diagram for automatic MES detection. In this report, we first describe the data used, including the image description and the definition of AoI. Then we explain the model training, evaluation and object detection procedure. Next, we present the results of potential MES detection and the MES tracking strategy. Finally, we provide conclusion and perspectives. 2. Data \u00b6 2.1 Images and area of interest \u00b6 Automatic detection of potential MES over the years in Switzerland was performed with aerial orthophotos from the swisstopo product SWISSIMAGE Journey . Images are georeferenced RGB TIF tiles with a size of 256 x 256 pixels (1 km 2 ). Product Year Coordinate system Spatial resolution SWISSIMAGE 10 cm 2017 - current CH1903+/MN95 (EPSG:2056) 0.10 m ( \\(\\sigma\\) \\(\\pm\\) 0.15 m) - 0.25 m SWISSIMAGE 25 cm 2005 - 2016 MN03 (2005 - 2007) and MN95 (since 2008) 0.25 m ( \\(\\sigma\\) \\(\\pm\\) 0.25 m) - 0.50 m ( \\(\\sigma\\) \\(\\pm\\) 3.00 - 5.00 m) SWISSIMAGE 50 cm 1998 - 2004 MN03 0.50 m ( \\(\\sigma\\) \\(\\pm\\) 0.50 m) Table 1: SWISSIMAGE products characteristics. Several SWISSIMAGE products exist, produced from different instrumentation (Table 1). SWISSIMAGE mosaics are built and published yearly. The year of the mosaic corresponds to the last year of the dataset publication, and the most recent orthophotos datasets available are then used to complete the mosaic. For example the 2020 SWISSIMAGE mosaic is a combination of 2020, 2019 and 2018 images acquisition. The 1998 mosaic release corresponds to a year of transition from black and white images ( SWISSIMAGE HIST ) to RGB images. For this study, only RGB data from 1999 to 2021 were considered. Figure 2: Acquisition footprint of SWISSIMAGE aerial orthophotos for the years 2016 to 2021. The SWISSIMAGE Journey mosaic in the background is the 2020 release. Acquisition footprints of yearly acquired orthophotos were used as AoI to perform MES detection through time. Over the years, the footprints may spatially overlap (Fig. 2). Since 2017, the geometry of the acquisition footprints has been quasi-constant, dividing Switzerland into three more or less equal areas, ensuring that the orthophotos are updated every three years. For the years before 2017, the acquisition footprints were not systematic and do not guarantee a periodically update of the orthophotos. The acquisition footprint may also not be spatially contiguous. Figure 3: Illustration of the combination of SWISSIMAGE images and FSO images for the 2007 SWISSIMAGE mosaic. (a) Overview of the 2007 SWISSIMAGE mosaic. The red polygon corresponds to the provided SWISSIMAGE acquisition footprint for 2007. The orange polygon corresponds to the surface covered by the new SWISSIMAGE for 2007. The remaining area of the red polygon corresponds to the FSO image dataset acquired in 2007. The black box indicates the panel (b) location, and the white box indicates the panel (c) location. (b) Side-by-side comparison of image composition in 2006 and 2007 SWISSIMAGE mosaics. (c) Examples of detection polygons (white polygons) obtained by inference on the 2007 SWISSIMAGE dataset (red box) and FSO images 2007 (outlined by black box). SWISSIMAGE Journey mosaics of 2005, 2006, and 2007 present a particularity as it is composed not only of 25 cm resolution SWISSIMAGE but also of orthophotos acquired for the FSO. These are tiff RGB orthophotos with a spatial resolution of 50 cm px -1 (coordinate system: CH1903/LV03 (EPSG:21781)) and have been integrated into the SWISSIMAGE Journey products. However, these images were discarded (modification of the footprint shape) from our dataset because they were causing issues in the MES automatic detection producing odd segmented detection shapes (Fig. 3). This is probably due to the different stretching of pixel colour between datasets. It also has to be noted that there are currently missing images (about 88 tiles at zoom level 16) in the 2020 SWISSIMAGE dataset. 2.2 Image fetching \u00b6 Pre-rendered SWISSIMAGE tiles (256 x 256 px, 1 km 2 ) are downloaded using the Web Map Tile Service (WMTS) wmts.geo.admin.ch via an XYZ connector. Tiles are served on a cartesian coordinates grid using a Web Mercator Quad projection and a coordinate reference system EPGS 3857. Position of a tile on the grid is defined by x and y coordinates and the pixel resolution of the image is defined by z , its zoom level. Changing the zoom level affects the resolution by a factor of 2 (Fig. 4). For instance a zoom level of 17 corresponds to a resolution of 0.8 m px -1 and a zoom level of 16 to a resolution of 1.6 m px -1 . Figure 4: Examples of tiles geometry at zoom level 16 (z16, black polygons) and at zoom level 17 (z17, blue polygons). The number of tiles for each zoom level is indicated in square brackets. The tiles are selected for model training, i.e. only tiles intersecting swissTLM3D labels (tlm-hr-trn-topo, yellow polygons). Note that in the subsequent project carried out by Reichel and Hamel (2021) 7 , the tiling method adopted was slightly different from the one adopted for this project. Custom size and resolution tiles were built. A sensitivity analysis of these two parameters was conducted and led to the choice of tiles with a size of about 500 m and a pixel resolution of about 1 m (above, the performance was not significantly improved). 2.3 Ground truth \u00b6 The MES labels originate from the swiss Topographic Landscape Model 3D ( swissTLM3D ) produced by swisstopo . swissTLM3D is a large-scale topographic landscape model of Switzerland, including manually drawn and georeferenced vectors of objects of interest at a high resolution, including MES features. Domain experts from swisstopo have carried out extensive work to review the labeled MES and to synchronise them with the 2020 SWISSIMAGE mosaic to improve the quality of the labeled dataset. A total of 266 labels are available. The mapped MES reveal the diversity of MES characteristics, such as the presence or absence of buildings/infrastructures, trucks, water pounds, and vegetation (Fig. 5). Figure 5: Examples of MES mapped in swissTLM3D and synchronised to 2020 SWISSIMAGE mosaic. These labels are used as the ground truth (GT) i.e. the reference dataset indicating the presence of a MES in an image. The GT is used both as input to train the model to detect MES and to evaluate the model performance. 3. Automatic detection methodology \u00b6 3.1 Deep learning algorithm for object detection \u00b6 Training and inference detection of potential MES in SWISSIMAGE were performed with the object detector framework. This project is based on the open source detectron2 framework 8 implemented with PyTorch by the Facebook Artificial Intelligence Research group (FAIR). Instance segmentation (delineation of object) was performed with a Mask R-CNN deep learning algorithm 9 . It is based on a Recursive-Convolutional Neural Network (CNN) with a backbone pre-trained model ResNet-50 (50 layers deep residual network). Images were annotated with custom COCO object based on the labels (class 'Quarry'). The model is trained with this dataset to later perform inference detection on images. If the object is detected by the algorithm, a pixel mask is produced with a confidence score (0 to 1) attributed to the detection (Fig. 6). Figure 6: Example of detection mask. The pink rectangle corresponds to the bounding box of the object, the object is segmented by the pink polygons associated with the detection class ('Quarry') and a confidence score. The object detector framework permits to convert detection mask to georeferenced polygon that can be used in GIS softwares. The implementation of the Ramer-Douglas-Peucker ( RDP ) algorithm, allows the simplification of the derived polygons by discarding non-essential points based on a smoothing parameter. This allow to considerably reduces the amount of data to be stored and prevent potential memory saturation while deriving detection polygons on large areas as it is the case for this study. 3.2 Model training \u00b6 Orthophotos from the 2020 SWISSIMAGE mosaic, for which the GT has been defined, were chosen to proceed the model training. Tiles intersecting labels were selected and split randomly into three datasets: the training dataset (70%), the validation dataset (15%), and the test dataset (15%). Addition of empty tiles (no annotation) to confront the model to landscapes not containing the target object has been tested ( Appendix A.1 ) but did not provide significant improvement in the model performance to be adopted. Figure 7: Training curves obtained at zoom level 16 on the 2020 SWISSIMAGE mosaic. The curves were obtained for the trained model 'replicate 3'. (a) Learning rate in function of iteration. The step was defined every 500 iterations. The initial learning rate was 5.0 x 10 -3 with a weight and bias decay of 1.0 x 10 -4 . (b) The total loss is a function of iteration. Raw measurement (light red) and smoothed curve (0.6 factor, solid red) are superposed. (c) The validation loss curve is a function of iteration. Raw measurement (light red) and smoothed curve (0.6 factor, solid red) are superposed. The vertical dashed black lines indicate the iteration minimising the validation loss curve, i.e. 3000. Models were trained with two images per batch ( Appendix A.2 ), a learning rate of 5 x 10 -3 , and a learning rate decay of 1 x 10 -4 every 500 steps (Fig. 7 (a)). For the given model, parameters and a zoom level of 16 ( Section 3.3.3 ), the training is performed over 7000 iterations and lasts about 1 hour on a 16 GiB GPU (NVIDIA Tesla T4) machine compatible with CUDA . The total (train and validation loss) loss curve decreases until reaching a quasi-steady state around 6000 iterations (Fig. 7 (b)). The optimal detection model corresponds to the one minimising the validation loss curve. This minimum is reached between 2000 and 3000 iterations (Fig. 7 (c)). 3.3 Metrics \u00b6 The model performance and detection reliability were assessed by comparing the results to the GT. The detection performed by the model can be either (1) a True Positive (TP), i.e. the detection is real (spatially intersecting the GT) ; (2) a False Positive i.e. the detection is not real (not spatially intersecting the GT) or (3) a False Negative (FN) i.e. the labeled object is not detected by the algorithm (Fig. 8). Tagging the detection (Fig. 9(a)) allows to calculate several metrics (Fig. 9(b)) such as: Figure 8: Examples of different detection cases. Label is represented with a yellow polygon and detection with a red polygon. (a) True Positive (TP) detection intersecting the GT, (b) a potential True Positive (TP?) detection with no GT, (c) False Negative (FN) case with no detection while GT exists, (d) False Positive (FP) detection of object that is not a MES. the recall , translating the amount of TP detections predicted by the model: \\[recall = \\frac{TP}{(TP + FN)}\\] the precision , translating the number of well-predicted TP among all the detections: \\[precision = \\frac{TP}{(TP + FP)}\\] the f1-score , the harmonic average of the precision and the recall: \\[f1 = 2 \\times \\frac{recall \\times precision}{recall + precision}\\] Figure 9: Evaluation of the trained model performance obtained at zoom level 16 for the trained model 'replicate 3' (Table 2). (a) Number of TP (blue), FN (red), and FP (green) as a function of detection score threshold for the validation dataset. (b) Metrics value, precision (blue), recall (red), and f1-score (green) as a function of the detection score threshold for the validation dataset. The maximum f1-score value is 82%. 4. Automatic detection model analysis \u00b6 4.1. Model performance and replicability \u00b6 Trained models reached f1-scores of about 80% with a standard deviation of 2% (Table 2). The performances are similar to the model trained by Reichel and Hamel (2021) 7 . model precision recall f1 replicate 1 0.84 0.79 0.82 replicate 2 0.77 0.76 0.76 replicate 3 0.83 0.81 0.82 replicate 4 0.89 0.77 0.82 replicate 5 0.78 0.82 0.80 Table 2: Metrics value computed for the validation dataset for trained models replicates with the 2020 SWISSIMAGE mosaic at zoom level 16. A variability is expected as the deep learning algorithm displays some random behavior, but it is supposed to be negligible. However, the observed model variability is enough to affect final results that might slightly change by using different trained models with same input parameters (Fig. 10). Figure 10: Detection polygons obtained for the different trained model replicates (Table 2) highlighting results variability. The labels correspond to orange polygons. The number in the square bracket corresponds to the number of polygons. The inference detections have been performed on a subset of 2000 tiles for the 2020 SWISSIMAGE at zoom level 16. Detections have been filtered according to the parameters defined in Section 5.1. To reduce the variability of the trained models, the random seeds of both detectron2 and python have been fixed. Neither of these attempts have been successful, and the variability remains. The nondeterministic behavior of detectron2 has been recognised ( issue 1 , issue 2 ), but no suitable solution has been provided yet. Further investigation on the model performance and consistency should be performed in the future. To mitigate the results variability of model replicates, we could consider in the future to combine the results of several model replicates to remove FP while preserving the TP and potential TP detection. The choice and number of models used should be evaluated. This method is tedious as it requires inference detection from several models, which can be time-consuming and computationally intensive. 4.2 Sensitivity to the zoom level \u00b6 Image resolution is dependent on the zoom level ( Section 2.2 ). To select the most suitable zoom level for MES detection, we performed a sensitivity analysis on trained model performance. Increasing the zoom level increases the value of the metrics following a global linear trend (Fig. 11). Figure 11: Metrics values (precision, recall and f1) as function of zoom level for the validation dataset. The results of the replicates performed at each zoom level are included (Table A1). Models trained at a higher zoom level performed better. However, a higher zoom level implies smaller tile and thus, a larger number of tiles to fill the AoI. For a typical AoI, i.e up to a third of Switzerland, this can lead to a large number of tiles to be stored and processed, leading to potential RAM and/or disk space saturation. For 2019 AoI, 89'290 tiles are required at zoom level 16 while 354'867 tiles are required at zoom level 17, taking respectively 3 hours and 11 hours to process on a 30 GiB RAM machine with a 16 GiB GP. Visual comparison of inference detection reveals that there was no significant improvement in the object detection quality from zoom level 16 to zoom level 17. Both zoom level present a similar proportion of detections intersecting labels (82% and 79% for zoom level 16 and zoom level 17 respectively). On the other hand, the quality of object detection at zoom level 15 was depreciated. Indeed, detection scores were lower, with only tens of detection scores above 0.95 while it was about 400 at zoom level 16 and about 64% of detection intersecting labels. 4.3 Model choice \u00b6 Based on tests performed, we selected the 'replicate 3' model, obtained (Tables 2 and A1) at zoom level 16, to perform inference detection. Models trained at zoom level 16 (1.6 m px -1 pixel resolution) have shown satisfying results in accurately detecting MES contour and limiting the number of FP with high detection score (Fig. 11). It represents a good trade-off between results reliability (f1-score between 76% and 82% on the validation dataset) and computational resources. Then, among all the replicates performed at zoom level 16, we selected the trained model 'replicate 3' (Table 2) because it combines both the highest metrics values (for the validation dataset but also the train and test datasets), close precision and recall values and a rather low amount of low score detections. 5. Automatic detection of MES \u00b6 5.1 Detection post-processing \u00b6 Detection by inference was performed over AoIs with a threshold detection score of 0.3 (Fig. 12). The low score filtering results in a large amount of detections. Several detections may overlap, potentially segmenting a single object. In addition a detection might be split into multiple tiles. To improve the pertinence and the aesthetics of the raw detection polygons, a post-processing procedure was applied. First, a large proportion of FP occurred in mountainous areas (rock outcrops and snow, Fig. 12(a)). We assumed MES are not present (or at least sparse) above a given altitude. An elevation filtering was applied using a Switzerland Digital Elevation Model (about 25 m px -1 ) derived from the SRTM instrument ( USGS - SRTM ). The maximum elevation of the labeled MES is about 1100 m. Second, detection aggregation was applied: - polygons were clustered ( K-means ) according to their centroid position. The method involves setting a predefined number k of clusters. Manual tests performed by Reichel and Hamel (2021) 7 concluded to set k equal to the number of detection divided by three. The highest detection score was assigned to the clustered detection. This method preserves the final integrity of detection polygons by retaining detection that has potentially a low confidence score but belongs to a cluster with a higher confidence score improving the final segmentation of the detected object. The value of the threshold score must be kept relatively low ( i.e. 0.3) when performing the detection to prevent removing too many polygons that could potentially be part of the detected object. We acknowledge that determining the optimal number of clusters by clustering validation indices rather than manual adjustment would be more robust. In addition, exploring other clustering methods, such as DBSCAN , based on local density, can be considered in the future. - score filtering was applied. - spatially close polygons were assumed to belong to the same MES and are merged according to a distance threshold. The averaged score of the merged detection polygons was ultimately computed. Finally, we assumed that a MES covers a minimal area. Detection with an area smaller than a given threshold were filtered out. The minimum MES area in the GT is 2270 m 2 . Figure 12: MES detection filtering. (a) Overview of the automatic detection of MES obtained with 2020 SWISSIMAGE at zoom level 16. Transparent red polygons (with associated confidence score in white) correspond to the raw object detection output and the red line polygons (with associated confidence score in red) correspond to the final filtered detection. The black box outlines the location of the (b) and (c) panel zoom. Note the large number of detection in the mountains (right area of the image). (b) Zoom on several raw detections polygons of a single object with their respective confidence score. (c) Zoom on a filtered detection polygon of a single object with the resulting score. Sensitivity of detections to these filters was investigated (Table 3). The quantitative evaluation of filter combination relevance is tricky as potential MES presence is performed by inference, and the GT provided by swissTLM3D constitutes an incomplete portion of the MES in Switzerland (2020). As indication, we computed the number of spatial intersection between ground truth and detection obtained with the 2020 SWISSIMAGE mosaic. Filter combination number 3 was adopted, allowing to detect about 82% of the GT with a relatively limited amount of FP detection compared to filter combinations 1 and 2 (from visual inspection). filters combination score threshold elevation threshold (m) area threshold (m 2 ) distance threshold (m) number of detection label detection (%) 1 0.95 2000 1100 10 1745 85.1 2 0.95 2000 1200 10 1862 86.6 3 0.95 5000 1200 10 1347 82.1 4 0.96 2000 1100 10 1331 81.3 5 0.96 2000 1200 8 1445 78.7 6 0.96 5000 1200 10 1004 74.3 Table 3: Threshold values of filtering parameters and their respective number of detections and intersection proportion with swissTLM3D labels. The detections have been obtained for the 2020 SWISSIMAGE mosaic. We acknowledged that for the selected filter combination, the area threshold value is higher than the smallest area value of the GT polygons. However, reducing the area value increases significantly the presence of FP. Thirteen labels display an area below 5000 m 2 . 5.2 Inference detections \u00b6 The trained model was used to perform inference detection on SWISSIMAGE orthophotos from 1999 to 2021. The automatic detection model shows good capabilities to detect MES in different years orthophotos (Fig. 13), despite being trained on the 2020 SWISSIMAGE mosaic. The model also demonstrates capabilities to detect potential MES that have not been mapped yet but are strong candidates. However, the model misses some labeled MES or potential MES (FN, Fig. 8). However, when the model process FSO images, with different colour stretching, it failed to correctly detect potential MES (Fig. 3). It reveals that images must have characteristics close to the training dataset for optimal results with a deep learning model. Figure 13: Examples of object detection segmented by polygons in different year orthophotos. The yellow polygon for the year 2020 panel of object ID 3761 corresponds to the label. Other coloured polygons correspond to the algorithm detection. Then, we acknowledge that a significant amount of FP detection can still be observed in our filtered detection dataset (Figs. 8 and 14). The main sources of FP are the presence of large rock outcrops, mountainous areas without vegetation, snow, river sand beds, brownish-coloured fields, or construction areas. MES present a large variety of features (buildings, water pounds, trucks, vegetation) (Fig. 5) which can be a source of confusion for the algorithm but even sometimes for human eye. Therefore, the robustness of the GT is crucial for reliable detection. The algorithm's results should be taken carefully. Figure 14: Examples of FP detection. (a) Snow patches (2019) ; (b) River sand beds and gullies (2019); (c) Brownish field (2020); (d) vineyards (2005); (e) Airport tarmac (2020); (f) Construction site (2008). The detections produced by the algorithm are potential MES, but the final results must be reviewed by experts in the field to discard remaining FP detection and correct FN before any processing or interpretation. 6. Observation of MES evolution \u00b6 6.1 Object tracking strategy \u00b6 Switzerland is covered by RGB SWISSIMAGE product over more than 20 years (1999 to actual), allowing changes to be detected (Fig. 13). Figure 15: Strategy for MES tracking over time. ID assignment to detection. Spatially intersecting polygons share the same ID allowing the MES to be tracked in a multi-year dataset. We assumed that detection polygons that overlap from one year to another describe a single object (Fig. 15). Overlapping detections and unique detections (which do not overlap with polygons from other years) in the multi-year dataset were assigned a unique object identifier (ID). A new object ID in the timeline indicates: - the first occurrence of the object detected in the dataset of the first year available for the area. It does not mean that the object was not present before, - the creation of a potential new MES. The disappearance of an object ID indicates its potential refill. Therefore, the chronology of MES, creation, evolution and filling, can be constrained. 6.2 Evolution of MES over years \u00b6 Figures 13 and 16 illustrate the ability of the trained model to detect and track a single object in a multi-year dataset. The detection over the years appears reliable and consistent, although object detection may be absent from a year dataset ( e.g. due to shadows or colour changes in the surroundings). Remember that the image coverage of a given area is not renewed every year. Characteristics of the potential MES, such as surface evolution (extension or retreat), can be quantified. For example, the surfaces of object IDs 239 and 3861 have more than doubled in about 20 years. Tracking object ID along with image visualisation allows observation of the opening and the closing of potential MES, as object IDs 31, 44, and 229. Figure 16: Detection area (m 2 ) as a function of years for several object ID. Figure 13 provides the visualisation of the object IDs selected. Each point corresponds to an object ID occurrence in the corresponding year dataset. The presence of an object in several years dataset strengthens the likeliness of the detected object to be an actual MES. On the other hand, object detection of only one occurrence is more likely a FP detection. 7. Conclusion and perspectives \u00b6 The project demonstrated the ability to automatically, quickly (a matter of hours for one AoI), and reliably detect potential MES in orthophotos of Switzerland with an automatic detection algorithm (deep learning). The selected trained model achieved a f1-score of 82% on the validation dataset. The final detection polygons accurately delineate the potential MES. We can track single MES through multiple years, emphasising the robustness of the method to detect objects in multi-year datasets despite the detection model being trained on a single dataset (2020 SWISSIMAGE mosaic). However, image colour stretching different from that used to train the model can significantly affect the model's ability to provide reliable detection, as was the case with the FSO images. Although the performance of the trained model is satisfactory, FP and FN are present in the datasets. They are mainly due to confusion of the algorithm between MES and rock outcrops, river sandbeds or construction sites. A manual verification of the relevance of the detection by experts in the field is necessary before processing and interpreting the data. Revision of all the detections from 1999 to 2021 is a time-consuming effort but is necessary to guarantee detection reliability. Despite the required manual checks, the provided framework and detection results constitute a valuable contribution that can greatly assist the inventory and the observation of MES evolution in Switzerland. It provides state-wide detection in a matter of hours, which is a considerable time-saving compared with manual mapping. It also enables MES detection with a standardised method, independent of the information or method adopted by the cantons. Further model improvements could be consider, such as increasing the metrics by improving GT quality, improving model learning strategy, mitigating the model learning variability, or test supervised clustering methods to find relevant detection. This work can be used to compute statistics to study long-term MES in Switzerland and better management of resources and land use in the future. MES detection can be combined with other data, such as the geologic layer, to identify the mineral/rocks exploited and high-resolution DEM ( swissALTI3D ) to infer elevation changes and observe excavation or filling of MES 5 . So far only RGB SWISSIMAGE orthophotos from 1999 to 2021 were processed. Prior to 1999, black and white orthophotos exist but the model trained on RGB images could not be applied trustfully to black and white images. Image colourisation tests (with the help of deep learning algorithm[@farella_colour_2022]) were performed and provided encouraging detection results. This avenue needs to be explored. Finally, automatic detection of MES is rare 1 3 , and most studies perform manual mapping. Therefore, the framework could be the extended to other datasets and/or other countries to provide a valuable asset to the community. A global mapping of MES has been completed with over 21'000 polygons 1 and can be used as a GT database to train an automatic detection model. Code availability \u00b6 The codes are stored and available on the STDL's github repository: proj-dqry : mineral extraction site framework object-detector : object detector framework Acknowledgements \u00b6 This project was made possible thanks to a tight collaboration between the STDL team and swisstopo . In particular, the STDL team acknowledges key contribution from Thomas Galfetti ( swisstopo ). This project has been funded by \"Strategie Suisse pour la G\u00e9oinformation\". Appendix \u00b6 A.1 Influence of empty tiles addition to model performance \u00b6 By selecting tiles intersecting only labels, the detection model is mainly confronted with the presence of the targeted object to be detected. Addition of non-label-intersecting tiles, i.e. empty tiles, provides landscape diversity that might help to improve the object detection performance. In order to evaluate the influence of adding empty tiles to the dataset used for the model performance, empty tiles were chosen randomly (not intersecting labels) within Switzerland boundaries and added to the tile dataset used for the model training (Fig. A1). Empty tiles were added to (1) the whole dataset split as for the initial dataset (training: 70%, test: 15%, and validation: 15%) and (2) only to the training dataset. A visual inspection must be performed to prevent a potential unlabeled MES to be present in the image and disturbing the algorithm learning. Figure A1: View of tiles intersecting (black) labels (yellow) and randomly selected empty tiles (red) in Switzerland. This case correspond to the addition of 35% empty tiles. Figure A1 reveals that adding empty tiles to the dataset does not significantly influence the metrics values. The number of TP, FP, and FN do not show significant variation. However, when performing an inference detection test on a subset of tiles (2000) for an AOI, it appears that the number of raw detections (unfiltered) is reduced as the number of empty tiles increases. However, visual inspection of the final detection after applying filters does not show significant improvement compared to a model trained without adding empty tiles. Figure A1: Influence of the addition of empty tiles (relative to the number of tiles intersecting labels) on trained performance for zoom levels 16 and 17 with (a) the F1-score as a function of the percentage of added empty tiles and (b) the normalised (by the number of tiles sampled = 2000) number of detection as a function of added empty tiles. Empty tiles have been added to only the train dataset for the 5% and 30% cases and to all datasets for 9%, 35%, 70%, and 140% cases. A considered solution to improve the results could be to specifically select tiles for which FP occurred and include them in the training dataset as empty tiles. This way, the model could be trained with relevant confounding features such as snow patches, river sandbeds, or gullies not labeled as GT. A.2 Sensitivity of the model to the number of images per batch \u00b6 During the model learning phase, the trained model is updated after each batch of samples was processed. Adding more samples, i.e. in our case images, to the batch can influence the model learning capacity. We investigated the role of adding more images per batch for a dataset with and without adding a portion of empty tiles to the learning dataset. Adding more images per batch speeds up the model learning (Table A1), and the minimum of the loss curve is reached for a smaller number of iterations. Figure A2: Metrics (precision, recall and f1-score) evolution with the number of images per batch during the model training. Results have been obtained on a dataset without empty tiles addition (red) and with the addition of 23% of empty tiles to the training dataset. Figure A2 reveals that the metrics values remain in a range of constant values while adding extra images to the batch in all cases (with or without empty tiles). A potential effect of adding more images to the batch is the reduction of the metrics variability between replicates of trained models as the range of metrics values is smaller for 8 images per batch than 2 images per batch. However, this observation has to be taken carefully as fewer replicates have been performed with 8 images per batch than for 2 or 4 images per batch. Further investigation would provide stronger insights on this effect. A.3 Evaluation of trained models \u00b6 Table A1 sumup metrics value obtained for all the configuration tested for the project. zoom level model empty tiles (%) image per batch optimum iteration precision recall f1 15 replicate 1 0 2 1000 0.727 0.810 0.766 16 replicate 1 0 2 2000 0.842 0.793 0.817 16 replicate 2 0 2 2000 0.767 0.760 0.763 16 replicate 3 0 2 3000 0.831 0.810 0.820 16 replicate 4 0 2 2000 0.886 0.769 0.826 16 replicate 5 0 2 2000 0.780 0.818 0.798 16 replicate 6 0 2 3000 0.781 0.826 0.803 16 replicate 7 0 4 1000 0.748 0.860 0.800 16 replicate 8 0 4 1000 0.779 0.785 0.782 16 replicate 9 0 8 1500 0.800 0.793 0.797 16 replicate 10 0 4 1000 0.796 0.744 0.769 16 replicate 11 0 8 1000 0.802 0.769 0.785 16 ET-250_allDS_1 34.2 2 2000 0.723 0.770 0.746 16 ET-250_allDS_2 34.2 2 3000 0.748 0.803 0.775 16 ET-1000_allDS_1 73.8 2 6000 0.782 0.815 0.798 16 ET-1000_allDS_2 69.8 2 6000 0.786 0.767 0.776 16 ET-1000_allDS_3 70.9 2 6000 0.777 0.810 0.793 16 ET-1000_allDS_4 73.8 2 6000 0.768 0.807 0.787 16 ET-2000_allDS_1 143.2 2 6000 0.761 0.748 0.754 16 ET-80_trnDS_1 5.4 2 2000 0.814 0.793 0.803 16 ET-80_trnDS_2 5.4 2 2000 0.835 0.752 0.791 16 ET-80_trnDS_3 5.4 2 2000 0.764 0.802 0.782 16 ET-400_trnDS_1 29.5 2 6000 0.817 0.777 0.797 16 ET-400_trnDS_2 29.5 2 5000 0.848 0.785 0.815 16 ET-400_trnDS_3 29.5 2 4000 0.758 0.802 0.779 16 ET-400_trnDS_4 29.5 4 2000 0.798 0.818 0.808 16 ET-400_trnDS_5 29.5 4 1000 0.825 0.777 0.800 16 ET-1000_trnDS_1 0 2 4000 0.758 0.802 0.779 17 replicate 1 0 2 5000 0.819 0.853 0.835 17 replicate 1 0 2 5000 0.803 0.891 0.845 17 replicate 1 0 2 5000 0.872 0.813 0.841 17 ET-250_allDS_1 16.8 2 3000 0.801 0.794 0.797 17 ET-1000_allDS_1 72.2 2 7000 0.743 0.765 0.754 18 replicate 1 0 2 10000 0.864 0.855 0.859 Table A1: Metrics value computed for the validation dataset for all the trained models with the 2020 SWISSIMAGE Journey mosaic at zoom level 16. Victor Maus, Stefan Giljum, Jakob Gutschlhofer, Dieison M. Da Silva, Michael Probst, Sidnei L. B. Gass, Sebastian Luckeneder, Mirko Lieber, and Ian McCallum. A global-scale data set of mining areas. Scientific Data , 7(1):289, September 2020. URL: https://www.nature.com/articles/s41597-020-00624-w , doi:10.1038/s41597-020-00624-w . \u21a9 \u21a9 \u21a9 \u21a9 \u21a9 Vicen\u00e7 Carabassa, Pau Montero, Marc Crespo, Joan-Cristian Padr\u00f3, Xavier Pons, Jaume Balagu\u00e9, Llu\u00eds Brotons, and Josep Maria Alca\u00f1iz. Unmanned aerial system protocol for quarry restoration and mineral extraction monitoring. Journal of Environmental Management , 270:110717, September 2020. URL: https://linkinghub.elsevier.com/retrieve/pii/S0301479720306496 , doi:10.1016/j.jenvman.2020.110717 . \u21a9 \u21a9 \u21a9 \u21a9 Chunsheng Wang, Lili Chang, Lingran Zhao, and Ruiqing Niu. Automatic Identification and Dynamic Monitoring of Open-Pit Mines Based on Improved Mask R-CNN and Transfer Learning. Remote Sensing , 12(21):3474, January 2020. URL: https://www.mdpi.com/2072-4292/12/21/3474 , doi:10.3390/rs12213474 . \u21a9 \u21a9 \u21a9 \u21a9 Haoteng Zhao, Yong Ma, Fu Chen, Jianbo Liu, Liyuan Jiang, Wutao Yao, and Jin Yang. Monitoring Quarry Area with Landsat Long Time-Series for Socioeconomic Study. Remote Sensing , 10(4):517, April 2018. URL: https://www.mdpi.com/2072-4292/10/4/517 , doi:10.3390/rs10040517 . \u21a9 \u21a9 Valentin Tertius Bickel and Andrea Manconi. Decadal Surface Changes and Displacements in Switzerland. Journal of Geovisualization and Spatial Analysis , 6(2):24, December 2022. URL: https://link.springer.com/10.1007/s41651-022-00119-9 , doi:10.1007/s41651-022-00119-9 . \u21a9 \u21a9 George P. Petropoulos, Panagiotis Partsinevelos, and Zinovia Mitraka. Change detection of surface mining activity and reclamation based on a machine learning approach of multi-temporal Landsat TM imagery. Geocarto International , 28(4):323\u2013342, July 2013. URL: http://www.tandfonline.com/doi/abs/10.1080/10106049.2012.706648 , doi:10.1080/10106049.2012.706648 . \u21a9 Huriel Reichel and Nils Hamel. Automatic Detection of Quarries and the Lithology below them in Switzerland. 2022. URL: file:///C:/Users/Clemence/Documents/STDL/Projects/proj-quarries/01_Documentation/Bibliography/Automatic%20Detection%20of%20Quarries%20and%20the%20Lithology%20below%20them%20in%20Switzerland%20-%20Swiss%20Territorial%20Data%20Lab.htm . \u21a9 \u21a9 \u21a9 \u21a9 Yuxin Wu, Alexander Kirillov, Francisco Massa, Wan-Yen Lo, and Ross Girshick. Detectron2. 2019. URL: https://github.com/facebookresearch/detectron2 . \u21a9 Kaiming He, Georgia Gkioxari, Piotr Doll\u00e1r, and Ross Girshick. Mask R-CNN. January 2018. arXiv:1703.06870 [cs]. URL: http://arxiv.org/abs/1703.06870 , doi:10.48550/arXiv.1703.06870 . \u21a9","title":"Automatic detection and observation of mineral extraction sites in Switzerland"},{"location":"PROJ-DQRY-TM/#automatic-detection-and-observation-of-mineral-extraction-sites-in-switzerland","text":"Cl\u00e9mence Herny (Exolabs), Shanci Li (Uzufly), Alessandro Cerioni (\u00c9tat de Gen\u00e8ve), Roxane Pott (swisstopo) Proposed by swisstopo - PROJ-DQRY-TM October 2022 to February 2023 - Published on January 2024 Abstract : Studying the evolution of mineral extraction sites (MES) is of primary importance for assessing the availability of mineral resources, managing MES and evaluating the impact of mining activity on the environment. In Switzerland, MES are inventoried at local level by the cantons and at federal level by swisstopo. The latter performs manual vectorisation of MES boundaries. Unfortunately, although the data is of high quality, it is not regularly updated. To automate this tedious task and to better observe the evolution of MES, swisstopo has solicited the STDL to carry out an automatic detection of MES in Switzerland over the years. We performed instance segmentation using a deep learning method to automatically detect MES in RGB aerial images with a spatial resolution of 1.6 m px -1 . The detection model was trained with 266 labels and orthophotos from the SWISSIMAGE RGB mosaic published in 2020. The selected trained model achieved a f1-score of 82% on the validation dataset. The model was used to do detection by inference of potential MES in SWISSIMAGE RGB orthophotos from 1999 to 2021. The model shows good ability to detect potential MES with about 82% of labels detected for the 2020 SWISSIMAGE mosaic. The detections obtained with SWISSIMAGE orthophotos acquired over different years can be tracked to observe their temporal evolution. The framework developed can perform detection in an area of interest (about a third of Switzerland at the most) in just a few hours, which is a major advantage over manual mapping. We acknowledge that there are some missed and false detections in the final product, and the results need to be reviewed and validated by domain experts before being analysed and interpreted. The results can be used to perform statistics over time and update MES evolution in future image acquisitions.","title":"Automatic detection and observation of mineral extraction sites in Switzerland"},{"location":"PROJ-DQRY-TM/#1-introduction","text":"","title":"1. Introduction"},{"location":"PROJ-DQRY-TM/#11-context","text":"Mineral extraction constitutes a strategic activity worldwide, including in Switzerland. Demand for mineral resources has been growing significantly in recent decades 1 , mainly due to the rapid increase in the production of batteries and electronic chips, or buildings construction, for example. As a result, the exploitation of some resources, such as rare earth elements, lithium, or sand, is putting pressure on their availability. Being able to observe the development of mineral extraction sites (MES) is of primary importance to adapting mining strategy and anticipating demand and shortage. Mining has also strong environmental and societal impact 2 3 . It implies the extraction of rocks and minerals from water ponds, cliffs, and quarries. The surface affected, initially natural areas, can reach up to thousands of square kilometres 1 . The extraction of some minerals could lead to soil and water pollution and involves polluting truck transport. Economic and political interests of some resources might overwhelm land protection, and conflicts are gradually intensifying 2 . MES are dynamic features that can evolve according to singular patterns, especially if they are small, as is the case in Switzerland. A site can expand horizontally and vertically or be filled to recover the site 4 2 3 5 . Changes can happen quickly, in a couple of months. As a results, updating the MES inventory can be challenging. There is a significant demand for effective MES observation of development worldwide. Majority of MES mapping is performed manually by visual inspection of images 1 . Alternatively, recent improvements in the availability of high spatial and temporal resolution space/airborne imagery and computational methods have encouraged the development of automated image processing. Supervised classification of spectral images is an effective method but requires complex workflow 6 4 2 . More recently, few studies have implemented deep learning algorithms to train models to detect extraction sites in images and have shown high levels of accuracy 3 . In Switzerland, MES management is historically regulated on a canton-based level using GIS data, including information about the MES location, extent, and extracted materials among others. At the federal level, swisstopo and the Federal Office of Statistics (FSO) observe the development of MES. swisstopo has carried out a detailed manual delineation of MES based on SWISSIMAGE dataset over Switzerland. In the scope to fasten and improving the process of MES mapping in Switzerland, we developed a method for automating MES detection over the years. Ultimately, the goal is to keep the database up to date when new images are acquired. The results can be statistically process to better assess the MES evolution over time in Switzerland.","title":"1.1 Context"},{"location":"PROJ-DQRY-TM/#12-approach","text":"The STDL has developed a framework named object-detector to automatically detect objects in a georeferenced imagery dataset based on deep learning method. The framework can be adapted to detect MES (also referred as quarry in the project) in Switzerland. A project to automatically detect MES in Switzerland 7 has been carried out by the STDL in 2021 ( detector-interface framework). Detection of potential MES obtained by automatic detection on the 2020 SWISSIMAGE mosaic has already been delivered to swisstopo (layer 2021_10_STDL_QC1 ). The method has proven its efficiency detecting MES. The numerical model trained with the object detector achieved a f1-score of 82% and detected about 1200 potential MES over Switzerland. In this project, we aim to continue this work and extend it to a second objective, that of observing MES evolution over time. The main challenge is to prove the algorithm reliability for detecting objects in a multi-year dataset images acquired with different sensors. The project workflow is synthesised in Figure 1. First, a deep learning algorithm is trained using a manually mapped MES dataset that serves as ground truth (GT). After evaluating the performance of the trained model, the selected one was used to perform inference detection for a given year dataset and area of interest (AoI). The results were filtered to discard irrelevant detection. The operation was repeated over several years. Finally, each potential MES detected was tracked over the years to observe its evolution. Figure 1: Workflow diagram for automatic MES detection. In this report, we first describe the data used, including the image description and the definition of AoI. Then we explain the model training, evaluation and object detection procedure. Next, we present the results of potential MES detection and the MES tracking strategy. Finally, we provide conclusion and perspectives.","title":"1.2. Approach"},{"location":"PROJ-DQRY-TM/#2-data","text":"","title":"2. Data"},{"location":"PROJ-DQRY-TM/#21-images-and-area-of-interest","text":"Automatic detection of potential MES over the years in Switzerland was performed with aerial orthophotos from the swisstopo product SWISSIMAGE Journey . Images are georeferenced RGB TIF tiles with a size of 256 x 256 pixels (1 km 2 ). Product Year Coordinate system Spatial resolution SWISSIMAGE 10 cm 2017 - current CH1903+/MN95 (EPSG:2056) 0.10 m ( \\(\\sigma\\) \\(\\pm\\) 0.15 m) - 0.25 m SWISSIMAGE 25 cm 2005 - 2016 MN03 (2005 - 2007) and MN95 (since 2008) 0.25 m ( \\(\\sigma\\) \\(\\pm\\) 0.25 m) - 0.50 m ( \\(\\sigma\\) \\(\\pm\\) 3.00 - 5.00 m) SWISSIMAGE 50 cm 1998 - 2004 MN03 0.50 m ( \\(\\sigma\\) \\(\\pm\\) 0.50 m) Table 1: SWISSIMAGE products characteristics. Several SWISSIMAGE products exist, produced from different instrumentation (Table 1). SWISSIMAGE mosaics are built and published yearly. The year of the mosaic corresponds to the last year of the dataset publication, and the most recent orthophotos datasets available are then used to complete the mosaic. For example the 2020 SWISSIMAGE mosaic is a combination of 2020, 2019 and 2018 images acquisition. The 1998 mosaic release corresponds to a year of transition from black and white images ( SWISSIMAGE HIST ) to RGB images. For this study, only RGB data from 1999 to 2021 were considered. Figure 2: Acquisition footprint of SWISSIMAGE aerial orthophotos for the years 2016 to 2021. The SWISSIMAGE Journey mosaic in the background is the 2020 release. Acquisition footprints of yearly acquired orthophotos were used as AoI to perform MES detection through time. Over the years, the footprints may spatially overlap (Fig. 2). Since 2017, the geometry of the acquisition footprints has been quasi-constant, dividing Switzerland into three more or less equal areas, ensuring that the orthophotos are updated every three years. For the years before 2017, the acquisition footprints were not systematic and do not guarantee a periodically update of the orthophotos. The acquisition footprint may also not be spatially contiguous. Figure 3: Illustration of the combination of SWISSIMAGE images and FSO images for the 2007 SWISSIMAGE mosaic. (a) Overview of the 2007 SWISSIMAGE mosaic. The red polygon corresponds to the provided SWISSIMAGE acquisition footprint for 2007. The orange polygon corresponds to the surface covered by the new SWISSIMAGE for 2007. The remaining area of the red polygon corresponds to the FSO image dataset acquired in 2007. The black box indicates the panel (b) location, and the white box indicates the panel (c) location. (b) Side-by-side comparison of image composition in 2006 and 2007 SWISSIMAGE mosaics. (c) Examples of detection polygons (white polygons) obtained by inference on the 2007 SWISSIMAGE dataset (red box) and FSO images 2007 (outlined by black box). SWISSIMAGE Journey mosaics of 2005, 2006, and 2007 present a particularity as it is composed not only of 25 cm resolution SWISSIMAGE but also of orthophotos acquired for the FSO. These are tiff RGB orthophotos with a spatial resolution of 50 cm px -1 (coordinate system: CH1903/LV03 (EPSG:21781)) and have been integrated into the SWISSIMAGE Journey products. However, these images were discarded (modification of the footprint shape) from our dataset because they were causing issues in the MES automatic detection producing odd segmented detection shapes (Fig. 3). This is probably due to the different stretching of pixel colour between datasets. It also has to be noted that there are currently missing images (about 88 tiles at zoom level 16) in the 2020 SWISSIMAGE dataset.","title":"2.1 Images and area of interest"},{"location":"PROJ-DQRY-TM/#22-image-fetching","text":"Pre-rendered SWISSIMAGE tiles (256 x 256 px, 1 km 2 ) are downloaded using the Web Map Tile Service (WMTS) wmts.geo.admin.ch via an XYZ connector. Tiles are served on a cartesian coordinates grid using a Web Mercator Quad projection and a coordinate reference system EPGS 3857. Position of a tile on the grid is defined by x and y coordinates and the pixel resolution of the image is defined by z , its zoom level. Changing the zoom level affects the resolution by a factor of 2 (Fig. 4). For instance a zoom level of 17 corresponds to a resolution of 0.8 m px -1 and a zoom level of 16 to a resolution of 1.6 m px -1 . Figure 4: Examples of tiles geometry at zoom level 16 (z16, black polygons) and at zoom level 17 (z17, blue polygons). The number of tiles for each zoom level is indicated in square brackets. The tiles are selected for model training, i.e. only tiles intersecting swissTLM3D labels (tlm-hr-trn-topo, yellow polygons). Note that in the subsequent project carried out by Reichel and Hamel (2021) 7 , the tiling method adopted was slightly different from the one adopted for this project. Custom size and resolution tiles were built. A sensitivity analysis of these two parameters was conducted and led to the choice of tiles with a size of about 500 m and a pixel resolution of about 1 m (above, the performance was not significantly improved).","title":"2.2 Image fetching"},{"location":"PROJ-DQRY-TM/#23-ground-truth","text":"The MES labels originate from the swiss Topographic Landscape Model 3D ( swissTLM3D ) produced by swisstopo . swissTLM3D is a large-scale topographic landscape model of Switzerland, including manually drawn and georeferenced vectors of objects of interest at a high resolution, including MES features. Domain experts from swisstopo have carried out extensive work to review the labeled MES and to synchronise them with the 2020 SWISSIMAGE mosaic to improve the quality of the labeled dataset. A total of 266 labels are available. The mapped MES reveal the diversity of MES characteristics, such as the presence or absence of buildings/infrastructures, trucks, water pounds, and vegetation (Fig. 5). Figure 5: Examples of MES mapped in swissTLM3D and synchronised to 2020 SWISSIMAGE mosaic. These labels are used as the ground truth (GT) i.e. the reference dataset indicating the presence of a MES in an image. The GT is used both as input to train the model to detect MES and to evaluate the model performance.","title":"2.3 Ground truth"},{"location":"PROJ-DQRY-TM/#3-automatic-detection-methodology","text":"","title":"3. Automatic detection methodology"},{"location":"PROJ-DQRY-TM/#31-deep-learning-algorithm-for-object-detection","text":"Training and inference detection of potential MES in SWISSIMAGE were performed with the object detector framework. This project is based on the open source detectron2 framework 8 implemented with PyTorch by the Facebook Artificial Intelligence Research group (FAIR). Instance segmentation (delineation of object) was performed with a Mask R-CNN deep learning algorithm 9 . It is based on a Recursive-Convolutional Neural Network (CNN) with a backbone pre-trained model ResNet-50 (50 layers deep residual network). Images were annotated with custom COCO object based on the labels (class 'Quarry'). The model is trained with this dataset to later perform inference detection on images. If the object is detected by the algorithm, a pixel mask is produced with a confidence score (0 to 1) attributed to the detection (Fig. 6). Figure 6: Example of detection mask. The pink rectangle corresponds to the bounding box of the object, the object is segmented by the pink polygons associated with the detection class ('Quarry') and a confidence score. The object detector framework permits to convert detection mask to georeferenced polygon that can be used in GIS softwares. The implementation of the Ramer-Douglas-Peucker ( RDP ) algorithm, allows the simplification of the derived polygons by discarding non-essential points based on a smoothing parameter. This allow to considerably reduces the amount of data to be stored and prevent potential memory saturation while deriving detection polygons on large areas as it is the case for this study.","title":"3.1 Deep learning algorithm for object detection"},{"location":"PROJ-DQRY-TM/#32-model-training","text":"Orthophotos from the 2020 SWISSIMAGE mosaic, for which the GT has been defined, were chosen to proceed the model training. Tiles intersecting labels were selected and split randomly into three datasets: the training dataset (70%), the validation dataset (15%), and the test dataset (15%). Addition of empty tiles (no annotation) to confront the model to landscapes not containing the target object has been tested ( Appendix A.1 ) but did not provide significant improvement in the model performance to be adopted. Figure 7: Training curves obtained at zoom level 16 on the 2020 SWISSIMAGE mosaic. The curves were obtained for the trained model 'replicate 3'. (a) Learning rate in function of iteration. The step was defined every 500 iterations. The initial learning rate was 5.0 x 10 -3 with a weight and bias decay of 1.0 x 10 -4 . (b) The total loss is a function of iteration. Raw measurement (light red) and smoothed curve (0.6 factor, solid red) are superposed. (c) The validation loss curve is a function of iteration. Raw measurement (light red) and smoothed curve (0.6 factor, solid red) are superposed. The vertical dashed black lines indicate the iteration minimising the validation loss curve, i.e. 3000. Models were trained with two images per batch ( Appendix A.2 ), a learning rate of 5 x 10 -3 , and a learning rate decay of 1 x 10 -4 every 500 steps (Fig. 7 (a)). For the given model, parameters and a zoom level of 16 ( Section 3.3.3 ), the training is performed over 7000 iterations and lasts about 1 hour on a 16 GiB GPU (NVIDIA Tesla T4) machine compatible with CUDA . The total (train and validation loss) loss curve decreases until reaching a quasi-steady state around 6000 iterations (Fig. 7 (b)). The optimal detection model corresponds to the one minimising the validation loss curve. This minimum is reached between 2000 and 3000 iterations (Fig. 7 (c)).","title":"3.2 Model training"},{"location":"PROJ-DQRY-TM/#33-metrics","text":"The model performance and detection reliability were assessed by comparing the results to the GT. The detection performed by the model can be either (1) a True Positive (TP), i.e. the detection is real (spatially intersecting the GT) ; (2) a False Positive i.e. the detection is not real (not spatially intersecting the GT) or (3) a False Negative (FN) i.e. the labeled object is not detected by the algorithm (Fig. 8). Tagging the detection (Fig. 9(a)) allows to calculate several metrics (Fig. 9(b)) such as: Figure 8: Examples of different detection cases. Label is represented with a yellow polygon and detection with a red polygon. (a) True Positive (TP) detection intersecting the GT, (b) a potential True Positive (TP?) detection with no GT, (c) False Negative (FN) case with no detection while GT exists, (d) False Positive (FP) detection of object that is not a MES. the recall , translating the amount of TP detections predicted by the model: \\[recall = \\frac{TP}{(TP + FN)}\\] the precision , translating the number of well-predicted TP among all the detections: \\[precision = \\frac{TP}{(TP + FP)}\\] the f1-score , the harmonic average of the precision and the recall: \\[f1 = 2 \\times \\frac{recall \\times precision}{recall + precision}\\] Figure 9: Evaluation of the trained model performance obtained at zoom level 16 for the trained model 'replicate 3' (Table 2). (a) Number of TP (blue), FN (red), and FP (green) as a function of detection score threshold for the validation dataset. (b) Metrics value, precision (blue), recall (red), and f1-score (green) as a function of the detection score threshold for the validation dataset. The maximum f1-score value is 82%.","title":"3.3 Metrics"},{"location":"PROJ-DQRY-TM/#4-automatic-detection-model-analysis","text":"","title":"4. Automatic detection model analysis"},{"location":"PROJ-DQRY-TM/#41-model-performance-and-replicability","text":"Trained models reached f1-scores of about 80% with a standard deviation of 2% (Table 2). The performances are similar to the model trained by Reichel and Hamel (2021) 7 . model precision recall f1 replicate 1 0.84 0.79 0.82 replicate 2 0.77 0.76 0.76 replicate 3 0.83 0.81 0.82 replicate 4 0.89 0.77 0.82 replicate 5 0.78 0.82 0.80 Table 2: Metrics value computed for the validation dataset for trained models replicates with the 2020 SWISSIMAGE mosaic at zoom level 16. A variability is expected as the deep learning algorithm displays some random behavior, but it is supposed to be negligible. However, the observed model variability is enough to affect final results that might slightly change by using different trained models with same input parameters (Fig. 10). Figure 10: Detection polygons obtained for the different trained model replicates (Table 2) highlighting results variability. The labels correspond to orange polygons. The number in the square bracket corresponds to the number of polygons. The inference detections have been performed on a subset of 2000 tiles for the 2020 SWISSIMAGE at zoom level 16. Detections have been filtered according to the parameters defined in Section 5.1. To reduce the variability of the trained models, the random seeds of both detectron2 and python have been fixed. Neither of these attempts have been successful, and the variability remains. The nondeterministic behavior of detectron2 has been recognised ( issue 1 , issue 2 ), but no suitable solution has been provided yet. Further investigation on the model performance and consistency should be performed in the future. To mitigate the results variability of model replicates, we could consider in the future to combine the results of several model replicates to remove FP while preserving the TP and potential TP detection. The choice and number of models used should be evaluated. This method is tedious as it requires inference detection from several models, which can be time-consuming and computationally intensive.","title":"4.1. Model performance and replicability"},{"location":"PROJ-DQRY-TM/#42-sensitivity-to-the-zoom-level","text":"Image resolution is dependent on the zoom level ( Section 2.2 ). To select the most suitable zoom level for MES detection, we performed a sensitivity analysis on trained model performance. Increasing the zoom level increases the value of the metrics following a global linear trend (Fig. 11). Figure 11: Metrics values (precision, recall and f1) as function of zoom level for the validation dataset. The results of the replicates performed at each zoom level are included (Table A1). Models trained at a higher zoom level performed better. However, a higher zoom level implies smaller tile and thus, a larger number of tiles to fill the AoI. For a typical AoI, i.e up to a third of Switzerland, this can lead to a large number of tiles to be stored and processed, leading to potential RAM and/or disk space saturation. For 2019 AoI, 89'290 tiles are required at zoom level 16 while 354'867 tiles are required at zoom level 17, taking respectively 3 hours and 11 hours to process on a 30 GiB RAM machine with a 16 GiB GP. Visual comparison of inference detection reveals that there was no significant improvement in the object detection quality from zoom level 16 to zoom level 17. Both zoom level present a similar proportion of detections intersecting labels (82% and 79% for zoom level 16 and zoom level 17 respectively). On the other hand, the quality of object detection at zoom level 15 was depreciated. Indeed, detection scores were lower, with only tens of detection scores above 0.95 while it was about 400 at zoom level 16 and about 64% of detection intersecting labels.","title":"4.2 Sensitivity to the zoom level"},{"location":"PROJ-DQRY-TM/#43-model-choice","text":"Based on tests performed, we selected the 'replicate 3' model, obtained (Tables 2 and A1) at zoom level 16, to perform inference detection. Models trained at zoom level 16 (1.6 m px -1 pixel resolution) have shown satisfying results in accurately detecting MES contour and limiting the number of FP with high detection score (Fig. 11). It represents a good trade-off between results reliability (f1-score between 76% and 82% on the validation dataset) and computational resources. Then, among all the replicates performed at zoom level 16, we selected the trained model 'replicate 3' (Table 2) because it combines both the highest metrics values (for the validation dataset but also the train and test datasets), close precision and recall values and a rather low amount of low score detections.","title":"4.3 Model choice"},{"location":"PROJ-DQRY-TM/#5-automatic-detection-of-mes","text":"","title":"5. Automatic detection of MES"},{"location":"PROJ-DQRY-TM/#51-detection-post-processing","text":"Detection by inference was performed over AoIs with a threshold detection score of 0.3 (Fig. 12). The low score filtering results in a large amount of detections. Several detections may overlap, potentially segmenting a single object. In addition a detection might be split into multiple tiles. To improve the pertinence and the aesthetics of the raw detection polygons, a post-processing procedure was applied. First, a large proportion of FP occurred in mountainous areas (rock outcrops and snow, Fig. 12(a)). We assumed MES are not present (or at least sparse) above a given altitude. An elevation filtering was applied using a Switzerland Digital Elevation Model (about 25 m px -1 ) derived from the SRTM instrument ( USGS - SRTM ). The maximum elevation of the labeled MES is about 1100 m. Second, detection aggregation was applied: - polygons were clustered ( K-means ) according to their centroid position. The method involves setting a predefined number k of clusters. Manual tests performed by Reichel and Hamel (2021) 7 concluded to set k equal to the number of detection divided by three. The highest detection score was assigned to the clustered detection. This method preserves the final integrity of detection polygons by retaining detection that has potentially a low confidence score but belongs to a cluster with a higher confidence score improving the final segmentation of the detected object. The value of the threshold score must be kept relatively low ( i.e. 0.3) when performing the detection to prevent removing too many polygons that could potentially be part of the detected object. We acknowledge that determining the optimal number of clusters by clustering validation indices rather than manual adjustment would be more robust. In addition, exploring other clustering methods, such as DBSCAN , based on local density, can be considered in the future. - score filtering was applied. - spatially close polygons were assumed to belong to the same MES and are merged according to a distance threshold. The averaged score of the merged detection polygons was ultimately computed. Finally, we assumed that a MES covers a minimal area. Detection with an area smaller than a given threshold were filtered out. The minimum MES area in the GT is 2270 m 2 . Figure 12: MES detection filtering. (a) Overview of the automatic detection of MES obtained with 2020 SWISSIMAGE at zoom level 16. Transparent red polygons (with associated confidence score in white) correspond to the raw object detection output and the red line polygons (with associated confidence score in red) correspond to the final filtered detection. The black box outlines the location of the (b) and (c) panel zoom. Note the large number of detection in the mountains (right area of the image). (b) Zoom on several raw detections polygons of a single object with their respective confidence score. (c) Zoom on a filtered detection polygon of a single object with the resulting score. Sensitivity of detections to these filters was investigated (Table 3). The quantitative evaluation of filter combination relevance is tricky as potential MES presence is performed by inference, and the GT provided by swissTLM3D constitutes an incomplete portion of the MES in Switzerland (2020). As indication, we computed the number of spatial intersection between ground truth and detection obtained with the 2020 SWISSIMAGE mosaic. Filter combination number 3 was adopted, allowing to detect about 82% of the GT with a relatively limited amount of FP detection compared to filter combinations 1 and 2 (from visual inspection). filters combination score threshold elevation threshold (m) area threshold (m 2 ) distance threshold (m) number of detection label detection (%) 1 0.95 2000 1100 10 1745 85.1 2 0.95 2000 1200 10 1862 86.6 3 0.95 5000 1200 10 1347 82.1 4 0.96 2000 1100 10 1331 81.3 5 0.96 2000 1200 8 1445 78.7 6 0.96 5000 1200 10 1004 74.3 Table 3: Threshold values of filtering parameters and their respective number of detections and intersection proportion with swissTLM3D labels. The detections have been obtained for the 2020 SWISSIMAGE mosaic. We acknowledged that for the selected filter combination, the area threshold value is higher than the smallest area value of the GT polygons. However, reducing the area value increases significantly the presence of FP. Thirteen labels display an area below 5000 m 2 .","title":"5.1 Detection post-processing"},{"location":"PROJ-DQRY-TM/#52-inference-detections","text":"The trained model was used to perform inference detection on SWISSIMAGE orthophotos from 1999 to 2021. The automatic detection model shows good capabilities to detect MES in different years orthophotos (Fig. 13), despite being trained on the 2020 SWISSIMAGE mosaic. The model also demonstrates capabilities to detect potential MES that have not been mapped yet but are strong candidates. However, the model misses some labeled MES or potential MES (FN, Fig. 8). However, when the model process FSO images, with different colour stretching, it failed to correctly detect potential MES (Fig. 3). It reveals that images must have characteristics close to the training dataset for optimal results with a deep learning model. Figure 13: Examples of object detection segmented by polygons in different year orthophotos. The yellow polygon for the year 2020 panel of object ID 3761 corresponds to the label. Other coloured polygons correspond to the algorithm detection. Then, we acknowledge that a significant amount of FP detection can still be observed in our filtered detection dataset (Figs. 8 and 14). The main sources of FP are the presence of large rock outcrops, mountainous areas without vegetation, snow, river sand beds, brownish-coloured fields, or construction areas. MES present a large variety of features (buildings, water pounds, trucks, vegetation) (Fig. 5) which can be a source of confusion for the algorithm but even sometimes for human eye. Therefore, the robustness of the GT is crucial for reliable detection. The algorithm's results should be taken carefully. Figure 14: Examples of FP detection. (a) Snow patches (2019) ; (b) River sand beds and gullies (2019); (c) Brownish field (2020); (d) vineyards (2005); (e) Airport tarmac (2020); (f) Construction site (2008). The detections produced by the algorithm are potential MES, but the final results must be reviewed by experts in the field to discard remaining FP detection and correct FN before any processing or interpretation.","title":"5.2 Inference detections"},{"location":"PROJ-DQRY-TM/#6-observation-of-mes-evolution","text":"","title":"6. Observation of MES evolution"},{"location":"PROJ-DQRY-TM/#61-object-tracking-strategy","text":"Switzerland is covered by RGB SWISSIMAGE product over more than 20 years (1999 to actual), allowing changes to be detected (Fig. 13). Figure 15: Strategy for MES tracking over time. ID assignment to detection. Spatially intersecting polygons share the same ID allowing the MES to be tracked in a multi-year dataset. We assumed that detection polygons that overlap from one year to another describe a single object (Fig. 15). Overlapping detections and unique detections (which do not overlap with polygons from other years) in the multi-year dataset were assigned a unique object identifier (ID). A new object ID in the timeline indicates: - the first occurrence of the object detected in the dataset of the first year available for the area. It does not mean that the object was not present before, - the creation of a potential new MES. The disappearance of an object ID indicates its potential refill. Therefore, the chronology of MES, creation, evolution and filling, can be constrained.","title":"6.1 Object tracking strategy"},{"location":"PROJ-DQRY-TM/#62-evolution-of-mes-over-years","text":"Figures 13 and 16 illustrate the ability of the trained model to detect and track a single object in a multi-year dataset. The detection over the years appears reliable and consistent, although object detection may be absent from a year dataset ( e.g. due to shadows or colour changes in the surroundings). Remember that the image coverage of a given area is not renewed every year. Characteristics of the potential MES, such as surface evolution (extension or retreat), can be quantified. For example, the surfaces of object IDs 239 and 3861 have more than doubled in about 20 years. Tracking object ID along with image visualisation allows observation of the opening and the closing of potential MES, as object IDs 31, 44, and 229. Figure 16: Detection area (m 2 ) as a function of years for several object ID. Figure 13 provides the visualisation of the object IDs selected. Each point corresponds to an object ID occurrence in the corresponding year dataset. The presence of an object in several years dataset strengthens the likeliness of the detected object to be an actual MES. On the other hand, object detection of only one occurrence is more likely a FP detection.","title":"6.2 Evolution of MES over years"},{"location":"PROJ-DQRY-TM/#7-conclusion-and-perspectives","text":"The project demonstrated the ability to automatically, quickly (a matter of hours for one AoI), and reliably detect potential MES in orthophotos of Switzerland with an automatic detection algorithm (deep learning). The selected trained model achieved a f1-score of 82% on the validation dataset. The final detection polygons accurately delineate the potential MES. We can track single MES through multiple years, emphasising the robustness of the method to detect objects in multi-year datasets despite the detection model being trained on a single dataset (2020 SWISSIMAGE mosaic). However, image colour stretching different from that used to train the model can significantly affect the model's ability to provide reliable detection, as was the case with the FSO images. Although the performance of the trained model is satisfactory, FP and FN are present in the datasets. They are mainly due to confusion of the algorithm between MES and rock outcrops, river sandbeds or construction sites. A manual verification of the relevance of the detection by experts in the field is necessary before processing and interpreting the data. Revision of all the detections from 1999 to 2021 is a time-consuming effort but is necessary to guarantee detection reliability. Despite the required manual checks, the provided framework and detection results constitute a valuable contribution that can greatly assist the inventory and the observation of MES evolution in Switzerland. It provides state-wide detection in a matter of hours, which is a considerable time-saving compared with manual mapping. It also enables MES detection with a standardised method, independent of the information or method adopted by the cantons. Further model improvements could be consider, such as increasing the metrics by improving GT quality, improving model learning strategy, mitigating the model learning variability, or test supervised clustering methods to find relevant detection. This work can be used to compute statistics to study long-term MES in Switzerland and better management of resources and land use in the future. MES detection can be combined with other data, such as the geologic layer, to identify the mineral/rocks exploited and high-resolution DEM ( swissALTI3D ) to infer elevation changes and observe excavation or filling of MES 5 . So far only RGB SWISSIMAGE orthophotos from 1999 to 2021 were processed. Prior to 1999, black and white orthophotos exist but the model trained on RGB images could not be applied trustfully to black and white images. Image colourisation tests (with the help of deep learning algorithm[@farella_colour_2022]) were performed and provided encouraging detection results. This avenue needs to be explored. Finally, automatic detection of MES is rare 1 3 , and most studies perform manual mapping. Therefore, the framework could be the extended to other datasets and/or other countries to provide a valuable asset to the community. A global mapping of MES has been completed with over 21'000 polygons 1 and can be used as a GT database to train an automatic detection model.","title":"7. Conclusion and perspectives"},{"location":"PROJ-DQRY-TM/#code-availability","text":"The codes are stored and available on the STDL's github repository: proj-dqry : mineral extraction site framework object-detector : object detector framework","title":"Code availability"},{"location":"PROJ-DQRY-TM/#acknowledgements","text":"This project was made possible thanks to a tight collaboration between the STDL team and swisstopo . In particular, the STDL team acknowledges key contribution from Thomas Galfetti ( swisstopo ). This project has been funded by \"Strategie Suisse pour la G\u00e9oinformation\".","title":"Acknowledgements"},{"location":"PROJ-DQRY-TM/#appendix","text":"","title":"Appendix"},{"location":"PROJ-DQRY-TM/#a1-influence-of-empty-tiles-addition-to-model-performance","text":"By selecting tiles intersecting only labels, the detection model is mainly confronted with the presence of the targeted object to be detected. Addition of non-label-intersecting tiles, i.e. empty tiles, provides landscape diversity that might help to improve the object detection performance. In order to evaluate the influence of adding empty tiles to the dataset used for the model performance, empty tiles were chosen randomly (not intersecting labels) within Switzerland boundaries and added to the tile dataset used for the model training (Fig. A1). Empty tiles were added to (1) the whole dataset split as for the initial dataset (training: 70%, test: 15%, and validation: 15%) and (2) only to the training dataset. A visual inspection must be performed to prevent a potential unlabeled MES to be present in the image and disturbing the algorithm learning. Figure A1: View of tiles intersecting (black) labels (yellow) and randomly selected empty tiles (red) in Switzerland. This case correspond to the addition of 35% empty tiles. Figure A1 reveals that adding empty tiles to the dataset does not significantly influence the metrics values. The number of TP, FP, and FN do not show significant variation. However, when performing an inference detection test on a subset of tiles (2000) for an AOI, it appears that the number of raw detections (unfiltered) is reduced as the number of empty tiles increases. However, visual inspection of the final detection after applying filters does not show significant improvement compared to a model trained without adding empty tiles. Figure A1: Influence of the addition of empty tiles (relative to the number of tiles intersecting labels) on trained performance for zoom levels 16 and 17 with (a) the F1-score as a function of the percentage of added empty tiles and (b) the normalised (by the number of tiles sampled = 2000) number of detection as a function of added empty tiles. Empty tiles have been added to only the train dataset for the 5% and 30% cases and to all datasets for 9%, 35%, 70%, and 140% cases. A considered solution to improve the results could be to specifically select tiles for which FP occurred and include them in the training dataset as empty tiles. This way, the model could be trained with relevant confounding features such as snow patches, river sandbeds, or gullies not labeled as GT.","title":"A.1 Influence of empty tiles addition to model performance"},{"location":"PROJ-DQRY-TM/#a2-sensitivity-of-the-model-to-the-number-of-images-per-batch","text":"During the model learning phase, the trained model is updated after each batch of samples was processed. Adding more samples, i.e. in our case images, to the batch can influence the model learning capacity. We investigated the role of adding more images per batch for a dataset with and without adding a portion of empty tiles to the learning dataset. Adding more images per batch speeds up the model learning (Table A1), and the minimum of the loss curve is reached for a smaller number of iterations. Figure A2: Metrics (precision, recall and f1-score) evolution with the number of images per batch during the model training. Results have been obtained on a dataset without empty tiles addition (red) and with the addition of 23% of empty tiles to the training dataset. Figure A2 reveals that the metrics values remain in a range of constant values while adding extra images to the batch in all cases (with or without empty tiles). A potential effect of adding more images to the batch is the reduction of the metrics variability between replicates of trained models as the range of metrics values is smaller for 8 images per batch than 2 images per batch. However, this observation has to be taken carefully as fewer replicates have been performed with 8 images per batch than for 2 or 4 images per batch. Further investigation would provide stronger insights on this effect.","title":"A.2 Sensitivity of the model to the number of images per batch"},{"location":"PROJ-DQRY-TM/#a3-evaluation-of-trained-models","text":"Table A1 sumup metrics value obtained for all the configuration tested for the project. zoom level model empty tiles (%) image per batch optimum iteration precision recall f1 15 replicate 1 0 2 1000 0.727 0.810 0.766 16 replicate 1 0 2 2000 0.842 0.793 0.817 16 replicate 2 0 2 2000 0.767 0.760 0.763 16 replicate 3 0 2 3000 0.831 0.810 0.820 16 replicate 4 0 2 2000 0.886 0.769 0.826 16 replicate 5 0 2 2000 0.780 0.818 0.798 16 replicate 6 0 2 3000 0.781 0.826 0.803 16 replicate 7 0 4 1000 0.748 0.860 0.800 16 replicate 8 0 4 1000 0.779 0.785 0.782 16 replicate 9 0 8 1500 0.800 0.793 0.797 16 replicate 10 0 4 1000 0.796 0.744 0.769 16 replicate 11 0 8 1000 0.802 0.769 0.785 16 ET-250_allDS_1 34.2 2 2000 0.723 0.770 0.746 16 ET-250_allDS_2 34.2 2 3000 0.748 0.803 0.775 16 ET-1000_allDS_1 73.8 2 6000 0.782 0.815 0.798 16 ET-1000_allDS_2 69.8 2 6000 0.786 0.767 0.776 16 ET-1000_allDS_3 70.9 2 6000 0.777 0.810 0.793 16 ET-1000_allDS_4 73.8 2 6000 0.768 0.807 0.787 16 ET-2000_allDS_1 143.2 2 6000 0.761 0.748 0.754 16 ET-80_trnDS_1 5.4 2 2000 0.814 0.793 0.803 16 ET-80_trnDS_2 5.4 2 2000 0.835 0.752 0.791 16 ET-80_trnDS_3 5.4 2 2000 0.764 0.802 0.782 16 ET-400_trnDS_1 29.5 2 6000 0.817 0.777 0.797 16 ET-400_trnDS_2 29.5 2 5000 0.848 0.785 0.815 16 ET-400_trnDS_3 29.5 2 4000 0.758 0.802 0.779 16 ET-400_trnDS_4 29.5 4 2000 0.798 0.818 0.808 16 ET-400_trnDS_5 29.5 4 1000 0.825 0.777 0.800 16 ET-1000_trnDS_1 0 2 4000 0.758 0.802 0.779 17 replicate 1 0 2 5000 0.819 0.853 0.835 17 replicate 1 0 2 5000 0.803 0.891 0.845 17 replicate 1 0 2 5000 0.872 0.813 0.841 17 ET-250_allDS_1 16.8 2 3000 0.801 0.794 0.797 17 ET-1000_allDS_1 72.2 2 7000 0.743 0.765 0.754 18 replicate 1 0 2 10000 0.864 0.855 0.859 Table A1: Metrics value computed for the validation dataset for all the trained models with the 2020 SWISSIMAGE Journey mosaic at zoom level 16. Victor Maus, Stefan Giljum, Jakob Gutschlhofer, Dieison M. Da Silva, Michael Probst, Sidnei L. B. Gass, Sebastian Luckeneder, Mirko Lieber, and Ian McCallum. A global-scale data set of mining areas. Scientific Data , 7(1):289, September 2020. URL: https://www.nature.com/articles/s41597-020-00624-w , doi:10.1038/s41597-020-00624-w . \u21a9 \u21a9 \u21a9 \u21a9 \u21a9 Vicen\u00e7 Carabassa, Pau Montero, Marc Crespo, Joan-Cristian Padr\u00f3, Xavier Pons, Jaume Balagu\u00e9, Llu\u00eds Brotons, and Josep Maria Alca\u00f1iz. Unmanned aerial system protocol for quarry restoration and mineral extraction monitoring. Journal of Environmental Management , 270:110717, September 2020. URL: https://linkinghub.elsevier.com/retrieve/pii/S0301479720306496 , doi:10.1016/j.jenvman.2020.110717 . \u21a9 \u21a9 \u21a9 \u21a9 Chunsheng Wang, Lili Chang, Lingran Zhao, and Ruiqing Niu. Automatic Identification and Dynamic Monitoring of Open-Pit Mines Based on Improved Mask R-CNN and Transfer Learning. Remote Sensing , 12(21):3474, January 2020. URL: https://www.mdpi.com/2072-4292/12/21/3474 , doi:10.3390/rs12213474 . \u21a9 \u21a9 \u21a9 \u21a9 Haoteng Zhao, Yong Ma, Fu Chen, Jianbo Liu, Liyuan Jiang, Wutao Yao, and Jin Yang. Monitoring Quarry Area with Landsat Long Time-Series for Socioeconomic Study. Remote Sensing , 10(4):517, April 2018. URL: https://www.mdpi.com/2072-4292/10/4/517 , doi:10.3390/rs10040517 . \u21a9 \u21a9 Valentin Tertius Bickel and Andrea Manconi. Decadal Surface Changes and Displacements in Switzerland. Journal of Geovisualization and Spatial Analysis , 6(2):24, December 2022. URL: https://link.springer.com/10.1007/s41651-022-00119-9 , doi:10.1007/s41651-022-00119-9 . \u21a9 \u21a9 George P. Petropoulos, Panagiotis Partsinevelos, and Zinovia Mitraka. Change detection of surface mining activity and reclamation based on a machine learning approach of multi-temporal Landsat TM imagery. Geocarto International , 28(4):323\u2013342, July 2013. URL: http://www.tandfonline.com/doi/abs/10.1080/10106049.2012.706648 , doi:10.1080/10106049.2012.706648 . \u21a9 Huriel Reichel and Nils Hamel. Automatic Detection of Quarries and the Lithology below them in Switzerland. 2022. URL: file:///C:/Users/Clemence/Documents/STDL/Projects/proj-quarries/01_Documentation/Bibliography/Automatic%20Detection%20of%20Quarries%20and%20the%20Lithology%20below%20them%20in%20Switzerland%20-%20Swiss%20Territorial%20Data%20Lab.htm . \u21a9 \u21a9 \u21a9 \u21a9 Yuxin Wu, Alexander Kirillov, Francisco Massa, Wan-Yen Lo, and Ross Girshick. Detectron2. 2019. URL: https://github.com/facebookresearch/detectron2 . \u21a9 Kaiming He, Georgia Gkioxari, Piotr Doll\u00e1r, and Ross Girshick. Mask R-CNN. January 2018. arXiv:1703.06870 [cs]. URL: http://arxiv.org/abs/1703.06870 , doi:10.48550/arXiv.1703.06870 . \u21a9","title":"A.3 Evaluation of trained models"},{"location":"PROJ-DTRK/","text":"DIFFERENCE MODELS APPLIED ON LAND REGISTER \u00b6 Nils Hamel (UNIGE) - Huriel Reichel (swisstopo) Project scheduled in the STDL research roadmap - PROJ-DTRK September 2020 to November 2020 - Published on April 23, 2021 Abstract : Being able to track modifications in the evolution of geographical datasets is one important aspect in territory management, as a large amount of information can be extracted out of differences models. Differences detection can also be a tool used to assess the evolution of a geographical model through time. In this research project, we apply differences detection on INTERLIS models of the official Swiss land registers in order to emphasize and follow its evolution and to demonstrate that change in reference frames can be detected and assessed. Introduction \u00b6 Land register models are probably to most living of the geographical models as they are constantly updated to offer a rigorous and up-to-date view of the territory. The applied corrections are always the result of a complex process, involving different territory actors, until the decision is made to integrate them into the land register. In addition, land register models comes with an additional constraint linked to political decisions. Indeed, the land register models are the result of a political mission conducted under federal laws making these models of high importance and requiring constant care. We show in this research project how differences detection tool [1] of the STDL 4D framework can be used to emphasize and analyze these corrections along the time dimension. In addition to the constant updates of the models, changes in the reference frame can also lead to large-scale corrections of the land register models. These global corrections are then made even more complex by the federal laws that impose a high degree of correctness and accuracy. In the context of the introduction of the new reference frame DM.flex [2] for the Swiss land register, being able to assess the applied changes on the geographical model appear as an important aspect. Indeed, changing the reference frame for the land register models is a long and complex technical process that can be error prompt. We also show in this research project how the difference detection algorithm can be helpful to assess and verify the performed corrections. Research Project Specifications \u00b6 In this research project, the difference detection algorithm implemented in the STDL 4D framework is applied on INTERLIS data containing the official land register models of different Swiss Canton . As introduced, two main directions are considered for the difference detection algorithm : Demonstrating the ability to extract information in between land register models Demonstrating the ability of difference models to be used as an assessment tool Through the first direction, the difference detection algorithm is presented. Considering the difference models it allows computing, it is shown how such model are able to extract information in between the models in order to emphasize the ability to represent, and then, to verify the evolution of the land register models. The second direction focuses on demonstrating that difference models are a helpful representation of the large-scale corrections that can be applied to land register during reference frame modification and how they can be used as a tool to assess the modifications and to help to fulfil the complex task of the verification of the corrected models. Research Project Data \u00b6 For the first research direction, the land register models of the Thurgau Kanton are considered. They are selected in order to have a small temporal distance allowing to focus on a small amount of well-defined differences : Thurgau Kanton , 2020-10-13 , INTERLIS Thurgau Kanton , 2020-10-17 , INTERLIS For the second direction, which focus on more complex differences, the models of the Canton of Geneva land register are considered with a much larger temporal gap between them : Canton of Geneva , 2009-10 , INTERLIS Canton of Geneva , 2013-04 , INTERLIS Canton of Geneva , 2017-04 , INTERLIS Canton of Geneva , 2019-04 , INTERLIS Difference Models : A Temporal Derivative \u00b6 This first section focuses on short-term differences to show how difference models work and how they are able to represent the modifications extracted out of the two compared models. The following images give an illustration of the considered dataset, which are the land register models of Thurgau Kanton : Illustration of Thurgau Kanton INTERLIS models - Data : Kanton Thurgau The models are made of vector lines, well geo-referenced in the Swiss coordinates frame EPSG:2056 . The models are also made of different layers that are colored differently with the following correspondences : INTERLIS selected topics and tables colors - Official French and German designations These legends are used all along this research project. Considering two temporal versions of this geographical model, separated of a few days, one is able to extract difference models using the 4D framework algorithm. As an example, one can consider this very specific view of the land register, focusing on a few houses : Close view of the Thurgau INTERLIS model in 2020-10-13 (left) and 2020-10-17 (right) - Data : Kanton Thurgau It is clear that most of the close view is identical for the two models, except for a couple of houses that were added to the land register model between these two temporal versions. By applying the difference detection algorithm, one is able to obtain a difference model comparing the two previous models. The following image gives an illustration of the obtained difference models considering the most recent temporal version as reference : Difference model obtained comparing the two temporal versions - Data : Kanton Thrugau One can see how the difference algorithm is able to emphasize the differences and to represent them in a human-readable third model. The algorithm also displays the identical parts in dark gray to offer the context of the differences to the operator. Of course, in such close view, differences detection can appear as irrelevant, as one is clearly able to see that something changed on the selected example without any help. But difference models can be computed at any scale. For example, taking the example of the Amriswil city : View of Amriswil model in 2020-10-13 (left) and 2020-10-17 (right) - Data : Kanton Thurgau It becomes more complicated to track down the differences that can appear between the two temporal versions. By computing their difference model , one is able to access a third model that ease the analysis of the evolution at the scale of the city itself as illustrated on the following image : Difference model computed for the city of Amriswil - Data : Kanton Thrugau One can see how difference models can be used to track down modifications brought to the land register in a simple manner, while keeping the information of the unchanged elements between the two compared models. This demonstrates that information that exists between models can be extracted and represented for further users or automated processes. In addition, such difference models can be computed at any scale, considering small area up to the whole countries. Difference Models : An Assessment Tool \u00b6 On the previous section, the difference models are computed using two models only separated of a few days, containing only a small amount of clear and simple modifications. This section focuses on detecting differences on larger models, separated by several years. In this case, the land register of the Canton of Geneva is considered : Illustration of the Geneva land register in 2017-04 (left) and 2019-04 (right) - Data : Canton of Geneva One can see that at such a scale, taking into account that the Canton of Geneva is one of the smallest in Switzerland, having a vision and a clear understanding of the modifications made between these two models is difficult by considering the two models separately. It's precisely where differences models can be useful to understand and analyze the evolution of the land register, along both the space and time dimensions. Large-Scale Analysis \u00b6 A first large-scale evaluation can be made on the overall models. A difference model can be computed considering the land register of Geneva in 2019 and 2017 as illustrated on the following image : Difference model on Geneva land register between 2019-04 and 2017-04 - Data : Canton of Geneva Two observations can be already made by looking at the difference model . In the first place, one can see that the amount of modifications brought to the land register is large in only two years. A large portion of the land register were subject to modifications or corrections, the unchanged parts being mostly limited outside the populated area. In the second place, one can observe large portions where differences seem to be accumulating over this period of time. Looking at them more closely leads to the conclusion that these zones were actually completely modified, as all elements are highlighted by the difference detection algorithm. The following image gives a closer view of such an area of differences accumulation : Focus on Carouge area of the 2019-04 and 2017-04 difference model - Data : Canton of Geneva Despite the amount of modifications outside this specific zone is also high, it is clear that the pointed zone contains more of them. Looking at it more closely leads to the conclusion that everything changed. In order to understand these areas of differences accumulation, the the land register experts of the Canton of Geneva ( SITG ) were questioned. They provided an explanation for these specific areas. Between 2017 and 2019 , these areas were subjected to a global correction in order to release the tension between the old reference frame LV03 [3] and the current one LV95 [4]. These corrections were made using the FINELTRA algorithm to modify the elements of the land register of the order of a few centimeters. The land register of Geneva provided the following illustration summarizing these reference frame corrections made between 2017 and 2019 on the Geneva territory : Reference frame corrections performed between 2017 and 2019 - Data : SITG Comparing this map from the land register with the computed model allows seeing how differences detection can emphasize this type of corrections efficiently, as the corrected zones on this previous image corresponds to the difference accumulation areas on the computed difference model . Small-Scale Analysis \u00b6 One can also dive deep into the details of the difference models . As we saw on the large scale analysis, two types of areas can be seen on the 2019-04-2017-04 difference model of Geneva : regular evolution with an accumulation of corrections and areas on which global corrections were applied. The following images propose a close view of these two types of situation : Illustration of the two observed type of evolutions of the land register - Data : Canton of Geneva On the left image above, one can observe the regular evolution of the land register where modifications are brought to the model in order to follow the evolution of the territory. On the right image above, one can see a close view of an area subjected to a global correction (reference frame), leading to a difference model highlighting all the elements. Analyzing more closely the right image above lead the observer to conclude that not all the elements are actually highlighted by the difference detection algorithm. Indeed, some elements are rendered in gray on the difference model , indicating their lack of modification between the two compared times. The following image emphasizes the unchanged elements that can be observed : Unchanged elements in the land register after reference frame correction - Data : SITG These unchanged elements can be surprising as they're found in an area that was subject to a global reference frame correction. This shows how difference models can be helpful to track down these type of events in order to check whether these unchanged elements are expected or are the results of a discrepancy in the land register evolution. Other example can be found in this very same area of the Geneva city. The following images give an illustration of two other close view where the unchanged element can be seen despite the reference frame correction : Unchanged elements in the land register after reference frame correction - Data : SITG On the left image above, one can observe that the unchanged elements are the railway tracks within the commune of Carouge . This is an interesting observation, as railway tracks can be considered as specific elements that can be subjected to different legislations regarding the land register. But it is clear that railway tracks were not considered in the reference frame correction. On the right image above, one can see another example of unchanged elements that are more complicated to explain, as they're in the middle of modified other elements. This clearly demonstrate how difference models can be helpful for analyzing and assessing the evolution of the land register models. Such models are able to drive users or automated processes and lead them to focus on relevant aspects and to define the good question in the context of analyzing the evolution of the land register. Conclusion \u00b6 The presented difference models computed based on two temporal versions of the land register and using the 4D framework algorithm showed how differences can be emphasized for users and automated processes [1]. Difference models can be helpful to determine the amount and nature of changes that appear in the land register. Applying such an algorithm on land register is especially relevant as it is a highly living model, that evolves jointly with the territory it describes. Two main applications can be considered using difference models applied on the land register. In the first place, the difference models can be used to assess and analyze the regular evolution of the territory. Indeed, updating the land register is not a simple task. Such modifications involve a whole chain of decisions and verifications, from surveyors to the highest land register authority before to be integrated in the model. Being able to assess and analyze the modifications in the land register through difference models could be one interesting strengthening of the overall process. The second application of difference models could be as an assessment tool of global corrections applied to the land register or parts of it. These modifications are often linked to the reference frame and its evolution. Being able to assess the corrections through the difference models could add a helpful tool in order to verify that the elements of the land register where correctly processed. In this direction, difference models could be used during the introduction of the DM.flex reference frame for both analyzing its introduction and demonstrating that difference models can be an interesting point of view. Reproduction Resources \u00b6 To reproduce the presented experiments, the STDL 4D framework has to be used and can be found here : STDL 4D framework (eratosthene-suite), STDL You can follow the instructions on the README to both compile and use the framework. Unfortunately, the used data are not currently public. In both cases, the land register INTERLIS datasets were provided to the STDL directly. You can contact both Thurgau Kanton and SITG : INTERLIS land register, Thurgau Kanton INTERLIS land register, SITG (Geneva) to query the data. In order to extract and convert the data from the INTERLIS models, the following code is used : INTERLIS to UV3 (dalai-suite), STDL/EPFL where the README gives all the information needed. For the 3D geographical coordinates conversion and heights restoration, we used two STDL internal tools. You can contact the STDL to obtain the tools and support in this direction : ptolemee-suite : 3D coordinate conversion tool (EPSG:2056 to WGS84) height-from-geotiff : Restoring geographical heights using topographic GeoTIFF ( SRTM ) You can contact STDL for any question regarding the reproduction of the presented results. References \u00b6 [1] Automatic Detection of Changes in the Environment, N. Hamel, STDL 2020 [2] DM.flex reference frame [3] LV03 Reference frame [4] LV95 Reference frame","title":"DIFFERENCE MODELS APPLIED ON LAND REGISTER"},{"location":"PROJ-DTRK/#difference-models-applied-on-land-register","text":"Nils Hamel (UNIGE) - Huriel Reichel (swisstopo) Project scheduled in the STDL research roadmap - PROJ-DTRK September 2020 to November 2020 - Published on April 23, 2021 Abstract : Being able to track modifications in the evolution of geographical datasets is one important aspect in territory management, as a large amount of information can be extracted out of differences models. Differences detection can also be a tool used to assess the evolution of a geographical model through time. In this research project, we apply differences detection on INTERLIS models of the official Swiss land registers in order to emphasize and follow its evolution and to demonstrate that change in reference frames can be detected and assessed.","title":"DIFFERENCE MODELS APPLIED ON LAND REGISTER"},{"location":"PROJ-DTRK/#introduction","text":"Land register models are probably to most living of the geographical models as they are constantly updated to offer a rigorous and up-to-date view of the territory. The applied corrections are always the result of a complex process, involving different territory actors, until the decision is made to integrate them into the land register. In addition, land register models comes with an additional constraint linked to political decisions. Indeed, the land register models are the result of a political mission conducted under federal laws making these models of high importance and requiring constant care. We show in this research project how differences detection tool [1] of the STDL 4D framework can be used to emphasize and analyze these corrections along the time dimension. In addition to the constant updates of the models, changes in the reference frame can also lead to large-scale corrections of the land register models. These global corrections are then made even more complex by the federal laws that impose a high degree of correctness and accuracy. In the context of the introduction of the new reference frame DM.flex [2] for the Swiss land register, being able to assess the applied changes on the geographical model appear as an important aspect. Indeed, changing the reference frame for the land register models is a long and complex technical process that can be error prompt. We also show in this research project how the difference detection algorithm can be helpful to assess and verify the performed corrections.","title":"Introduction"},{"location":"PROJ-DTRK/#research-project-specifications","text":"In this research project, the difference detection algorithm implemented in the STDL 4D framework is applied on INTERLIS data containing the official land register models of different Swiss Canton . As introduced, two main directions are considered for the difference detection algorithm : Demonstrating the ability to extract information in between land register models Demonstrating the ability of difference models to be used as an assessment tool Through the first direction, the difference detection algorithm is presented. Considering the difference models it allows computing, it is shown how such model are able to extract information in between the models in order to emphasize the ability to represent, and then, to verify the evolution of the land register models. The second direction focuses on demonstrating that difference models are a helpful representation of the large-scale corrections that can be applied to land register during reference frame modification and how they can be used as a tool to assess the modifications and to help to fulfil the complex task of the verification of the corrected models.","title":"Research Project Specifications"},{"location":"PROJ-DTRK/#research-project-data","text":"For the first research direction, the land register models of the Thurgau Kanton are considered. They are selected in order to have a small temporal distance allowing to focus on a small amount of well-defined differences : Thurgau Kanton , 2020-10-13 , INTERLIS Thurgau Kanton , 2020-10-17 , INTERLIS For the second direction, which focus on more complex differences, the models of the Canton of Geneva land register are considered with a much larger temporal gap between them : Canton of Geneva , 2009-10 , INTERLIS Canton of Geneva , 2013-04 , INTERLIS Canton of Geneva , 2017-04 , INTERLIS Canton of Geneva , 2019-04 , INTERLIS","title":"Research Project Data"},{"location":"PROJ-DTRK/#difference-models-a-temporal-derivative","text":"This first section focuses on short-term differences to show how difference models work and how they are able to represent the modifications extracted out of the two compared models. The following images give an illustration of the considered dataset, which are the land register models of Thurgau Kanton : Illustration of Thurgau Kanton INTERLIS models - Data : Kanton Thurgau The models are made of vector lines, well geo-referenced in the Swiss coordinates frame EPSG:2056 . The models are also made of different layers that are colored differently with the following correspondences : INTERLIS selected topics and tables colors - Official French and German designations These legends are used all along this research project. Considering two temporal versions of this geographical model, separated of a few days, one is able to extract difference models using the 4D framework algorithm. As an example, one can consider this very specific view of the land register, focusing on a few houses : Close view of the Thurgau INTERLIS model in 2020-10-13 (left) and 2020-10-17 (right) - Data : Kanton Thurgau It is clear that most of the close view is identical for the two models, except for a couple of houses that were added to the land register model between these two temporal versions. By applying the difference detection algorithm, one is able to obtain a difference model comparing the two previous models. The following image gives an illustration of the obtained difference models considering the most recent temporal version as reference : Difference model obtained comparing the two temporal versions - Data : Kanton Thrugau One can see how the difference algorithm is able to emphasize the differences and to represent them in a human-readable third model. The algorithm also displays the identical parts in dark gray to offer the context of the differences to the operator. Of course, in such close view, differences detection can appear as irrelevant, as one is clearly able to see that something changed on the selected example without any help. But difference models can be computed at any scale. For example, taking the example of the Amriswil city : View of Amriswil model in 2020-10-13 (left) and 2020-10-17 (right) - Data : Kanton Thurgau It becomes more complicated to track down the differences that can appear between the two temporal versions. By computing their difference model , one is able to access a third model that ease the analysis of the evolution at the scale of the city itself as illustrated on the following image : Difference model computed for the city of Amriswil - Data : Kanton Thrugau One can see how difference models can be used to track down modifications brought to the land register in a simple manner, while keeping the information of the unchanged elements between the two compared models. This demonstrates that information that exists between models can be extracted and represented for further users or automated processes. In addition, such difference models can be computed at any scale, considering small area up to the whole countries.","title":"Difference Models : A Temporal Derivative"},{"location":"PROJ-DTRK/#difference-models-an-assessment-tool","text":"On the previous section, the difference models are computed using two models only separated of a few days, containing only a small amount of clear and simple modifications. This section focuses on detecting differences on larger models, separated by several years. In this case, the land register of the Canton of Geneva is considered : Illustration of the Geneva land register in 2017-04 (left) and 2019-04 (right) - Data : Canton of Geneva One can see that at such a scale, taking into account that the Canton of Geneva is one of the smallest in Switzerland, having a vision and a clear understanding of the modifications made between these two models is difficult by considering the two models separately. It's precisely where differences models can be useful to understand and analyze the evolution of the land register, along both the space and time dimensions.","title":"Difference Models : An Assessment Tool"},{"location":"PROJ-DTRK/#large-scale-analysis","text":"A first large-scale evaluation can be made on the overall models. A difference model can be computed considering the land register of Geneva in 2019 and 2017 as illustrated on the following image : Difference model on Geneva land register between 2019-04 and 2017-04 - Data : Canton of Geneva Two observations can be already made by looking at the difference model . In the first place, one can see that the amount of modifications brought to the land register is large in only two years. A large portion of the land register were subject to modifications or corrections, the unchanged parts being mostly limited outside the populated area. In the second place, one can observe large portions where differences seem to be accumulating over this period of time. Looking at them more closely leads to the conclusion that these zones were actually completely modified, as all elements are highlighted by the difference detection algorithm. The following image gives a closer view of such an area of differences accumulation : Focus on Carouge area of the 2019-04 and 2017-04 difference model - Data : Canton of Geneva Despite the amount of modifications outside this specific zone is also high, it is clear that the pointed zone contains more of them. Looking at it more closely leads to the conclusion that everything changed. In order to understand these areas of differences accumulation, the the land register experts of the Canton of Geneva ( SITG ) were questioned. They provided an explanation for these specific areas. Between 2017 and 2019 , these areas were subjected to a global correction in order to release the tension between the old reference frame LV03 [3] and the current one LV95 [4]. These corrections were made using the FINELTRA algorithm to modify the elements of the land register of the order of a few centimeters. The land register of Geneva provided the following illustration summarizing these reference frame corrections made between 2017 and 2019 on the Geneva territory : Reference frame corrections performed between 2017 and 2019 - Data : SITG Comparing this map from the land register with the computed model allows seeing how differences detection can emphasize this type of corrections efficiently, as the corrected zones on this previous image corresponds to the difference accumulation areas on the computed difference model .","title":"Large-Scale Analysis"},{"location":"PROJ-DTRK/#small-scale-analysis","text":"One can also dive deep into the details of the difference models . As we saw on the large scale analysis, two types of areas can be seen on the 2019-04-2017-04 difference model of Geneva : regular evolution with an accumulation of corrections and areas on which global corrections were applied. The following images propose a close view of these two types of situation : Illustration of the two observed type of evolutions of the land register - Data : Canton of Geneva On the left image above, one can observe the regular evolution of the land register where modifications are brought to the model in order to follow the evolution of the territory. On the right image above, one can see a close view of an area subjected to a global correction (reference frame), leading to a difference model highlighting all the elements. Analyzing more closely the right image above lead the observer to conclude that not all the elements are actually highlighted by the difference detection algorithm. Indeed, some elements are rendered in gray on the difference model , indicating their lack of modification between the two compared times. The following image emphasizes the unchanged elements that can be observed : Unchanged elements in the land register after reference frame correction - Data : SITG These unchanged elements can be surprising as they're found in an area that was subject to a global reference frame correction. This shows how difference models can be helpful to track down these type of events in order to check whether these unchanged elements are expected or are the results of a discrepancy in the land register evolution. Other example can be found in this very same area of the Geneva city. The following images give an illustration of two other close view where the unchanged element can be seen despite the reference frame correction : Unchanged elements in the land register after reference frame correction - Data : SITG On the left image above, one can observe that the unchanged elements are the railway tracks within the commune of Carouge . This is an interesting observation, as railway tracks can be considered as specific elements that can be subjected to different legislations regarding the land register. But it is clear that railway tracks were not considered in the reference frame correction. On the right image above, one can see another example of unchanged elements that are more complicated to explain, as they're in the middle of modified other elements. This clearly demonstrate how difference models can be helpful for analyzing and assessing the evolution of the land register models. Such models are able to drive users or automated processes and lead them to focus on relevant aspects and to define the good question in the context of analyzing the evolution of the land register.","title":"Small-Scale Analysis"},{"location":"PROJ-DTRK/#conclusion","text":"The presented difference models computed based on two temporal versions of the land register and using the 4D framework algorithm showed how differences can be emphasized for users and automated processes [1]. Difference models can be helpful to determine the amount and nature of changes that appear in the land register. Applying such an algorithm on land register is especially relevant as it is a highly living model, that evolves jointly with the territory it describes. Two main applications can be considered using difference models applied on the land register. In the first place, the difference models can be used to assess and analyze the regular evolution of the territory. Indeed, updating the land register is not a simple task. Such modifications involve a whole chain of decisions and verifications, from surveyors to the highest land register authority before to be integrated in the model. Being able to assess and analyze the modifications in the land register through difference models could be one interesting strengthening of the overall process. The second application of difference models could be as an assessment tool of global corrections applied to the land register or parts of it. These modifications are often linked to the reference frame and its evolution. Being able to assess the corrections through the difference models could add a helpful tool in order to verify that the elements of the land register where correctly processed. In this direction, difference models could be used during the introduction of the DM.flex reference frame for both analyzing its introduction and demonstrating that difference models can be an interesting point of view.","title":"Conclusion"},{"location":"PROJ-DTRK/#reproduction-resources","text":"To reproduce the presented experiments, the STDL 4D framework has to be used and can be found here : STDL 4D framework (eratosthene-suite), STDL You can follow the instructions on the README to both compile and use the framework. Unfortunately, the used data are not currently public. In both cases, the land register INTERLIS datasets were provided to the STDL directly. You can contact both Thurgau Kanton and SITG : INTERLIS land register, Thurgau Kanton INTERLIS land register, SITG (Geneva) to query the data. In order to extract and convert the data from the INTERLIS models, the following code is used : INTERLIS to UV3 (dalai-suite), STDL/EPFL where the README gives all the information needed. For the 3D geographical coordinates conversion and heights restoration, we used two STDL internal tools. You can contact the STDL to obtain the tools and support in this direction : ptolemee-suite : 3D coordinate conversion tool (EPSG:2056 to WGS84) height-from-geotiff : Restoring geographical heights using topographic GeoTIFF ( SRTM ) You can contact STDL for any question regarding the reproduction of the presented results.","title":"Reproduction Resources"},{"location":"PROJ-DTRK/#references","text":"[1] Automatic Detection of Changes in the Environment, N. Hamel, STDL 2020 [2] DM.flex reference frame [3] LV03 Reference frame [4] LV95 Reference frame","title":"References"},{"location":"PROJ-GEPOOL/","text":"Swimming Pool Detection from Aerial Images over the Canton of Geneva \u00b6 Alessandro Cerioni (Canton of Geneva) - Adrian Meyer (FHNW) Proposed by the Canton of Geneva - PROJ-GEPOOL September 2020 to January 2021 - Published on May 18, 2021 Abstract : Object detection is one of the computer vision tasks which can benefit from Deep Learning methods. The STDL team managed to leverage state-of-art methods and already existing open datasets to first build a swimming pool detector, then to use it to potentially detect unregistered swimming pools over the Canton of Geneva. Despite the success of our approach, we will argue that domain expertise still remains key to post-process detections in order to tell objects which are subject to registration from those which aren't. Pairing semi-automatic Deep Learning methods with domain expertise turns out to pave the way to novel workflows allowing administrations to keep cadastral information up to date. Introduction \u00b6 The Canton of Geneva manages a register of swimming pools, counting - in principle - all and only those swimming pools that are in-ground or, at least, permanently fixed to the ground. The swimming pool register is part of a far more general cadastre, including several other classes of objects (cf. this page ). Typically the swimming pool register is updated either by taking building/demolition permits into account, or by manually checking its multiple records (4000+ to date) against aerial images, which is quite a long and tedious task. Exploring the opportunity of leveraging Machine Learning to help domain experts in such an otherwise tedious tasks was one of the main motivations behind this study. As such, no prior requirements/expectations were set by the recipients. The study was autonomously conducted by the STDL team, using Open Source software and Open Data published by the Canton of Geneva. Domain experts were asked for feedback only at a later stage. In the following, details are provided regarding the various steps we followed. We refer the reader to this page for a thorough description of the generic STDL Object Detection Framework. Method \u00b6 Several steps are required to set the stage for object detection and eventually reach the goal of obtaining - ideally - even more than decent results. Despite the linear presentation that the reader will find here-below, multiple back-and-forths are actually required, especially through steps 2-4. 1. Data preparation \u00b6 As a very first step , one has to define the geographical region over which the study has to be conducted, the so-called \" Area of Interest \" (AoI). In the case of this specific application, the AoI was chosen and obtained as the geometric subtraction between the following two polygons: the unary union of all the polygons of the Canton of Geneva's cadastral parcels dataset, published as Open Data by the SITG , cf. PARCELLES DE LA MENSURATION ; the polygon corresponding to the Lake Geneva (\" lac L\u00e9man \" in French), included in the EMPRISE DU LAC LEMAN (Complet) open dataset, published by the SITG as well. The so-defined AoI covers both the known \"ground-truth\" labels and regions over which hypothetical unknown objects are expected to be detected. The second step consists in downloading aerial images from a remote server, following an established tiling strategy. We adopted the so-called \" Slippy Map \" tiling scheme. Aerial images were fetched from a raster web service hosted by the SITG and powered by ESRI ArcGIS Server. More precisely, the following dataset was used: ORTHOPHOTOS AGGLO 2018 . According to our configuration, this second step produces a folder including one GeoTIFF image per tile, each image having a size of 256x256 pixels. In terms of resolution - or better, in terms of \" Ground Sampling Distance \" (GSD) - the combination of 256x256 pixels images and zoom level 18 Slippy Map Tiles yields approximately a GSD of ~ 60 cm/pixel. The tests we performed at twice the resolution showed little gain in terms of predictive power, surely not enough to support the interest in engaging 4x more resources (storage, CPU/GPU, ...). The third step amounts to splitting the tiles covering the AoI (let's label them \"AoI tiles\") twice: first, tiles are partitioned into two subsets, according to whether they include ( GT tiles) or not ( oth tiles) ground-truth labels: \\(\\mbox{AoI tiles} = (\\mbox{GT tiles}) \\cup (\\mbox{oth tiles}),\\; \\mbox{with}\\; (\\mbox{GT tiles}) \\cap (\\mbox{oth tiles}) = \\emptyset\\) Then, ground-truth tiles are partitioned into three other subsets, namely the training ( trn ), validation ( val ) and test ( tst ) datasets: \\(\\mbox{GT tiles} = (\\mbox{trn tiles}) \\cup (\\mbox{val tiles}) \\cup (\\mbox{tst tiles})\\) with \\(A \\neq B \\Rightarrow A \\cap B = \\emptyset, \\quad \\forall A, B \\in \\{\\mbox{trn tiles}, \\mbox{val tiles}, \\mbox{tst tiles}, \\mbox{oth tiles}\\}\\) We opted for the 70%-15%-15% dataset splitting strategy. Slippy Map Tiles at zoom level 18 covering the Area of Interest, partitioned into several subsets: ground-truth (GT = trn + val + tst), other (oth). Zoom over a portion of the previous image. Concerning ground-truth labels, the final results of this study rely on a curated subset of the public dataset including polygons corresponding to the Canton of Geneva's registered swimming pools, cf. PISCINES . Indeed, some \"warming-up\" iterations of this whole process allowed us to semi-automatically identify tiles where the swimming pool register was inconsistent with aerial images, and viceversa. By manually inspecting the tiles displaying inconsistency, we discarded those tiles for which the swimming pool register seemed to be wrong (at least through the eyes of a Data Scientist; in a further iteration, this data curation step should be performed together with domain experts). While not having the ambition to return a \"100% ground-truth\" training dataset, this data curation step yielded a substantial gain in terms of \\(F_1\\) score (from ~82% to ~90%, to be more precise). 2. Model training \u00b6 A predictive model was trained, stemming from one of the pre-trained models provided by Detectron2 . In particular, the \"R50-FPN\" baseline was used (cf. this page ), which implements a Mask R-CNN architecture leveraging a ResNet-50 backbone along with a Feature Pyramid Network (FPN). We refer the reader e.g. to this blog article for further information about this kind of Deep Learning methods. Training a (Deep) Neural Network model means running an algorithm which iteratively adjusts the various parameters of a Neural Network (40+ million parameters in our case), in order to minimize the value of some \"loss function\". In addition to the model parameters (otherwise called \"weights\", too), multiple \"hyper-parameters\" exist, affecting the model and the way how the optimization is performed. In theory, one should automatize the hyper-parameters tuning , in order to eventually single out the best setting among all the possible ones. In practice, the hyper-parameters space is never fully explored; a minima , a systematic search should be performed, in order to find a \"sweet spot\" among a finite, discrete collection of settings. In our case, no systematic hyper-parameters tuning was actually performed. Instead, a few man hours were spent in order to manually tune the hyper-parameters, until a setting was found which the STDL team judged to be reasonably good (~90% \\(F_1\\) score on the test dataset, see details here-below). The optimal number of iterations was chosen so as to approximately minimize the loss on the validation dataset. 3. Prediction \u00b6 Each image resulting from the tiling of the AoI constitutes - let's say - the \"basic unit of computation\" of this analysis. Thus, the model optimized at the previous step was used to make predictions over: the oth images, meaning images covering no already known swimming pools; the trn , val and tst images, meaning images covering already known swimming pools. The combination of predictions 1 and 2 covers the entire AoI and allows us to discover potential new objects as well as to check whether some of the known objects are outdated, respectively. Image by image, the model produces one segmentation mask per detected object, accompanied by a score ranging from a custom minimum value (5% in our setting) to 100%. The higher the score, the most the model is confident about a given prediction. Sample detections of swimming pools, accompanied by scores. Note that multiple detections can concern the same object, if the latter extends over multiple tiles. Let us note that not only swimming pools exhibiting only \"obvious\" features (bluish color, rectangular shape, ...) were detected, but also: swimming pools covered by some tarp; empty swimming pools; etc. As a matter of fact, the training dataset was rich enough to also include samples of such somewhat tricky cases. 4. Prediction assessment \u00b6 As described here in more detail, in order to assess the reliability of the predictive model predictions have to be post-processed so as to switch from the image coordinates - ranging from (0, 0) to (255, 255) in our case, where 256x256 pixel images were used - to geographical coordinates. This amounts to applying an affine transformation to the various predictions, yielding a vector layer which we can compare with ground-truth ( GT ) data by means of spatial joins: objects which are detected and can also be found in GT data are referred to as \"true positives\" (TPs); objects which are detected but cannot be found in GT data are referred to as \"false positives\" (FPs); GT objects which are not detected are referred to as \"false negatives\" (FNs). Example of a true positive (TP), a false positive (FP) and a false negative (FN). Note that both the TP and the FP object are detected twice, as they extend over multiple tiles. The counting of TPs, FPs, FNs allow us to compute some standard metrics such as precision, recall and \\(F_1\\) score (cf. this Wikipedia page for further information). Actually, one count (hence one set of metrics) can be produced per choice of the minimum score that one is willing to accept. Choosing a threshold value (= thr ) means keeping all the predictions having a score >= thr and discarding the rest. Intuitively, a low threshold should yield a few false negatives; a high threshold should yield a few false positives. Such intuitions can be confirmed by the following diagram, which we obtained by sampling the values of thr by steps of 0.05 (= 5%), from 0.05 to 0.95. True positives (TPs), false negatives (FNs), and false positives (FPs) counted over the test dataset, as a function of the threshold on the score: for a given threshold, all and only the predictions exhibiting a bigger score are kept. Performance metrics computed over the test dataset as a function of the threshold on the score: for a given threshold, all and only the predictions exhibiting a bigger score are kept. The latter figure was obtained by evaluating the predictions of our best model over the test dataset. Inferior models exhibited a similar behavior, with a downward offset in terms of \\(F_1\\) score. In practice, upon iterating over multiple realizations (with different hyper-parameters, training data and so on) we aimed at maximizing the value of the \\(F_1\\) score on the validation dataset, and stopped when the \\(F_1\\) score went over the value of 90%. As the ground-truth data we used turned out not to be 100% accurate, the responsibility for mismatching predictions has to be shared between ground-truth data and the predictive model, at least in some cases. In a more ideal setting, ground-truth data would be 100% accurate and differences between a given metric (precision, recall, \\(F_1\\) score) and 100% should be imputed to the model. Domain experts feedback \u00b6 All the predictions having a score \\(\\geq\\) 5% obtained by our best model were exported to Shapefile and shared with the experts in charge of the cadastre of the Canton of Geneva, who carried out a thorough evaluation. By checking predictions against the swimming pool register as well as aerial images, it was empirically found that the threshold on the minimum score (= thr ) should be set as high as 97%, in order not to have too many false positives to deal with. In spite of such a high threshold, 562 potentially new objects were detected (over 4652 objects which were known when this study started), of which: 128 items are objects other than swimming pools (let's say an \"actual false positives\"); 211 items are swimming pools that are NOT subject to registration (temporary, above-ground, on top of a building, ...); 223 items are swimming pools that are subject to registration. This figures show that: on the one hand, the model performs quite well on the task it was trained for, in particular when an appropriate threshold is used; on the other hand, the meticulous review of results by domain experts remain essential. This said, automatic detections can surely be used to drive the domain experts' attention towards the areas which might require some. Examples of \"actual false positives\": a fountain (left) and a tunnel (right). Examples of detected swimming pools which are not subject to registration: placed on top of a building (left), inflatable hence temporary (right). Conclusion \u00b6 The analysis reported in this document confirms the opportunity of using state-of-the-art Deep Learning approaches to assist experts in some of their tasks, in this case that of keeping the cadastre up to date. Not only the opportunity was explored and actually confirmed, but valuable results were also produced, leading to the detection of previously unknown objects. At the same time, our study also shows how essential domain expertise still remains, despite the usage of such advanced methods. As a concluding remark, let us note that our predictive model may be further improved. In particular, it may be rendered less prone to false positives, for instance by: leveraging 3D data ( e.g. point clouds), in order to potentially remove temporary, above-ground swimming pools from the set of detected objects; injecting into the training dataset those predictions which were classified by domain experts as other objects or temporary swimming pools; leveraging some other datasets, already available through the SITG portal : buildings , miscellaneous objects , etc.","title":" Swimming Pool Detection from Aerial Images over the Canton of Geneva "},{"location":"PROJ-GEPOOL/#swimming-pool-detection-from-aerial-images-over-the-canton-of-geneva","text":"Alessandro Cerioni (Canton of Geneva) - Adrian Meyer (FHNW) Proposed by the Canton of Geneva - PROJ-GEPOOL September 2020 to January 2021 - Published on May 18, 2021 Abstract : Object detection is one of the computer vision tasks which can benefit from Deep Learning methods. The STDL team managed to leverage state-of-art methods and already existing open datasets to first build a swimming pool detector, then to use it to potentially detect unregistered swimming pools over the Canton of Geneva. Despite the success of our approach, we will argue that domain expertise still remains key to post-process detections in order to tell objects which are subject to registration from those which aren't. Pairing semi-automatic Deep Learning methods with domain expertise turns out to pave the way to novel workflows allowing administrations to keep cadastral information up to date.","title":" Swimming Pool Detection from Aerial Images over the Canton of Geneva "},{"location":"PROJ-GEPOOL/#introduction","text":"The Canton of Geneva manages a register of swimming pools, counting - in principle - all and only those swimming pools that are in-ground or, at least, permanently fixed to the ground. The swimming pool register is part of a far more general cadastre, including several other classes of objects (cf. this page ). Typically the swimming pool register is updated either by taking building/demolition permits into account, or by manually checking its multiple records (4000+ to date) against aerial images, which is quite a long and tedious task. Exploring the opportunity of leveraging Machine Learning to help domain experts in such an otherwise tedious tasks was one of the main motivations behind this study. As such, no prior requirements/expectations were set by the recipients. The study was autonomously conducted by the STDL team, using Open Source software and Open Data published by the Canton of Geneva. Domain experts were asked for feedback only at a later stage. In the following, details are provided regarding the various steps we followed. We refer the reader to this page for a thorough description of the generic STDL Object Detection Framework.","title":"Introduction"},{"location":"PROJ-GEPOOL/#method","text":"Several steps are required to set the stage for object detection and eventually reach the goal of obtaining - ideally - even more than decent results. Despite the linear presentation that the reader will find here-below, multiple back-and-forths are actually required, especially through steps 2-4.","title":"Method"},{"location":"PROJ-GEPOOL/#1-data-preparation","text":"As a very first step , one has to define the geographical region over which the study has to be conducted, the so-called \" Area of Interest \" (AoI). In the case of this specific application, the AoI was chosen and obtained as the geometric subtraction between the following two polygons: the unary union of all the polygons of the Canton of Geneva's cadastral parcels dataset, published as Open Data by the SITG , cf. PARCELLES DE LA MENSURATION ; the polygon corresponding to the Lake Geneva (\" lac L\u00e9man \" in French), included in the EMPRISE DU LAC LEMAN (Complet) open dataset, published by the SITG as well. The so-defined AoI covers both the known \"ground-truth\" labels and regions over which hypothetical unknown objects are expected to be detected. The second step consists in downloading aerial images from a remote server, following an established tiling strategy. We adopted the so-called \" Slippy Map \" tiling scheme. Aerial images were fetched from a raster web service hosted by the SITG and powered by ESRI ArcGIS Server. More precisely, the following dataset was used: ORTHOPHOTOS AGGLO 2018 . According to our configuration, this second step produces a folder including one GeoTIFF image per tile, each image having a size of 256x256 pixels. In terms of resolution - or better, in terms of \" Ground Sampling Distance \" (GSD) - the combination of 256x256 pixels images and zoom level 18 Slippy Map Tiles yields approximately a GSD of ~ 60 cm/pixel. The tests we performed at twice the resolution showed little gain in terms of predictive power, surely not enough to support the interest in engaging 4x more resources (storage, CPU/GPU, ...). The third step amounts to splitting the tiles covering the AoI (let's label them \"AoI tiles\") twice: first, tiles are partitioned into two subsets, according to whether they include ( GT tiles) or not ( oth tiles) ground-truth labels: \\(\\mbox{AoI tiles} = (\\mbox{GT tiles}) \\cup (\\mbox{oth tiles}),\\; \\mbox{with}\\; (\\mbox{GT tiles}) \\cap (\\mbox{oth tiles}) = \\emptyset\\) Then, ground-truth tiles are partitioned into three other subsets, namely the training ( trn ), validation ( val ) and test ( tst ) datasets: \\(\\mbox{GT tiles} = (\\mbox{trn tiles}) \\cup (\\mbox{val tiles}) \\cup (\\mbox{tst tiles})\\) with \\(A \\neq B \\Rightarrow A \\cap B = \\emptyset, \\quad \\forall A, B \\in \\{\\mbox{trn tiles}, \\mbox{val tiles}, \\mbox{tst tiles}, \\mbox{oth tiles}\\}\\) We opted for the 70%-15%-15% dataset splitting strategy. Slippy Map Tiles at zoom level 18 covering the Area of Interest, partitioned into several subsets: ground-truth (GT = trn + val + tst), other (oth). Zoom over a portion of the previous image. Concerning ground-truth labels, the final results of this study rely on a curated subset of the public dataset including polygons corresponding to the Canton of Geneva's registered swimming pools, cf. PISCINES . Indeed, some \"warming-up\" iterations of this whole process allowed us to semi-automatically identify tiles where the swimming pool register was inconsistent with aerial images, and viceversa. By manually inspecting the tiles displaying inconsistency, we discarded those tiles for which the swimming pool register seemed to be wrong (at least through the eyes of a Data Scientist; in a further iteration, this data curation step should be performed together with domain experts). While not having the ambition to return a \"100% ground-truth\" training dataset, this data curation step yielded a substantial gain in terms of \\(F_1\\) score (from ~82% to ~90%, to be more precise).","title":"1. Data preparation"},{"location":"PROJ-GEPOOL/#2-model-training","text":"A predictive model was trained, stemming from one of the pre-trained models provided by Detectron2 . In particular, the \"R50-FPN\" baseline was used (cf. this page ), which implements a Mask R-CNN architecture leveraging a ResNet-50 backbone along with a Feature Pyramid Network (FPN). We refer the reader e.g. to this blog article for further information about this kind of Deep Learning methods. Training a (Deep) Neural Network model means running an algorithm which iteratively adjusts the various parameters of a Neural Network (40+ million parameters in our case), in order to minimize the value of some \"loss function\". In addition to the model parameters (otherwise called \"weights\", too), multiple \"hyper-parameters\" exist, affecting the model and the way how the optimization is performed. In theory, one should automatize the hyper-parameters tuning , in order to eventually single out the best setting among all the possible ones. In practice, the hyper-parameters space is never fully explored; a minima , a systematic search should be performed, in order to find a \"sweet spot\" among a finite, discrete collection of settings. In our case, no systematic hyper-parameters tuning was actually performed. Instead, a few man hours were spent in order to manually tune the hyper-parameters, until a setting was found which the STDL team judged to be reasonably good (~90% \\(F_1\\) score on the test dataset, see details here-below). The optimal number of iterations was chosen so as to approximately minimize the loss on the validation dataset.","title":"2. Model training"},{"location":"PROJ-GEPOOL/#3-prediction","text":"Each image resulting from the tiling of the AoI constitutes - let's say - the \"basic unit of computation\" of this analysis. Thus, the model optimized at the previous step was used to make predictions over: the oth images, meaning images covering no already known swimming pools; the trn , val and tst images, meaning images covering already known swimming pools. The combination of predictions 1 and 2 covers the entire AoI and allows us to discover potential new objects as well as to check whether some of the known objects are outdated, respectively. Image by image, the model produces one segmentation mask per detected object, accompanied by a score ranging from a custom minimum value (5% in our setting) to 100%. The higher the score, the most the model is confident about a given prediction. Sample detections of swimming pools, accompanied by scores. Note that multiple detections can concern the same object, if the latter extends over multiple tiles. Let us note that not only swimming pools exhibiting only \"obvious\" features (bluish color, rectangular shape, ...) were detected, but also: swimming pools covered by some tarp; empty swimming pools; etc. As a matter of fact, the training dataset was rich enough to also include samples of such somewhat tricky cases.","title":"3. Prediction"},{"location":"PROJ-GEPOOL/#4-prediction-assessment","text":"As described here in more detail, in order to assess the reliability of the predictive model predictions have to be post-processed so as to switch from the image coordinates - ranging from (0, 0) to (255, 255) in our case, where 256x256 pixel images were used - to geographical coordinates. This amounts to applying an affine transformation to the various predictions, yielding a vector layer which we can compare with ground-truth ( GT ) data by means of spatial joins: objects which are detected and can also be found in GT data are referred to as \"true positives\" (TPs); objects which are detected but cannot be found in GT data are referred to as \"false positives\" (FPs); GT objects which are not detected are referred to as \"false negatives\" (FNs). Example of a true positive (TP), a false positive (FP) and a false negative (FN). Note that both the TP and the FP object are detected twice, as they extend over multiple tiles. The counting of TPs, FPs, FNs allow us to compute some standard metrics such as precision, recall and \\(F_1\\) score (cf. this Wikipedia page for further information). Actually, one count (hence one set of metrics) can be produced per choice of the minimum score that one is willing to accept. Choosing a threshold value (= thr ) means keeping all the predictions having a score >= thr and discarding the rest. Intuitively, a low threshold should yield a few false negatives; a high threshold should yield a few false positives. Such intuitions can be confirmed by the following diagram, which we obtained by sampling the values of thr by steps of 0.05 (= 5%), from 0.05 to 0.95. True positives (TPs), false negatives (FNs), and false positives (FPs) counted over the test dataset, as a function of the threshold on the score: for a given threshold, all and only the predictions exhibiting a bigger score are kept. Performance metrics computed over the test dataset as a function of the threshold on the score: for a given threshold, all and only the predictions exhibiting a bigger score are kept. The latter figure was obtained by evaluating the predictions of our best model over the test dataset. Inferior models exhibited a similar behavior, with a downward offset in terms of \\(F_1\\) score. In practice, upon iterating over multiple realizations (with different hyper-parameters, training data and so on) we aimed at maximizing the value of the \\(F_1\\) score on the validation dataset, and stopped when the \\(F_1\\) score went over the value of 90%. As the ground-truth data we used turned out not to be 100% accurate, the responsibility for mismatching predictions has to be shared between ground-truth data and the predictive model, at least in some cases. In a more ideal setting, ground-truth data would be 100% accurate and differences between a given metric (precision, recall, \\(F_1\\) score) and 100% should be imputed to the model.","title":"4. Prediction assessment"},{"location":"PROJ-GEPOOL/#domain-experts-feedback","text":"All the predictions having a score \\(\\geq\\) 5% obtained by our best model were exported to Shapefile and shared with the experts in charge of the cadastre of the Canton of Geneva, who carried out a thorough evaluation. By checking predictions against the swimming pool register as well as aerial images, it was empirically found that the threshold on the minimum score (= thr ) should be set as high as 97%, in order not to have too many false positives to deal with. In spite of such a high threshold, 562 potentially new objects were detected (over 4652 objects which were known when this study started), of which: 128 items are objects other than swimming pools (let's say an \"actual false positives\"); 211 items are swimming pools that are NOT subject to registration (temporary, above-ground, on top of a building, ...); 223 items are swimming pools that are subject to registration. This figures show that: on the one hand, the model performs quite well on the task it was trained for, in particular when an appropriate threshold is used; on the other hand, the meticulous review of results by domain experts remain essential. This said, automatic detections can surely be used to drive the domain experts' attention towards the areas which might require some. Examples of \"actual false positives\": a fountain (left) and a tunnel (right). Examples of detected swimming pools which are not subject to registration: placed on top of a building (left), inflatable hence temporary (right).","title":"Domain experts feedback"},{"location":"PROJ-GEPOOL/#conclusion","text":"The analysis reported in this document confirms the opportunity of using state-of-the-art Deep Learning approaches to assist experts in some of their tasks, in this case that of keeping the cadastre up to date. Not only the opportunity was explored and actually confirmed, but valuable results were also produced, leading to the detection of previously unknown objects. At the same time, our study also shows how essential domain expertise still remains, despite the usage of such advanced methods. As a concluding remark, let us note that our predictive model may be further improved. In particular, it may be rendered less prone to false positives, for instance by: leveraging 3D data ( e.g. point clouds), in order to potentially remove temporary, above-ground swimming pools from the set of detected objects; injecting into the training dataset those predictions which were classified by domain experts as other objects or temporary swimming pools; leveraging some other datasets, already available through the SITG portal : buildings , miscellaneous objects , etc.","title":"Conclusion"},{"location":"PROJ-HETRES/","text":"Dieback of beech trees: methodology for determining the health state of beech trees from airborne images and LiDAR point clouds \u00b6 Clotilde Marmy (ExoLabs) - Gwena\u00eblle Salamin (ExoLabs) - Alessandro Cerioni (Canton of Geneva) - Roxane Pott (swisstopo) Proposed by the Canton of Jura - PROJ-HETRES October 2022 to August 2023 - Published on November 13, 2023 All scripts are available on GitHub . Abstract : Beech trees are sensitive to drought and repeated episodes can cause dieback. This issue affects the Jura forests requiring the development of new tools for forest management. In this project, descriptors for the health state of beech trees were derived from LiDAR point clouds, airborne images and satellite images to train a random forest predicting the health state per tree in a study area (5 km\u00b2) in Ajoie. A map with three classes was produced: healthy, unhealthy, dead. Metrics computed on the test dataset revealed that the model trained with all the descriptors has an overall accuracy up to 0.79, as well as the model trained only with descriptors derived from airborne imagery. When all the descriptors are used, the yearly difference of NDVI between 2018 and 2019, the standard deviation of the blue band, the mean of the NIR band, the mean of the NDVI, the standard deviation of the canopy cover and the LiDAR reflectance appear to be important descriptors. 1. Introduction \u00b6 Since the drought episode of 2018, the canton of Jura and other cantons have noticed dieback of the beech trees in their forests 1 . In the canton of Jura, this problem mainly concerns the Ajoie region, where 1000 hectares of deciduous trees are affected 2 . This is of concern for the productivity and management of the forest, as well as for the security of walkers. In this context, the R\u00e9publique et Canton du Jura has contacted the Swiss Territorial Data Lab to develop a new monitoring solution based on data science, airborne images and LiDAR point clouds. The dieback symptoms are observable in the mortality of branches, the transparency of the tree crown and the leaf mass partition 3 . The vegetation health state influences the reflectance in images (airborne and satellite), which is often used as a monitoring tool, in particular under the form of vegetation indices: Normalized Difference Vegetation Index (NDVI), a combination of the near-infrared and red bands quantifying vegetation health; Vegetation Health Index (VHI), an index quantifying the decrease or increase of vegetation in comparison to a reference state. For instance, Brun et al. studied early-wilting in Central European forests with time series of the Normalized Difference Vegetation Index (NDVI) and estimate the surface concerned by early leaf-shedding 4 . Another technology used to monitor forests is light detection and ranging (LiDAR) as it penetrates the canopy and gives 3D information on trees and forest structures. Several forest and tree descriptors such as the canopy cover 5 or the standard deviation of crown return intensity 6 can be derived from the LiDAR point cloud to monitor vegetation health state. In 5 , the study was conducted at tree level, whereas in 6 stand level was studied. To work at tree level, it is necessary to segment individual trees in the LiDAR point cloud. On complex forests, like with a dense understory near tree stems, it is challenging to get correct segments without manual corrections. The aim of this project is to provide foresters with a map to help plan the felling of beech trees in the Ajoie's forests. To do so, we developed a combined method using LiDAR point clouds and airborne and satellite multispectral images to determine the health state of beech trees. 2. Study area \u00b6 The study was conducted in two areas of interest in the Ajoie region (Fig. 1.A); one near Mi\u00e9court (Fig. 1.B), the other one near Beurnev\u00e9sin (Fig. 1.C). Altogether they cover 5 km 2 , 1.4 % of the Canton of Jura's forests 7 . Mi\u00e9court sub-area is west-south and south oriented, whereas Beurnev\u00e9sin sub-area is rather east-south and south oriented. They are in the same altitude range (600-700 m) and are 2 km away from each other, thus near the same weather station. Figure 1: The study area is composed of two areas of interest. 3. Data \u00b6 The project makes use of different data types: LiDAR point cloud, airborne and satellite imagery, and ground truth data. Table 1 gives an overview of the data and their characteristics. Data have been acquired in late summer 2022 to have an actual and temporally correlated information on the health state of beech trees. Table 1: Overview of the data used in the project. Resolution Acquisition time Proprietary LiDAR 50-100 pts/m 2 08.2022 R\u00e9publique et Canton du Jura Airborne images 0.03 m 08.2022 R\u00e9publique et Canton du Jura Yearly variation of NDVI 10 m 06.2015-08.2022 Bern University of Applied Science (HAFL) and the Federal Office for Environment (BAFU) Weekly vegetation health index 10 m 06.2015-08.2022 ExoLabs Ground truth - (point data) 08.-10.2022 R\u00e9publique et Canton du Jura 3.1 LiDAR point cloud \u00b6 The LiDAR dataset was acquired on the 16th of August 2023 and its point density is 50-100 pts/m\u00b2. It is classified in the following classes: ground, low vegetation (2-10m), middle vegetation (10-20m) and high vegetation (20 m and above). It was delivered in the LAS format and had reflectance values 8 in the intensity storage field. 3.2 Airborne images \u00b6 The airborne images have a ground resolution of 3 cm and were acquired simultaneously to the LiDAR dataset. The camera captured the RGB bands, as well as the near infrared (NIR) one. The acquisition of images with a lot of overlap and oblique views allowed the production of a true orthoimage for a perfect match with the LiDAR point cloud and the data of the ground truth. 3.3 Satellite images \u00b6 The Sentinel-2 mission from the European Space Agency is passing every 6 days over Switzerland and allows free temporal monitoring at a 10 m resolution. The archives are available back to the beginning of beech tree dieback in 2018. 3.3.1 Yearly variation of NDVI \u00b6 The Bern University of Applied Science (HAFL) and the Federal Office for Environment (BAFU) have developed Web Services for vegetation monitoring derived from Sentinel-2 images. For this project, the yearly variation of NDVI 9 between two successive years is used. It measures the decrease in vegetation activity between August of one year (e.g. 2018) and June of the following year (e.g. 2019). The decrease is derived from rasters made of maximum values of the NDVI in June, July or August. The data are downloaded from the WCS service which delivers \"row\" indices: the NDVI values are not cut for a minimal threshold. 3.3.2 VHI \u00b6 The Vegetation Health Index (VHI) was generated by ETHZ, WSL and ExoLab within the SILVA project 10 which proposes several indices for forest monitoring. VHI from 2016 to 2022 is used. It is computed mainly out of Sentinel-2 images, but also out of images from other satellite missions, in order to have data to obtain a weekly index with no time gap. 3.4 Ground truth \u00b6 The ground truth was collected between August and October 2022 by foresters. They assessed the health of the beech trees based on four criteria 3 : mortality of branches; transparency of the tree crown; leaf mass partition; trunk condition and other health aspects. In addition, each tree was associated with its coordinates and pictures as illustrated in Figure 1 and Figure 2 respectively. The forester surveyed: 75 healthy, 77 unhealthy and 56 dead trees. Tree locations were first identified in the field with a GPS-enabled tablet on which the 2022 SWISSIMAGE mosaic was displayed. Afterwards, the tree locations were precisely adjusted on the trunk locations by visually locating the corresponding stems in the LiDAR point cloud with the help of the pictures taken in the field. The location and health status of a further 18 beech trees were added in July 2023. These 226 beeches - under which are 76 healthy, 77 affected and 73 dead trees - surveyed at the two dates are defined as the ground truth for this project. Figure 2: Examples of the three health states: left, a healthy tree with a dense green tree crown; center, an unhealthy tree with dead twigs and a scarce foliage; right, a dead tree completely dry. 4. Method \u00b6 The method developed is based on the processing of LiDAR point clouds and of airborne images . Ready-made vegetation indices derived from satellite imagery were also used. First, a segmentation of the trees in the LiDAR point cloud was carried out using the Digital-Forestry-Toolbox (DFT) 11 . Then, descriptors for the health state of the beech trees were derived from each dataset. Boxplots and corresponding t-test are computed to evaluate the ability of descriptors to differentiate the three health states. A t-test value below 0.01 indicates that there is a significant difference between the means of two classes. Finally, the descriptors were used jointly with the ground truth to train a random forest (RF) algorithm, before inferring for the study area. Figure 3: Overview of the methodology, which processes the data into health descriptors for beech trees, before training and evaluating a random forest. 4.1 LiDAR processing \u00b6 At the beginning of LiDAR processing, exploration of the data motivated the segmentation and descriptors computation. 4.1.2 Data exploration \u00b6 In order to get an understanding of the available information at the tree level, we manually segmented three healthy, five unhealthy and three dead trees. More unhealthy trees have been segmented to better represent dieback symptoms. Vertical slices of each tree were rotary extracted, providing visual information on the health state. 4.1.3 Segmentation \u00b6 To be able to describe the health state of each tree, segmentation of the forest was performed using the DFT. Parameters have been tuned to find an appropriate segmentation. Two strategies for peak isolation were tested on the canopy height model (CHM): Maxima smoothing: a height difference is set below which all local maxima are suppressed. Local maxima within search radius: the size of the dilation window for identification of maxima is dependent on the height. Each peak isolation method was tested on a range of parameters and on different cell resolutions for the CHM computation. The detailed plan of the simulation is given in Appendix 1 . The minimum tree height was set to 10 m. For computation time reasons, only 3 LiDAR tiles with 55 ground truth (GT) trees located on them were processed. To find the best segmentation, the locations of the GT trees were compared to the location of the segment peaks. GT trees with a segmented peak less than 4 m away were considered as True Positive (TP). The best segmentation was the one with the most TP. 4.1.4 Structural descriptors \u00b6 An alternative to the segmentation is to change of paradigm and perform the analyses at the stand level. Meng et al. 6 derived structural descriptors for acacia dieback at the stand level based on LiDAR point cloud. By adapting their method to the present case, the following descriptors were derived from the LiDAR point cloud using the LidR library from R 12 : Canopy maximal height. Scale and shape parameters of the Weibull density function fitted for the point distribution along the height. Coefficient of variation of leaf area density (cvLAD) describing the distribution of the vertical structure of photosynthetic tissue along the height. Vertical Complexity Index (VCI): Entropy measure of the vertical distribution of vegetation. Standard deviation of the canopy height model (sdCHM), reflects canopy height variations. Canopy cover (CC) and standard deviation (sdCC), reflects foliage density and coverage. Above ground biomass height (AGH), reflects the understory height until 10 m. Descriptors 1 to 6 are directly overtaken from Meng et al. All the descriptors were first computed for three grid resolutions: 10 m, 5 m and 2.5 m. In a second time, the DFT segments were considered as an adaptive grid around the trees, with the assumption that it is still more natural than a regular grid. Then, structural descriptors for vertical points distribution (descriptors 1 to 4) were computed on each segment, whereas descriptors for horizontal points distribution (descriptors 5 to 7) have been processed for 2.5 m grid. A weight was applied to the value of the latter descriptors according to the area of grid cells included in the footprint of the segments. Furthermore, LiDAR reflectance mean and standard deviation (sd) were computed for the segment crowns to differentiate them by their reflectance. 4.2 Image processing \u00b6 For the image processing, an initial step was to compute the normalized difference vegetation index (NDVI) for each raster image. The normalized difference vegetation index (NDVI) is an index commonly used for the estimation of the health state of vegetation 5 13 14 . \\[\\begin{align} \\ NDVI = {NIR-R \\over NIR+R} \\ \\end{align}\\] where NIR and R are the value of the pixel in the near-infrared and red band respectively. To uncover potential distinctive features between the classes, boxplots and principal component analysis were used on the images four bands (RGB-NIR) and the NDVI. Firstly, we tested if the brute pixel values allowed the distinction between classes at a pixel level. This method avoids the pit of the forest segmentation into trees. Secondly, we tested the same method, but with some low-pass filter to reduce the noise in the data. Thirdly, we tried to find distinct statistical features at the tree level. This approach allows decreasing the noise that can be present in high-resolution information. However, it necessitates having a reasonably good segmentation of the trees. Finally, color filtering and edge detection were tested in order to highlight and extract the linear structure of the branches. For each treatment, it is possible to do it with or without a mask on the tree height. As only trees between 20 m and 40 m tall are affected by dieback, a mask based on the Canopy Height Model (CHM) raster derived from the LiDAR point cloud was tested. Figure 4: Overview of different possible data treatments for the the statistical analysis. 4.2.1 Statistical tests on the original and filtered pixels \u00b6 The statistical tests were performed on the original and filtered pixels. Two low pass filters were tested: - Gaussian with a sigma of 5; - Bilinear downsampling with scale factors of 1/3, 1/5 and 1/17, corresponding to resolutions of 9, 15 and 50 cm. In the original and the filtered cases, the pixels for each GT tree were extracted from the images and sorted by class. Then, the corresponding NDVI is computed. Each pixel has 5 attributes corresponding to its value on the four bands (R, G, B, NIR) and its NDVI. First, the per-class boxplots of the attributes were executed to see if the distinction between classes was possible on one or several bands or on the NDVI. Then, the principal component analysis (PCA) was computed on the same values to see if their linear combination allowed the distinction of the classes. 4.2.2. Statistical tests at the tree level \u00b6 For the tests at the tree level, the GT trees were segmented by hand. For each tree, the statistics of the pixels were calculated over its polygon, on each band and for the NDVI. Then, the results were sorted by class. Each tree has five attributes per band or index corresponding to the statistics of its pixels: minimum (min), maximum (max), mean, median and standard deviation (std). Like with the pixels, the per-class boxplots of the attributes were executed to see if the distinction between classes was possible. Then, the PCA was computed. 4.2.3 Extraction of branches \u00b6 One of the beneficiaries noted that the branches are clearly visible on the RGB images. Therefore, it may be possible to isolate them with color filtering based on the RGB bands. We calibrated an RGB filter through trial and error to produce a binary mask indicating the location of the branches. A sieve filter was used to reduce the noise due to the lighter parts of the foliage. Then, a binary dilation was performed on the mask to highlight the results. Otherwise, they would be too thin to be visible at a 1:5'000 scale. A mask based on the CHM is integrated to the results to limit the influence of the ground. The branches have a characteristic linear structure. In addition, the branches of dead trees tend to be very light line on the dark forest ground and understory. Therefore, we thought that we may detect the dead branches thanks to edge detection. We used the canny edge detector and tested the python functions of the libraries openCV and skimage . 4.3 Satellite-based indices \u00b6 The yearly variation of NDVI and the VHI were used to take account of historical variations of NDVI from 2015 to 2022. For the VHI, the mean for each year is computed over the months considered for the yearly variation of NDVI. The pertinence of using these indices was explored: the values for each tree in the ground truth were extracted and observed in boxplots per health class in 2022 per year pair over the time span from 2015 to 2022. 4.4 Random Forest \u00b6 In R 12 , the caret and randomForest packages were used to train the random forest and make predictions. First, the ground truth was split into the training and the test datasets, with each class being split 70 % into the training set and 30 % into the test set. Health classes with not enough samples were completed with copies. Optimization of the RF was performed on the number of trees to develop and on the number of randomly sampled descriptors to test at each split. In addition, 5-fold cross-validation was used to ensure the use of different parts of the dataset. The search parameter space was from 100 to 1000 decision trees and from 4 to 10 descriptors as the default value is the square root of all descriptors, i.e. 7. RF was assessed using a custom metric, which is an adaptation of the false positive rate for the healthy class. It minimizes the amount of false healthy detections and of dead trees predicted as unhealthy (false unhealthy). It is called custom false positive rate (cFPR) in the text. It was preferred to have a model with more unhealthy predictions to control on the field, than missing unhealthy or dead trees. The cFPR goes from 0 (best) to 1 (worse). Table 2: Confusion matrix for the three health classes. Ground truth Healthy Unhealthy Dead Prediction Healthy A B C Unhealthy D E F Dead G H I According to the confusion matrix in Table 2, the cFPR is computed as follows: \\[\\begin{align} \\ cFPR = {(\ud835\udc35+\ud835\udc36+\ud835\udc39)\\over(\ud835\udc35+\ud835\udc36+\ud835\udc38+\ud835\udc39+\ud835\udc3b+\ud835\udc3c)}. \\ \\end{align}\\] In addition, the overall accuracy (OA), i.e. the ratio of correct predictions over all the predictions, and the sensitivity, which is, per class, the number of correct predictions divided by the number of samples from that class, are used. An ablation study was performed on descriptors to assess the contribution of the different data sources to the final performance. An \u201cimportant\u201d descriptor is having a strong influence on the increase in prediction errors in the case of random reallocation of the descriptor values in the training set. After the optimization, predictions for each DFT segments were computed using the best model according to the cFPR. The inferences were delivered as a thematic map with colors indicating the health state and hue indicating the fraction of decision trees in the RF having voted for the class (vote fraction). The purpose is to give a confidence information, with high vote fraction indicating robust predictions. Furthermore, the ground truth was evaluated for quantity and quality by two means: Removal of samples and its impact on the metric evaluation Splitting the training set into training subsets to evaluate on the original test set. Finally, after having developed the descriptors and the routine on high-quality data, we downgraded them to have resolutions similar to the ones of the swisstopo products (LiDAR: 20 pt/m 2 , orthoimage: 10 cm) and performed again the optimization and prediction steps. Indeed, the data acquisition was especially commissioned for this project and only covers the study area. If in the future the method should be extended, one would like to test if a lower resolution as the one of the standard national-wide product SWISSIMAGE could be sufficient. 5 Results and discussion \u00b6 In this section, the results obtained during the processing of each data source into descriptors are presented and discussed, followed by a section on the random forest results. 5.1 LiDAR processing \u00b6 For the LiDAR data, the reader will first discover the aspect of beech trees in the LiDAR point cloud according to their health state as studied in the data exploration. Then, the segmentation results and the obtained LiDAR-based descriptors will be presented. 5.1.2 Data exploration for 11 beech trees \u00b6 The vertical slices of 11 beech trees provided visual information on health state: branch shape, clearer horizontal and vertical point distribution. In Figure 5, one can appreciate the information shown by these vertical slices. The linear structure of the dead branches, the denser foliage of the healthy tree and the already smaller tree crown of the dead tree are well recognizable. Figure 5: Slices for three trees with different health state. Vertical slices of each tree were rotary extracted, providing visual information on the health state. Dead twigs and density of foliage are particularly distinctive. Some deep learning image classifier could treat LiDAR point cloud slices as artificial images and learn from them before classifying any arbitrary slice from the LiDAR point cloud. However, the subject is not adapted to transfer learning because 200 samples are not enough to train a model to classify three new classes, especially via images without resemblance to datasets used to pre-train deep learning models. 5.1.3 Segmentation \u00b6 Since the tree health classes were visually recognizable for the 11 trees, it was very interesting to individuate each tree in the LiDAR point cloud. After having searched for optimal parameters in the DFT, the best realization of each peak isolation method either slightly oversegmented or slightly undersegmented the forest. The forest has a complex structure with dominant and co-dominant trees, and with understory. A simple yet frequent example is the situation of a small pine growing in the shadow of a beech tree. It is difficult for an algorithm to differentiate between the points belonging to the pine and those belonging to the beech. Complex tree crowns (not spheric, with two maxima) especially lead to oversegmentation. As best segmentation, the smoothing of maxima on a 0.5 m resolution CHM was identified. Out of 55 GT trees, 52 were within a 4 m distance from the centroid of a segment. The total number of segments is 7347. This corresponds to 272 trees/ha. Report of a forest inventory in the Jura forest between 2003 and 2005 indicated a density of 286 trees/ha in high forest 7 . Since the ground truth is only made of point coordinates, it is difficult to assess quantitatively the correctness of the segments, i.e. the attribution of each point to the right segment. Therefore, the work at the tree level is only approximate. 5.1.4 Structural descriptors \u00b6 Nevertheless, the structural descriptors for each tree were computed from the segmented LiDAR point cloud. The t-test between health classes for each descriptor at each resolution (10 m, 5 m, 2.5 m and per-tree grid) are given in Appendices 2 , 3 , 4 and 5 . The number of significant descriptors per resolution is indicated to understand better the effect on the RF: at 10 m: 13 at 5 m: 17 at 2.5 m: 18 per tree: 15 The simulations at 5 m and at 2.5 m seemed a priori the most promising. In both constellations, t-tests indicated a significant different distribution for: maximal height, between the three health states, sdCHM, between the three health states, cvLAD, healthy trees against the others, mean reflectance, healthy trees against the others, VCI, healthy trees against unhealthy trees, canopy cover, healthy trees against dead trees, standard deviation of the reflectance, dead trees against the others, sdCC, dead trees against the others. The maximal height and the sdCHM appear to be the most suited descriptors to separate the three health states. The other descriptors are differentiating healthy trees from the others or dead trees from the others. From the 11 LiDAR-based descriptors, 8 are at least significant for the comparison between two classes. 5.2 Image processing \u00b6 Boxplots and PCA are given to illustrate the results of the image processing exploration. As the masking of pixels below and above the affected height made no difference in the interpretation of the results, they are presented here with the height mask. 5.2.1 Boxplots and PCA over the pixel values of the original images \u00b6 When the pixel values of the original images per health class are compared in boxplots (ex. Fig. 6), the sole brute value of the pixel is not enough to clearly distinguish between classes. Figure 6: Boxplots of the unfiltered pixel values on the different bands and the NDVI index by health class. The PCA in Figure 7 shows that it is not possible to distinguish the groups based on a linear combination of the brute pixel values of the band and NDVI. Figure 7: Distribution of the pixels in the space of the principal components based on the pixel values on the different branches and the NDVI. 5.2.2 Boxplots and PCA over the pixel values of the filtered images \u00b6 A better separation of the different classes is noticeable after the application of a Gaussian filter. The most promising band is the NIR one for a separation of the healthy and dead classes. On the NDVI, the distinction between those two classes should also be possible as illustrated in Figure 8. In all cases, there is no possible distinction between the healthy and unhealthy classes. The separation between the healthy and dead trees on the NIR band would be around 130 and the slight overlap on the NDVI band is between approx. 0.04 and approx. 0.07. Figure 8: Boxplots of the pixel values on the different bands and the NDVI by health class after a Gaussian filter with sigma=5. As for the brute pixels, the overlap between the different classes is still very present in the PCA (Fig. 9). Figure 9: Distribution of the pixels in the space of the principal components based on the pixel values on the different branches and the NDVI after a Gaussian filter with sigma=5. The boxplots produced on the resampled images (Figure 10) give similar results to the ones with the Gaussian filter. The healthy and dead classes are separated on the NIR band around 130. The unhealthy class stays similar to the healthy one. Figure 10: Boxplots of the pixel values on the different bands and the NDVI by health class after a downsampling filter with a factor 1/3. According to the PCA in Figure 11, it seems indeed not possible to distinguish between the classes only with the information presented in this section. Figure 11: Distribution of the pixels in the space of the principal components based on the pixel values on the different branches and the NDVI after a downsampling filter with a factor 1/3. When the factor for the resampling is decreased, i.e. when the resulting resolution increases, the separation on the NIR band becomes stronger. With a factor of 1/17, the healthy and dead classes on the NDVI are almost entirely separated around the value of 0.04. 5.2.3 Boxplots and PCA over the tree statistics \u00b6 As an example for the per-tree statistics, the boxplots and PCA for the blue band are presented in Figures 12 to 14. On the mean and on the standard deviation, healthy and dead classes are well differentiated on the blue band as visible on Figure 12. The same is observed on the mean, median, and minimum of the NDVI, as well as on the maximum, mean, and median of the NIR band. However, there is no possible differentiation on the red and green bands. Figure 12: Boxplots of the statistics values for each tree on the blue band by health class. In the PCA in Figure 13, the groups of the healthy and dead trees are quite well separated, mostly along the first component. Figure 13: Distribution of the trees in the space of the principal components based on their statistical values on the blue band. On Figure 14, the first principal component is influenced principally by the standard deviation of the blue band. The mean, the median and the max have an influence too. This is in accordance with the boxplots where the standard deviation values presented the largest gap between classes. Figure 14: Influence of the statistics for the blue band on the first and second principal components. The point clouds of the dead and healthy classes are also well separated on the PCA of the NIR band and of the NDVI. No separation is visible on the PCA of the green and red bands. 5.2.4 Extraction of branches \u00b6 Finally, the extraction of dead branches was performed. Use of an RGB filter \u00b6 The result of the RGB filter is displayed in Figure 15. It is important to include the binary CHM in the visualization. Otherwise, the ground can have a significant influence on certain zones and distract from the dead trees. Some interferences can still be seen among the coniferous trees that have a similar light color as dead trees. Figure 15: Results produced by the RGB filter for the detection and highlight of dead branches over a zone with coniferous, healthy deciduous and dead deciduous trees. The parts in grey are the zones masked by the filter on the height. Use of the canny edge detector \u00b6 Figure 16 presents the result for the blue band which was the most promising one. The dead branches are well captured. However, there is a lot of noise around them due to the high contrasts in some parts of the foliage. The result is not usable as is. Using a stricter filter decreased the noise, but it also decreased the captured pixels of the branches. In addition, using a sieve filter or trying to combine the results with the ones of the RGB filter did not improve the situation. Figure 16: Test of the canny edge detector from sklearn over a dead tree by using only the blue band. The parts in grey are the zones masked by the CHM filter on the height. The results for the other bands, RGB images or the NDVI were not usable either. 5.2.5 Discussion \u00b6 The results at the tree level are the most promising ones. They are integrated into the random forest. Choosing to work at the tree-level means that all the trees must be segmented with the DFT. This adds uncertainties to the results. As explained in the dedicated section , the DFT has a tendency of over/under-segmenting the results. The procedures at the pixel level, whether on filtered or unfiltered images, are abandoned. For the branch detection, the results were compared with some observations on the terrain by a forest expert. He assessed the result as incorrect in several parts of the forest. Therefore, the use of dead branch detection was not integrated in the random forest. In addition, the edge detection was maybe not the right choice for dead branches and maybe we should have taken an approach more focused on detection of straight lines or graphs. The chance of success of such methods are difficult to predict as there can be a lot of variations in the form of the dead branches. 5.3 Vegetation indices from satellite imagery \u00b6 The t-test used to evaluate the ability of satellite indices to differentiate between health states are given in Appendices 6 and 7 . In the following two subsections, solely the significant tested groups are mentioned for understanding the RF performance. 5.3.1 Yearly variation of NDVI \u00b6 t-test on the yearly variation of NDVI indicated significance between: all health states in 2018-2019: 2018 was an especially dry and hot year, whereas 2019 was in the seasonal normals. The recovery in 2019 may have differed according to the health classes. healthy and other trees in 2016-2017 and 2019-2020: maybe healthy trees are responding diversely to environmental factors than affected trees. healthy and dead trees in 2021-2022: this reflects a higher increase of NDVI for the dead trees. Is the understory benefitting from clearer forest structure? 5.3.2 Vegetation Healthy Index \u00b6 t-test on the VHI indicated significance between: dead and other trees in 2017 healthy and dead trees in 2018 healthy and other trees in 2019 unhealthy and other trees in 2021 dead and unhealthy trees in 2020 and 2022 Explanations similar to those for NDVI may partly explain the significance obtained. In any case,it is encouraging that the VHI helps to differentiate health classes thanks to different evolution through the years. 5.4 Random Forest \u00b6 The results of the RF that are presented and discussed are: (1) the optimization and ablation study, (2) the ground truth analysis, (3) the predictions for the AOI and (4) the performance with downgraded data. 5.4.1 Optimization and ablation study \u00b6 In Table 3, performance for VHI and yearly variation of NDVI (yvNDVI) descriptors using their value at the location of the GT trees are compared. VHI (cFPR = 0.24, OA = 0.63) performed better than the yearly variation of NDVI (cFPR = 0.39, OA = 0.5). Both groups of descriptors are mostly derived from satellite data with the same resolution (10 m). A conceptual difference is that the VHI is a deviation to a long-term reference value; whereas the yearly variation of NDVI reflects the change between two years. For the latter, values can be high or low independently of the actual health state. Example, a succession of two bad years will indicate few to no differences in NDVI. Table 3: RF performance with satellite-based descriptors. Descriptors cFPR OA VHI 0.24 0.63 yvNDVI 0.39 0.5 Nonetheless, only the yearly variation of NDVI is used hereafter as it is available free of charge. Regarding the LiDAR descriptors, the tested resolutions indicated that the 5 m resolution (cFPR = 0.2 and OA = 0.65) was performing the best for the cFPR, but that the per-tree descriptors had the higher OA (cFPR = 0.33, OA = 0.67). At 5 m resolution, fewer affected trees are missed, but there are more errors in the classification, so more control on the field would have to be done. The question of which grid resolution to use on the forest is a complex one, as the forest consists of trees of different sizes. Further, even if dieback affects some areas more severely than others, it's not a continuous phenomenon, and it is important to be able to clearly delimit each tree. However, a grid, as the 2.5 m one, can also hinder to capture the entirety of some trees and the performance may decrease (LiDAR, 2.5 m, OA=0.63). Table 4: RF performance with LiDAR-based descriptors at different resolutions. Descriptors cFPR OA LiDAR, 10 m 0.3 0.6 LiDAR, 5 m 0.2 0.65 LiDAR, 2.5 m 0.28 0.63 LiDAR, per tree 0.33 0.67 Then, the 5 m resolution descriptors are kept for the rest of the analysis according to the decision of reducing missed dying trees. The ablation study performed on the descriptor sources is summarized in Table 5.A and Table 5.B. The two tables reflect performance for two different partitions of the samples in training and test sets. Since the performance is varying form several percents, the performance is impacted by the repartition of the samples. Following those values, the best setups for each partition respectively are the full model (cFPR = 0.13, OA = 0.76) and the airborne-based model (cFPR = 0.11, OA = 0.79). One notices that all the health classes are not predicted with the same accuracy. The airborne-based model, as described in Section 5.2.3 , is less sensitive to the healthy class; whereas the satellite-based model and the LiDAR-based model is more polarized to healthy and dead classes, with low sensitivity performance in the unhealthy class. Table 5.A: Ablation study results, partition A of the dataset. Descriptor sources cFPR OA Sensitivity healthy Sensitivity unhealthy Sensitivity dead LiDAR 0.2 0.65 0.65 0.61 0.71 Airborne images 0.18 0.63 0.43 0.61 0.94 yvNDVI 0.4 0.49 0.78 0.26 0.41 LiDAR and yvNDVI 0.23 0.7 0.74 0.61 0.76 Airborne images and yvNDVI 0.15 0.73 0.65 0.7 0.88 LiDAR, airborne images and yvNDVI 0.13 0.76 0.65 0.74 0.94 Table 5.B: Ablation study results, partition B of the dataset. Descriptor sources cFPR OA Sensitivity healthy Sensitivity unhealthy Sensitivity dead LiDAR 0.19 0.71 0.76 0.5 0.88 Airborne images 0.11 0.79 0.62 0.8 1 yvdNDVI 0.38 0.62 0.81 0.4 0.65 LiDAR and yvNDVI 0.27 0.74 0.86 0.5 0.88 Airborne images and yvNDVI 0.14 0.78 0.62 0.8 0.94 LiDAR, airborne images and yvNDVI 0.14 0.79 0.71 0.7 1 Even if the performance varies according to the dataset partition, the important descriptors remain quite similar between the two partitions as displayed in Figure 17.A and Figure 17.B. The yearly difference of NDVI between 2018 and 2019 ( NDVI_diff_1918 ) is the most important descriptor; standard deviation on the blue band ( b_std ) and the mean on the NIR band and NDVI ( nir_mean and ndvi_mean ) are standing out in both cases; from the LiDAR, the standard deviation of canopy cover ( sdcc ) and of the LiDAR reflectance ( i_sd_seg ) are the most important descriptors. The order of magnitude explains the better performance on partition B with the airborne-based model: for instance, the b_std has the magnitude of 7.6 instead of 4.6 with Partition B. Figure 17.A: Important descriptors for the full model, dataset partition A. Figure 17.B: Important descriptors for the full model, dataset partition B. The most important descriptor of the full model resulted to be the yearly variation of NDVI between 2018 and 2019. The former was a year with a dry and hot summer which has stressed beech trees and probably participated to cause forest damages 1 . This corroborates the ability of our RF method to monitor the response of trees to extreme drought events. However, the 10 m resolution of the index and the different adaptability of individual beech trees to drought may make the relationship between current health status and the index weak. This can explain that the presence of this descriptor in the full model doesn't offer better performance than the airborne-based model to predict the health state. Both the mean on the NIR band and the standard deviation on the blue band play an important role. Statistical study in Section 5.2.3 indicated that the models might confuse healthy and unhealthy classes. On one hand, airborne imagery only sees the top of the crown and may miss useful information on hidden part. On the other hand, airborne imagery has a good ability to detect dead trees thanks to different reflectance values in NIR and blue bands. One argument that could explain the lower performance of the model based on LiDAR-based descriptors is the difficulty to find the right scale to perform the analysis as beech trees can show a wide range of crown diameters. 5.4.2 Ground truth analysis \u00b6 With progressive removal of sample individuals from the training set, impact of individual beech trees on the performance is further analyzed. The performance variation is shown in Figure 18. The performance is rather stable in the sense that the sensitivities stay in a range of values similar to the initial one up to 40 samples removed, but with each removal, a slight instability in the metrics is visible. The size of the peaks indicates variations of 1 prediction for the dead class, but up to 6 predictions for the unhealthy class and up to 7 for the healthy class. During the sample removal, some samples were always predicted correctly, whereas others were often misclassified leading to the peaks in Figure 18. With the large number of descriptors in the full model, there is no straightforward profile of outliers to identify. Figure 18: Evolution of the per-class sensitivity with removal of samples. In addition, the subsampling of the training set in Table 6 shows that the OA varies only by max. 3% according to the subset used. It indicated again that the amount of ground truth allows to reach a stable OA range, but the characteristics of the samples does not allow a stable OA value. The sensitivity for the dead classes is stable, whereas sensitivity for healthy and unhealthy class are varying. Table 6: Performance according to different random seed for the creation of the training subset. Training set subpartition cFPR OA Sensitivity healthy Sensitivity unhealthy Sensitivity dead Random seed = 2 0.13 0.76 0.61 0.83 0.88 Random seed = 22 0.15 0.78 0.70 0.78 0.88 Random seed = 222 0.18 0.75 0.65 0.74 0.88 Random seed = 2222 0.13 0.76 0.65 0.78 0.88 Random seed = 22222 0.10 0.78 0.65 0.83 0.88 5.4.3 Predictions \u00b6 The full model and the airborne-based-model were used to infer the health state of trees in the study area (Fig. 19). As indicated in Table 7, with the full model, 35.1 % of the segments were predicted as healthy, 53 % as unhealthy and 11.9 % as dead. With the airborne-based model, 42.6 % of the segments were predicted as healthy, 46.2 % as unhealthy and 11.2 % as dead. The two models agree on 74.3 % of the predictions. In the 25.6 % of disagreement, it is about 77.1% of disagreement between healthy and unhealthy predictions. Finally, 1.5% are critical disagreement (between healthy and dead classes). Table 7: Percentage of health in the AOI. Model Healthy [%] Unhealth [%] Dead [%] Full 35.1 53 11.9 Airborne-based 42.6 46.2 11.2 Control by forestry experts reported that the predictions mostly correspond to the field situation and that a weak vote fraction often corresponds to false predictions. They confirmed that the map is delivering useful information to help plan beech tree felling. The final model retained after excursion on the field is the full model. Figure 19: Extract of the predicted thematic health map. Green is for healthy, yellow for unhealthy, and red for dead trees. Hues indicate the RF fraction of votes. The predictions can be compared with the true orthophoto in the background. The polygons approximating the tree crowns correspond to the delimitation of segmented trees. 5.4.4 Downgraded data \u00b6 Finally, random forest models are trained and tested on downgraded data with the partition A of the ground truth for all descriptors and by descriptor sources. With this partition, RF have a better cFPR for the full model (0.08 instead of 0.13), the airborne-based model (0.08 instead of 0.21) and the LiDAR-based model (0.28 instead of 0.31). The OA is also better (full model: 0.84 instead of 0.76, airborne-based model: 0.77 instead of 0.63), except in the case of the LiDAR-based model (0.63 instead of 0.66). It indicated that the resolution of 10 cm in the aerial imagery does not weaken the model and can even improve it. For the LiDAR point cloud, a reduction by a factor 5 of the density has not changed much the performance. Table 7.A: Performance for RF trained and tested with the partition A of the dataset of downgraded data. Simulation cFPR OA Full 0.08 0.84 Airborne-based 0.08 0.77 LiDAR-based 0.28 0.63 Table 7.A: Performance for RF trained and tested with the partition A of the dataset for original data. Simulation cFPR OA Full 0.13 0.76 Airborne-based 0.21 0.63 LiDAR-based 0.31 0.66 When the important descriptors are compared between the original and downgraded model, one notices that the airborne descriptors gained in importance in the full model when data are downgraded. The downgraded model showed sufficient accuracy for the objective of the project. 6 Conclusion and outlook \u00b6 The study has demonstrated the ability of a random forest algorithm to learn from structural descriptors derived from LiDAR point clouds and from vegetation reflectance in airborne and satellite images to predict the health state of beech trees. Depending on the used datasets for training and test, the optimized full model including all descriptors reached an OA of 0.76 or of 0.79, with corresponding cFPR values of 0.13 and 0.14 respectively. These metrics are sufficient for the purpose of prioritizing beech tree felling. The produced map, with the predicted health state and the corresponding votes for the segments, delivers useful information for forest management. The cantonal foresters validated the outcomes of this proof-of-concept and explained how the location of affected beech trees as individuals or as groups are used to target high-priority areas. The full model highlighted the importance of the yearly variation of NDVI between a drought year (2018) and a normal year (2019). The airborne imagery showed good ability to predict dead trees, whereas confusion remained between healthy and unhealthy trees. The quality of the LiDAR point cloud segmentation may explain the limited performance of the LiDAR-based model. Finally, the model trained and tested on downgraded data gave an OA of 0.84 and a cFPR of 0.08. In this model, the airborne-based descriptors gained in importance. It was concluded that a 10 cm resolution may help the model by reducing the noise in the image. Outlooks for improving results include improving the ground truth representativeness of symptoms in the field and continuing research into descriptors for differentiating between healthy and unhealthy trees: For the image processing, suggestions are the integration of more statistics like the skewness and kurtosis of the reflectance as in Junttila et al. (2022) 15 . LiDAR-based descriptors had limited impact on the final results. To better valorize them for an application on beech trees, further research would be needed. Beside producing a cleaner segmentation and finding additional descriptors, it could consist in mixing the descriptors at the different resolutions and, with the help of the importance analysis, estimate at which resolution each descriptor brings the most information to the classification. The results showed the important contribution of vegetation indices derived from satellite imagery reflecting the drought year of 2018. If available, using historical image data of higher resolution to derive more descriptors could help improve individual tree health assessment. The possibility of further developments put aside, the challenge is now the extension of the methodology to a larger area. The simultaneity of the data is necessary to an accurate analysis. It has been shown that the representativeness of the ground truth has to be improved to obtain better and more stable results. Thus, for an extension to further areas, we recommend collecting additional ground truth measurements. The health state of the trees showed some autocorrelation that could have boosted our results and make them less representative of the whole forest. They should be more scattered in the forest. Furthermore, required data are a true orthophoto and a LiDAR point cloud for per-tree analysis. It should be possible to use an old LiDAR acquisition to produce a CHM and renounce to use LiDAR-based descriptors without degrading the performance of the model too much. 7 Appendixes \u00b6 7.1 Simulation plan for DFT parameter tuning \u00b6 Table 8: parameter tuning for DFT. CHM cell size [m] Maxima smoothing Local maxima within search radius 0.50 0.1 (3.09632 + 0.00895 * h^2)/2 0.3 (1.7425 * h^0.5566)/2 0.5 (1.2 + 0.16 * h)/2 1.00 0.1 (3.09632 + 0.00895 * h^2)/2 0.3 (1.7425 * h^0.5566)/2 0.5 (1.2 + 0.16 * h)/2 1.50 0.1 (3.09632 + 0.00895 * h^2)/2 0.3 (1.7425 * h^0.5566)/2 0.5 (1.2 + 0.16 * h)/2 2.00 0.1 (3.09632 + 0.00895 * h^2)/2 0.3 (1.7425 * h^0.5566)/2 0.5 (1.2 + 0.16 * h)/2 7.2 t-tests \u00b6 t-test were computed to evaluate the ability of descriptors to differentiate the three health states. A t-test value below 0.01 indicates that there is a significant difference between the means of two classes. 7.2.1 t-tests on LiDAR-based descriptors at 10 m \u00b6 Table 9: t-test on LiDAR-based descriptors at 10 m. Descriptors healthy vs. unhealthy healthy vs. dead unhealthy vs. dead maximal height 0.002 1.12E-11 3.23E-04 scale parameter 0.005 0.014 0.964 shape parameter 0.037 0.002 0.269 cvLAD 0.001 2.22E-04 0.353 VCI 0.426 0.094 0.358 mean reflectance 4.13E-05 0.002 0.164 sd of reflectance 0.612 3.33E-06 9.21E-05 canopy cover 0.009 0.069 0.340 sdCC 0.002 0.056 0.324 sdCHM 0.316 0.262 0.892 AGH 0.569 0.055 0.120 7.2.2 t-test on LiDAR-based descriptors at 5 m \u00b6 Table 10: t-test on LiDAR-based descriptors at 5 m. Descriptors healthy vs. unhealthy healthy vs. dead unhealthy vs. dead maximal height 0.001 4.67E-12 1.73E-04 scale parameter 0.072 0.831 0.204 shape parameter 0.142 0.654 0.361 cvLAD 9.14E-06 3.22E-05 0.667 VCI 0.006 0.104 0.485 mean reflectance 6.60E-05 2.10E-06 0.249 sd of reflectance 0.862 2.26E-08 9.24E-08 canopy cover 0.288 0.001 0.003 sdCC 1.42E-05 1.94E-11 0.001 sdCHM 0.004 1.94E-08 0.002 AGH 0.783 0.071 0.095 7.2.3 t-test on LiDAR-based descriptors at 2.5 m \u00b6 Table 11: t-test on LiDAR-based descriptors at 2.5 m. Descriptors healthy vs. unhealthy healthy vs. dead unhealthy vs. dead maximal height 3.76E-04 7.28E-11 4.80E-04 scale parameter 0.449 0.283 5.60E-01 shape parameter 0.229 0.087 0.462 cvLAD 3.59E-04 1.06E-07 0.012 VCI 0.004 1.99E-05 0.072 mean reflectance 3.15E-04 5.27E-07 0.068 sd of reflectance 0.498 1.10E-10 4.66E-11 canopy cover 0.431 0.004 0.019 sdCC 0.014 1.94E-13 6.94E-09 sdCHM 0.003 5.56E-07 0.006 AGH 0.910 0.132 0.132 7.2.4 t-test on LiDAR-based descriptors per tree \u00b6 Table 12: t-test on LiDAR-based descriptors per tree. Descriptors healthy vs. unhealthy healthy vs. dead unhealthy vs. dead maximal height 0.001 1.98E-11 2.61E-04 scale parameter 0.726 0.618 0.413 shape parameter 0.739 0.795 0.564 cvLAD 0.001 4.23E-04 0.526 VCI 0.145 0.312 0.763 mean reflectance 1.19E-04 0.001 0.949 sd of reflectance 0.674 3.70E-07 4.79E-07 canopy cover 0.431 0.005 0.023 sdCC 0.014 4.43E-13 1.10E-08 sdCHM 0.003 2.71E-07 0.004 AGH 0.910 0.090 0.087 7.2.5 t-tests on yearly variation of NDVI \u00b6 Table 13: t-test on yearly variation of NDVI. Descriptors healthy vs. unhealthy healthy vs. dead unhealthy vs. dead 2016 0.177 0.441 0.037 2017 0.079 2.20E-06 0.004 2018 0.093 1.57E-04 0.132 2019 0.003 0.001 0.816 2020 0.536 0.041 0.005 2021 0.002 0.894 0.003 2022 0.131 0.103 0.002 7.2.6 t-test on VHI \u00b6 Table 14: t-test on VHI. Descriptors healthy vs. unhealthy healthy vs. dead unhealthy vs. dead 2015-2016 0.402 0.572 0.767 2016-2017 0.005 0.002 0.885 2017-2018 0.769 0.329 0.505 2018-2019 2.64E-05 3.98E-14 0.001 2019-2020 7.86E-06 9.55E-05 0.427 2020-2021 0.028 0.790 0.018 2021-2022 0.218 0.001 0.080 8 Sources and references \u00b6 Indications on software and hardware requirements, as well as the code used to perform the project, are available on GitHub: https://github.com/swiss-territorial-data-lab/proj-hetres/tree/main. Other sources of information mentioned in this documentation are listed here: OFEV et al. (\u00e9d.). La canicule et la s\u00e9cheresse de l\u2019\u00e9t\u00e9 2018. Impacts sur l\u2019homme et l\u2019environnement. Technical Report 1909, Office f\u00e9d\u00e9ral de l\u2019environnement, Berne, 2019. \u21a9 \u21a9 Beno\u00eet Grandclement and Daniel Bachmann. 19h30 - En Suisse, la s\u00e9cheresse qui s\u00e9vit depuis plusieurs semaines frappe durement les arbres - Play RTS. February 2023. URL: https://www.rts.ch/play/tv/19h30/video/en-suisse-la-secheresse-qui-sevit-depuis-plusieurs-semaines-frappe-durement-les-arbres?urn=urn:rts:video:13829524 (visited on 2023-03-28). \u21a9 Xavier Gauquelin, editor. Guide de gestion des for\u00eats en crise sanitaire . Office National des For\u00eats, Institut pour le D\u00e9veloppement Forestier, Paris, 2010. ISBN 978-2-84207-344-2. \u21a9 \u21a9 Philipp Brun, Achilleas Psomas, Christian Ginzler, Wilfried Thuiller, Massimiliano Zappa, and Niklaus E. Zimmermann. Large-scale early-wilting response of Central European forests to the 2018 extreme drought. Global Change Biology , 26(12):7021\u20137035, 2020. _eprint: https://onlinelibrary.wiley.com/doi/pdf/10.1111/gcb.15360. URL: https://onlinelibrary.wiley.com/doi/abs/10.1111/gcb.15360 (visited on 2022-10-13), doi:10.1111/gcb.15360 . \u21a9 Run Yu, Youqing Luo, Quan Zhou, Xudong Zhang, Dewei Wu, and Lili Ren. A machine learning algorithm to detect pine wilt disease using UAV-based hyperspectral imagery and LiDAR data at the tree level. International Journal of Applied Earth Observation and Geoinformation , 101:102363, September 2021. URL: https://www.sciencedirect.com/science/article/pii/S0303243421000702 (visited on 2022-10-13), doi:10.1016/j.jag.2021.102363 . \u21a9 \u21a9 \u21a9 Pengyu Meng, Hong Wang, Shuhong Qin, Xiuneng Li, Zhenglin Song, Yicong Wang, Yi Yang, and Jay Gao. Health assessment of plantations based on LiDAR canopy spatial structure parameters. International Journal of Digital Earth , 15(1):712\u2013729, December 2022. URL: https://www.tandfonline.com/doi/full/10.1080/17538947.2022.2059114 (visited on 2022-12-07), doi:10.1080/17538947.2022.2059114 . \u21a9 \u21a9 \u21a9 Patrice Eschmann, Pascal Kohler, Vincent Brahier, and Jo\u00ebl Theubet. La for\u00eat jurassienne en chiffres, R\u00e9sultats et interpr\u00e9tation de l'inventaire forestier cantonal 2003 - 2005. Technical Report, R\u00e9publique et Canton du Jura, St-Ursanne, 2006. URL: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwjHuZyfhoSBAxU3hP0HHeBtC4sQFnoECDcQAQ&url=https%3A%2F%2Fwww.jura.ch%2FHtdocs%2FFiles%2FDepartements%2FDEE%2FENV%2FFOR%2FDocuments%2Fpdf%2Frapportinventfor0305.pdf%3Fdownload%3D1&usg=AOvVaw0yr9WOtxMyY-87avVMS9YM&opi=89978449However . \u21a9 \u21a9 Agnieska Ptak. (5) Amplitude vs Reflectance \\textbar LinkedIn. June 2020. URL: https://www.linkedin.com/pulse/amplitude-vs-reflectance-agnieszka-ptak/ (visited on 2023-08-11). \u21a9 BFH-HAFL and BAFU. Waldmonitoring.ch : wcs_ndvi_diff_2016_2015, wcs_ndvi_diff_2017_2016, wcs_ndvi_diff_2018_2017, wcs_ndvi_diff_2019_2018, wcs_ndvi_diff_2020_2019, wcs_ndvi_diff_2021_2020, wcs_ndvi_diff_2022_2021. URL: https://geoserver.karten-werk.ch/wfs?request=GetCapabilities . \u21a9 Reik Leiterer, Gillian Milani, Jan Dirk Wegner, and Christian Ginzler. ExoSilva - ein Multi\u00ad-Sensor\u00ad-Ansatz f\u00fcr ein r\u00e4umlich und zeitlich hochaufgel\u00f6stes Monitoring des Waldzustandes. In Neue Fernerkundungs\u00adtechnologien f\u00fcr die Umweltforschung und Praxis , 17\u201322. Swiss Federal Institute for Forest, Snow and Landscape Research, WSL, April 2023. URL: https://www.dora.lib4ri.ch/wsl/islandora/object/wsl%3A33057 (visited on 2023-11-13), doi:10.55419/wsl:33057 . \u21a9 Matthew Parkan. Mparkan/Digital-Forestry-Toolbox: Initial release. April 2018. URL: https://zenodo.org/record/1213013 (visited on 2023-08-11), doi:10.5281/ZENODO.1213013 . \u21a9 R Core Team. R: A Language and Environment for Statistical Computing. 2023. URL: https://www.R-project.org/ . \u21a9 \u21a9 Olga Brovkina, Emil Cienciala, Peter Surov\u00fd, and P\u0159emysl Janata. Unmanned aerial vehicles (UAV) for assessment of qualitative classification of Norway spruce in temperate forest stands. Geo-spatial Information Science , 21(1):12\u201320, January 2018. URL: https://www.tandfonline.com/doi/full/10.1080/10095020.2017.1416994 (visited on 2022-07-15), doi:10.1080/10095020.2017.1416994 . \u21a9 N.K. Gogoi, Bipul Deka, and L.C. Bora. Remote sensing and its use in detection and monitoring plant diseases: A review. Agricultural Reviews , December 2018. doi:10.18805/ag.R-1835 . \u21a9 Samuli Junttila, Roope N\u00e4si, Niko Koivum\u00e4ki, Mohammad Imangholiloo, Ninni Saarinen, Juha Raisio, Markus Holopainen, Hannu Hyypp\u00e4, Juha Hyypp\u00e4, P\u00e4ivi Lyytik\u00e4inen-Saarenmaa, Mikko Vastaranta, and Eija Honkavaara. Multispectral Imagery Provides Benefits for Mapping Spruce Tree Decline Due to Bark Beetle Infestation When Acquired Late in the Season. Remote Sensing , 14(4):909, February 2022. URL: https://www.mdpi.com/2072-4292/14/4/909 (visited on 2023-10-27), doi:10.3390/rs14040909 . \u21a9","title":"Dieback of beech trees: methodology for determining the health state of beech trees from airborne images and LiDAR point clouds"},{"location":"PROJ-HETRES/#dieback-of-beech-trees-methodology-for-determining-the-health-state-of-beech-trees-from-airborne-images-and-lidar-point-clouds","text":"Clotilde Marmy (ExoLabs) - Gwena\u00eblle Salamin (ExoLabs) - Alessandro Cerioni (Canton of Geneva) - Roxane Pott (swisstopo) Proposed by the Canton of Jura - PROJ-HETRES October 2022 to August 2023 - Published on November 13, 2023 All scripts are available on GitHub . Abstract : Beech trees are sensitive to drought and repeated episodes can cause dieback. This issue affects the Jura forests requiring the development of new tools for forest management. In this project, descriptors for the health state of beech trees were derived from LiDAR point clouds, airborne images and satellite images to train a random forest predicting the health state per tree in a study area (5 km\u00b2) in Ajoie. A map with three classes was produced: healthy, unhealthy, dead. Metrics computed on the test dataset revealed that the model trained with all the descriptors has an overall accuracy up to 0.79, as well as the model trained only with descriptors derived from airborne imagery. When all the descriptors are used, the yearly difference of NDVI between 2018 and 2019, the standard deviation of the blue band, the mean of the NIR band, the mean of the NDVI, the standard deviation of the canopy cover and the LiDAR reflectance appear to be important descriptors.","title":"Dieback of beech trees: methodology for determining the health state of beech trees from airborne images and LiDAR point clouds"},{"location":"PROJ-HETRES/#1-introduction","text":"Since the drought episode of 2018, the canton of Jura and other cantons have noticed dieback of the beech trees in their forests 1 . In the canton of Jura, this problem mainly concerns the Ajoie region, where 1000 hectares of deciduous trees are affected 2 . This is of concern for the productivity and management of the forest, as well as for the security of walkers. In this context, the R\u00e9publique et Canton du Jura has contacted the Swiss Territorial Data Lab to develop a new monitoring solution based on data science, airborne images and LiDAR point clouds. The dieback symptoms are observable in the mortality of branches, the transparency of the tree crown and the leaf mass partition 3 . The vegetation health state influences the reflectance in images (airborne and satellite), which is often used as a monitoring tool, in particular under the form of vegetation indices: Normalized Difference Vegetation Index (NDVI), a combination of the near-infrared and red bands quantifying vegetation health; Vegetation Health Index (VHI), an index quantifying the decrease or increase of vegetation in comparison to a reference state. For instance, Brun et al. studied early-wilting in Central European forests with time series of the Normalized Difference Vegetation Index (NDVI) and estimate the surface concerned by early leaf-shedding 4 . Another technology used to monitor forests is light detection and ranging (LiDAR) as it penetrates the canopy and gives 3D information on trees and forest structures. Several forest and tree descriptors such as the canopy cover 5 or the standard deviation of crown return intensity 6 can be derived from the LiDAR point cloud to monitor vegetation health state. In 5 , the study was conducted at tree level, whereas in 6 stand level was studied. To work at tree level, it is necessary to segment individual trees in the LiDAR point cloud. On complex forests, like with a dense understory near tree stems, it is challenging to get correct segments without manual corrections. The aim of this project is to provide foresters with a map to help plan the felling of beech trees in the Ajoie's forests. To do so, we developed a combined method using LiDAR point clouds and airborne and satellite multispectral images to determine the health state of beech trees.","title":"1. Introduction"},{"location":"PROJ-HETRES/#2-study-area","text":"The study was conducted in two areas of interest in the Ajoie region (Fig. 1.A); one near Mi\u00e9court (Fig. 1.B), the other one near Beurnev\u00e9sin (Fig. 1.C). Altogether they cover 5 km 2 , 1.4 % of the Canton of Jura's forests 7 . Mi\u00e9court sub-area is west-south and south oriented, whereas Beurnev\u00e9sin sub-area is rather east-south and south oriented. They are in the same altitude range (600-700 m) and are 2 km away from each other, thus near the same weather station. Figure 1: The study area is composed of two areas of interest.","title":"2. Study area"},{"location":"PROJ-HETRES/#3-data","text":"The project makes use of different data types: LiDAR point cloud, airborne and satellite imagery, and ground truth data. Table 1 gives an overview of the data and their characteristics. Data have been acquired in late summer 2022 to have an actual and temporally correlated information on the health state of beech trees. Table 1: Overview of the data used in the project. Resolution Acquisition time Proprietary LiDAR 50-100 pts/m 2 08.2022 R\u00e9publique et Canton du Jura Airborne images 0.03 m 08.2022 R\u00e9publique et Canton du Jura Yearly variation of NDVI 10 m 06.2015-08.2022 Bern University of Applied Science (HAFL) and the Federal Office for Environment (BAFU) Weekly vegetation health index 10 m 06.2015-08.2022 ExoLabs Ground truth - (point data) 08.-10.2022 R\u00e9publique et Canton du Jura","title":"3. Data"},{"location":"PROJ-HETRES/#31-lidar-point-cloud","text":"The LiDAR dataset was acquired on the 16th of August 2023 and its point density is 50-100 pts/m\u00b2. It is classified in the following classes: ground, low vegetation (2-10m), middle vegetation (10-20m) and high vegetation (20 m and above). It was delivered in the LAS format and had reflectance values 8 in the intensity storage field.","title":"3.1 LiDAR point cloud"},{"location":"PROJ-HETRES/#32-airborne-images","text":"The airborne images have a ground resolution of 3 cm and were acquired simultaneously to the LiDAR dataset. The camera captured the RGB bands, as well as the near infrared (NIR) one. The acquisition of images with a lot of overlap and oblique views allowed the production of a true orthoimage for a perfect match with the LiDAR point cloud and the data of the ground truth.","title":"3.2 Airborne images"},{"location":"PROJ-HETRES/#33-satellite-images","text":"The Sentinel-2 mission from the European Space Agency is passing every 6 days over Switzerland and allows free temporal monitoring at a 10 m resolution. The archives are available back to the beginning of beech tree dieback in 2018.","title":"3.3 Satellite images"},{"location":"PROJ-HETRES/#34-ground-truth","text":"The ground truth was collected between August and October 2022 by foresters. They assessed the health of the beech trees based on four criteria 3 : mortality of branches; transparency of the tree crown; leaf mass partition; trunk condition and other health aspects. In addition, each tree was associated with its coordinates and pictures as illustrated in Figure 1 and Figure 2 respectively. The forester surveyed: 75 healthy, 77 unhealthy and 56 dead trees. Tree locations were first identified in the field with a GPS-enabled tablet on which the 2022 SWISSIMAGE mosaic was displayed. Afterwards, the tree locations were precisely adjusted on the trunk locations by visually locating the corresponding stems in the LiDAR point cloud with the help of the pictures taken in the field. The location and health status of a further 18 beech trees were added in July 2023. These 226 beeches - under which are 76 healthy, 77 affected and 73 dead trees - surveyed at the two dates are defined as the ground truth for this project. Figure 2: Examples of the three health states: left, a healthy tree with a dense green tree crown; center, an unhealthy tree with dead twigs and a scarce foliage; right, a dead tree completely dry.","title":"3.4 Ground truth"},{"location":"PROJ-HETRES/#4-method","text":"The method developed is based on the processing of LiDAR point clouds and of airborne images . Ready-made vegetation indices derived from satellite imagery were also used. First, a segmentation of the trees in the LiDAR point cloud was carried out using the Digital-Forestry-Toolbox (DFT) 11 . Then, descriptors for the health state of the beech trees were derived from each dataset. Boxplots and corresponding t-test are computed to evaluate the ability of descriptors to differentiate the three health states. A t-test value below 0.01 indicates that there is a significant difference between the means of two classes. Finally, the descriptors were used jointly with the ground truth to train a random forest (RF) algorithm, before inferring for the study area. Figure 3: Overview of the methodology, which processes the data into health descriptors for beech trees, before training and evaluating a random forest.","title":"4. Method"},{"location":"PROJ-HETRES/#41-lidar-processing","text":"At the beginning of LiDAR processing, exploration of the data motivated the segmentation and descriptors computation.","title":"4.1 LiDAR processing"},{"location":"PROJ-HETRES/#42-image-processing","text":"For the image processing, an initial step was to compute the normalized difference vegetation index (NDVI) for each raster image. The normalized difference vegetation index (NDVI) is an index commonly used for the estimation of the health state of vegetation 5 13 14 . \\[\\begin{align} \\ NDVI = {NIR-R \\over NIR+R} \\ \\end{align}\\] where NIR and R are the value of the pixel in the near-infrared and red band respectively. To uncover potential distinctive features between the classes, boxplots and principal component analysis were used on the images four bands (RGB-NIR) and the NDVI. Firstly, we tested if the brute pixel values allowed the distinction between classes at a pixel level. This method avoids the pit of the forest segmentation into trees. Secondly, we tested the same method, but with some low-pass filter to reduce the noise in the data. Thirdly, we tried to find distinct statistical features at the tree level. This approach allows decreasing the noise that can be present in high-resolution information. However, it necessitates having a reasonably good segmentation of the trees. Finally, color filtering and edge detection were tested in order to highlight and extract the linear structure of the branches. For each treatment, it is possible to do it with or without a mask on the tree height. As only trees between 20 m and 40 m tall are affected by dieback, a mask based on the Canopy Height Model (CHM) raster derived from the LiDAR point cloud was tested. Figure 4: Overview of different possible data treatments for the the statistical analysis.","title":"4.2 Image processing"},{"location":"PROJ-HETRES/#43-satellite-based-indices","text":"The yearly variation of NDVI and the VHI were used to take account of historical variations of NDVI from 2015 to 2022. For the VHI, the mean for each year is computed over the months considered for the yearly variation of NDVI. The pertinence of using these indices was explored: the values for each tree in the ground truth were extracted and observed in boxplots per health class in 2022 per year pair over the time span from 2015 to 2022.","title":"4.3 Satellite-based indices"},{"location":"PROJ-HETRES/#44-random-forest","text":"In R 12 , the caret and randomForest packages were used to train the random forest and make predictions. First, the ground truth was split into the training and the test datasets, with each class being split 70 % into the training set and 30 % into the test set. Health classes with not enough samples were completed with copies. Optimization of the RF was performed on the number of trees to develop and on the number of randomly sampled descriptors to test at each split. In addition, 5-fold cross-validation was used to ensure the use of different parts of the dataset. The search parameter space was from 100 to 1000 decision trees and from 4 to 10 descriptors as the default value is the square root of all descriptors, i.e. 7. RF was assessed using a custom metric, which is an adaptation of the false positive rate for the healthy class. It minimizes the amount of false healthy detections and of dead trees predicted as unhealthy (false unhealthy). It is called custom false positive rate (cFPR) in the text. It was preferred to have a model with more unhealthy predictions to control on the field, than missing unhealthy or dead trees. The cFPR goes from 0 (best) to 1 (worse). Table 2: Confusion matrix for the three health classes. Ground truth Healthy Unhealthy Dead Prediction Healthy A B C Unhealthy D E F Dead G H I According to the confusion matrix in Table 2, the cFPR is computed as follows: \\[\\begin{align} \\ cFPR = {(\ud835\udc35+\ud835\udc36+\ud835\udc39)\\over(\ud835\udc35+\ud835\udc36+\ud835\udc38+\ud835\udc39+\ud835\udc3b+\ud835\udc3c)}. \\ \\end{align}\\] In addition, the overall accuracy (OA), i.e. the ratio of correct predictions over all the predictions, and the sensitivity, which is, per class, the number of correct predictions divided by the number of samples from that class, are used. An ablation study was performed on descriptors to assess the contribution of the different data sources to the final performance. An \u201cimportant\u201d descriptor is having a strong influence on the increase in prediction errors in the case of random reallocation of the descriptor values in the training set. After the optimization, predictions for each DFT segments were computed using the best model according to the cFPR. The inferences were delivered as a thematic map with colors indicating the health state and hue indicating the fraction of decision trees in the RF having voted for the class (vote fraction). The purpose is to give a confidence information, with high vote fraction indicating robust predictions. Furthermore, the ground truth was evaluated for quantity and quality by two means: Removal of samples and its impact on the metric evaluation Splitting the training set into training subsets to evaluate on the original test set. Finally, after having developed the descriptors and the routine on high-quality data, we downgraded them to have resolutions similar to the ones of the swisstopo products (LiDAR: 20 pt/m 2 , orthoimage: 10 cm) and performed again the optimization and prediction steps. Indeed, the data acquisition was especially commissioned for this project and only covers the study area. If in the future the method should be extended, one would like to test if a lower resolution as the one of the standard national-wide product SWISSIMAGE could be sufficient.","title":"4.4 Random Forest"},{"location":"PROJ-HETRES/#5-results-and-discussion","text":"In this section, the results obtained during the processing of each data source into descriptors are presented and discussed, followed by a section on the random forest results.","title":"5 Results and discussion"},{"location":"PROJ-HETRES/#51-lidar-processing","text":"For the LiDAR data, the reader will first discover the aspect of beech trees in the LiDAR point cloud according to their health state as studied in the data exploration. Then, the segmentation results and the obtained LiDAR-based descriptors will be presented.","title":"5.1 LiDAR processing"},{"location":"PROJ-HETRES/#52-image-processing","text":"Boxplots and PCA are given to illustrate the results of the image processing exploration. As the masking of pixels below and above the affected height made no difference in the interpretation of the results, they are presented here with the height mask.","title":"5.2 Image processing"},{"location":"PROJ-HETRES/#53-vegetation-indices-from-satellite-imagery","text":"The t-test used to evaluate the ability of satellite indices to differentiate between health states are given in Appendices 6 and 7 . In the following two subsections, solely the significant tested groups are mentioned for understanding the RF performance.","title":"5.3 Vegetation indices from satellite imagery"},{"location":"PROJ-HETRES/#54-random-forest","text":"The results of the RF that are presented and discussed are: (1) the optimization and ablation study, (2) the ground truth analysis, (3) the predictions for the AOI and (4) the performance with downgraded data.","title":"5.4 Random Forest"},{"location":"PROJ-HETRES/#6-conclusion-and-outlook","text":"The study has demonstrated the ability of a random forest algorithm to learn from structural descriptors derived from LiDAR point clouds and from vegetation reflectance in airborne and satellite images to predict the health state of beech trees. Depending on the used datasets for training and test, the optimized full model including all descriptors reached an OA of 0.76 or of 0.79, with corresponding cFPR values of 0.13 and 0.14 respectively. These metrics are sufficient for the purpose of prioritizing beech tree felling. The produced map, with the predicted health state and the corresponding votes for the segments, delivers useful information for forest management. The cantonal foresters validated the outcomes of this proof-of-concept and explained how the location of affected beech trees as individuals or as groups are used to target high-priority areas. The full model highlighted the importance of the yearly variation of NDVI between a drought year (2018) and a normal year (2019). The airborne imagery showed good ability to predict dead trees, whereas confusion remained between healthy and unhealthy trees. The quality of the LiDAR point cloud segmentation may explain the limited performance of the LiDAR-based model. Finally, the model trained and tested on downgraded data gave an OA of 0.84 and a cFPR of 0.08. In this model, the airborne-based descriptors gained in importance. It was concluded that a 10 cm resolution may help the model by reducing the noise in the image. Outlooks for improving results include improving the ground truth representativeness of symptoms in the field and continuing research into descriptors for differentiating between healthy and unhealthy trees: For the image processing, suggestions are the integration of more statistics like the skewness and kurtosis of the reflectance as in Junttila et al. (2022) 15 . LiDAR-based descriptors had limited impact on the final results. To better valorize them for an application on beech trees, further research would be needed. Beside producing a cleaner segmentation and finding additional descriptors, it could consist in mixing the descriptors at the different resolutions and, with the help of the importance analysis, estimate at which resolution each descriptor brings the most information to the classification. The results showed the important contribution of vegetation indices derived from satellite imagery reflecting the drought year of 2018. If available, using historical image data of higher resolution to derive more descriptors could help improve individual tree health assessment. The possibility of further developments put aside, the challenge is now the extension of the methodology to a larger area. The simultaneity of the data is necessary to an accurate analysis. It has been shown that the representativeness of the ground truth has to be improved to obtain better and more stable results. Thus, for an extension to further areas, we recommend collecting additional ground truth measurements. The health state of the trees showed some autocorrelation that could have boosted our results and make them less representative of the whole forest. They should be more scattered in the forest. Furthermore, required data are a true orthophoto and a LiDAR point cloud for per-tree analysis. It should be possible to use an old LiDAR acquisition to produce a CHM and renounce to use LiDAR-based descriptors without degrading the performance of the model too much.","title":"6 Conclusion and outlook"},{"location":"PROJ-HETRES/#7-appendixes","text":"","title":"7 Appendixes"},{"location":"PROJ-HETRES/#71-simulation-plan-for-dft-parameter-tuning","text":"Table 8: parameter tuning for DFT. CHM cell size [m] Maxima smoothing Local maxima within search radius 0.50 0.1 (3.09632 + 0.00895 * h^2)/2 0.3 (1.7425 * h^0.5566)/2 0.5 (1.2 + 0.16 * h)/2 1.00 0.1 (3.09632 + 0.00895 * h^2)/2 0.3 (1.7425 * h^0.5566)/2 0.5 (1.2 + 0.16 * h)/2 1.50 0.1 (3.09632 + 0.00895 * h^2)/2 0.3 (1.7425 * h^0.5566)/2 0.5 (1.2 + 0.16 * h)/2 2.00 0.1 (3.09632 + 0.00895 * h^2)/2 0.3 (1.7425 * h^0.5566)/2 0.5 (1.2 + 0.16 * h)/2","title":"7.1 Simulation plan for DFT parameter tuning"},{"location":"PROJ-HETRES/#72-t-tests","text":"t-test were computed to evaluate the ability of descriptors to differentiate the three health states. A t-test value below 0.01 indicates that there is a significant difference between the means of two classes.","title":"7.2 t-tests"},{"location":"PROJ-HETRES/#8-sources-and-references","text":"Indications on software and hardware requirements, as well as the code used to perform the project, are available on GitHub: https://github.com/swiss-territorial-data-lab/proj-hetres/tree/main. Other sources of information mentioned in this documentation are listed here: OFEV et al. (\u00e9d.). La canicule et la s\u00e9cheresse de l\u2019\u00e9t\u00e9 2018. Impacts sur l\u2019homme et l\u2019environnement. Technical Report 1909, Office f\u00e9d\u00e9ral de l\u2019environnement, Berne, 2019. \u21a9 \u21a9 Beno\u00eet Grandclement and Daniel Bachmann. 19h30 - En Suisse, la s\u00e9cheresse qui s\u00e9vit depuis plusieurs semaines frappe durement les arbres - Play RTS. February 2023. URL: https://www.rts.ch/play/tv/19h30/video/en-suisse-la-secheresse-qui-sevit-depuis-plusieurs-semaines-frappe-durement-les-arbres?urn=urn:rts:video:13829524 (visited on 2023-03-28). \u21a9 Xavier Gauquelin, editor. Guide de gestion des for\u00eats en crise sanitaire . Office National des For\u00eats, Institut pour le D\u00e9veloppement Forestier, Paris, 2010. ISBN 978-2-84207-344-2. \u21a9 \u21a9 Philipp Brun, Achilleas Psomas, Christian Ginzler, Wilfried Thuiller, Massimiliano Zappa, and Niklaus E. Zimmermann. Large-scale early-wilting response of Central European forests to the 2018 extreme drought. Global Change Biology , 26(12):7021\u20137035, 2020. _eprint: https://onlinelibrary.wiley.com/doi/pdf/10.1111/gcb.15360. URL: https://onlinelibrary.wiley.com/doi/abs/10.1111/gcb.15360 (visited on 2022-10-13), doi:10.1111/gcb.15360 . \u21a9 Run Yu, Youqing Luo, Quan Zhou, Xudong Zhang, Dewei Wu, and Lili Ren. A machine learning algorithm to detect pine wilt disease using UAV-based hyperspectral imagery and LiDAR data at the tree level. International Journal of Applied Earth Observation and Geoinformation , 101:102363, September 2021. URL: https://www.sciencedirect.com/science/article/pii/S0303243421000702 (visited on 2022-10-13), doi:10.1016/j.jag.2021.102363 . \u21a9 \u21a9 \u21a9 Pengyu Meng, Hong Wang, Shuhong Qin, Xiuneng Li, Zhenglin Song, Yicong Wang, Yi Yang, and Jay Gao. Health assessment of plantations based on LiDAR canopy spatial structure parameters. International Journal of Digital Earth , 15(1):712\u2013729, December 2022. URL: https://www.tandfonline.com/doi/full/10.1080/17538947.2022.2059114 (visited on 2022-12-07), doi:10.1080/17538947.2022.2059114 . \u21a9 \u21a9 \u21a9 Patrice Eschmann, Pascal Kohler, Vincent Brahier, and Jo\u00ebl Theubet. La for\u00eat jurassienne en chiffres, R\u00e9sultats et interpr\u00e9tation de l'inventaire forestier cantonal 2003 - 2005. Technical Report, R\u00e9publique et Canton du Jura, St-Ursanne, 2006. URL: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwjHuZyfhoSBAxU3hP0HHeBtC4sQFnoECDcQAQ&url=https%3A%2F%2Fwww.jura.ch%2FHtdocs%2FFiles%2FDepartements%2FDEE%2FENV%2FFOR%2FDocuments%2Fpdf%2Frapportinventfor0305.pdf%3Fdownload%3D1&usg=AOvVaw0yr9WOtxMyY-87avVMS9YM&opi=89978449However . \u21a9 \u21a9 Agnieska Ptak. (5) Amplitude vs Reflectance \\textbar LinkedIn. June 2020. URL: https://www.linkedin.com/pulse/amplitude-vs-reflectance-agnieszka-ptak/ (visited on 2023-08-11). \u21a9 BFH-HAFL and BAFU. Waldmonitoring.ch : wcs_ndvi_diff_2016_2015, wcs_ndvi_diff_2017_2016, wcs_ndvi_diff_2018_2017, wcs_ndvi_diff_2019_2018, wcs_ndvi_diff_2020_2019, wcs_ndvi_diff_2021_2020, wcs_ndvi_diff_2022_2021. URL: https://geoserver.karten-werk.ch/wfs?request=GetCapabilities . \u21a9 Reik Leiterer, Gillian Milani, Jan Dirk Wegner, and Christian Ginzler. ExoSilva - ein Multi\u00ad-Sensor\u00ad-Ansatz f\u00fcr ein r\u00e4umlich und zeitlich hochaufgel\u00f6stes Monitoring des Waldzustandes. In Neue Fernerkundungs\u00adtechnologien f\u00fcr die Umweltforschung und Praxis , 17\u201322. Swiss Federal Institute for Forest, Snow and Landscape Research, WSL, April 2023. URL: https://www.dora.lib4ri.ch/wsl/islandora/object/wsl%3A33057 (visited on 2023-11-13), doi:10.55419/wsl:33057 . \u21a9 Matthew Parkan. Mparkan/Digital-Forestry-Toolbox: Initial release. April 2018. URL: https://zenodo.org/record/1213013 (visited on 2023-08-11), doi:10.5281/ZENODO.1213013 . \u21a9 R Core Team. R: A Language and Environment for Statistical Computing. 2023. URL: https://www.R-project.org/ . \u21a9 \u21a9 Olga Brovkina, Emil Cienciala, Peter Surov\u00fd, and P\u0159emysl Janata. Unmanned aerial vehicles (UAV) for assessment of qualitative classification of Norway spruce in temperate forest stands. Geo-spatial Information Science , 21(1):12\u201320, January 2018. URL: https://www.tandfonline.com/doi/full/10.1080/10095020.2017.1416994 (visited on 2022-07-15), doi:10.1080/10095020.2017.1416994 . \u21a9 N.K. Gogoi, Bipul Deka, and L.C. Bora. Remote sensing and its use in detection and monitoring plant diseases: A review. Agricultural Reviews , December 2018. doi:10.18805/ag.R-1835 . \u21a9 Samuli Junttila, Roope N\u00e4si, Niko Koivum\u00e4ki, Mohammad Imangholiloo, Ninni Saarinen, Juha Raisio, Markus Holopainen, Hannu Hyypp\u00e4, Juha Hyypp\u00e4, P\u00e4ivi Lyytik\u00e4inen-Saarenmaa, Mikko Vastaranta, and Eija Honkavaara. Multispectral Imagery Provides Benefits for Mapping Spruce Tree Decline Due to Bark Beetle Infestation When Acquired Late in the Season. Remote Sensing , 14(4):909, February 2022. URL: https://www.mdpi.com/2072-4292/14/4/909 (visited on 2023-10-27), doi:10.3390/rs14040909 . \u21a9","title":"8 Sources and references"},{"location":"PROJ-LANDSTATS/","text":"Using spatio-temporal neighbor data information to detect changes in land use and land cover \u00b6 Shanci Li (Uzufly) - Alessandro Cerioni (Canton of Geneva) - Clotilde Marmy (ExoLabs) - Roxane Pott (swisstopo) Proposed by the Swiss Federal Statistical Office - PROJ-LANDSTATS September 2022 to March 2023 - Published on April 2023 All scripts are available on GitHub . Abstract : From 2020 on, the Swiss Federal Statistical Office started to update the land use/cover statistics over Switzerland for the fifth time. To help and lessen the heavy workload of the interpretation process, partially or fully automated approaches are being considered. The goal of this project was to evaluate the role of spatio-temporal neighbors in predicting class changes between two periods for each survey sample point. The methodolgy focused on change detection, by finding as many unchanged tiles as possible and miss as few changed tiles as possible. Logistic regression was used to assess the contribution of spatial and temporal neighbors to the change detection. While time deactivation and less-neighbors have a 0.2% decrease on the balanced accuracy, the space deactivation causes 1% decrease. Furthermore, XGBoost, random forest (RF), fully convolutional network (FCN) and recurrent convolutional neural network (RCNN) performance are compared by the means of a custom metric, established with the help of the interpretation team. For the spatial-temporal module, FCN outperforms all the models with a value of 0.259 for the custom metric, whereas the logistic regression indicates a custom metrics of 0.249. Then, FCN and RF are tested to combine the best performing model with the model trained by OFS on image data only. When using temporal-spatial neighors and image data as inputs, the final integration module achieves 0.438 in custom metric, against 0.374 when only the the image data is used. It was conclude that temporal-spatial neighbors showed that they could light the process of tile interpretation. 1. Introduction \u00b6 The introduction presents the background and the objectives of the projects, but also introduces the input data and its specific features. 1.1 Background \u00b6 Since 1979, the Swiss Federal Statistical Office (FSO) provides detailed and accurate information on the state and evolution of the land use and the land cover in Switzerland. It is a crucial tool for long-term spatial observation. With these statistics, it is possible to determine whether and to what extent changes in land cover and land use are consistent with the goals of Swiss spatial development policies ( FSO ). Figure 1: Visualization of the land cover and land use classification. Every few years, the FSO carries out a survey on aerial or satellite images all over Switzerland. A grid with sample points spaced 100 meters apart overlays the images, providing 4.1 million sample points on which the statistics are based. The classification of the hectare tile is assigned on the center dot, as shown in Figure 1. Currently, a time series of four surveys is accessible, based on aerial images captured in the following years: 1979\u20131985 (1st survey, 1985) 1992\u20131997 (2nd survey, 1997) 2004\u20132009 (3rd survey, 2009) 2013\u20132018 (4th survey, 2018) The first two surveys of the land statistics in 1979 and 1992 were made by visual interpretation of aerial analogue photos using stereoscopes. Since the 2004 survey, the methodology was deeply renewed, in particular through the use of digital aerial photographs, which are observed stereoscopically on workstations using specific photogrammetry software . A new nomenclature (2004 NOAS04) has also been introduced in 2004 which systematically distinguishes 46 land use categories and 27 land cover categories. A numerical label from this catalogue is assigned to each point by a team of trained interpreters. The 1979 and 1992 surveys have been revised according to the nomenclature NOAS04, so that all readings (1979, 1992, 2004, 2013) are comparable. On this page you will find the geodata of the Land Use Statistics at the hectare level since 1979, as well as documentation on the data and the methodology used to produce these data. Detailed information on basic categories and principal domains can be found in Appendix 1 . 1.2 Objectives \u00b6 It is known that manual interpretation work is time-consuming and expensive. However, in a feasibility study , the machine learning technique showed great potential capacity to help speed up the interpretation, especially with deep learning algorithms. According to the study, 50% of the estimated interpretation workload could be saved. Therefore, FSO is currently carrying out a project to assess the relevance of learning and mastering the use of artificial intelligence (AI) technologies to automate (even partially) the interpretation of aerial images for change detection and classification. The project is called Area Statistics Deep Learning (ADELE). FSO had already developed tools for change detection and multi-class classification using the image data. However, the current workflow does not exploit the spatial and temporal dependencies between different points in the surveys. The aim of this project is therefore to evaluate the potential of spatial-temporal neighbors in predicting whether or not points in the land statistics will change class. The methodolgy will be focused on change detection, by finding as many unchanged tiles as possible (automatized capacity) and miss as few changed tiles as possible. The detailed objectives of this project are to: explore the internal transformation patterns of tile classification from a data analytics perspective build a prototype that performs change detection for tiles in the next survey help the domain experts to integrate the prototype within the OFS workflow 1.3 Input data \u00b6 The raw data delivered by the domain experts is a table with 4'163'496 records containing the interpretation results of both land cover and land use from survey 1 to survey 4. An example record is shown in Table 1 and gives following information: RELI: 8-digit number composed by the EAST hectare number concatenated with the NORTH hectare number EAST: EAST coordinates (EPSG:2056) NORTH: NORTH coordinates (EPSG:2056) LUJ: Land Use label for survey J LCJ: Land Cover label for survey J training: value 0 or 1. A value of 1 means that the point can be included in the training or validation set Table 1: Example record of raw data delivered by the domain experts. RELI EAST NORTH LU4* LC4 LU3 LC3 LU2 LC2 LU1 LC1 training 74222228 2742200 1222800 242 21 242 21 242 21 242 21 0 75392541 2753900 1254100 301 41 301 41 301 41 301 41 0 73712628 2737100 1262800 223 46 223 46 223 46 223 46 0 * The shortened LC1/LU1 to LC4/LU4 will be used to simplify the notation of Land Cover/Use of survey 1 to survey 4 in the following documentation. For machine learning, training data quality has strong influence on model performance. With the training label, domain experts from FSO selected data points that are more reliable and representative. These 348'474 tiles and their neighbors composed the training and testing dataset for machine learning methodology. 2. Exploratory data analysis \u00b6 As suggested by domain experts, exploratory data analysis (EDA) is of significance to understand the data statistics and find the potential internal patterns of class transformation. The EDA is implemented from three different perspectives: distribution, quantity and probability. With the combination of the three, we can find that there do exist certain trends in the transformation of both land cover and land use classes. For the land cover, main findings are: distribution: most surface of Switzerland is covered by vegetation or forest, bare land and water areas take up a considerable portion as well, artificial areas take up a small portion of the land cover probability: transformation between some classes had never happened during the past four decades, all classes of land cover are most likely to keep their status rather than to change quantity: there are some clear patterns in quantitative changes Open Forest goes to Closed Forest Brush Meadows go to Shrubs Garden Plants go to Grass and Herb Vegetation Shrubs go to Closed Forest Cluster of Tree goes to Grass and Herb Vegetation For the land use, main findings are: distribution: agricultural and forest areas are the main land uses, unused area also stands out from others classes. probability: transformation between some classes had never happened during the past four decades; on the contrary, construction site, non-exploited urban areas and forest areas tend to change to other classes rather than keep unchanged quantity: the most transformations happened inside the superclasses of Arable and Grassland and of Forest not Agricultural . Readers particularly interested by the change detection methods can directly go to Section 3 ; otherwise, readers are welcomed to read the illustrated and detailed EDA given hereafter. 2.1 Distribution statistics \u00b6 Figure 2: Land cover distribution plot. Figure 3: Land use distribution plot. First, a glance at the overall distribution of land cover and land use is shown in Figure 2 and 3. The X-axis is the label of each class while the Y-axis is the number of tiles in the Log scale. The records of the four surveys are plotted in different colors chronologically. By observation, some trends can be found across the four surveys. Artificial areas only take up a small portion of the land cover (labels between 10 to 20), while most surface of Switzerland is covered by vegetation or forest (20 - 50). Bare land (50 - 60) and water areas (60 - 70) take up a considerable portion as well. For land use, it is obvious that the agricultural (200 - 250) and forest (300 - 310) areas are the main components while the unused area (421) also stands out from others. Most classes kept the same tendency during the past 40 years. There are 11 out of 27 land cover classes and 32 out of 46 land use classes which are continuously increasing or decreasing all the time. Especially for land use, compared with 10 classes rising with time, 22 classes dropping, which indicates that there is some transformation patterns that caused the leakage from some classes to those 10 classes. We will dive into these patterns in the following sections. 2.2 Quantity statistics \u00b6 The data are explored in a quantitative way by three means: visualization of transformations between 2 surveys visualization of sequential transformation over time identifying patterns and most occured transformations in different periods. 2.2.1 Transformation visualization \u00b6 Figure 4: Land cover transformation from 1985 to 2018. The analysis of the transformation patterns in quantitative perspective has been implemented in the interactive visualization in Figure 4. The nodes of the same color belong to a common superclass (principle domain). The size of the node represents the number of tiles for the class and the width of the link reflects the number of transformations in log scale. When hanging over your mouse on these elements, detailed information such as the class label code and the number of transformations will be shown. Clicking the legend will enable you to select the superclasses in which the transformation should be analyzed. Pre-processing had been done for the transformation data. To simplify the graph and stand out the major transformations, links with the number of transformations less than 0.1% of the total were removed from the graph. The filter avoids too many trivial links (580) connecting nearly all the nodes, leaving significant links (112) only. The process filtered 6.5% of the transformations in land cover and 11.5% in land use, which is acceptable considering it is a quantitative analysis focusing on the major transformation. 2.2.2 Sequential transformation visualization \u00b6 Figure 5: Land cover sequential transformation. In addition to the transformation between the 2 surveys, the sequential transformation over time had also been visualized. Here, a similar filter is implemented as well to simplify the result and only tiles that had changed during the 4 surveys are visualized. In Figure 5, the box of a class in column 1985 (survey 1) is composed of different colors while the box of a class in column 2018 (survey 4) only has one color. This is caused by the color of the link showing a kind of sequential transformation. The different colors of a class in the first column show the end status (classification) of the tiles in survey 4. There are some clear patterns we can find in the graph. For example, the red lines point out four diamond patterns in the graph. The diamond pattern with the edges in the same color illustrates the continuous trend that one class of tiles is transferred to the other class. In this figure, it is obvious that the Tree Clusters are degraded to the Grass and Herb , while Grass and Herb are transferred to the Consolidated Surfaces , showing the expansion of urban areas and the destruction to the natural environment. 2.2.3 Quantity statistics analysis \u00b6 Comparing the visualization of different periods, a constant pattern has been spotted in both land cover and land use. For example in land cover, the most transformation happened between the superclass of Tree Vegetation and Brush Vegetation . Also, a visible bi-direction transformation between Grass and Herb Vegetation and Clusters of Trees is witnessed. Greenhouses, wetlands and reedy marshes hardly have edges linked to them all over time, which illustrates that either they have a limited area or they hardly change. A similar property can also be captured in land use classes. The most transformation happened inside the superclass of Arable and Grassland and Forest not Agricultural . Also, a visible transformation from Unused to Forest is highlighted by others. Combining the findings above, it is clear that the transformation related to the Forest and Vegetation is the main part of the story. The forest shrinks or expands over time, changing to shrubs and getting back later. The Arable and Grassland keeps changing based on the need for agriculture or animal husbandry during the survey year. Different kinds of forests interconvert with each other which is a rational natural phenomenon. 2.3 Probability matrix \u00b6 The above analysis demonstrates the occurrence of transformation with quantitative statistics. However, the number of tiles for different classes is not a uniform distribution as shown in the distribution analysis. The largest class is thousands of times more than the smallest one. Sometimes, the quantity of a transformation is trivial compared with the majority, but it is caused by the small amount of tiles for the class. Even if the negligible class would not have a significant impact on the performance of change detection, it is of great importance to reveal the internal transformation pattern of the land statistics and support the multi-class classification task. Therefore, the probability analysis is designed as below: The probability analysis for land cover/use contains 3 parts: The probability matrix presents the probability of transformation from the source class (Y-axis) to the destination class (X-axis). The value of the probability is illustrated by the depth of the color in the log scale. The distribution of the probability that a class does not change, which is a more detailed visualization of the diagonal value of the probability matrix. The distribution of the maximum probability that a class changes to another certain class. This is a deeper inspection to look for a fixed transformation pattern that exists between two classes. The probability is calculated by the status change between the beginning survey and the end survey stated in the figure title. For example Figure 6 is calculated by the transformation between survey 1 and survey 4, without taking into account possible intermediate changes in survey 2 and 3. 2.3.1 Land cover analysis \u00b6 Figure 6: Land cover probability matrix from LC1 to LC4. The first information that the matrix provides is the blank blocks with zero probability of conversion. This discloses that transformation between some classes had never happened during the past four decades. Besides, all the diagonal blocks are with distinct color depth, illustrating that all classes of land cover are most likely to keep their status rather than to change. Another evident features of this matrix are the columns with destination classes Grass and Herb Vegetation (21) and Closed Forest (41) . There are a few classes such as Shrubs (31) , Fruit Tree (33) , Garden Plants (35) and Open Forest (44) which have a noticeable trend to convert to these two classes, which is partially consistent with the quantity analysis while revealing some new findings. Figure 7: Land cover transformation probability without change. When it comes to the refined visualization of the diagonal blocks, it is clear that half of the classes have more than an 80% probability of not transforming, while the minimum one only has about 35%. This is caused by the accumulation of the 4 surveys together which lasts 40 years. For a single decade, as the first 3 sub-graphs of Figure 23 in the Appendix A2.1 , the majority are over 90% probability and the minimum rises to 55%. Figure 8: Maximum transformation probability to a certain class when land cover changes. For those transformed tiles, the maximum probability of converting into another class is shown in Figure 8. This graph together with the matrix in Figure 6 can point out the internal transformation pattern. The top 5 possible transformations between the first survey and the forth survey are: 1. 38% Open Forest (44) --> Closed Forest (41) 2. 36% Brush Meadows (32) --> Shrubs (31) 3. 34% Garden Plants (35) --> Grass and Herb Vegetation (21) 4. 29% Shrubs (31) --> Closed Forest (41) 5. 26% Cluster of Tree (47) --> Grass and Herb Vegetation (21) In this case, the accumulation takes effect as well. For a single decade, the maximum probability decreases to 25%, but the general distribution of the probability is consistent between the four surveys according to Figure 24 in the Appendix A2.1 . 2.3.2 Land use analysis \u00b6 Figure 9: Land use probability matrix from LU1 to LU4. The land use probability matrix has different features compared with the land cover probability matrix. Although most diagonal blocks are with the deepest color depth, there are two areas highlighted by the red line presenting different statistics. The upper area is related to Construction sites (146) and Unexploited Urban areas (147) . These two classes tend to change to other classes rather than keep unchanged, which is reasonable since the construction time of buildings or infrastructures hardly exceeds 10 years. This is confirmed by the left side of the red-edged rectangular block, which has a deeper color depth. This illustrates that construction and unexploited areas ended in the Settlement and Urban Areas (superclass of 100 - 170). The lower red area account for the pattern concerning the Forest Areas (301 -304) . The Afforestation (302) , Lumbering areas (303) and Damaged Forest (304) would thrive and recover between the surveys, and finally become Forest (301) again. Figure 10: Land use transformation probability without change. Figure 10 further validates the assumptions. With most classes with a high probability of not changing, there are two deep valleys for classes 144 to 147 and 302 to 304, which are exactly the results of the stories mentioned above. Figure 11: Maximum transformation probability to a certain class when land use changes. Figure 11 tells the difference in the diversity of transformation destination. The construction and unexploited areas would turn into all kinds of urban areas, with more than 95% changed and the maximum probability to a fixed class is less than 35%. While the Afforestation , Lumbering areas and Damaged Forest returned to Forest with a probability of more than 90%, the transformation pattern within these four classes is fairly fixed. The distribution statistics, the quantity statistics and the probability matrices have shown to validate and complement each other during the exploratory analysis of the data. 3. Methods \u00b6 The developed method should be integrated in the OFS framework for change detection and classification of land use and land cover illustrated in Figure 12. The interesting parts for this project are highlighted in orange and will be presented in the following. Figure 12: Planned structure in FSO framework for final prediction. Figure 12 shows on the left the input data type in the OFS framework. The current project work on the LC/LU neighbors introduced in Section 1.3 . The main objective of the project - to detect change by means of these neighbors - is the temporal-spatial module in Figure 12. As proposed by the feasibility study, FSO had implement studies on change detection and multi-class classification on swisstopo aerial images time series to accelerate the efficiency of the interpretation work. The predicted LC and LU probabilities and information obtained by deep learning are defined as the image-level module. In a second stage of the project, the best model for combining the temporal-spatial and the image-level module outputs is explored to evaluate the gain in performance after integration of the spatial-temporal module in the OFS framework. This is the so-called integration module. The rest of the input data will not be part of the performance evaluation. 3.1 Temporal-spatial module \u00b6 Figure 13: Time and space structure of a tile and its neighbors. The input data to the temporal-spatial module will be the historical interpretation results of the tile to predict and its 8 neighbors. The first three surveys are used as inputs to train the models while the forth survey serves as the ground truth of the prediction. This utilizes both the time and space information in the dataset like depicted in Figure 13. During the preprocessing, the tiles with missing neighbors were discarded from the dataset to keep the data format consistent, which is insignificant (about 400 out of 348'868). The determination of change is influenced by both land cover and land use. When there is a disparity between the classifications in the fourth survey and the third one for a specific tile, it is identified as altered (positive) in change detection. The joint prediction of land cover and land use is based on the assumption that a correlation may exist between them. If the land cover of a tile undergoes a change, it is probable that its land use will also change. Moreover, the tile is assigned numerical labels. Nevertheless, the model does not desire a numerical association between classes, even when they belong to the same superclass and are closely related. To address this, we employ one-hot encoding, which transforms a single land cover column into 26 columns, with all values set to '0' except for one column marked as '1' to indicate the class. Despite increasing the model's complexity with almost two thousand input columns, this is a necessary trade-off to eliminate the risk of numerical misinterpretation. 3.2 Change detection \u00b6 Usually, spatial change detection is a remote sensing application performed on aerial or satellite images for multiclass change detection. However, in this project, a table of point records is used for binary classification into changed and not changed classes. Different traditional and new deep learning approach have been explored to perform this task. The motivations to use them are given hereinafter. An extended version of this section with detailed introduction to the machine learning models is available in Appendix A3 . Three traditional classification models, logistic regression (LR) , XGBoost and random forest (RF) , are tested. The three models represent the most popular approaches in the field - the linear, boosting, and bagging models. In this project, logistic regression is well adapted because it can explain the relationship between one dependent binary variable and one or more nominal, ordinal, interval or ratio-level independent variables. Concerning XGBoost, it has the advantage that weaker classifiers are introduced sequentially to focus on the areas where the current model is struggling, while misclassified observations would receive extra weight during training. Finally, in random forest, higher accuracy may be obtained and overfitting still avoided through the larger number of trees and the sampling process. Beyond these traditional popular approaches, another two deep learning algorithms are explored as well: fully connected network and convolutional recurrent neural network . Different from the traditional machine learning algorithms, deep learning does not require manual feature extraction or engineering. Deep neural networks capture the desired feature with back-propagation optimization process. Besides, these deep neural networks have some special design for temporal or spatial inputs, because it is assumed that the internal pattern of the dataset would match with the network structure and the model will have better performance. 3.2.1 Focal loss \u00b6 Deep neural networks need differentiable loss function for optimization training. For this project with imbalanced classification task, the local loss was chosen rather than the traditional (binary) cross entropy loss . \\[\\begin{align} \\\\ FL(p_t) = -{\\alpha}(1-p_t)^{\\gamma} \\ log(p_t) \\\\ \\end{align}\\] where \\(p_t\\) is the probability of predicting the correct class, \\(\\alpha\\) is a balance factor between positive and negative classes, and \\(\\gamma\\) is a modulation factor that controls how much weight is given to examples hard to classify. Focal loss is a type of loss function that aims to solve the problem of class imbalance in tasks like classification. Focal loss modifies the cross entropy loss by adding a factor that reduces the loss for easy examples and increases the loss for examples hard to classify. This way, focal loss focuses more on learning from misclassified examples. Compared with other loss functions such as cross entropy, binary cross entropy and dice loss, some advantages of focal loss are: it can reduce the dominance of well-classified examples and prevent them from overwhelming the gradient it can adaptively adjust the weight of each example based on its difficulty level it can improve the accuracy and recall of rare classes by adjusting \\(\\alpha\\) to give more weight to them \\(\\alpha\\) should be chosen based on the class frequency. A common choice is to set \\(\\alpha_t\\) is 1 minus the frequency of class t. This way, rare classes get more weight than frequent classes. \\(\\gamma\\) should be chosen based on how much you want to focus on hard samples. A larger gamma means more focus on hard samples, while a smaller gamma means less focus. The original paper suggested that a gamma equal to 2 is an effective value for most cases. 3.2.2 Fully connected network (FCN) \u00b6 Fully connected network (FCN) in deep learning is a type of neural network that consists of a series of fully connected layers. The major advantage of fully connected networks for this project is that they are structure agnostic. That is, no special assumptions need to be made about the input (for example, that the input consists of images or videos). A disadvantage of FCN is that it can be very computationally expensive and prone to overfitting due to the large number of parameters involved. Another disadvantage is that it does not exploit any spatial or temporal structure in the input data, which can lead to poor performance for some tasks. For implementation, the FCN employ 4 hidden layers (2048, 2048, 1024, 512 neurons respectively) besides the input and output layer. Relu activation function are chosen before the output layer while sigmoid function is applied at the end to scale the result to probability representation. 3.2.3 Convolutional recurrent neural network (ConvRNN) \u00b6 Convolutional recurrent neural network (ConvRNN) is a type of neural network that combines convolutional neural networks (CNNs) and recurrent neural networks (RNNs). CNNs are good at extracting spatial features from images, while RNNs are good at capturing temporal features from sequences. ConvRNNs can be used for tasks that require both spatial and temporal features as it is meant to be achieved in this project. Furthermore, the historical data of the land cover and land use can be translated to some synthetic images. The synthetic images use channels to represent sequence of surveys and the pixel value represents ground truth label. Thus, the spatial relationship of the neighbour tiles could be extracted from the data structure with the CNN. Figure 14: Convolutional Recurrent Neural Network Pipeline. In this project, we explored ConvRNN with structure shown in Figure 14. The sequence of surveys are treated as sequence of input \\(x^t\\) . With the recurrent structure and hidden states \\(h^t\\) to transmit information, the temporal information could be extracted. Different from the traditional RNN, the function \\(f\\) in hidden layers of the recurrent structure use convolutional operation instead of matrix computation and an additional CNN module is applied to the sequence output to detect the spatial information. 3.3 Performance metric \u00b6 Once the different machine learning models are trained for the respective module, comparison has to be made on the test set to evaluate their performance. This will be performed with the help of metrics. 3.3.1 Traditional metrics \u00b6 As discovered in the distribution analysis , the dataset is strongly unbalanced. Some class is thousands of others. This is of importance to change detection. Moreover, among 348'474 tiles in the dataset, only 58'737 (16.86%) tiles have changed. If the overall accuracy is chosen as the performance metric, the biased distribution would make the model tend to predict everything unchanged. In that case, the accuracy of the model can achieve 83.1%, which is a quite high value achieved without any effort. Therefore, avoiding the problem during the model training and selecting the suitable metric that can represent the desired performance are the initial steps. The constant model is defined as a model which predicts the third survey interpretation values as the prediction of the forth survey. In simple words, the constant model predicts that everything does not change. By this definition, we can calculate all kinds of metrics for other change detection models and compare them to the constant model metrics to indentify models with better performance. For change detection with the constant model, the performance is as below: Figure 15: Confusion matrix of constant distribution as prediction: TP=True Positive, TN=True Negative, FP=False Positive, FN=False Negative. Table 2: Metrics evaluation for constant model. Models Accuracy Balanced Accuracy Precision (PPV/NPV) Recall (TPR/TNR) F1-score Constant 0.831 0.500 Positive Negative 0.000 0.831 0.000 1.000 0.000 0.907 Definition of abbreviations: For positive case: Precision = TP / (TP + FP) Recall = TP / (TP + FN) (Positive predictive value, PPV) (True positive rate, TPR) For negative case: Precision = TN / (TN + FN) Recall = TN / (TN + FP) (Negative predictive value, NPV) (True negative rate, TNR) Detailed metrics definition can be found here The aim of the change detection is to predict the tiles of high confidence that do not change, so that the interpretation from the last survey can be used directly. However, the negative-case-related metrics above and the accuracy are not suitable for the present task because of the imbalance nature of the problem. Indeed, they indicate a high performance for the constant model, which we know is not depicting the reality, because of the large amount of unchanged tiles. After the test, the balanced accuracy which is the mean of the true positive rate and the true negative rate is considered a suitable metric for change detection. 3.3.2 Specific weighted metric for change detection \u00b6 In theory, true negative rate is equivalent to 1 minus false positive rate. Optimizing balanced accuracy typically results in minimizing the false positive rate. However, our primary objective is to reduce false negative instances (i.e., changed cases labeled as unchanged), while maximizing the true positive rate and true negative rate. False positives are of lesser concern, as they will be manually identified in subsequent steps. Consequently, balanced accuracy does not adequately reflect the project's primary objective. With the help of FSO interpretation team, an additionnal, specific metric targeting on the objective has been designed to measure the model performance. Reminding the Exploratory Data Analysis , some transformation patterns have been found and applied in this metric as well. Figure 16: Workflow with multiple input to define a weighted metric. As depicted in Figure 16, the FSO interpretation team designed two filters to derive a custom metric. The first filter combines inputs from all the possible modules (in this case, the image-level and temporal-spatial modules). The input modules give the probability of change detection or multi-class classification prediction with confidence. As prediction from modules might be different, the first filter will set the final prediction of a tile as positive if any input module gives a positive prediction. Here the threshold to define positive is a significant hyperparameter to finetune. The Weights Matrix defined by the human experts is the core of the entire metric. Based on professional experience and observation of EDA, the experts assigned different weights to all possible transformations. These weights demonstrate the importance of the transformation to the overall statistics. Besides, part of the labels is defined as Small Classes , which means that these classes are negligible or we do not consider them in this study. The second filter removes all the transformations related to the small classes and apply the weights matrix to all the remained tiles. Finally, the weighted metric is calculated as below: \\[\\begin{align} Automatized \\ Tiles &= {\\#Predicted \\ Negatives} \\\\ \\\\ Automatized \\ Capacity &= {{\\#Automatized \\ Tiles} \\over {\\#Negatives \\ (ground \\ truth)}} \\\\ \\\\ Missed \\ Weighted \\ Changed \\ Ratio &= {{\\sum \\{Missed \\ Change \\times Weight\\}} \\over {\\sum \\{All \\ Change \\times Weight\\}}} \\\\ \\\\ Weighted \\ Metric &= Automatized \\ Capacity \\times (0.1 - Missed \\ Weighted \\ Changed \\ Ratio) \\ / \\ 0.1 \\end{align}\\] From now on, we will still calculate metrics like balanced accuracy and recall for reference and analysis; however, the Weighted Metric is the decisive metric for model selection. 3.4 Training and testing plan \u00b6 Introduced in Section 1.3 , the 348'474 tiles with temporal-spatial information are selected for training. The 80%-20% split is applied to the selected tiles to create the train set and the test set respectively. Adam optimizer and multi-step learning rate scheduler are deployed for better convergence. For the temporal-spatial module, metrics for ablation study on the descriptors and descriptor importance are first computed. The descriptor importance is taken from XGBoost simulations. The ablation study is performed with the logistic regression and consists of training the model with: 8 neighbors and time activated, \"baseline\" 4 neighbors (northern, western, southern, eastern neighbors) no spatial-neighbors, \"space deactivate\" no temporal-neighbors, \"time deactivate\" Then, the baseline configuration is used to trained the traditional algorithms and the deep learning ones. Metrics are compared and the best performing models are kept for the integration module. Finally, the performance of several configurations are compared for the integration module. direct outputs of the image-level module direct outputs of the best performing temporal-spatial module outputs of the best performing temporal-spatial module, followed by RF training for the integration module. outputs of the best performing temporal-spatial module, followed by FCN training for the integration module. The extra information gain from the temporal-spatial module will be studied by comparison with image-level performance only. The image-level data contain multi-class classification prediction and its confidence. We can calculate the change probability according to the probability of each class. Therefore, the weighted metric can also be applied at the image-level only. Then, the RF and FCN are tested for the integration module which combines various types of information sources. 4. Experiments \u00b6 The Experiments section covers the results obtained when performing the planned simulations for the temporal-spatial module and the integration module. 4.1 Temporal-spatial module \u00b6 4.1.1 Feature engineering (time and space deactivation) \u00b6 In the temporal-spatial module, the studied models take advantages of both the space (the neighbors) and the time (different surveys) information as introduced in Section 3.1 . Ablation study is performed here to acknowledge the feature importance and which information really matters in the model. Table 3: Model metrics for ablation plan. Logistic Regression Best threshold Accuracy Balanced Accuracy Precision (PPV/NPV) Recall (TPR/TNR) F1-score Time deactivate 0.515 0.704 0.718 Positive Negative 0.330 0.930 0.740 0.696 0.457 0.796 Space deactivate 0.505 0.684 0.711 Positive Negative 0.316 0.930 0.752 0.670 0.445 0.779 4 neighbors 0.525 0.707 0.718 Positive Negative 0.332 0.929 0.734 0.701 0.458 0.799 Baseline* 0.525 0.711 0.720 Positive Negative 0.337 0.928 0.734 0.706 0.462 0.802 *Baseline: 8 neighbors with time and space activated Table 3 reveals the performance change when time or space information is totally or partially (4-neighbors instead of 8-neighbors) deactivated. While time deactivation and less-neighbors hardly have an influence on the balanced accuracy (only 0.2% decrease), the one for space deactivation decreased by about 1%. The result demonstrates that space information is more vital to the algorithm than time information, even though both have a minor impact. Figure 17: Feature importance analysis comparasion of 4 (left) and 8 (right) neighbors. Figure 18: Feature importance analysis comparasion of time (left) and space (right) deactivation. Figure 17 and 18 give the feature importance analysis from the XGBoost model. The sum of feature importance from variables all related to the tile itself and its neighbors are plotted in the charts. The 4-neighbor and 8-neighbor have similar capacities but the importance of neighbors for the latter is much more than for the former. This is caused by the number of variables. With more neighbors, the number of variables related to the neighbor increases and the sum of the feature importance grows as well. The feature importance illustrates the weight assigned to the input variables. From Figure 17, it is obvious that the variable related to the tile itself from past surveys is the most critical. Furthermore, the more recent, the more important. The neighbor on the east and west (neighbors 3 and 4) are more significant than others and even more than the land use of the tile in the first survey. In conclusion, the feature importance is not evenly distributed. However, the ablation study shows that the model with all the features as input achieved the best performance. 4.1.2 Baseline models with probability or tree models \u00b6 Utilizing the time and space information from the neighbors, three baseline methods with probability or tree model are fine-tuned. The logistic regression outperforms the other two, achieving 72.0% balanced accuracy. As result, more than 41'000 tiles are correctly predicted as unchanged while only about 3'000 changed tiles are missed as they are the false negatives. Detailed metrics of each method are listed in Table 4. Table 4: Performance metrics for traditional machine learning simulation of spatial-temporal model. Models Accuracy Balanced Accuracy Precision (PPV/NPV) Recall (TPR/TNR) F1-score Logistic Regression 0.711 0.720 Positive Negative 0.337 0.928 0.734 0.706 0.462 0.802 Random Forest 0.847 0.715 Positive Negative 0.775 0.849 0.134 0.992 0.229 0.915 XGBoost 0.837 0.715 Positive Negative 0.533 0.869 0.297 0.947 0.381 0.906 Constant 0.830 0.500 Positive Negative 0.000 0.830 0.000 1.000 0.000 0.907 21: Metric changes with different threshold for logistic regression. Besides the optimal performance with balanced accuracy, logistic regression can manually adjust its ability by changing the decision threshold as its output is the probability to change instead of prediction only. For example, we can trade off between the true positive rate and the negative predictive value. As shown in Figure 19, if we decrease the threshold probability, the precision of the negative case (NPV) will increase while the true negative rate goes down. This means more tiles need manual checks; however, fewer changed tiles are missed. Considering both the performance and the characteristics, Logistic Regression is selected as the baseline model. 4.1.3 Neural networks: FCN and ConvRNN \u00b6 FCN and ConvRNN work differently: FCN does not have special structure designed for temporal-spatial data while ConvRNN has specific designation for time and space information respectively. To study these two extreme situations, we explored their performance and compared with the logistic regression which is the best of the baseline models. Table 5: Performance metrics for deep machine learning simulation of spatial-temporal model Models Weighted Metric Raw Metric Balanced Accuracy Recall Missed Changes Missed Changes Ratio Missed Weighted Changes Missed Weighted Changes Ratio Automatized Points Automatized Capacity LR (Macro)* 0.237 0.197 0.655 0.954 349 0.046 18995 0.035 14516 0.364 LR (BA)* 0.249 0.207 0.656 0.957 326 0.043 17028 0.031 14478 0.363 FCN 0.259 0.21 0.656 0.958 322 0.042 15563 0.029 14490 0.363 ConvRNN 0.176 0.133 0.606 0.949 388 0.051 19026 0.035 10838 0.272 Constant -10.717 -10.72 0.500 0.000 7607 1.000 542455 1.00 47491 1.191 *Macro: the model is trained with Macro F1-score ; BA: the model is trained with Balanced Accuracy. As a result of its implementation (see Section 3.2.2 ), FCN outperforms all the models with a value of 0.259 for the weighted metric, slightly above the logistic regression with 0.249. ConvRNN does not perform well even if we have increased the size of hidden states to 1024. Following deliberation, we posit that the absence of one-hot encoding during the generation of synthetic images may be the cause, given that an increased number of channels could substantially explodes computational expenses. Since the ground truth label is directly applied to pixel values, the model may attempt to discern numerical relationships among distinct pixel values that, in reality, do not exist. This warrants further investigation in subsequent phases of our research. 4.2 Integration module \u00b6 Table 5 compares the performance of FCN or image-level only to several configurations for the integration module. Table 5: Performance metrics for the integration model in combination with a spatial-temporal model. Model Weighted Metric Raw Metric Balanced Accuracy Recall Missed Changes Missed Changes Ratio Missed Weighted Changes Missed Weighted Changes Ratio Automatized Points Automatized Capacity FCN 0.259 0.210 0.656 0.958 322 0.042 15563 0.029 14490 0.363 image-level 0.374 0.305 0.737 0.958 323 0.042 15735 0.029 20895 0.524 LR + RF 0.434 0.372 0.752 0.969 241 0.031 10810 0.020 21567 0.541 FCN + RF 0.438 0.373 0.757 0.968 250 0.032 11277 0.021 22010 0.552 FCN + FCN 0.438 0.376 0.750 0.970 229 0.030 9902 0.018 21312 0.534 LR + FCN 0.423 0.354 0.745 0.967 255 0.033 10993 0.020 21074 0.528 The study demonstrates that the image-level contains more information related to change detection compared with temporal-spatial neighbors ( FCN row in the Table 5). However, performance improvement from the temporal-spatial module when combined with image-level data, achieving 0.438 in weighted metric in the end ( FCN+RF and FCN+FCN ). Regarding the composition of different models for the two modules, FCN is proved to be the best one for the temporal-spatial module, while RF and FCN have similar performance in the integration module. The choice of integration module could be influenced by the data format of other potential modules. This will be further studied by the FSO team. 5. Conclusion and outlook \u00b6 This project studied the potential of historical and spatial neighbor data in change detection task for the fifth interpretation process of the areal statistic of FSO. For the evaluation of this specific project, a weighted metric was defined by the FSO team. The temporal-spatial information was proved not to be as powerful as image-level information which directly detects change within visual data. However, an efficient prototype was built with 6% performance improvement in weighted metric combining the temporal-spatial module and the image-level module. It is validated that integration of modules with different source information can help to enhance the final capacity of the entire workflow. The next research step of the project would be to modify the current implementation of ConvRNN. If the numerical relationship is removed from the synthetic image data, ConvRNN should have similar performance as FCN theoretically. Also, CNN is worth trying to validate whether the temporal pattern matters in this dataset. Besides, by changing the size of the synthetic images, we can figure out how does the number of neighbour tiles impact the model performance. Appendix \u00b6 A1. Classes of land cover and land use \u00b6 Figure 20: Land Cover classification labels. Figure 21: Land Use classification labels. A2. Probability analysis of different periods \u00b6 A2.1 Land cover \u00b6 Figure 22: Land cover probability matrix. Figure 23: Land cover transformation probability without change. Figure 24: Maximum transformation probability to a certain class when land cover changes. A2.2 Land use \u00b6 Figure 25: Land use probability matrix. Figure 26: Land use transformation probability without change. Figure 27: Maximum transformation probability to a certain class when land use changes. A3 Alternative version of Section 3.2 \u00b6 A3.1 Logistic regression \u00b6 Logistic regression is a kind of Generalized Linear Model . It is the appropriate regression analysis to conduct when the dependent variable is dichotomous (binary). Like all regression analyses, logistic regression is a predictive analysis in this project. Logistic regression is used to describe data and to explain the relationship between one dependent binary variable and one or more nominal, ordinal, interval or ratio-level independent variables. A3.2 XGBoost & random forest \u00b6 Figure 28: Comparison of boosting and bagging models. XGBoost and Random Forest both originate from the tree model, while one is the sequential variant and the other is the parallel variant. Extreme Gradient Boosting (XGBoost) is a distributed, scalable gradient-boosted decision tree (GBDT) machine learning algorithm. Gradient boosting is a flexible method used for regression, multi-class classification, and other tasks since it is compatible with all kinds of loss functions. It recasts boosting as a numerical optimization problem with the goal of reducing the loss function of the model by adding weak classifiers while employing gradient descent. Later, a first-order iterative approach, gradient descent, is used to find the local optimal of its differentiable function. Weaker classifiers are introduced sequentially to focus on the areas where the current model is struggling while misclassified observations would receive extra weight during training. Random Forest is a bagging technique that contains a number of decision trees generated from the dataset. Instead of relying solely on one decision tree, it takes the average of a number of trees to improve the predictive accuracy. For each tree, the input feature is a different sampled subset from all the features, making the model more robust and avoiding overfitting. Then, these trees are trained with a bootstrapping-sampled subset of the dataset respectively. Finally, the random forest takes the prediction from each tree and based on the majority votes makes the final decision. Higher accuracy is obtained and overfitting is avoided through the larger number of trees and the sampling process. A3.3 Focal loss \u00b6 The next two methods are Deep Neural Networks which need differentiable loss function for optimization training. Here we first tell the difference between the loss function and evaluation metric. The choice of loss function and evaluation metric depends on the task and data. The loss function should be chosen based on whether it is suitable for the model architecture and output type, while the evaluation metric should be relevant for the problem domain and application objectives. The loss function and the evaluation metric are two different concepts in deep learning. The loss function is used to optimize the model parameters during training, while the evaluation metric is used to measure the performance of the model on a test set. The loss function and the evaluation metric may not be the same. For example, Here we use focal loss to train a classification model, but use balanced accuracy or specific defined metric to evaluate its performance. The reason for this is that some evaluation metrics may not be differentiable or easy to optimize, or they may not match with the objective of the model. For this project with imbalanced classification task, we think the Focal Loss is a better choice than the traditional (binary) Cross Entropy Loss. \\[\\begin{align} \\\\ FL(p_t) = -{\\alpha}(1-p_t)^{\\gamma} \\ log(p_t) \\\\ \\end{align}\\] where p_t is the probability of predicting the correct class, \\(\\alpha\\) is a balance factor between positive and negative classes, and \\(\\gamma\\) is a modulation factor that controls how much weight is given to examples hard to classify. Focal loss is a type of loss function that aims to solve the problem of class imbalance in tasks like classification. Focal loss modifies the cross entropy loss by adding a factor that reduces the loss for easy examples and increases the loss for examples hard to classify. This way, focal loss focuses more on learning from misclassified examples. Compared with other loss functions such as cross entropy, binary cross entropy and dice loss, some advantages of focal loss are: It can reduce the dominance of well-classified examples and prevent them from overwhelming the gradient. It can adaptively adjust the weight of each example based on its difficulty level. It can improve the accuracy and recall of rare classes by adjusting \\(\\alpha\\) to give more weight to them. \\(\\alpha\\) should be chosen based on the class frequency. A common choice is to set \\(\\alpha_t\\) = 1 - frequency of class t. This way, rare classes get more weight than frequent classes. \\(\\gamma\\) should be chosen based on how much you want to focus on hard samples. A larger gamma means more focus on hard samples, while a smaller gamma means less focus. The original paper suggested gamma = 2 as an effective value for most cases. A3.4 Fully connected network (FCN) \u00b6 Figure 29: Network structure of FCN. The fully connected network (FCN) in deep learning is a type of neural network that consists of a series of fully connected layers. A fully connected layer is a function from \\(\\mathbb{R}_m\\) to \\(\\mathbb{R}_n\\) that maps each input dimension to each output dimension. The FCN can learn complex patterns and features from data using backpropagation algorithm. The major advantage of fully connected networks is that they are \u201cstructure agnostic.\u201d That is, no special assumptions need to be made about the input (for example, that the input consists of images or videos). Fully connected networks are used for thousands of applications, such as image recognition, natural language processing, and recommender systems. A disadvantage of FCN is that it can be very computationally expensive and prone to overfitting due to the large number of parameters involved. Another disadvantage is that it does not exploit any spatial or temporal structure in the input data, which can lead to poor performance for some tasks. A possible alternative to fully connected network is convolutional neural network (CNN), which uses convolutional layers that apply filters to local regions of the input data, reducing the number of parameters and capturing spatial features. A3.5 Convolutional neural network (CNN) \u00b6 CNN stands for convolutional neural network, which is a type of deep learning neural network designed for processing structured arrays of data such as images. CNNs are very good at detecting patterns in the input data, such as lines, shapes, colors, or even faces and objects. CNNs use a special technique called convolution, which is a mathematical operation that applies a filter (also called a kernel) to each part of the input data and produces an output called a feature map. Convolution helps to extract features from the input data and reduce its dimensionality. CNNs usually have multiple layers of convolution, followed by other types of layers such as pooling (which reduces the size of the feature maps), activation (which adds non-linearity to the network), dropout (which prevents overfitting), and fully connected (which performs classification or regression tasks). CNNs can be trained using backpropagation and gradient descent algorithms. CNNs are widely used in computer vision and have become the state of the art for many visual applications such as image classification, object detection, face recognition, semantic segmentation, etc. They have also been applied to other domains such as natural language processing for text analysis. Figure 30: Workflow of Convolutional Neural Network. In this project, the historical data of the land cover and land use can be translated to some synthetic images. The synthetic images use channels to represent sequence of surveys and the pixel value represents ground truth label. Thus, the spatial relationship of the neighbour tiles could be extracted from the data structure with the CNN. A3.6 Convolutional recurrent neural network (ConvRNN) \u00b6 A convolutional recurrent neural network (ConvRNN) is a type of neural network that combines convolutional neural networks (CNNs) and recurrent neural networks (RNNs). CNNs are good at extracting spatial features from images, while RNNs are good at capturing temporal features from sequences. ConvRNNs can be used for tasks that require both spatial and temporal features, such as image captioning and speech recognition. A ConvRNN consists of two main parts: a CNN part and an RNN part. The CNN part takes an input image or signal and applies convolutional filters to extract features. The RNN part takes these features as a sequence and processes them with recurrent units that have memory. The output of the RNN part can be a single vector or a sequence of vectors, depending on the task. A ConvRNN can learn both spatial and temporal patterns from data that have both dimensions, such as audio signals or video frames. For example, a ConvRNN can detect multiple sound events from an audio signal by extracting frequency features with CNNs and capturing temporal dependencies with RNNs. Figure 31: Convolutional Recurrent Neural Network Pipeline. In this project, we explored ConvRNN with structure shown in Figure 31. The sequence of surveys are treated as sequence of input \\(x^t\\) . With the recurrent structure and hidden states \\(h^t\\) to transmit information, the temporal information could be extracted. Different from the traditional Recurrent Neural Network, the function \\(f\\) in hidden layers of the recurrent structure use Convolutional operation instead of matrix computation and an additional CNN module is applied to the sequence output to detect the spatial information.","title":"Using spatio-temporal neighbor data information to detect changes in land use and land cover"},{"location":"PROJ-LANDSTATS/#using-spatio-temporal-neighbor-data-information-to-detect-changes-in-land-use-and-land-cover","text":"Shanci Li (Uzufly) - Alessandro Cerioni (Canton of Geneva) - Clotilde Marmy (ExoLabs) - Roxane Pott (swisstopo) Proposed by the Swiss Federal Statistical Office - PROJ-LANDSTATS September 2022 to March 2023 - Published on April 2023 All scripts are available on GitHub . Abstract : From 2020 on, the Swiss Federal Statistical Office started to update the land use/cover statistics over Switzerland for the fifth time. To help and lessen the heavy workload of the interpretation process, partially or fully automated approaches are being considered. The goal of this project was to evaluate the role of spatio-temporal neighbors in predicting class changes between two periods for each survey sample point. The methodolgy focused on change detection, by finding as many unchanged tiles as possible and miss as few changed tiles as possible. Logistic regression was used to assess the contribution of spatial and temporal neighbors to the change detection. While time deactivation and less-neighbors have a 0.2% decrease on the balanced accuracy, the space deactivation causes 1% decrease. Furthermore, XGBoost, random forest (RF), fully convolutional network (FCN) and recurrent convolutional neural network (RCNN) performance are compared by the means of a custom metric, established with the help of the interpretation team. For the spatial-temporal module, FCN outperforms all the models with a value of 0.259 for the custom metric, whereas the logistic regression indicates a custom metrics of 0.249. Then, FCN and RF are tested to combine the best performing model with the model trained by OFS on image data only. When using temporal-spatial neighors and image data as inputs, the final integration module achieves 0.438 in custom metric, against 0.374 when only the the image data is used. It was conclude that temporal-spatial neighbors showed that they could light the process of tile interpretation.","title":"Using spatio-temporal neighbor data information to detect changes in land use and land cover"},{"location":"PROJ-LANDSTATS/#1-introduction","text":"The introduction presents the background and the objectives of the projects, but also introduces the input data and its specific features.","title":"1. Introduction"},{"location":"PROJ-LANDSTATS/#11-background","text":"Since 1979, the Swiss Federal Statistical Office (FSO) provides detailed and accurate information on the state and evolution of the land use and the land cover in Switzerland. It is a crucial tool for long-term spatial observation. With these statistics, it is possible to determine whether and to what extent changes in land cover and land use are consistent with the goals of Swiss spatial development policies ( FSO ). Figure 1: Visualization of the land cover and land use classification. Every few years, the FSO carries out a survey on aerial or satellite images all over Switzerland. A grid with sample points spaced 100 meters apart overlays the images, providing 4.1 million sample points on which the statistics are based. The classification of the hectare tile is assigned on the center dot, as shown in Figure 1. Currently, a time series of four surveys is accessible, based on aerial images captured in the following years: 1979\u20131985 (1st survey, 1985) 1992\u20131997 (2nd survey, 1997) 2004\u20132009 (3rd survey, 2009) 2013\u20132018 (4th survey, 2018) The first two surveys of the land statistics in 1979 and 1992 were made by visual interpretation of aerial analogue photos using stereoscopes. Since the 2004 survey, the methodology was deeply renewed, in particular through the use of digital aerial photographs, which are observed stereoscopically on workstations using specific photogrammetry software . A new nomenclature (2004 NOAS04) has also been introduced in 2004 which systematically distinguishes 46 land use categories and 27 land cover categories. A numerical label from this catalogue is assigned to each point by a team of trained interpreters. The 1979 and 1992 surveys have been revised according to the nomenclature NOAS04, so that all readings (1979, 1992, 2004, 2013) are comparable. On this page you will find the geodata of the Land Use Statistics at the hectare level since 1979, as well as documentation on the data and the methodology used to produce these data. Detailed information on basic categories and principal domains can be found in Appendix 1 .","title":"1.1 Background"},{"location":"PROJ-LANDSTATS/#12-objectives","text":"It is known that manual interpretation work is time-consuming and expensive. However, in a feasibility study , the machine learning technique showed great potential capacity to help speed up the interpretation, especially with deep learning algorithms. According to the study, 50% of the estimated interpretation workload could be saved. Therefore, FSO is currently carrying out a project to assess the relevance of learning and mastering the use of artificial intelligence (AI) technologies to automate (even partially) the interpretation of aerial images for change detection and classification. The project is called Area Statistics Deep Learning (ADELE). FSO had already developed tools for change detection and multi-class classification using the image data. However, the current workflow does not exploit the spatial and temporal dependencies between different points in the surveys. The aim of this project is therefore to evaluate the potential of spatial-temporal neighbors in predicting whether or not points in the land statistics will change class. The methodolgy will be focused on change detection, by finding as many unchanged tiles as possible (automatized capacity) and miss as few changed tiles as possible. The detailed objectives of this project are to: explore the internal transformation patterns of tile classification from a data analytics perspective build a prototype that performs change detection for tiles in the next survey help the domain experts to integrate the prototype within the OFS workflow","title":"1.2 Objectives"},{"location":"PROJ-LANDSTATS/#13-input-data","text":"The raw data delivered by the domain experts is a table with 4'163'496 records containing the interpretation results of both land cover and land use from survey 1 to survey 4. An example record is shown in Table 1 and gives following information: RELI: 8-digit number composed by the EAST hectare number concatenated with the NORTH hectare number EAST: EAST coordinates (EPSG:2056) NORTH: NORTH coordinates (EPSG:2056) LUJ: Land Use label for survey J LCJ: Land Cover label for survey J training: value 0 or 1. A value of 1 means that the point can be included in the training or validation set Table 1: Example record of raw data delivered by the domain experts. RELI EAST NORTH LU4* LC4 LU3 LC3 LU2 LC2 LU1 LC1 training 74222228 2742200 1222800 242 21 242 21 242 21 242 21 0 75392541 2753900 1254100 301 41 301 41 301 41 301 41 0 73712628 2737100 1262800 223 46 223 46 223 46 223 46 0 * The shortened LC1/LU1 to LC4/LU4 will be used to simplify the notation of Land Cover/Use of survey 1 to survey 4 in the following documentation. For machine learning, training data quality has strong influence on model performance. With the training label, domain experts from FSO selected data points that are more reliable and representative. These 348'474 tiles and their neighbors composed the training and testing dataset for machine learning methodology.","title":"1.3 Input data"},{"location":"PROJ-LANDSTATS/#2-exploratory-data-analysis","text":"As suggested by domain experts, exploratory data analysis (EDA) is of significance to understand the data statistics and find the potential internal patterns of class transformation. The EDA is implemented from three different perspectives: distribution, quantity and probability. With the combination of the three, we can find that there do exist certain trends in the transformation of both land cover and land use classes. For the land cover, main findings are: distribution: most surface of Switzerland is covered by vegetation or forest, bare land and water areas take up a considerable portion as well, artificial areas take up a small portion of the land cover probability: transformation between some classes had never happened during the past four decades, all classes of land cover are most likely to keep their status rather than to change quantity: there are some clear patterns in quantitative changes Open Forest goes to Closed Forest Brush Meadows go to Shrubs Garden Plants go to Grass and Herb Vegetation Shrubs go to Closed Forest Cluster of Tree goes to Grass and Herb Vegetation For the land use, main findings are: distribution: agricultural and forest areas are the main land uses, unused area also stands out from others classes. probability: transformation between some classes had never happened during the past four decades; on the contrary, construction site, non-exploited urban areas and forest areas tend to change to other classes rather than keep unchanged quantity: the most transformations happened inside the superclasses of Arable and Grassland and of Forest not Agricultural . Readers particularly interested by the change detection methods can directly go to Section 3 ; otherwise, readers are welcomed to read the illustrated and detailed EDA given hereafter.","title":"2. Exploratory data analysis"},{"location":"PROJ-LANDSTATS/#21-distribution-statistics","text":"Figure 2: Land cover distribution plot. Figure 3: Land use distribution plot. First, a glance at the overall distribution of land cover and land use is shown in Figure 2 and 3. The X-axis is the label of each class while the Y-axis is the number of tiles in the Log scale. The records of the four surveys are plotted in different colors chronologically. By observation, some trends can be found across the four surveys. Artificial areas only take up a small portion of the land cover (labels between 10 to 20), while most surface of Switzerland is covered by vegetation or forest (20 - 50). Bare land (50 - 60) and water areas (60 - 70) take up a considerable portion as well. For land use, it is obvious that the agricultural (200 - 250) and forest (300 - 310) areas are the main components while the unused area (421) also stands out from others. Most classes kept the same tendency during the past 40 years. There are 11 out of 27 land cover classes and 32 out of 46 land use classes which are continuously increasing or decreasing all the time. Especially for land use, compared with 10 classes rising with time, 22 classes dropping, which indicates that there is some transformation patterns that caused the leakage from some classes to those 10 classes. We will dive into these patterns in the following sections.","title":"2.1 Distribution statistics"},{"location":"PROJ-LANDSTATS/#22-quantity-statistics","text":"The data are explored in a quantitative way by three means: visualization of transformations between 2 surveys visualization of sequential transformation over time identifying patterns and most occured transformations in different periods.","title":"2.2 Quantity statistics"},{"location":"PROJ-LANDSTATS/#23-probability-matrix","text":"The above analysis demonstrates the occurrence of transformation with quantitative statistics. However, the number of tiles for different classes is not a uniform distribution as shown in the distribution analysis. The largest class is thousands of times more than the smallest one. Sometimes, the quantity of a transformation is trivial compared with the majority, but it is caused by the small amount of tiles for the class. Even if the negligible class would not have a significant impact on the performance of change detection, it is of great importance to reveal the internal transformation pattern of the land statistics and support the multi-class classification task. Therefore, the probability analysis is designed as below: The probability analysis for land cover/use contains 3 parts: The probability matrix presents the probability of transformation from the source class (Y-axis) to the destination class (X-axis). The value of the probability is illustrated by the depth of the color in the log scale. The distribution of the probability that a class does not change, which is a more detailed visualization of the diagonal value of the probability matrix. The distribution of the maximum probability that a class changes to another certain class. This is a deeper inspection to look for a fixed transformation pattern that exists between two classes. The probability is calculated by the status change between the beginning survey and the end survey stated in the figure title. For example Figure 6 is calculated by the transformation between survey 1 and survey 4, without taking into account possible intermediate changes in survey 2 and 3.","title":"2.3 Probability matrix"},{"location":"PROJ-LANDSTATS/#3-methods","text":"The developed method should be integrated in the OFS framework for change detection and classification of land use and land cover illustrated in Figure 12. The interesting parts for this project are highlighted in orange and will be presented in the following. Figure 12: Planned structure in FSO framework for final prediction. Figure 12 shows on the left the input data type in the OFS framework. The current project work on the LC/LU neighbors introduced in Section 1.3 . The main objective of the project - to detect change by means of these neighbors - is the temporal-spatial module in Figure 12. As proposed by the feasibility study, FSO had implement studies on change detection and multi-class classification on swisstopo aerial images time series to accelerate the efficiency of the interpretation work. The predicted LC and LU probabilities and information obtained by deep learning are defined as the image-level module. In a second stage of the project, the best model for combining the temporal-spatial and the image-level module outputs is explored to evaluate the gain in performance after integration of the spatial-temporal module in the OFS framework. This is the so-called integration module. The rest of the input data will not be part of the performance evaluation.","title":"3. Methods"},{"location":"PROJ-LANDSTATS/#31-temporal-spatial-module","text":"Figure 13: Time and space structure of a tile and its neighbors. The input data to the temporal-spatial module will be the historical interpretation results of the tile to predict and its 8 neighbors. The first three surveys are used as inputs to train the models while the forth survey serves as the ground truth of the prediction. This utilizes both the time and space information in the dataset like depicted in Figure 13. During the preprocessing, the tiles with missing neighbors were discarded from the dataset to keep the data format consistent, which is insignificant (about 400 out of 348'868). The determination of change is influenced by both land cover and land use. When there is a disparity between the classifications in the fourth survey and the third one for a specific tile, it is identified as altered (positive) in change detection. The joint prediction of land cover and land use is based on the assumption that a correlation may exist between them. If the land cover of a tile undergoes a change, it is probable that its land use will also change. Moreover, the tile is assigned numerical labels. Nevertheless, the model does not desire a numerical association between classes, even when they belong to the same superclass and are closely related. To address this, we employ one-hot encoding, which transforms a single land cover column into 26 columns, with all values set to '0' except for one column marked as '1' to indicate the class. Despite increasing the model's complexity with almost two thousand input columns, this is a necessary trade-off to eliminate the risk of numerical misinterpretation.","title":"3.1 Temporal-spatial module"},{"location":"PROJ-LANDSTATS/#32-change-detection","text":"Usually, spatial change detection is a remote sensing application performed on aerial or satellite images for multiclass change detection. However, in this project, a table of point records is used for binary classification into changed and not changed classes. Different traditional and new deep learning approach have been explored to perform this task. The motivations to use them are given hereinafter. An extended version of this section with detailed introduction to the machine learning models is available in Appendix A3 . Three traditional classification models, logistic regression (LR) , XGBoost and random forest (RF) , are tested. The three models represent the most popular approaches in the field - the linear, boosting, and bagging models. In this project, logistic regression is well adapted because it can explain the relationship between one dependent binary variable and one or more nominal, ordinal, interval or ratio-level independent variables. Concerning XGBoost, it has the advantage that weaker classifiers are introduced sequentially to focus on the areas where the current model is struggling, while misclassified observations would receive extra weight during training. Finally, in random forest, higher accuracy may be obtained and overfitting still avoided through the larger number of trees and the sampling process. Beyond these traditional popular approaches, another two deep learning algorithms are explored as well: fully connected network and convolutional recurrent neural network . Different from the traditional machine learning algorithms, deep learning does not require manual feature extraction or engineering. Deep neural networks capture the desired feature with back-propagation optimization process. Besides, these deep neural networks have some special design for temporal or spatial inputs, because it is assumed that the internal pattern of the dataset would match with the network structure and the model will have better performance.","title":"3.2 Change detection"},{"location":"PROJ-LANDSTATS/#33-performance-metric","text":"Once the different machine learning models are trained for the respective module, comparison has to be made on the test set to evaluate their performance. This will be performed with the help of metrics.","title":"3.3 Performance metric"},{"location":"PROJ-LANDSTATS/#34-training-and-testing-plan","text":"Introduced in Section 1.3 , the 348'474 tiles with temporal-spatial information are selected for training. The 80%-20% split is applied to the selected tiles to create the train set and the test set respectively. Adam optimizer and multi-step learning rate scheduler are deployed for better convergence. For the temporal-spatial module, metrics for ablation study on the descriptors and descriptor importance are first computed. The descriptor importance is taken from XGBoost simulations. The ablation study is performed with the logistic regression and consists of training the model with: 8 neighbors and time activated, \"baseline\" 4 neighbors (northern, western, southern, eastern neighbors) no spatial-neighbors, \"space deactivate\" no temporal-neighbors, \"time deactivate\" Then, the baseline configuration is used to trained the traditional algorithms and the deep learning ones. Metrics are compared and the best performing models are kept for the integration module. Finally, the performance of several configurations are compared for the integration module. direct outputs of the image-level module direct outputs of the best performing temporal-spatial module outputs of the best performing temporal-spatial module, followed by RF training for the integration module. outputs of the best performing temporal-spatial module, followed by FCN training for the integration module. The extra information gain from the temporal-spatial module will be studied by comparison with image-level performance only. The image-level data contain multi-class classification prediction and its confidence. We can calculate the change probability according to the probability of each class. Therefore, the weighted metric can also be applied at the image-level only. Then, the RF and FCN are tested for the integration module which combines various types of information sources.","title":"3.4 Training and testing plan"},{"location":"PROJ-LANDSTATS/#4-experiments","text":"The Experiments section covers the results obtained when performing the planned simulations for the temporal-spatial module and the integration module.","title":"4. Experiments"},{"location":"PROJ-LANDSTATS/#41-temporal-spatial-module","text":"","title":"4.1 Temporal-spatial module"},{"location":"PROJ-LANDSTATS/#42-integration-module","text":"Table 5 compares the performance of FCN or image-level only to several configurations for the integration module. Table 5: Performance metrics for the integration model in combination with a spatial-temporal model. Model Weighted Metric Raw Metric Balanced Accuracy Recall Missed Changes Missed Changes Ratio Missed Weighted Changes Missed Weighted Changes Ratio Automatized Points Automatized Capacity FCN 0.259 0.210 0.656 0.958 322 0.042 15563 0.029 14490 0.363 image-level 0.374 0.305 0.737 0.958 323 0.042 15735 0.029 20895 0.524 LR + RF 0.434 0.372 0.752 0.969 241 0.031 10810 0.020 21567 0.541 FCN + RF 0.438 0.373 0.757 0.968 250 0.032 11277 0.021 22010 0.552 FCN + FCN 0.438 0.376 0.750 0.970 229 0.030 9902 0.018 21312 0.534 LR + FCN 0.423 0.354 0.745 0.967 255 0.033 10993 0.020 21074 0.528 The study demonstrates that the image-level contains more information related to change detection compared with temporal-spatial neighbors ( FCN row in the Table 5). However, performance improvement from the temporal-spatial module when combined with image-level data, achieving 0.438 in weighted metric in the end ( FCN+RF and FCN+FCN ). Regarding the composition of different models for the two modules, FCN is proved to be the best one for the temporal-spatial module, while RF and FCN have similar performance in the integration module. The choice of integration module could be influenced by the data format of other potential modules. This will be further studied by the FSO team.","title":"4.2 Integration module"},{"location":"PROJ-LANDSTATS/#5-conclusion-and-outlook","text":"This project studied the potential of historical and spatial neighbor data in change detection task for the fifth interpretation process of the areal statistic of FSO. For the evaluation of this specific project, a weighted metric was defined by the FSO team. The temporal-spatial information was proved not to be as powerful as image-level information which directly detects change within visual data. However, an efficient prototype was built with 6% performance improvement in weighted metric combining the temporal-spatial module and the image-level module. It is validated that integration of modules with different source information can help to enhance the final capacity of the entire workflow. The next research step of the project would be to modify the current implementation of ConvRNN. If the numerical relationship is removed from the synthetic image data, ConvRNN should have similar performance as FCN theoretically. Also, CNN is worth trying to validate whether the temporal pattern matters in this dataset. Besides, by changing the size of the synthetic images, we can figure out how does the number of neighbour tiles impact the model performance.","title":"5. Conclusion and outlook"},{"location":"PROJ-LANDSTATS/#appendix","text":"","title":"Appendix"},{"location":"PROJ-LANDSTATS/#a1-classes-of-land-cover-and-land-use","text":"Figure 20: Land Cover classification labels. Figure 21: Land Use classification labels.","title":"A1. Classes of land cover and land use"},{"location":"PROJ-LANDSTATS/#a2-probability-analysis-of-different-periods","text":"","title":"A2. Probability analysis of different periods"},{"location":"PROJ-LANDSTATS/#a3-alternative-version-of-section-32","text":"","title":"A3 Alternative version of Section 3.2"},{"location":"PROJ-REGBL/","text":"COMPLETION OF THE FEDERAL REGISTER OF BUILDINGS AND DWELLINGS \u00b6 Nils Hamel (UNIGE) - Huriel Reichel (swisstopo) Proposed by the Federal Statistical Office - TASK-REGBL December 2020 to February 2021 - Published on March 2, 2021 Abstract : The Swiss Federal Statistical Office is in charge of the national Register of Buildings and Dwellings (RBD) which keeps track of every existing building in Switzerland. Currently, the register is being completed with buildings in addition to regular dwellings to offer a reliable and official source of information. The completion of the register introduced issues due to missing information and their difficulty to be collected. The construction year of the buildings is one missing information for a large amount of register entries. The Statistical Office mandated the STDL to investigate on the possibility to use the Swiss National Maps to extract this missing information using an automated process. A research was conducted in this direction with the development of a proof-of-concept and a reliable methodology to assess the obtained results. Introduction \u00b6 The Swiss Federal Statistical Office [1] is responsible of maintaining the Federal Register of Buildings and Dwellings ( RBD ) in which a collection of information about buildings and homes are stored. Currently, a completion operation of the register is being conducted to include to it any type of construction on the Swiss territory. Such completion operation comes with many challenges including the gathering of the information related to the construction being currently integrated to the register. In this set of information are the construction years of the buildings. Such information is important to efficiently characterise each Swiss building and to allow the Statistical Office to provide a reliable register to all actors relying on it. The construction year of buildings turns out to be complicated to gather, as adding new buildings to the register already impose an important workload even for the simple information. In addition, in many cases, the construction year of the building is missing or can not be easily collected to update the register. The Statistical Office mandated the STDL to perform researches on the possibility to automatically gather the construction year by analysing the swisstopo [3] National Maps [4]. Indeed, the Swiss national maps are known for their excellency, their availability on any geographical area, and for their temporal cover. The national maps are made with a rigorous and well controlled methodology from the 1950s and therefore they can be used as a reliable source of information to determine the buildings' construction year. The STDL was then responsible for performing the researches and developing a proof-of-concept to provide all the information needed to the Statistical Office for them to take the right decision on considering national maps as a reliable way of assigning a construction year for the buildings lacking information. Research Project Specifications \u00b6 Extracting the construction date out of the national maps is a real challenge, as the national maps are a heavy dataset, they are not easy to be considered as a whole. In addition, the Statistical Office needs the demonstration that it can be done in a reliable way and within a reasonable amount of time to limit the cost of such process. They are also subjected to strict tolerances on the efficiency of the construction years extraction through an automated process. The goal of at least 80 % of overall success was then provided as a constraint to the STDL . As a result, the research specifications for the STDL were: Gathering and understanding the data related to the problem Developing a proof-of-concept demonstrating the possibility to extract the construction years from the national maps Assessing the results with a reliable metric to allow demonstrating the quality and reliability of the obtained construction years Research Data & Selected Areas \u00b6 In this research project, two datasets were considered: the building register itself and the national maps. As both datasets are heavy and complex, considering them entirely for such a research project would have been too complicated and unnecessary. It was then decided to focus on four areas selected for their representativeness of Swiss landscape: Basel (BS): Urban area Bern (BE): Urban and peri-urban area Biasca (TI): Rural and mountainous Caslano (TI): Peri-urban and rural The following images give a geographical illustration of the selected areas through their most recent map: Illustration of the selected areas: Basel (2015), Bern (2010), Biasca (2012) and Caslano (2009) Data: swisstopo Basel was selected as it was one example of an area on which the building register was already well filled in terms of construction years. The four regions are 6km by 6km squared areas which allows up to twenty thousand buildings to be considered on a single one. Federal Register of Buildings and Dwellings \u00b6 The register of buildings is a formal database composed with entries, each of them representing a specific building. Each entry comes with a set of information related to the building they describe. In this project, a sub-set of these informations was considered: Federal identifier of the building (EGID) The position of the building, expressed in the EPGS:2056 (GKODE, GKODN) The building construction year, when available (GBAUJ) The surface of the building, when available, expressed in square metres (GAREA) In addition, tests were conducted by considering the position of the entries of each building. In turned out rapidly that they were not useful in this research project as they were missing on a large fraction on the register and only providing a redundant information according to the position of the buildings. The following table gives a summary of the availability of the construction year in the register according to the selected areas: Area Buildings Available years Missing fraction Basel 17\u2019088 16\u2019584 3% Bern 21\u2019251 4\u2019499 79% Biasca 3\u2019774 1\u2019346 64% Caslano 5\u2019252 2\u2019452 53% One can see that the amount of missing construction year can be large depending on the considered area. National Maps \u00b6 On the side of the national maps, the dataset is more complex. In addition to the large number of available maps, variations of them can also be considered. Indeed, maps are made for different purposes and come with variations in their symbology to emphasise elements on which they focus. Moreover, for modern years, sets of vector data can also be considered in parallel to maps. Vector data are interesting as they allow to directly access the desired information, that is the footprint of the building without any processing required. The drawback of the vector data is their temporal coverage which is limited to the last ten to twenty years. The following images give an illustration of the aspect of the available maps and vector datasets considering the example of the Bern area. Starting with the traditional maps : Available map variations: KOMB, KGRS and KREL - Data: swisstopo and the more specific and vector ones: Available map variations: SITU, GEB and DKM25-GEB (vector) - Data: swisstopo In addition to the number of available variations and data types, they all come with their specific temporal coverage. In the case of this research project, we tried to go back in time as much as possible, simplifying the choice for the older maps. The question still remains for more modern times. As we are mostly interesting in buildings, the availability of already extracted building layers, that can be either raster or vector data, is highly interesting. But the problem of data selection is complex in our case. Indeed, no matter the choice, on the older times, the only available maps have to be considered. In addition to building footprint access, the question of the continuity of the data as to be considered with care. More than building footprints, we are interested in the continuity of these footprints, in order to be able to safely assume the cycle of life of the tracker buildings. This consideration led us to discover variation in methodologies depending on the considered set of data. Indeed, buildings are not shaped in the same way on traditional maps than they are in layer focusing on them. It follows that variation of the symbology, so do the shape of the building, appears between traditional maps and building layers (raster and vector). These variations can lead to shocks going from a map to the one preceding it in time. This can break the continuity of the building footprints along time, making them much more difficult to track safely. This is the reason we choose to focus on the KOMB variation of the maps. These maps are very stable and covers the largest temporal ranges. The methodology was kept very similar along the years, making this dataset much more reliable to work with when the time dimension is considered. Only considering the KOMB variation of the maps also allows to ensure that all source data is treated the same in the processing pipeline, easing the assessment of the results. In addition, the KOMB maps are dense in information and come with colorimetry of their symbology. This opens the possibility to more easily extract the information we need in this project, that are the building footprints. One exception was made concerning the KOMB maps: in their very latest version, the methodology changed, causing the symbology to be different with the older KOMB maps. In their latest version, texts are much more numerous and tend to cover a large amount of the buildings, making them invisible . For this reason, their latest version was dropped, slightly reducing the temporal coverage on the 2015-2020 period. Selecting the KOMB variation allowed us to obtain the following temporal coverage for the four selected areas: Area Oldest map Latest map Mean separation Basel 1955 2015 5.5 Years Bern 1954 2010 5.6 Years Biasca 1970 2012 6.0 Years Caslano 1953 2009 6.2 Years One can see that a large portion of the 20th century can be covered using the maps with a very good resolution of around five to six years between the maps. Research Approaches \u00b6 In this research project, the main focus was put on the national maps to extract the construction year of buildings as the maps are sources on which we can rely and assess the results. The only drawback of the maps is their limited temporal coverage, as they only start to be available in the 1950s . This is the reason why another experimental approach was also added to address the cases of building being built before the 1950s . This secondary approach focused on a statistical methodology to verify to which extent it could be possible to assign a construction date even in the case no maps are available. National Maps : This main approach focuses on the national maps from which the construction year of a building is deduced from a temporal analysis of the maps. Each building is tracked until it disappears or change its shape on a given map allowing to deduce that the construction of the building was made in the gap separating the map and its successor one. Statistical Analysis : This method is based on the principle of spatial dependence and furthermore on concentric zones of urban development. This is technically an interpolator which deduces construction years based first on different searching radii for difference variances, second by splitting the data in quantiles and, finally, by a gaussian mixture model unsupervised learning technique to gather the final predictions. The statistical analysis allows then to consider buildings that were detected on all maps, meaning their construction is older than the oldest available map, to assign them an estimation of their construction year, knowing they had to be older than the oldest map. Research Approach: National Maps \u00b6 In order to detect construction year of buildings, we need to be able to track them down on the maps across the temporal coverage. The RBD is providing the reference list of the building, each coming with a federal identifier ( EGID ) and a position. This position can then be used to track down the building on maps for its appearance or morphological change. As the maps are already selected, as the research areas, this research approach can be summarised in the following way: Translating maps into binary images containing only building Extracting the RBD buildings related to the analysed area Detection procedure of the buildings on the maps Detection of the morphological variation of the buildings Assessment of the obtained results The four first points are related to the development of the proof-of-concept. The last one concern a very sensitive and complicated question relative to the considered problem: how to analyse and assess the obtained results. This question was to most difficult question in this research, and finding a clear and reliable answer is mandatory before to develop anything. For this reason, it is considered in the first place. Reliability of the Data \u00b6 Assessing the results is essentially having a strong reference allowing to compare both in order to obtain a reliable characterisation of the success rate in the deduction of the construction years. This question leads to the discovery that this problem is much more complex that and can appear in the first place. Indeed, we were warned by the Statistical Office that the RBD , considering the construction years it already gives, can be unreliable on some of its portions. This can be explained by the fact that collecting such information is a long and complicated administrative process. As an example, the following image gives an illustration of a building tracked on each of the available selected maps: Temporal track of a selected building On this illustration, one can see two things: the RBD announce a construction year in 1985 ; the maps are clearly indicating something different, locating its construction year between 1963 and 1969 . So both datasets are contradicting each other. In order to solve the contradiction, we manually searched for historical aerial images. The following images illustrate what was found: Aerial view of the building situation: 1963, 1967 and 1987 - Data: swisstopo One can clearly see that the maps seem to give the correct answer concerning the construction date of this specific building, the RBD being contradicted by two other sources. This illustrates the fact that the RBD can not be directly considered as a reliable reference to assess the results. The same question applies for the maps. Even if it is believed that they are highly reliable, one has to be careful with such consideration. Indeed, looking at the following example: Temporal track of a selected building In this case, the RBD gives 1986 as the construction date of the pointed building. The maps are giving a construction year between 1994 and 2000 . Again, the two datasets are contradicting each other. The same procedure was conducted to solve the contradiction: Aerial view of the building situation: 1970, 1986 and 1988 - Data: swisstopo Looking at the aerial images, it seems that the tracked building was there in 1988 . One can see that the map in 1994 continue to represent the four old buildings instead on the new one. It's only in 2000 that the maps are correctly representing the new building. This shows that despite maps are a reliable source of geo-information, they can also be subjected to delay in their symbology. The maps also come with the problem of the consistency of the building footprint symbology. Looking at the following example: Temporal track of a selected building one can see that the maps seem to indicate a strange evolution of the situation: a first building appears in 1987 and it is destroyed and replaced by a larger one in 1993 . Then, this new large building seems to have been destroyed right after its construction to be replaced by a new one in 1998 . Considering aerial images of the building situation: Aerial image view of the building situation: 1981, 1987 and 1993 - Data: swisstopo one can clearly see that a first building was constructed and completed by an extension between 1987 and 1993 . This shows an illustration where the symbology of the building footprints can be subjected to variation than can be de-synchronised regarding the true situation. Metric \u00b6 In such context, neither the RBD or the national maps can be formally considered as a reference. It follows that we are left without a solution to assess our results, and more problematically, without any metric able to guide the developments of the proof-of-concept in the right direction. To solve the situation, one hypothesis is made in this research project. Taking into account both the RBD and the national maps, one can observe that both are built using methodologies that are very different. On one hand, the RBD is built out of a complex administrative process, gathering the required information in a step by step process, going from communes to cantons , and finally to the Statistical Office . On the other hand, the national maps are built using regular aerial image campaigns conducted over the whole Switzerland. The process of establishing maps is quite old and can then be considered as well controlled and stable. Both datasets are then made with methodologies that can be considered as fully independent from each other. This led us to the formulation of our hypothesis: Hypothesis : As the RBD and national maps are the results of independent methodologies, an error in one dataset is very unlikely to compensate an error in the other. In other words, if the RBD and the national maps agree on the construction year of a building, this information can be considered as a reliable reference, as it would be very unlikely to have two errors leading to such agreement. One should remain careful with this hypothesis, despite it sounds reasonable. It would be very difficult to assess it as requiring to gather complex confirmation data that would have to be independent of the RBD , the national maps and the aerial images (as maps are based on them). This assumption is the only one made in this research project. Accepting this assumption leads us to the possibility to establish a formal reference that can be used as a metric to assess the results and to guide the development of the proof-of-concept. But such reference has to be made with care, as the problem remains complex. To illustrate this complexity, the following figure gives a set representation of our problem: Set representation of the RBD completion problem The two rectangles represent the set of buildings for a considered area. On the left, one can see the building set from the RBD point of view. The grey area shows the building without the information of their construction year. Its complementary set is split in two sub-sets that are the buildings having a construction year that is absolutely correct and absolutely incorrect (the limit between both is subject to a bit of interpretation, as the construction year is not a strong concept). If a reference can be extracted, it should be in the green sub-set. The problem is that we have no way of knowing which building are in which sub-set. So the national maps were considered to define another sub-set: the synchronous sub-set where both RBD and national maps agree. To build the metric, the RBD sub-set of buildings coming with the information of the construction year is randomly sub-sampled to extract a representative sub-set: the potentials . This sub-set of potentials is then manually analysed to separate the building on which both datasets agree and to reject the other. At the end of the process, the metric sub-set is obtained and should remain representative. On the right of the set representation is the view of the buildings set through the national maps. One can see that the same sub-set appears but it replaces the construction years by the representation of the building on the maps. The grey part is then representing the building that are not represented on the maps because of their size or because they can be hidden by the symbology for example. The difference is that the maps do not give access to the construction years directly, but they are read from the maps through our developed detector. The detector having a success rate, it cuts the whole set of sub-sets in half, which is exactly what we need for out metric. If the metric sub-set remains representative, the success rate of the detector evaluated on it should generalise to the whole represented buildings. This set representation demonstrates that the problem is very complex and has to be handled with care. Considering only the six most important sub-set and considering construction year are extracted by the detector from the maps, it means that up to 72 specific case can apply on each building randomly selected. To perform the manual selection, a random selection of potential buildings was made on the RBD set of buildings coming with a construction year. The following table summarises the selection and manual validation: Area Potentials Metric Basel 450 EGIDs 209 EGIDs Bern 450 EGIDs 180 EGIDs Biasca 336 EGIDs 209 EGIDs Caslano 450 EGIDs 272 EGIDs The previous table gives the result of the second manual validation. Indeed, two manual validation sessions were made, with several weeks in-between, to check the validation process and how it evolved with the increase of the view of the problem. Three main critics can then be addressed to the metric: the first one is that establishing validation criterion is not simple as the number of cases in which buildings can fall is very high. Understanding the problem takes time and requires to see a lot of these cases. It then follows that the second validation session was more stable and rigorous than the first one. The second critic that can be made on our metric is the selection bias. As the process is made by a human, it is affected by its way of applying the criterion and more specifically on by its severity on their application. Considering the whole potentials sub-set, one can conclude that a few buildings could be rejected and validated depending on the person doing the selection. The last critic concerns specific cases for which the asynchronous criterion to reject them is weak. Indeed, for some buildings, the situation is very unclear in the way the RBD and the maps give information that can not be understood. This is the case for example when the building is not represented on the map. This can be the position in the RBD or the lack of information on the maps that lead to such an unclear situation. These cases are then rejected, but without being fully sure of the asynchronous aspect regarding the maps and the RBD . Methodology \u00b6 With a reliable metric, results can be assessed and the development of the proof-of-concept can be properly guided. As mentioned above, the proof-of-concept can be split in four major steps that are the processing of the maps, the extraction of the RBD buildings, detection of the building on the maps and detection in morphological changes. National Maps Processing \u00b6 In order to perform the detection of building on the maps, a reliable methodology is required. Indeed, one could perform the detection directly on the source maps but this would lead to a complicated process. Indeed, maps are mostly the result of the digitisation of paper maps creating a large number of artefacts on the digital images. This would lead to an unreliable way of detecting building as a complicated decision process would have to be implemented each time a RBD position is checked on each map. A map processing step was then introduced in the first place allowing to translate the color digitised images into reliable binary images on which building detection can be made safely and easily. The goal of this process is then to create a binary version of each map with black pixels indicating the building presence. A method of extracting buildings on maps was then designed. Considering the following example of a map cropped according to a defined geographical area ( Basel ): Example of a considered map: Basel in 2005 and closer view - Data: swisstopo The first step of the map processing methodology is to correct and standardise the exposure of the digitised maps. Indeed, as maps mostly result of a digitisation process, they are subjected to exposure variation due to the digitisation process. A simple standardisation is then applied. The next step consists in black pixel extraction. Each pixel of the input map is tested to determine whether or not it can be considered as black using specific thresholds. As the building are drawn in black, extracting black pixels is a first way of separating the buildings from the rest of the symbology. The following result is obtained: Result of the black extraction process As one can see on the result of the black extraction process, the buildings are still highly connected to other symbological elements and to each others in some cases. Having the building footprints well separated and well defined is an important point for subsequent processes responsible of construction years deduction. To achieve it, two steps are added. The first one uses a variation of the Conway game of life [5] to implement a morphological operator able to disconnect pixel groups. The following image gives the results of this separation process along with the previous black extraction result on which it is based: Result of the morphological operator (right) compare to the previous black extraction (left) As the morphological operator provides the desired result, it also shrinks the footprint of the elements. It allows to eliminate a lot of structures that are not buildings, but it also reduces the footprint of the buildings themselves, which can increase the amount of work to perform by the subsequent processes to properly detect a building. To solve this issue and to obtain building footprints that are as close as possible to the original map, a controlled re-growing step is added. It uses a region threshold and the black extraction result to re-grow the buildings without going any further of their original definition. The following images give a view of the final result along with the original map: Final result of the building footprints extraction (right) compared to the original map As the Conway morphological operator is not able to get rid of all the non-building elements, such as large and bold texts, the re-growing final step also thickening them along with the building footprints. Nevertheless, the obtained binary image is able to keep most of the building footprint intact while eliminating most of the other element of the map as illustrated on the following image: Extracted building footprints, in pink, superimposed on the Bern map The obtained binary images are then used for both detection of building and detection of morphological changes as the building are easy to access and to analyse on such representation. Building Extraction from RBD \u00b6 In the case of limited geographical areas as in this research project, extracting the relevant buildings from the RBD was straightforward. Indeed, the RBD is a simple DSV database that is very easy to understand and to process. The four areas were packed into a single DSV file and the relevant building were selected through a very simple geographical filtering. Each area being defined by a simple geographical square, selecting the buildings was only a question of checking if their position was in the square or not. Building Detection Process \u00b6 Based on the computed binary images, each area can be temporally covered with maps on which building can be detected. Thanks to the processed maps, this detection is made easily, as it was reduced to detect black pixels in a small area around the position of the building provided in the RBD . For each building in the RBD , its detection on each temporal version of the map is made to create a presence table of the building. Such table is simply a Boolean value indicating whether a building was there or not according to the position provided in the RBD . The following images give an illustration of the building detection process on a given temporal version of a selected map: Detection overlay superimposed on its original map (left) and on its binary counterpart (right) One can see that for each building and for each temporal version of the map, the decision of a building presence can be made. At the end of this process, each building is associated to a list of presence at each year corresponding to an available map. Morphological Change Detection \u00b6 Detecting the presence of a building on each temporal version of the map is a first step but is not enough to determine whether or not it is the desired building. Indeed, a building can be replaced by another along the time dimension without creating a discontinuity in the presence timeline. This would lead to misinterpret the presence of building with another one, leading the construction year to be deduced too far in time. This can be illustrated by the following example: Example of building being replaced by another one without introducing a gap in the presence table In case the detection of the presence of the building is not enough to correctly deduce a construction year, a morphological criterion is added. Many different methodologies have been tried in this project, going from signature to various quantities deduce out of the footprint of the building. The most simple and most reliable way was to focus on the pixel count of the building footprint, which corresponds to its surface in geographical terms. A morphological change is considered as the surface of the building footprint changes up to a given threshold along the building presence timeline. In such a case, the presence timeline is broken at the position of the morphological change, interpreting it in the same way as a formal appearance of a building. Introducing such criteria allowed to significantly improve our results, especially in the case of urban centers. Indeed, in modern cities, large number of new buildings were built just after a previous building was being destroyed due to the lack of spaces left for new constructions. Results \u00b6 The developed proof-of-concept is applied on the four selected areas to deduce construction year for each building appearing in the RBD . With the defined metric, it is possible to assess the result in a reliable manner. Nevertheless, assessing the results with clear representations is not straightforward. In this research project, two representations were chosen: Histogram of the success rate : For this representation, the building of the metric are assigned to temporal bins of ten years in size and the success rate of the construction year is computed for each bins. Distance and pseudo-distance distribution : As the previous representation only gives access to a binary view of the results, a distance representation is added to understand to which extent mistakes are made on the deduction of a construction year. For buildings detected between two maps, the temporal middle is assumed as the guessed construction year, allowing to compute a formal distance with its reference. In case a building is detected before or beyond the map range, a pseudo-distance of zero is assigned in case the result is correct according to the reference. Otherwise, the deduced year (that is necessarily between two maps) is compared to its reference extremal map date to obtain an error pseudo-distance. In addition to the manually defined metric, the full RBD metric is also considered. As the construction years provided in the RBD have to be considered with care, as part of them are incorrect, comparing the results obtained the full RBD metric and the metric we manually defined opens the important question of the synchronisation between the maps and the RBD , viewed from the construction perspective. Results: Basel Area \u00b6 The following figures give the Basel area result using the histogram representation. The left plot uses the full RBD metric while the right one uses the manually validated one: Histogram of the success rate - Ten years bins One can see one obvious element that is the result provided by the full RBD metric (left) and the manually validated metric (right) are different. This is a clear sign that the RBD and the maps are de-synchronised on a large fraction of the building set of Basel . The other element that can be seen on the right plot is that the deduction of the construction year are more challenging where maps are available. Indeed on the temporal range covered by the maps (vertical white lines), the results drops from the overall results to 50-60 % on some of the histogram bins. The following figures show the distance and pseudo-distance distribution of the error made on the deduced construction year according to the chosen metric: Distance (red and blue) and pseudo-distance (red) of the error on the construction years The same differences as previously observed between the two metrics can also be seen here. Another important observation is that the distribution seems mostly symmetrical. This indicates that no clear deduction bias can be observed in the results provided by the proof-of-concept. Results: Bern Area \u00b6 The following figures give the histogram view of the results obtained on the Bern area: Histogram of the success rate - Ten years bins One can observe that the results are similar to the result of Basel whilst being a bit better. In addition, one can clearly see that the difference between the full RBD metric and the manually validated metric huge here. This is probably the sign that the RBD is mostly incorrect in the case of Bern . The following figures show the distance distributions for the case of Bern : Distance (red and blue) and pseudo-distance (red) of the error on the construction years Again, the distribution of the error on the deduced construction year is symmetrical in the case of Bern . Results: Biasca Area \u00b6 The following figures give the histogram view of the success rate for the case of Biasca : Histogram of the success rate - Ten years bins In this case, the results are much better according to the manually validated metric. This can be explained by the fact that Biasca is a rural/mountainous area in which growing of the urban areas are much simpler as buildings once built tend to remain unchanged, limiting the difficulty to deduce a reliable construction year. The following figures show the distance distribution for Biasca : Distance (red and blue) and pseudo-distance (red) of the error on the construction years This confirms the results seen on the histogram figure and shows that the results are very good on such areas. Results: Caslano Area \u00b6 Finally, the following figures show the histogram view of the success rate of the proof-of-concept on the case of Caslano : Histogram of the success rate - Ten years bins The same consideration applies as for the Biasca case. The results are very good as part of the Caslano area can be considered as rural or at least peri-urban. The results are a bit less good than in the Biasca case, drawing the picture that urban centres are more difficult to infer than rural areas. The following figures show the error distribution for Caslano : Distance (red and blue) and pseudo-distance (red) of the error on the construction years Results: Synthesis \u00b6 In order to synthesise the previous results, that were a bit dense due to the consideration of two representations and two metrics, the following summary is given: Basel : 78.0% of sucess rate and 80.4% of building correctly placed within \u00b15.5 years Bern : 84.4% of sucess rate and 85.0% of building correctly placed within \u00b15.6 years Biasca : 93.5% of sucess rate and 93.9% of building correctly placed within \u00b16.0 years Caslano : 90.8% of sucess rate and 91.2% of building correctly placed within \u00b16.2 years These results only consider the manually validated metric for all of the four areas. By weighting each area with their amount of buildings, one can deduce the following numbers: Switzerland : 83.9% of success rate and 84.7% of building correctly place within \u00b15.8 years These last numbers can be considered as a reasonable extrapolation of the proof-of-concept performance on the overall Switzerland. Conclusion \u00b6 As a main conclusion to the national maps approach, one can consider the results as good. It was possible to develop a proof-of-concept and to apply it on selected and representative areas of Switzerland. In this approach, it turns out that developing the proof-of-concept was the easy part. Indeed, finding a metric and demonstrating its representativeness and reliability was much more complicated. Indeed, as the two datasets can not be considered as fully reliable in the first place, a strategy had to be defined in order to be able to demonstrate that the chosen metric was able to assess our result in the way expected by the Statistical Office . In addition, the metric only required one additional hypothesis on top of the two datasets. This hypothesis, consisting in assuming that the synchronous sub-set was a quasi-sub-set of the absolutely correct construction years , can be assumed to be reasonable. Nevertheless it is important to emphasise that it was necessary to make it, leading us to remains critic and careful whilst reading the results given by our metric. The developed proof-of-concept was developed in C++ , leading to an efficient code able to be used for the whole processing of Switzerland without the necessity to deeply modify it. Research Approach: Statistical \u00b6 As the availability of the topographic/national maps does not reach the integrity of all building's year of construction in the registry, an add-on was developed to infer this information, whenever there was this need for extrapolation. Usually, the maps availability reaches the 1950s, whilst in some cities the minimum year of construction can be in the order of the 12th century, e.g. The core of this statistical model is based on the Concentric Zones Model (Park and Burgess, 1925)[6] extended to the idea of the growth of the city from the a centre (Central Business District - CBD) to all inner areas. The concept behind this statistical approach can be seen below using the example of a crop of Basel city: Illustration of the Burgess concentric zone model Although it is well known the limits of this model, which are strongly described in other famous urban models such as from Hoyt (1939)[7] and Harris and Ullman (1945)[8]. In general those critics refer to the simplicity of the model, which is considered and compensated for this application, especially by the fact that the main prediction target are older buildings that are assumed to follow the concentric zones pattern, differently than newer ones (Duncan et al., 1962)[9]. Commonly this is the pattern seen in many cities, hence older buildings were built in these circular patterns to some point in time when reconstructions and reforms are almost randomly placed in spatial and temporal terms. Moreover processes like gentrification are shown to be dispersed and quite recent (R\u00e9rat et al, 2010)[10]. In summary, a first predictor is built on the basis that data present a spatial dependence, as in many geostatistical models (Kanevski and Maignan, 2004[11]; Diggle and Ribeiro, 2007[12]; Montero and Mateu, 2015[13]). This way we are assuming that closer buildings are more related to distant buildings (Tobler, 1970[14]) in terms of year of construction and ergo the time dimension is being interpolated based on the principles of spatial models. We are here also demonstrating how those two dimensions interact. After that concentric zones are embedded through the use of quantiles, which values will be using in a probabilistic unsupervised learning technique. Finally, the predicted years are computed from the clusters generated. Metric \u00b6 Similar to the detection situation, generating a validation dataset was an especially challenging task. First of all, the dates in the RBD database could not be trusted in their integrity and the topographic maps used did not reach this time frame. In order to ascertain the construction year in the database, aerial images from swisstopo (Swiss Federal Office of Topography) were consulted and this way buildings were manually selected to compound a validation dataset. References extraction from aerial images manual analysis One of the problems related to this approach was the fact that a gap between the surveys necessary for the images exists. This way it is not able to state with precision the construction date. These gaps between surveys were approximately in the range of 5 years, although in Basel , for some areas, it reached 20 years. An example of this methodology to create a trustworthy validation set can be seen below. In the left-hand side one can see the year of the first image survey (up) and the year registered in the RBD (down) and in the right-hand side, one can see the year of the next image survey in the same temporal resolution. Methodology \u00b6 First of all, a prior searching radius is defined as half of the largest distance (between random variables). For every prediction location, the variance between all points in the prior searching radius will be used to create a posterior searching radius. This way, the higher the variance, the smaller the searching radius, as we tend to trust data less. This is mainly based on the principle of spatial dependence used in many geostatistical interpolators. The exception to this rule is for variances that are higher than 2 x the mean distance between points. In this case, the searching radius increases again in order to avoid clusters of very old houses that during tests caused underestimation. The figure below demonstrates the logic being the creation of searching radii. Searching radii computation process being d the distance between points, \u03bc the mean and s\u00b2 the variance of random variable values within the prior searching radius. It is important to mention that in case of very large number of missing data, if the searching radius does not find enough information, the posterior mean will be the same as the prior mean, possibly causing over/underestimation in those areas. This first procedure is used to fill the gaps in the entry database so clustering can be computed. The next step is then splitting the data in 10 quantiles, what could give the idea of concentric growth zones, inspired, in Burgess Model (1925)[7]. Every point in the database will then assume the value of its quantile. It is also possible to ignore this step and pass to clustering directly, what can be useful in two situations, if a more general purpose is intended or if the concentric zones pattern is not observed in the study area. As default, this step is used, which will be followed by an unsupervised learning technique. A gaussian mixture model, which does not only segments data into clusters, but indicates the probability of each point belonging to every cluster is then performed. The number of components computed is a linear function to the total number of points being used, including the ones that previously had gaps. The function to find the number of components is the following: being np the number of components/clusters, and nc the total number of points used. The number of clusters shall usually be very large compared to a standard clustering exercise. To avoid this, this value is being divided by ten, but the number of clusters will never be smaller than five. An example of clustering performed by the embedded gaussian mixture model can be seen below: Example of clustering process on the Basel area Hence the matrix of probabilities of every point belonging to each cluster (\u03bb - what can be considered a matrix of weights) is multiplied by the mean of each cluster ( 1 x nc matrix mc ), forming the A matrix: or in matrices: Finally, the predictions can then be made using the sum of each row in the A matrix. It is important to state that the same crops (study areas) were used for this test. Although Caslano was not used in this case, as it possesses too few houses with a construction date below the oldest map available. Using the metric above explained a hold out cross-validation was performed, this way a group of points was only used for validation and not for training. After that, the RMSE (Root Mean Squared Error) was calculated using the difference between the date in the RBD database and the predicted one. This RMSE was also extrapolated to the whole Switzerland, so one could have a notion of what the overall error could be, using the following equation (for the expected error): where E is the error and n the number of buildings in each region. In addition to the RMSE , the 95th percentile was computed for every study area and using all combined as well. Hence, one could discuss the spread and predictability of errors. Results \u00b6 The first case analysed was Basel , where the final RMSE was 9.78 years. The density plot below demonstrates the distribution of errors in Basel , considering the difference between the year of construction in the RBD database and the predicted one. Distribution of error on construction year extrapolation Among the evaluated cases, Basel presented a strong visible spatial dependence, and it was also the case which the largest estimated proportion of houses with construction years older than (1955) the oldest map ( 11336 or approximately 66 % of buildings). Based on the validation dataset only, there was an overall trend of underestimation and the 95th percentile reached was 20 years, showing a not so spread and flat distribution of errors. Bern was the second case evaluated, and it demonstrated to be an atypical case. This starts from the fact that a big portion of the dates seemed incongruent with reality, based on the aerial images observed and as seen in the previous detection approach. Not only that, but almost 80 % of the buildings in Bern had missing data to what refers to the year of construction. This is especially complicated as the statistical method here presented is in essence an interpolator (intYEARpolator). Basically, as in any inference problem, data that is known is used to fill unknown data, therefore a reasonable split among known and unknown inputs is expected, as well as a considerable confidence on data. In the other hand, an estimated number of 1079 (approximately 27 % of the buildings) buildings was probably older than the oldest map available (1954) in Bern crop. Therefore, in one way liability was lower in this case, but the number of prediction points was smaller too. The following figure displays the density of errors in Bern, where an RMSE of 20.64 years was computed. Distribution of error on construction year extrapolation There was an overall trend for overestimation, though there was still enough lack of spread in errors, especially if one considers the 95th percentile of 42 . Finally, the crop on Biasca was evaluated. The computed RMSE was of 13.13 years, which is closer to the Basel case and the 95th percentile was 17 years, this way presenting the least spread error distribution. In Biasca an estimated 1007 ( 32 %) buildings were found, which is not much more than the proportion in Bern, but Biasca older topographic map used was from 1970, making of it an especially interesting case. The density plot below demonstrates the concentrated error case of Biasca : Distribution of error on construction year extrapolation Once the RMSE was computed for the three regions, it was extrapolated to the whole Switzerland by making consideration the size of each dataset: Extrapolation of the error distribution on the whole Switzerland The expected extrapolated error calculated was 15.6 years and the 95th percentile was then 31 years. Conclusion \u00b6 This add-on allows extrapolating the predictions to beyond the range of the topographical maps. Its predictions are limited, but the accuracy reached can be considered reasonable, once there is a considerable lack of information in this prediction range. Nor the dates in the RBD , nor the topographic maps can be fully trusted, ergo 15.6 years of error for the older buildings is acceptable, especially by considering the relative lack of spread in errors distribution. If a suggestion for improvement were to be given, a method for smoothing the intYEARpolator predictions could be interesting. This would possibly shift the distribution of the error into closer to a gaussian with mean zero. The dangerous found when searching for such an approach is that the year of construction of buildings does not seem to present a smooth surface, despite the spatial dependence. Hence, if this were to be considered, a balance between smoothing and variability would need to found. We also demonstrated a completely different perspective on how the spatial and temporal dimensions can be joined as the random variable predicted through spatial methodology was actually time. Therefore a strong demonstration of the importance of time in spatially related models and approaches was also given. The code for the intYEARpolator was developed in Python and it runs smoothly even with this quite big proportion of data. The singular case it can be quite time-demanding is in the case of high proportion of prediction points (missing values). It should also be reproducible to the whole Switzerland with no need for modification. A conditional argument is the use of concentric zones, that can be excluded in case of a total different pattern of processing time. Reproduction Resources \u00b6 The source code of the proof-of-concept for national maps can be found here : National maps approach proof-of-concept (regbl-poc), STDL The README provides all the information needed to compile and use the proof-of-concept. The presented results and plots can be computed using the following tools suite : National maps approach results and plots (regbl-poc-analysis), STDL with again the README giving the instructions. The proof-of-concept source code for the statistical approach can be found here : Statistical approach proof-of-concept (regbl-poc-intyearpolator), STDL with its README giving the procedure to follow. The data needed to reproduce the national maps approach are not publicly available. For the national maps, a temporal series of the 1:25'000 maps of the same location are needed. They can be asked to swisstopp : GeoTIFF National Maps 1:25'000 rasters temporal sequence, swisstopo With the maps, you can follow the instruction for cutting and preparing them on the proof-of-concept README . The RBD data, used for both approaches, are not publicly available either. You can query them using the request form on the website of the Federal Statistical Office : DSV RBD data request form , Federal Statistical Office Both proof-of-concepts READMEs provide the required information to use these data. References \u00b6 [1] Federal Statistical Office [2] Federal Register of Buildings and Dwellings [3] Federal Office of Topography [4] National Maps (1:25'000) [5] Conway, J. (1970), The game of life. Scientific American, vol. 223, no 4, p. 4. [6] Park, R. E.; Burgess, E. W. (1925). \"The Growth of the City: An Introduction to a Research Project\". The City (PDF). University of Chicago Press. pp. 47\u201362. ISBN 9780226148199. [7] Hoyt, H. (1939), The structure and growth of residential neighborhoods in American cities (Washington, DC). [8] Harris, C. D., and Ullman, E. L. (1945), \u2018The Nature of Cities\u2019, Annals of the American Academy of Political and Social Science, 242/Nov.: 7\u201317. [9] Duncan, B., Sabagh, G., & Van Arsdol,, M. D. (1962). Patterns of City Growth. American Journal of Sociology, 67(4), 418\u2013429. doi:10.1086/223165 [10] R\u00e9rat, P., S\u00f6derstr\u00f6m, O., Piguet, E., & Besson, R. (2010). From urban wastelands to new\u2010build gentrification: The case of Swiss cities. Population, Space and Place, 16(5), 429-442. [11] Kanevski, M., & Maignan, M. (2004). Analysis and modelling of spatial environmental data (Vol. 6501). EPFL press. [12] Diggle, P. J. Ribeiro Jr., P. J. (2007). Model-based Geostatistics. Springer Series in Statistics. [13] Montero, J. M., & Mateu, J. (2015). Spatial and spatio-temporal geostatistical modeling and kriging (Vol. 998). John Wiley & Sons. [14] Tobler, W. R. (1970). A computer movie simulating urban growth in the Detroit region. Economic geography, 46(sup1), 234-240.","title":"COMPLETION OF THE FEDERAL REGISTER OF BUILDINGS AND DWELLINGS"},{"location":"PROJ-REGBL/#completion-of-the-federal-register-of-buildings-and-dwellings","text":"Nils Hamel (UNIGE) - Huriel Reichel (swisstopo) Proposed by the Federal Statistical Office - TASK-REGBL December 2020 to February 2021 - Published on March 2, 2021 Abstract : The Swiss Federal Statistical Office is in charge of the national Register of Buildings and Dwellings (RBD) which keeps track of every existing building in Switzerland. Currently, the register is being completed with buildings in addition to regular dwellings to offer a reliable and official source of information. The completion of the register introduced issues due to missing information and their difficulty to be collected. The construction year of the buildings is one missing information for a large amount of register entries. The Statistical Office mandated the STDL to investigate on the possibility to use the Swiss National Maps to extract this missing information using an automated process. A research was conducted in this direction with the development of a proof-of-concept and a reliable methodology to assess the obtained results.","title":"COMPLETION OF THE FEDERAL REGISTER OF BUILDINGS AND DWELLINGS"},{"location":"PROJ-REGBL/#introduction","text":"The Swiss Federal Statistical Office [1] is responsible of maintaining the Federal Register of Buildings and Dwellings ( RBD ) in which a collection of information about buildings and homes are stored. Currently, a completion operation of the register is being conducted to include to it any type of construction on the Swiss territory. Such completion operation comes with many challenges including the gathering of the information related to the construction being currently integrated to the register. In this set of information are the construction years of the buildings. Such information is important to efficiently characterise each Swiss building and to allow the Statistical Office to provide a reliable register to all actors relying on it. The construction year of buildings turns out to be complicated to gather, as adding new buildings to the register already impose an important workload even for the simple information. In addition, in many cases, the construction year of the building is missing or can not be easily collected to update the register. The Statistical Office mandated the STDL to perform researches on the possibility to automatically gather the construction year by analysing the swisstopo [3] National Maps [4]. Indeed, the Swiss national maps are known for their excellency, their availability on any geographical area, and for their temporal cover. The national maps are made with a rigorous and well controlled methodology from the 1950s and therefore they can be used as a reliable source of information to determine the buildings' construction year. The STDL was then responsible for performing the researches and developing a proof-of-concept to provide all the information needed to the Statistical Office for them to take the right decision on considering national maps as a reliable way of assigning a construction year for the buildings lacking information.","title":"Introduction"},{"location":"PROJ-REGBL/#research-project-specifications","text":"Extracting the construction date out of the national maps is a real challenge, as the national maps are a heavy dataset, they are not easy to be considered as a whole. In addition, the Statistical Office needs the demonstration that it can be done in a reliable way and within a reasonable amount of time to limit the cost of such process. They are also subjected to strict tolerances on the efficiency of the construction years extraction through an automated process. The goal of at least 80 % of overall success was then provided as a constraint to the STDL . As a result, the research specifications for the STDL were: Gathering and understanding the data related to the problem Developing a proof-of-concept demonstrating the possibility to extract the construction years from the national maps Assessing the results with a reliable metric to allow demonstrating the quality and reliability of the obtained construction years","title":"Research Project Specifications"},{"location":"PROJ-REGBL/#research-data-selected-areas","text":"In this research project, two datasets were considered: the building register itself and the national maps. As both datasets are heavy and complex, considering them entirely for such a research project would have been too complicated and unnecessary. It was then decided to focus on four areas selected for their representativeness of Swiss landscape: Basel (BS): Urban area Bern (BE): Urban and peri-urban area Biasca (TI): Rural and mountainous Caslano (TI): Peri-urban and rural The following images give a geographical illustration of the selected areas through their most recent map: Illustration of the selected areas: Basel (2015), Bern (2010), Biasca (2012) and Caslano (2009) Data: swisstopo Basel was selected as it was one example of an area on which the building register was already well filled in terms of construction years. The four regions are 6km by 6km squared areas which allows up to twenty thousand buildings to be considered on a single one.","title":"Research Data & Selected Areas"},{"location":"PROJ-REGBL/#federal-register-of-buildings-and-dwellings","text":"The register of buildings is a formal database composed with entries, each of them representing a specific building. Each entry comes with a set of information related to the building they describe. In this project, a sub-set of these informations was considered: Federal identifier of the building (EGID) The position of the building, expressed in the EPGS:2056 (GKODE, GKODN) The building construction year, when available (GBAUJ) The surface of the building, when available, expressed in square metres (GAREA) In addition, tests were conducted by considering the position of the entries of each building. In turned out rapidly that they were not useful in this research project as they were missing on a large fraction on the register and only providing a redundant information according to the position of the buildings. The following table gives a summary of the availability of the construction year in the register according to the selected areas: Area Buildings Available years Missing fraction Basel 17\u2019088 16\u2019584 3% Bern 21\u2019251 4\u2019499 79% Biasca 3\u2019774 1\u2019346 64% Caslano 5\u2019252 2\u2019452 53% One can see that the amount of missing construction year can be large depending on the considered area.","title":"Federal Register of Buildings and Dwellings"},{"location":"PROJ-REGBL/#national-maps","text":"On the side of the national maps, the dataset is more complex. In addition to the large number of available maps, variations of them can also be considered. Indeed, maps are made for different purposes and come with variations in their symbology to emphasise elements on which they focus. Moreover, for modern years, sets of vector data can also be considered in parallel to maps. Vector data are interesting as they allow to directly access the desired information, that is the footprint of the building without any processing required. The drawback of the vector data is their temporal coverage which is limited to the last ten to twenty years. The following images give an illustration of the aspect of the available maps and vector datasets considering the example of the Bern area. Starting with the traditional maps : Available map variations: KOMB, KGRS and KREL - Data: swisstopo and the more specific and vector ones: Available map variations: SITU, GEB and DKM25-GEB (vector) - Data: swisstopo In addition to the number of available variations and data types, they all come with their specific temporal coverage. In the case of this research project, we tried to go back in time as much as possible, simplifying the choice for the older maps. The question still remains for more modern times. As we are mostly interesting in buildings, the availability of already extracted building layers, that can be either raster or vector data, is highly interesting. But the problem of data selection is complex in our case. Indeed, no matter the choice, on the older times, the only available maps have to be considered. In addition to building footprint access, the question of the continuity of the data as to be considered with care. More than building footprints, we are interested in the continuity of these footprints, in order to be able to safely assume the cycle of life of the tracker buildings. This consideration led us to discover variation in methodologies depending on the considered set of data. Indeed, buildings are not shaped in the same way on traditional maps than they are in layer focusing on them. It follows that variation of the symbology, so do the shape of the building, appears between traditional maps and building layers (raster and vector). These variations can lead to shocks going from a map to the one preceding it in time. This can break the continuity of the building footprints along time, making them much more difficult to track safely. This is the reason we choose to focus on the KOMB variation of the maps. These maps are very stable and covers the largest temporal ranges. The methodology was kept very similar along the years, making this dataset much more reliable to work with when the time dimension is considered. Only considering the KOMB variation of the maps also allows to ensure that all source data is treated the same in the processing pipeline, easing the assessment of the results. In addition, the KOMB maps are dense in information and come with colorimetry of their symbology. This opens the possibility to more easily extract the information we need in this project, that are the building footprints. One exception was made concerning the KOMB maps: in their very latest version, the methodology changed, causing the symbology to be different with the older KOMB maps. In their latest version, texts are much more numerous and tend to cover a large amount of the buildings, making them invisible . For this reason, their latest version was dropped, slightly reducing the temporal coverage on the 2015-2020 period. Selecting the KOMB variation allowed us to obtain the following temporal coverage for the four selected areas: Area Oldest map Latest map Mean separation Basel 1955 2015 5.5 Years Bern 1954 2010 5.6 Years Biasca 1970 2012 6.0 Years Caslano 1953 2009 6.2 Years One can see that a large portion of the 20th century can be covered using the maps with a very good resolution of around five to six years between the maps.","title":"National Maps"},{"location":"PROJ-REGBL/#research-approaches","text":"In this research project, the main focus was put on the national maps to extract the construction year of buildings as the maps are sources on which we can rely and assess the results. The only drawback of the maps is their limited temporal coverage, as they only start to be available in the 1950s . This is the reason why another experimental approach was also added to address the cases of building being built before the 1950s . This secondary approach focused on a statistical methodology to verify to which extent it could be possible to assign a construction date even in the case no maps are available. National Maps : This main approach focuses on the national maps from which the construction year of a building is deduced from a temporal analysis of the maps. Each building is tracked until it disappears or change its shape on a given map allowing to deduce that the construction of the building was made in the gap separating the map and its successor one. Statistical Analysis : This method is based on the principle of spatial dependence and furthermore on concentric zones of urban development. This is technically an interpolator which deduces construction years based first on different searching radii for difference variances, second by splitting the data in quantiles and, finally, by a gaussian mixture model unsupervised learning technique to gather the final predictions. The statistical analysis allows then to consider buildings that were detected on all maps, meaning their construction is older than the oldest available map, to assign them an estimation of their construction year, knowing they had to be older than the oldest map.","title":"Research Approaches"},{"location":"PROJ-REGBL/#research-approach-national-maps","text":"In order to detect construction year of buildings, we need to be able to track them down on the maps across the temporal coverage. The RBD is providing the reference list of the building, each coming with a federal identifier ( EGID ) and a position. This position can then be used to track down the building on maps for its appearance or morphological change. As the maps are already selected, as the research areas, this research approach can be summarised in the following way: Translating maps into binary images containing only building Extracting the RBD buildings related to the analysed area Detection procedure of the buildings on the maps Detection of the morphological variation of the buildings Assessment of the obtained results The four first points are related to the development of the proof-of-concept. The last one concern a very sensitive and complicated question relative to the considered problem: how to analyse and assess the obtained results. This question was to most difficult question in this research, and finding a clear and reliable answer is mandatory before to develop anything. For this reason, it is considered in the first place.","title":"Research Approach: National Maps"},{"location":"PROJ-REGBL/#reliability-of-the-data","text":"Assessing the results is essentially having a strong reference allowing to compare both in order to obtain a reliable characterisation of the success rate in the deduction of the construction years. This question leads to the discovery that this problem is much more complex that and can appear in the first place. Indeed, we were warned by the Statistical Office that the RBD , considering the construction years it already gives, can be unreliable on some of its portions. This can be explained by the fact that collecting such information is a long and complicated administrative process. As an example, the following image gives an illustration of a building tracked on each of the available selected maps: Temporal track of a selected building On this illustration, one can see two things: the RBD announce a construction year in 1985 ; the maps are clearly indicating something different, locating its construction year between 1963 and 1969 . So both datasets are contradicting each other. In order to solve the contradiction, we manually searched for historical aerial images. The following images illustrate what was found: Aerial view of the building situation: 1963, 1967 and 1987 - Data: swisstopo One can clearly see that the maps seem to give the correct answer concerning the construction date of this specific building, the RBD being contradicted by two other sources. This illustrates the fact that the RBD can not be directly considered as a reliable reference to assess the results. The same question applies for the maps. Even if it is believed that they are highly reliable, one has to be careful with such consideration. Indeed, looking at the following example: Temporal track of a selected building In this case, the RBD gives 1986 as the construction date of the pointed building. The maps are giving a construction year between 1994 and 2000 . Again, the two datasets are contradicting each other. The same procedure was conducted to solve the contradiction: Aerial view of the building situation: 1970, 1986 and 1988 - Data: swisstopo Looking at the aerial images, it seems that the tracked building was there in 1988 . One can see that the map in 1994 continue to represent the four old buildings instead on the new one. It's only in 2000 that the maps are correctly representing the new building. This shows that despite maps are a reliable source of geo-information, they can also be subjected to delay in their symbology. The maps also come with the problem of the consistency of the building footprint symbology. Looking at the following example: Temporal track of a selected building one can see that the maps seem to indicate a strange evolution of the situation: a first building appears in 1987 and it is destroyed and replaced by a larger one in 1993 . Then, this new large building seems to have been destroyed right after its construction to be replaced by a new one in 1998 . Considering aerial images of the building situation: Aerial image view of the building situation: 1981, 1987 and 1993 - Data: swisstopo one can clearly see that a first building was constructed and completed by an extension between 1987 and 1993 . This shows an illustration where the symbology of the building footprints can be subjected to variation than can be de-synchronised regarding the true situation.","title":"Reliability of the Data"},{"location":"PROJ-REGBL/#metric","text":"In such context, neither the RBD or the national maps can be formally considered as a reference. It follows that we are left without a solution to assess our results, and more problematically, without any metric able to guide the developments of the proof-of-concept in the right direction. To solve the situation, one hypothesis is made in this research project. Taking into account both the RBD and the national maps, one can observe that both are built using methodologies that are very different. On one hand, the RBD is built out of a complex administrative process, gathering the required information in a step by step process, going from communes to cantons , and finally to the Statistical Office . On the other hand, the national maps are built using regular aerial image campaigns conducted over the whole Switzerland. The process of establishing maps is quite old and can then be considered as well controlled and stable. Both datasets are then made with methodologies that can be considered as fully independent from each other. This led us to the formulation of our hypothesis: Hypothesis : As the RBD and national maps are the results of independent methodologies, an error in one dataset is very unlikely to compensate an error in the other. In other words, if the RBD and the national maps agree on the construction year of a building, this information can be considered as a reliable reference, as it would be very unlikely to have two errors leading to such agreement. One should remain careful with this hypothesis, despite it sounds reasonable. It would be very difficult to assess it as requiring to gather complex confirmation data that would have to be independent of the RBD , the national maps and the aerial images (as maps are based on them). This assumption is the only one made in this research project. Accepting this assumption leads us to the possibility to establish a formal reference that can be used as a metric to assess the results and to guide the development of the proof-of-concept. But such reference has to be made with care, as the problem remains complex. To illustrate this complexity, the following figure gives a set representation of our problem: Set representation of the RBD completion problem The two rectangles represent the set of buildings for a considered area. On the left, one can see the building set from the RBD point of view. The grey area shows the building without the information of their construction year. Its complementary set is split in two sub-sets that are the buildings having a construction year that is absolutely correct and absolutely incorrect (the limit between both is subject to a bit of interpretation, as the construction year is not a strong concept). If a reference can be extracted, it should be in the green sub-set. The problem is that we have no way of knowing which building are in which sub-set. So the national maps were considered to define another sub-set: the synchronous sub-set where both RBD and national maps agree. To build the metric, the RBD sub-set of buildings coming with the information of the construction year is randomly sub-sampled to extract a representative sub-set: the potentials . This sub-set of potentials is then manually analysed to separate the building on which both datasets agree and to reject the other. At the end of the process, the metric sub-set is obtained and should remain representative. On the right of the set representation is the view of the buildings set through the national maps. One can see that the same sub-set appears but it replaces the construction years by the representation of the building on the maps. The grey part is then representing the building that are not represented on the maps because of their size or because they can be hidden by the symbology for example. The difference is that the maps do not give access to the construction years directly, but they are read from the maps through our developed detector. The detector having a success rate, it cuts the whole set of sub-sets in half, which is exactly what we need for out metric. If the metric sub-set remains representative, the success rate of the detector evaluated on it should generalise to the whole represented buildings. This set representation demonstrates that the problem is very complex and has to be handled with care. Considering only the six most important sub-set and considering construction year are extracted by the detector from the maps, it means that up to 72 specific case can apply on each building randomly selected. To perform the manual selection, a random selection of potential buildings was made on the RBD set of buildings coming with a construction year. The following table summarises the selection and manual validation: Area Potentials Metric Basel 450 EGIDs 209 EGIDs Bern 450 EGIDs 180 EGIDs Biasca 336 EGIDs 209 EGIDs Caslano 450 EGIDs 272 EGIDs The previous table gives the result of the second manual validation. Indeed, two manual validation sessions were made, with several weeks in-between, to check the validation process and how it evolved with the increase of the view of the problem. Three main critics can then be addressed to the metric: the first one is that establishing validation criterion is not simple as the number of cases in which buildings can fall is very high. Understanding the problem takes time and requires to see a lot of these cases. It then follows that the second validation session was more stable and rigorous than the first one. The second critic that can be made on our metric is the selection bias. As the process is made by a human, it is affected by its way of applying the criterion and more specifically on by its severity on their application. Considering the whole potentials sub-set, one can conclude that a few buildings could be rejected and validated depending on the person doing the selection. The last critic concerns specific cases for which the asynchronous criterion to reject them is weak. Indeed, for some buildings, the situation is very unclear in the way the RBD and the maps give information that can not be understood. This is the case for example when the building is not represented on the map. This can be the position in the RBD or the lack of information on the maps that lead to such an unclear situation. These cases are then rejected, but without being fully sure of the asynchronous aspect regarding the maps and the RBD .","title":"Metric"},{"location":"PROJ-REGBL/#methodology","text":"With a reliable metric, results can be assessed and the development of the proof-of-concept can be properly guided. As mentioned above, the proof-of-concept can be split in four major steps that are the processing of the maps, the extraction of the RBD buildings, detection of the building on the maps and detection in morphological changes.","title":"Methodology"},{"location":"PROJ-REGBL/#results","text":"The developed proof-of-concept is applied on the four selected areas to deduce construction year for each building appearing in the RBD . With the defined metric, it is possible to assess the result in a reliable manner. Nevertheless, assessing the results with clear representations is not straightforward. In this research project, two representations were chosen: Histogram of the success rate : For this representation, the building of the metric are assigned to temporal bins of ten years in size and the success rate of the construction year is computed for each bins. Distance and pseudo-distance distribution : As the previous representation only gives access to a binary view of the results, a distance representation is added to understand to which extent mistakes are made on the deduction of a construction year. For buildings detected between two maps, the temporal middle is assumed as the guessed construction year, allowing to compute a formal distance with its reference. In case a building is detected before or beyond the map range, a pseudo-distance of zero is assigned in case the result is correct according to the reference. Otherwise, the deduced year (that is necessarily between two maps) is compared to its reference extremal map date to obtain an error pseudo-distance. In addition to the manually defined metric, the full RBD metric is also considered. As the construction years provided in the RBD have to be considered with care, as part of them are incorrect, comparing the results obtained the full RBD metric and the metric we manually defined opens the important question of the synchronisation between the maps and the RBD , viewed from the construction perspective.","title":"Results"},{"location":"PROJ-REGBL/#conclusion","text":"As a main conclusion to the national maps approach, one can consider the results as good. It was possible to develop a proof-of-concept and to apply it on selected and representative areas of Switzerland. In this approach, it turns out that developing the proof-of-concept was the easy part. Indeed, finding a metric and demonstrating its representativeness and reliability was much more complicated. Indeed, as the two datasets can not be considered as fully reliable in the first place, a strategy had to be defined in order to be able to demonstrate that the chosen metric was able to assess our result in the way expected by the Statistical Office . In addition, the metric only required one additional hypothesis on top of the two datasets. This hypothesis, consisting in assuming that the synchronous sub-set was a quasi-sub-set of the absolutely correct construction years , can be assumed to be reasonable. Nevertheless it is important to emphasise that it was necessary to make it, leading us to remains critic and careful whilst reading the results given by our metric. The developed proof-of-concept was developed in C++ , leading to an efficient code able to be used for the whole processing of Switzerland without the necessity to deeply modify it.","title":"Conclusion"},{"location":"PROJ-REGBL/#research-approach-statistical","text":"As the availability of the topographic/national maps does not reach the integrity of all building's year of construction in the registry, an add-on was developed to infer this information, whenever there was this need for extrapolation. Usually, the maps availability reaches the 1950s, whilst in some cities the minimum year of construction can be in the order of the 12th century, e.g. The core of this statistical model is based on the Concentric Zones Model (Park and Burgess, 1925)[6] extended to the idea of the growth of the city from the a centre (Central Business District - CBD) to all inner areas. The concept behind this statistical approach can be seen below using the example of a crop of Basel city: Illustration of the Burgess concentric zone model Although it is well known the limits of this model, which are strongly described in other famous urban models such as from Hoyt (1939)[7] and Harris and Ullman (1945)[8]. In general those critics refer to the simplicity of the model, which is considered and compensated for this application, especially by the fact that the main prediction target are older buildings that are assumed to follow the concentric zones pattern, differently than newer ones (Duncan et al., 1962)[9]. Commonly this is the pattern seen in many cities, hence older buildings were built in these circular patterns to some point in time when reconstructions and reforms are almost randomly placed in spatial and temporal terms. Moreover processes like gentrification are shown to be dispersed and quite recent (R\u00e9rat et al, 2010)[10]. In summary, a first predictor is built on the basis that data present a spatial dependence, as in many geostatistical models (Kanevski and Maignan, 2004[11]; Diggle and Ribeiro, 2007[12]; Montero and Mateu, 2015[13]). This way we are assuming that closer buildings are more related to distant buildings (Tobler, 1970[14]) in terms of year of construction and ergo the time dimension is being interpolated based on the principles of spatial models. We are here also demonstrating how those two dimensions interact. After that concentric zones are embedded through the use of quantiles, which values will be using in a probabilistic unsupervised learning technique. Finally, the predicted years are computed from the clusters generated.","title":"Research Approach: Statistical"},{"location":"PROJ-REGBL/#metric_1","text":"Similar to the detection situation, generating a validation dataset was an especially challenging task. First of all, the dates in the RBD database could not be trusted in their integrity and the topographic maps used did not reach this time frame. In order to ascertain the construction year in the database, aerial images from swisstopo (Swiss Federal Office of Topography) were consulted and this way buildings were manually selected to compound a validation dataset. References extraction from aerial images manual analysis One of the problems related to this approach was the fact that a gap between the surveys necessary for the images exists. This way it is not able to state with precision the construction date. These gaps between surveys were approximately in the range of 5 years, although in Basel , for some areas, it reached 20 years. An example of this methodology to create a trustworthy validation set can be seen below. In the left-hand side one can see the year of the first image survey (up) and the year registered in the RBD (down) and in the right-hand side, one can see the year of the next image survey in the same temporal resolution.","title":"Metric"},{"location":"PROJ-REGBL/#methodology_1","text":"First of all, a prior searching radius is defined as half of the largest distance (between random variables). For every prediction location, the variance between all points in the prior searching radius will be used to create a posterior searching radius. This way, the higher the variance, the smaller the searching radius, as we tend to trust data less. This is mainly based on the principle of spatial dependence used in many geostatistical interpolators. The exception to this rule is for variances that are higher than 2 x the mean distance between points. In this case, the searching radius increases again in order to avoid clusters of very old houses that during tests caused underestimation. The figure below demonstrates the logic being the creation of searching radii. Searching radii computation process being d the distance between points, \u03bc the mean and s\u00b2 the variance of random variable values within the prior searching radius. It is important to mention that in case of very large number of missing data, if the searching radius does not find enough information, the posterior mean will be the same as the prior mean, possibly causing over/underestimation in those areas. This first procedure is used to fill the gaps in the entry database so clustering can be computed. The next step is then splitting the data in 10 quantiles, what could give the idea of concentric growth zones, inspired, in Burgess Model (1925)[7]. Every point in the database will then assume the value of its quantile. It is also possible to ignore this step and pass to clustering directly, what can be useful in two situations, if a more general purpose is intended or if the concentric zones pattern is not observed in the study area. As default, this step is used, which will be followed by an unsupervised learning technique. A gaussian mixture model, which does not only segments data into clusters, but indicates the probability of each point belonging to every cluster is then performed. The number of components computed is a linear function to the total number of points being used, including the ones that previously had gaps. The function to find the number of components is the following: being np the number of components/clusters, and nc the total number of points used. The number of clusters shall usually be very large compared to a standard clustering exercise. To avoid this, this value is being divided by ten, but the number of clusters will never be smaller than five. An example of clustering performed by the embedded gaussian mixture model can be seen below: Example of clustering process on the Basel area Hence the matrix of probabilities of every point belonging to each cluster (\u03bb - what can be considered a matrix of weights) is multiplied by the mean of each cluster ( 1 x nc matrix mc ), forming the A matrix: or in matrices: Finally, the predictions can then be made using the sum of each row in the A matrix. It is important to state that the same crops (study areas) were used for this test. Although Caslano was not used in this case, as it possesses too few houses with a construction date below the oldest map available. Using the metric above explained a hold out cross-validation was performed, this way a group of points was only used for validation and not for training. After that, the RMSE (Root Mean Squared Error) was calculated using the difference between the date in the RBD database and the predicted one. This RMSE was also extrapolated to the whole Switzerland, so one could have a notion of what the overall error could be, using the following equation (for the expected error): where E is the error and n the number of buildings in each region. In addition to the RMSE , the 95th percentile was computed for every study area and using all combined as well. Hence, one could discuss the spread and predictability of errors.","title":"Methodology"},{"location":"PROJ-REGBL/#results_1","text":"The first case analysed was Basel , where the final RMSE was 9.78 years. The density plot below demonstrates the distribution of errors in Basel , considering the difference between the year of construction in the RBD database and the predicted one. Distribution of error on construction year extrapolation Among the evaluated cases, Basel presented a strong visible spatial dependence, and it was also the case which the largest estimated proportion of houses with construction years older than (1955) the oldest map ( 11336 or approximately 66 % of buildings). Based on the validation dataset only, there was an overall trend of underestimation and the 95th percentile reached was 20 years, showing a not so spread and flat distribution of errors. Bern was the second case evaluated, and it demonstrated to be an atypical case. This starts from the fact that a big portion of the dates seemed incongruent with reality, based on the aerial images observed and as seen in the previous detection approach. Not only that, but almost 80 % of the buildings in Bern had missing data to what refers to the year of construction. This is especially complicated as the statistical method here presented is in essence an interpolator (intYEARpolator). Basically, as in any inference problem, data that is known is used to fill unknown data, therefore a reasonable split among known and unknown inputs is expected, as well as a considerable confidence on data. In the other hand, an estimated number of 1079 (approximately 27 % of the buildings) buildings was probably older than the oldest map available (1954) in Bern crop. Therefore, in one way liability was lower in this case, but the number of prediction points was smaller too. The following figure displays the density of errors in Bern, where an RMSE of 20.64 years was computed. Distribution of error on construction year extrapolation There was an overall trend for overestimation, though there was still enough lack of spread in errors, especially if one considers the 95th percentile of 42 . Finally, the crop on Biasca was evaluated. The computed RMSE was of 13.13 years, which is closer to the Basel case and the 95th percentile was 17 years, this way presenting the least spread error distribution. In Biasca an estimated 1007 ( 32 %) buildings were found, which is not much more than the proportion in Bern, but Biasca older topographic map used was from 1970, making of it an especially interesting case. The density plot below demonstrates the concentrated error case of Biasca : Distribution of error on construction year extrapolation Once the RMSE was computed for the three regions, it was extrapolated to the whole Switzerland by making consideration the size of each dataset: Extrapolation of the error distribution on the whole Switzerland The expected extrapolated error calculated was 15.6 years and the 95th percentile was then 31 years.","title":"Results"},{"location":"PROJ-REGBL/#conclusion_1","text":"This add-on allows extrapolating the predictions to beyond the range of the topographical maps. Its predictions are limited, but the accuracy reached can be considered reasonable, once there is a considerable lack of information in this prediction range. Nor the dates in the RBD , nor the topographic maps can be fully trusted, ergo 15.6 years of error for the older buildings is acceptable, especially by considering the relative lack of spread in errors distribution. If a suggestion for improvement were to be given, a method for smoothing the intYEARpolator predictions could be interesting. This would possibly shift the distribution of the error into closer to a gaussian with mean zero. The dangerous found when searching for such an approach is that the year of construction of buildings does not seem to present a smooth surface, despite the spatial dependence. Hence, if this were to be considered, a balance between smoothing and variability would need to found. We also demonstrated a completely different perspective on how the spatial and temporal dimensions can be joined as the random variable predicted through spatial methodology was actually time. Therefore a strong demonstration of the importance of time in spatially related models and approaches was also given. The code for the intYEARpolator was developed in Python and it runs smoothly even with this quite big proportion of data. The singular case it can be quite time-demanding is in the case of high proportion of prediction points (missing values). It should also be reproducible to the whole Switzerland with no need for modification. A conditional argument is the use of concentric zones, that can be excluded in case of a total different pattern of processing time.","title":"Conclusion"},{"location":"PROJ-REGBL/#reproduction-resources","text":"The source code of the proof-of-concept for national maps can be found here : National maps approach proof-of-concept (regbl-poc), STDL The README provides all the information needed to compile and use the proof-of-concept. The presented results and plots can be computed using the following tools suite : National maps approach results and plots (regbl-poc-analysis), STDL with again the README giving the instructions. The proof-of-concept source code for the statistical approach can be found here : Statistical approach proof-of-concept (regbl-poc-intyearpolator), STDL with its README giving the procedure to follow. The data needed to reproduce the national maps approach are not publicly available. For the national maps, a temporal series of the 1:25'000 maps of the same location are needed. They can be asked to swisstopp : GeoTIFF National Maps 1:25'000 rasters temporal sequence, swisstopo With the maps, you can follow the instruction for cutting and preparing them on the proof-of-concept README . The RBD data, used for both approaches, are not publicly available either. You can query them using the request form on the website of the Federal Statistical Office : DSV RBD data request form , Federal Statistical Office Both proof-of-concepts READMEs provide the required information to use these data.","title":"Reproduction Resources"},{"location":"PROJ-REGBL/#references","text":"[1] Federal Statistical Office [2] Federal Register of Buildings and Dwellings [3] Federal Office of Topography [4] National Maps (1:25'000) [5] Conway, J. (1970), The game of life. Scientific American, vol. 223, no 4, p. 4. [6] Park, R. E.; Burgess, E. W. (1925). \"The Growth of the City: An Introduction to a Research Project\". The City (PDF). University of Chicago Press. pp. 47\u201362. ISBN 9780226148199. [7] Hoyt, H. (1939), The structure and growth of residential neighborhoods in American cities (Washington, DC). [8] Harris, C. D., and Ullman, E. L. (1945), \u2018The Nature of Cities\u2019, Annals of the American Academy of Political and Social Science, 242/Nov.: 7\u201317. [9] Duncan, B., Sabagh, G., & Van Arsdol,, M. D. (1962). Patterns of City Growth. American Journal of Sociology, 67(4), 418\u2013429. doi:10.1086/223165 [10] R\u00e9rat, P., S\u00f6derstr\u00f6m, O., Piguet, E., & Besson, R. (2010). From urban wastelands to new\u2010build gentrification: The case of Swiss cities. Population, Space and Place, 16(5), 429-442. [11] Kanevski, M., & Maignan, M. (2004). Analysis and modelling of spatial environmental data (Vol. 6501). EPFL press. [12] Diggle, P. J. Ribeiro Jr., P. J. (2007). Model-based Geostatistics. Springer Series in Statistics. [13] Montero, J. M., & Mateu, J. (2015). Spatial and spatio-temporal geostatistical modeling and kriging (Vol. 998). John Wiley & Sons. [14] Tobler, W. R. (1970). A computer movie simulating urban growth in the Detroit region. Economic geography, 46(sup1), 234-240.","title":"References"},{"location":"PROJ-ROADSURF/","text":"Classification of road surfaces \u00b6 Gwena\u00eblle Salamin (swisstopo), Cl\u00e9mence Herny (Exolabs), Roxane Pott (swisstopo), Alessandro Cerioni (\u00c9tat de Gen\u00e8ve) Proposed by the Federal Office of Topography swisstopo - PROJ-ROADSURF August 2022 to March 2023 - Published on August 28, 2023 All scripts are available on GitHub: https://github.com/swiss-territorial-data-lab/proj-roadsurf Abstract : The Swiss road network extends over 83\u2019274 km. Information about the type of road surface is useful not only for the Swiss Federal Roads Office and engineering companies, but also for cyclists and hikers. Currently, the data creation and update is entirely done manually at the Swiss Federal Office of Topography. This is a time-consuming and methodical task, potentially suitable to automation by data science methods. The goal of this project is classifying Swiss roads according to their surface type, natural or artificial. We first searched for statistical differences between these two classes, in order to then perform supervised classification based on machine-learning methods. As we could not find any discriminant feature, we used deep learning methods. In terms of balanced F1 score, we obtained a global score of 0.74 over the training, validation and test area, 0.56 over the inference-only area. 1. Introduction \u00b6 The Swiss road network extends over 83'274 km 1 . Not only cyclists and hikers can be interested in knowing whether a given road section is covered by a natural or an artificial surface, but also the Swiss Federal Roads Office, which is in charge of road maintenance, and engineering companies. This information is found within the swissTLM3D 2 dataset, the large-scale topographic model of Switzerland produced by the Federal Office of Topography (swisstopo). Keeping the swissTLM3D dataset up to date is a time-consuming work that has to be done methodically. Operators draw and georeference new elements and fill in their attributes based on the visual interpretation of stereoscopic aerial images. The update of existing elements also follows this manual approach. Data science can help by autmatizing this time-consuming and systematic tasks. So far, the majority of data science studies on the identification of the road surface type, in particular those based on artificial intelligence, have been conducted in the context of improving the driving and security of autonomous vehicles 3 4 5 6 . These works rely on images shot by cameras mounted at the front of the moving vehicle itself. To our knowledge, only one study, carried out by Mansourmoghaddam et al. (2022) 7 , proposed a method based on object-based classification from aerial imagery, which could successfully tell artificial roads from natural ones. Another possible approach is to use spectral indices, as done by Zhao & Zhu (2022) 8 working on the distinction between artificial surfaces and bare land. However, their method is not specifically designed for road surfaces. The goal of this project was to determine whether the road cover is artificial or natural with the development of data science tools. For this first test, only the roads of the class \"3m Strasse\" are considered. Figure 1: Overview of the workflow for this project. As the location of roads was known, we faced a problem of supervised classification. Two approaches were tested to address it: machine learning (ML) and deep learning (DL). Both approaches used the same input data, aerial images and vector road location. 2. Data \u00b6 As input data, this project used two datasets produced by the Federal Office of Topography: swissTLM3D and SWISSIMAGE RS. We worked with data for the year 2018, for which the images and ground truth, i.e. the manually vectorized and classified roads, are available for the area of interest (AOI). Coordinates are expressed in the EPSG:2056 reference system. 2.1. Area of interest \u00b6 Figure 2: Delimitation of the area of interest with the tile numbers of the 1:25'000 Swiss national map. The area of interest (AOI) defined for this study was represented by the tiles 1168, 1188, 1208 and 1228 of the Swiss national map at a scale of 1:25'000. This zone covers an area of 840 km 2 and was chosen because of its representativeness of the Swiss territory. 2.2. swissTLM3D \u00b6 The swissTLM3D 2 dataset is a large-scale topographic model of Switzerland. It contains geospatial data necessary o the national map, such as roads, buildings and land cover. Periodical updates rely on the manual work of specialized operators. They interpret stereoscopic images and fill in attributes with the help of some additional information, like cadastral surveys and terrestrial images. The specification of aerial imagery is similar to the SWISSIMAGE RS product. The road layer contains lines with the identifier, the structure (none, bridge, tunnel, etc.), the object type (highways, 8m roads, 1 m paths, etc.) and the surface type as attributes. The two possible classes of the surface type are defined in the metadata: artificial (German: Hart) and natural (Natur). The artificial class contains surfaces of hard artificial materials like asphalt, concrete or slabs. The natural class contains roads with a surface of natural materials like gravel or dirt, and untreated surfaces. In this project, it was decided to test the classification for the type \"3m Strasse\" (3 m roads). This class encompasses roads that are between 2.81 m and 4.20 m wide. Within this subset, 6486 roads have an artificial surface and 289 a natural one. The dataset is heavily unbalanced toward the artificial roads. In addition, the swissTLM3D dataset was used to identify the forests. Indeed, they prevent us from observing roads from aerial images; hence those roads cannot be used in our study. As no layer in the swissTLM3D is specifically devoted to forested areas, they were deduced from the land cover classes. A filter was applied to only keep forests (\"Wald\") and open forests (\"Wald offen\"). Over the AOI, all the roads in quarries have a natural surface. We used our own layer from the project on the detection of mineral extraction sites to know their location. However, it is possible to use the information on the area of use from the swissTLM3D dataset which has a class on gravel quarries and one on stone quarries. 2.3. SWISSIMAGE RS \u00b6 The product SWISSIMAGE RS 9 contains aerial images of Switzerland composed by four bands: near-infrared (NIR), red (R), green (G) and blue (B). The ground resolution equals 0.10 m over the area of interest, except in some high altitude regions or regions with complex topography, where a resolution of 0.25 m is deemed sufficient. The standard deviation is +/- 0.15 m (1 sigma) for a ground resolution of 0.10 m and +/- 0.25 m (1 sigma) for a ground resolution of 0.25 m, +/- 3-5 m (1 sigma). The dataset is composed of a collection of 16-bit encoded GeoTIFF orthorectified images. The overlap between images varies, but stays always present. 3. Preprocessing \u00b6 Both the swissTLM3D and SWISSIMAGE RS dataset were processed to be suitable for the algorithms we wanted to develop. This was achieved with two procedures: the generation of the road domain and the creation of a raster mosaic. 3.1. Generation of the Road Domain \u00b6 The swissTLM3D contains a vector layer representing every road section as a 3D line with some attached attributes. As a first test, the beneficiaries requested us to perform the analysis only on roads of the type \"3m Strasse\", i.e the roads wider than 2.81 m and thinner than 4.20 m. The engineered structures were excluded based on the attribute \"KUNSTBAUTE\". Only bridges and road sections without structures were kept. Data preparation differs slightly between the two performed analyses, machine and deep learning. Results for both approaches are shown here below. Figure 3: Resulting labels (left) from the initial TLM lines (right) in the case of the machine learning. Figure 4: Resulting labels (left) from the initial TLM lines (right) in the case of deep learning. For the machine learning analysis, only the 3m roads were kept (figure 3). For the deep learning analysis, we judged safer to keep all the visible roads (figure 4). Therefore, the neighboring roads were also considered. We made the hypothesis that we would obtain better results by training the model on all the visible roads, rather than on the 3m ones only. Still, the focus on \"3m Strasse\" class was enforced through the selection of raster tiles: only those tiles containing the specific class were used as input data. Road geometries, originally linear, were transformed into polygons by adding a buffer with a flat cap style. This procedure generated unwanted overlapping areas in the neighborhood of the intersection points between contiguous road sections. Such artifacts were handled differently depending on the road types: in the case of roads with different widths, the zone of the overlap inherited the class of the widest road section among the intersecting ones. in the case of roads with the same width, in the case of the machine learning analysis, overlapping parts were discarded; in the case of the deep learning analysis, it was supposed that leaving the overlapping parts would produce more understandable labels for the algorithm than suppressing the overlap. Once that the polygons were generated, sections hidden by a forest canopy were excluded. A buffer of 2 m was also added around forests as the canopy was often seen to be extending beyond the forest delimitation as recorded in the swissTLM3D dataset. We considered adding some information about the altitude of the length of the roads to the labels. Natural and artificial roads share pretty much the same distribution in terms of altitude. For the length, the longest roads all had an artificial surface. However, the experts could not tell us if it was the case for all Switzerland or a coincidence on our AOI. For the deep learning analysis, we tried to improve the overlap between labels and images by taking cadastral data into account. A larger buffer was used on the lines for the TLM. Then, only the parts of the buffer intersecting the road surfaces from cadastral surveying were kept. As described in the deep learning analysis section , we tested the labels straight out of the TLM and the ones augmented by the cadastral surveying. We also tried to merge the labels by width type or by surface type. After the pre-processing step described here above, for the machine learning analysis, 2'781 road sections were obtained, including 110 natural ones; for the deep learning analysis, 12'208 road sections were obtained, including 3078 natural ones. Let us remind that there were many more roads labeled in the second case as we considered all the visible roads. Especially for natural roads, the vast majority did not belong to the class of interest, but rather to the \"1m Weg\" and \"2m Weg\" classes. 3.2. Raster Mosaic Generation \u00b6 As said in the description of SWISSIMAGE RS , a large overlap between images is present in the dataset. To remove this overlap, a mosaic was created. Instead of merging all the images into one, we decided to set up a XYZ raster tile service, allowing us to work at different resolutions. The first step consists in reprojecting images in the EPSG:3857 projection, compliant with standard tile map services . Then, to save memory and disk space, images were converted from 16 to 8 bits. Besides, normalization was performed to optimize the usage of the available dynamic range. Finally, images were exported to the Cloud-Optimized GeoTIFF (COG) format. COG files can then be loaded by the TiTiler application, an Open Source dynamic tile server application 10 . The MosaicJSON specification was used to store image metadata 11 . Zoom levels were bound between 17 and 20, corresponding to resolutions between 1.20 m and 0.15 m. 4. Machine Learning Analysis \u00b6 4.1. Methodology \u00b6 Before delving into machine learning, we performed some exploratory data analysis, aiming at checking whether already existing features were discriminant enough to tell natural roads from artificial ones. Additional predictive features were also generated, based on ratios between pixel values in different bands (G/R, B/R, NIR/R, G/B, G/NIR, B/NIR); one spectral index; per-band statistics (mean, median, minimum, maximum, standard deviation). The machine learning analysis was performed only on the two middle tiles of the AOI. The most promising spectral index we found in the literature is the Artificial Surface Index (ASI) defined by Zhao & Zhu (2022) 12 . Unfortunately, the computation of the ASI requires the shortwave infrared (SWIR) band which is not available in the SWISSIMAGE RS data. The SWIR band can be available in satellite imagery (e.g.: Landsat 8, Sentinel 2), yet spatial resolution (20-30 m/px) is not enough for the problem at hand. Instead, the VgNIR-BI index 13 could be computed in our case, since it combines the green and NIR bands: \\[\\begin{align} \\ \\mbox{VgNIR-BI} = {\\rho_{green} - \\rho_{NIR} \\over \\rho_{green} + \\rho_{NIR}} \\ \\end{align}\\] where \u03c1 stands for the atmospherically corrected surface reflectance values of the band. In our case, no atmospheric correction was applied, because we dealt with aerial imagery instead of satellite imagery. Boxplots were generated to visualize the distribution of the aforementioned predictive features. Principal component analysis (PCA) were performed, too. The group of values passed to the PCA were the following: - pixel values: Each pixel displays 11 attributes corresponding to (1) its values on the different bands (R, G, B, NIR), (2) the ratio between bands (G/R, B/R, NIR/R, G/B, G/NIR, B/NIR), and (3) the VgNIR-BI spectral index 13 . - summary statistics: Each road has 5 attributes for each band: the mean, the median, the minimum (min), the maximum (max), and the standard deviation (std). Let us note that: these two analyses were carried out on a curated selection of input data, which was ought to maximize the separation between natural and artificial roads. The road sections were filtered by pixel number and margin of error on their mean to avoid small or crowded road sections. Were the results promising, the analysis would have been carried out on the entire dataset. We confirmed that results were not biased by performing each analysis on the entire dataset and a balanced subset. We also confirmed that results were stable with respect to the chosen zoom level. 4.2. Results \u00b6 In order not to make the presentation too cumbersome, here we only show results produced at zoom level 18, on the entire dataset, and considering road sections corresponding to the following criteria: covering at least 10 pixels; enjoying a margin of error (MOE) on the mean below 12.5, computed with a coefficient level of 0.95. Figure 5: Boxplots of the statistical distribution of pixel values on each band for each surface type. Each graph represents a band and each boxplot a surface type. We can see on the figure 5 that both the median and the upper quartile are systematically higher for natural than for artificial roads across all the bands, meaning the natural roads have brighter parts. Unfortunately, we have that pixel value statistics do not allow a sharp distinction between the two classes, as the lower quartile are very close. Figure 6: Boxplots of the pixel distribution on the VgNIR-BI index and the ratios between bands. Each graph represents a ratio or the index and each boxplot a surface type. Figure 6bis: Boxplots of the pixel distribution on the ratios between bands. Each graph represents a ratio and each boxplot a surface type. The ratios between bands and the VgNIR-BI present similar values for the artificial and natural roads, allowing no distinction between the classes. Figure 7: Boxplots of the distribution for the road summary statistics on the blue band. Each graph represents a statistic and each boxplot a type of road surface. Boxplots produced with the summary statistics computed per band and per road section lead to similar conclusions. Natural roads tend to be lighter than artificial ones. However, the difference is not strong enough to affect the lower quartiles and allow a sharp distinction between classes. Figure 8: PCA of the pixels based on their value on each band. Figure 9: PCA of the roads based on their statistics on the blue band. The figures 8 and 9 present respectively the results of the PCA on the pixel values and on the statistics over road sections. Once more, we have to acknowledge that, unfortunately, artificial and natural roads cannot be separated. 4.3. Discussion \u00b6 Although boxplots reveal that some natural roads can be brighter than artificial roads, statistical indicators overlap in such a way that no sharp distinction between the two classes can be drawn. The PCA confirms such an unfortunate finding. Those results are not surprising. As a matter of fact, natural roads which are found in the \"3m Strasse\" type are mainly made by gravel or similar materials which, color-wise, make them very similar to artificial roads. 5. Deep Learning Analysis \u00b6 5.1. Methodology \u00b6 To perform the detection and classification of roads, the object detector (OD) framework developed by the STDL 14 was used. It is described in details in the dedicated page . The two central parts of the AOI constitute the training zone, i.e. the zone for the training, validation and test datasets. The two exterior parts constitute the inference-only zone, i.e. for the \"other\" dataset, to test the trained model on an entirely new zone. To assess the predictions, a script was written, final_metrics.py instead of using the one directly from the STDL's OD. We decided to take advantage that: 1. Predictions are not exclusive between classes. Every road section was detected several times with predictions of different class overlapping. 2. The delimitation of the roads are already known. Therefore, rather than choosing one correct prediction, we aggregated the predictions in a natural and an artificial index over each label. Those indices were defined as follows: \\[\\begin{align} \\ \\mbox{index}_{class} = \\frac{\\sum_{i=1}^{n} (A_{\\%,i} \\cdot \\mbox{score}_{class,i})}{\\sum_{i=1}^{n} A_{\\%,i}} \\ \\end{align}\\] where n is the number of predictions belonging to the class, \\(A_{\\%, i}\\) is the percentage of overlapping area between the label and the prediction, \\(\\mbox{score}_{class,i}\\) is its confidence score. \\[\\begin{align} \\ \\text{final class} = \\begin{cases} \\mbox{artificial} \\quad \\mbox{ if } \\quad \\mbox{index}_{artificial} \\gt \\mbox{index}_{natural}\\\\ \\mbox{natural} \\quad \\mbox{ if } \\quad \\mbox{index}_{artificial} \\lt \\mbox{index}_{natural} \\\\ \\mbox{undetected} \\quad \\text{ if } \\quad \\mbox{index}_{artificial} = 0 \\; \\text{ and } \\; \\mbox{index}_{natural} = 0 \\\\ \\mbox{undetermined} \\quad \\text{ if } \\quad \\mbox{index}_{artificial} = \\mbox{index}_{natural} \\; \\text{ and }\\; \\mbox{index}_{artificial} \\neq 0\\\\ \\end{cases} \\ \\end{align}\\] The largest index indicates the right class as better predictions are supporting it. Once every road has an attributed class, the result was evaluated in terms of recall, precision and balanced F1 score. \\[\\begin{align} \\ P_{class} = \\frac{TP_{class}}{TP_{class}+FP_{class}} \\text{ and } P = \\frac{P_{natural} + P_{artificial}}{2} \\ \\end{align}\\] \\[\\begin{align} \\ R_{class} = \\frac{TP_{class}}{TP_{class}+FN_{class}} \\text{ and } R = \\frac{R_{natural} + R_{artificial}}{2} \\ \\end{align}\\] \\[\\begin{align} \\ F1\\text{ }score = \\frac{2PR}{P + R} \\ \\end{align}\\] where \\(FN_{class}\\) is the number of roads that are not detected or wrongly assigned to the other class, \\(FP_{class}\\) is the number of roads from the other class wrongly attributed to the considered class, \\(P_{class}\\) is the precision, i.e. the percentage of correct roads in the detected class, \\(R_{class}\\) is the recall, i.e. the percentage of correctly found and classified roads from a class, \\(TP_{class}\\) is the number of roads correctly found in the class. The predictions are not necessarily all taken into account. They are filtered based on their confidence score. Thresholds were tested over the balanced F1 score of the validation dataset. The current dataset exhibits a very strong class imbalance. Therefore, we decided to use balanced metrics, giving the same weight to both classes. The balanced F1 score was chosen as the determining criterion between the different tested models. As it gives equal weight to both classes, the quality of the classification for the natural road was well taken into consideration. However, we have to keep in mind that we gave great importance to this class compared to its number of individuals. A great risk exists that the model would be biased toward artificial roads, because of the imbalance between classes. Therefore, we decided on a baseline model (BLM) where all the roads in the training zone are classified as artificial. Its metrics are the following: Artificial Natural Global Precision 0.97 0 0.49 Recall 1 0 0.5 F1 score 0.98 0 0.49 Table 1: Metrics for the BLM with all the roads classified as artificial The trained models should improve the global F1 score of 0.49 to be considered as an improvement. Finally, we wanted to know if the artificial and natural index could constitute a confidence score for their respective classes. The reliability diagram has been plotted to visualize the accuracy of the classification at different levels of those indices. Figure 10: Listing of the various tests carried out. To achieve the best possible results, several input parameters and files for the model training were tested. 1. We tried to improve the quality of the labels by integrating data from cadastral surveying and by merging the roads based on their cover, on their type, or not at all. 2. We trained the model with different zoom level images, from 17 to 20. 3. The influence of different band combinations on the model performance was investigated: true colors (RGB) and false colors (NirRG). For each test, the best configuration was chosen based on the global balanced F1 score. This method supposes that the best choice for one parameter did not depend on the others. 5.2. Results \u00b6 When testing different procedures to create the labels, using only the TLM and excluding the data from the cadastral survey gave the best metrics. Besides, cutting the label corresponding to the road sections and not merging them by road type or surface gave better metrics. Increasing the zoom level improved the balanced F1 score. Using the bands RGB and RG with NIR gave very similar results and an equal F1 score. Therefore, the best model is based on labels deduced from the TLM and using the RGB bands at a zoom level 20. Artificial Natural Global Precision 0.99 0.74 0.87 Recall 0.97 0.74 0.86 F1 score (1) 0.98 0.74 0.86 F1 score for the BLM (2) 0.98 0 0.49 Improvement: (1)-(2) 0 0.74 0.32 Table 2: metrics for the best model over the training, test and validation area. The F1 score for the natural roads and the global one outperformed the BLM. The per-class F1 scores has been judged as satisfying by the beneficiaries. Artificial Natural Global Precision 0.98 0.22 0.60 Recall 0.95 0.26 0.61 F1 score (1) 0.96 0.24 0.60 F1 score for the BLM (2) 0.98 0 0.49 Improvement: (1)-(2) -0.02 0.24 0.11 Table 3: metrics for the best model over the inference-only area. Those metrics are worse than the ones obtained over the training area. The global F1 score is still higher than for the BLM. However, the natural F1 score is not high enough. Figure 11: Absolute and relative repartition of the roads in the inference-only zone. 93.2% of the roads are correctly classified, 4.2% are in the wrong class and 2.6% are undetected or undetermined. Nearly half of the natural roads are either undetected or in the wrong class, but as they represent a tiny proportion of the dataset, they impact little the accuracy. In the training zone, only 2% of the roads are in the wrong class and 1.7% are undetected or undetermined. Figure 12: Reliability curves for the training and the inference-only zone. The artificial index can be used as confidence score for the artificial roads. The natural index can be used as confidence score for the natural ones. Indeed, the accuracy of the results for each class increases with their value. 5.3. Discussion \u00b6 The F1 score obtained is 0.86 over the area to train and validate the model and 0.60 over the rest of the AOI. The difference is essentially due to the decrease in the F1 score of the natural roads, passing from 0.74 to 0.24. The first intuition is that we were facing a case of overfitting. However, the validation loss was controlled in order to stop the training on time and avoid this problem. Another possibility would be that the two zones differ significantly and that a model trained on one cannot apply on the other. Hence, we also split the tiles randomly between the training and the inference-only zone. The gap between the balanced F1 score of the training and inference-only zone passed from 0.25 to 0.19 with the same hyper-parameters. The high recall for artificial roads indicates that the model properly detects them. However, once the artificial recall is high, the high artificial precision is in this case necessarily due. As the roads have a known location, the false positives not due to a class confusion are eliminated from our assessment. Then, only the roads classified in the wrong class can affect precision. As there are not a lot of natural roads, even if they were all wrongly classified as artificial like in the BLM, the precision would still remain well at 0.97. In the current case, the precision of the trained model is 0.01 higher than the one of the BLM. The drop in the natural F1 score is due to all the roads predicted in the wrong class. As they are only a few natural roads, errors of the model affect them more heavily. The part of the misclassified road increased by 44% between the training and the inference-only zone. Meanwhile, the part of undetermined roads only increased by 1% The F1 score could maybe be further improved by focusing more strictly on the 3m roads. Indeed, we considered it would be safer to teach the algorithm to differentiate only between surfaces and not between road types, which are defined by width. Therefore, the tiles were selected because they intersected 3m roads, but then all the roads on the tiles were transformed into labels. Because of the rarity of 3m natural roads, most of the natural roads seen by the algorithm are 2m roads and those often have a surface with grass, where the 3m natural roads have a surface made only of gravel or dirt. Over the training zone, 110 natural roads are 3m ones and 1183 ones are 2 m and 1 m paths. Maybe, labelling only the 3m roads would give better results than labelling all the visible roads. We did not tune the hyperparameter used by the deep learning model once we found a satisfying enough combination. In addition, as the algorithm is based on detectron2, not everything can easily be tuned. Using an entirely new framework and tuning the loss weights would allow better handling the class imbalance. A new framework could also allow integrating an attention mask and take advantage of the known road location like recommended by Epel (2018) 15 . Using a new framework could also allow to use images with 4 bands and integrating the NIR. However, we decided here to first try the tools we already had in our team. We can say that there is a bias in the model encouraging it to predict artificial roads. However, it is still better than the BLM. Therefore, this model is adapted for its purpose. 5.3.1. Elements specific to the application on the SwissTLM3D product \u00b6 All these findings seem negative, which is why it is appropriate to recall the significant imbalance between the classes. If we look at the percentages, 93.2% of the dataset is correctly classified over the inference-only zone. This could represent a significant gain of time compared to an operator who would do the classification manually. Indeed, once the model trained, the procedure documented here only needs 20 minutes to classify the roads of the AOI. Besides, the artificial and natural indices allow us to find most of the misclassified roads and limit the time needed for a visual verification. In addition, the information of the road surface type is already available for the whole Switzerland. When using the algorithm to update the swissTLM3D dataset, it would be possible to perform change detection between the previous and new surface type. Then, those changes could be visually verified. 6. Conclusion \u00b6 Keeping the swissTLM3D dataset up to date is a time consuming and methodical task. This project aimed at finding a method to automatize the determination of the road surface type (artificial vs. natural). We focused on roads belonging to the \"3m Strasse\" class and discovered that statistics stemming from pixel values are not enough discriminating to tell artificial roads from natural ones. Therefore, we decided not to attempt any supervised classification based on machine learning. Instead, deep learning methods are performed. With 93% of the roads classified correctly, this method gave better results in regard to the global F1 score than a baseline model classifying all the roads as artificial. However, the model classifies 4.2% of the roads in the wrong class and has difficulties performing new zones. To ensure the quality of the swissTLM3D product, we advise to first perform a classification with the algorithm, then to check roads with a low class index or a change in surface type compared to the previous version years. It could represent a huge time saver for the operators who currently classify and check a second time all the roads. Despite our investigations, we could not find the cause of the gap between the metrics for the training and the inference-only zone. Further investigation is needed. The next step for this project would be to extend the algorithm to paths of 1 to 2 m wide. The natural roads of 3 m are mostly made of gravel, which strongly resembles asphalt, while natural paths are mostly made of dirt and can grow grass. Therefore, when mixing the two road width classes in one model, the natural roads of 3 m could be too difficult to distinguish from artificial roads and end up neglected. 7. References \u00b6 Office f\u00e9d\u00e9ral de la statistique. Longueur des routes en 2020 | Office f\u00e9d\u00e9ral de la statistique. https://www.bfs.admin.ch/news/fr/2020-0273, November 2020. \u21a9 swisstopo. swissTLM3D. https://www.swisstopo.admin.ch/de/geodata/landscape/tlm3d.html. \u21a9 \u21a9 Lushan Cheng, Xu Zhang, and Jie Shen. Road surface condition classification using deep learning. Journal of Visual Communication and Image Representation , 64:102638, October 2019. doi:10.1016/j.jvcir.2019.102638 . \u21a9 Susi Marianingsih, Fitri Utaminingrum, and Fitra Abdurrachman Bachtiar. Road Surface Types Classification Using Combination of K-Nearest Neighbor and Na\u00efve Bayes Based on GLCM. International Journal of Advanced Software Computer Application , 11(2):15\u201327, 2019. \u21a9 Marcus Nolte, Nikita Kister, and Markus Maurer. Assessment of Deep Convolutional Neural Networks for Road Surface Classification. In 2018 21st International Conference on Intelligent Transportation Systems (ITSC) , 381\u2013386. Maui, HI, November 2018. IEEE. doi:10.1109/ITSC.2018.8569396 . \u21a9 Viktor Slavkovikj, Steven Verstockt, Wesley De Neve, Sofie Van Hoecke, and Rik Van De Walle. Image-Based Road Type Classification. In 2014 22nd International Conference on Pattern Recognition , 2359\u20132364. Stockholm, August 2014. IEEE. doi:10.1109/ICPR.2014.409 . \u21a9 Mohammad Mansourmoghaddam, Hamid Reza Ghafarian Malamiri, Fahime Arabi Aliabad, Mehdi Fallah Tafti, Mohamadreza Haghani, and Saeed Shojaei. The Separation of the Unpaved Roads and Prioritization of Paving These Roads Using UAV Images. Air, Soil and Water Research , 15:117862212210862, January 2022. doi:10.1177/11786221221086285 . \u21a9 Hailing Zhou, Hui Kong, Lei Wei, Douglas Creighton, and Saeid Nahavandi. On Detecting Road Regions in a Single UAV Image. IEEE Transactions on Intelligent Transportation Systems , 18(7):1713\u20131722, July 2017. doi:10.1109/TITS.2016.2622280 . \u21a9 swisstopo. SWISSIMAGE RS. https://www.swisstopo.admin.ch/fr/geodata/images/ortho/swissimage-rs.html. \u21a9 TiTiler. https://developmentseed.org/titiler/. \u21a9 Vincent Sarago, Sean Harkins, and Drew Bollinger. Developmentseed / mosaicjson-spec. https://github.com/developmentseed/mosaicjson-spec, 2021. \u21a9 Yongquan Zhao and Zhe Zhu. ASI: An artificial surface Index for Landsat 8 imagery. International Journal of Applied Earth Observation and Geoinformation , 107:102703, March 2022. doi:10.1016/j.jag.2022.102703 . \u21a9 Ronald C. Estoque and Yuji Murayama. Classification and change detection of built-up lands from Landsat-7 ETM+ and Landsat-8 OLI/TIRS imageries: A comparative assessment of various spectral indices. Ecological Indicators , 56:205\u2013217, September 2015. doi:10.1016/j.ecolind.2015.03.037 . \u21a9 \u21a9 Swiss Territorial Data Lab. Object detector. February 2023. URL: https://github.com/swiss-territorial-data-lab/object-detector . \u21a9 Sagi Eppel. Classifying a specific image region using convolutional nets with an ROI mask as input. December 2018. arXiv:1812.00291 . \u21a9","title":"Classification of road surfaces"},{"location":"PROJ-ROADSURF/#classification-of-road-surfaces","text":"Gwena\u00eblle Salamin (swisstopo), Cl\u00e9mence Herny (Exolabs), Roxane Pott (swisstopo), Alessandro Cerioni (\u00c9tat de Gen\u00e8ve) Proposed by the Federal Office of Topography swisstopo - PROJ-ROADSURF August 2022 to March 2023 - Published on August 28, 2023 All scripts are available on GitHub: https://github.com/swiss-territorial-data-lab/proj-roadsurf Abstract : The Swiss road network extends over 83\u2019274 km. Information about the type of road surface is useful not only for the Swiss Federal Roads Office and engineering companies, but also for cyclists and hikers. Currently, the data creation and update is entirely done manually at the Swiss Federal Office of Topography. This is a time-consuming and methodical task, potentially suitable to automation by data science methods. The goal of this project is classifying Swiss roads according to their surface type, natural or artificial. We first searched for statistical differences between these two classes, in order to then perform supervised classification based on machine-learning methods. As we could not find any discriminant feature, we used deep learning methods. In terms of balanced F1 score, we obtained a global score of 0.74 over the training, validation and test area, 0.56 over the inference-only area.","title":"Classification of road surfaces"},{"location":"PROJ-ROADSURF/#1-introduction","text":"The Swiss road network extends over 83'274 km 1 . Not only cyclists and hikers can be interested in knowing whether a given road section is covered by a natural or an artificial surface, but also the Swiss Federal Roads Office, which is in charge of road maintenance, and engineering companies. This information is found within the swissTLM3D 2 dataset, the large-scale topographic model of Switzerland produced by the Federal Office of Topography (swisstopo). Keeping the swissTLM3D dataset up to date is a time-consuming work that has to be done methodically. Operators draw and georeference new elements and fill in their attributes based on the visual interpretation of stereoscopic aerial images. The update of existing elements also follows this manual approach. Data science can help by autmatizing this time-consuming and systematic tasks. So far, the majority of data science studies on the identification of the road surface type, in particular those based on artificial intelligence, have been conducted in the context of improving the driving and security of autonomous vehicles 3 4 5 6 . These works rely on images shot by cameras mounted at the front of the moving vehicle itself. To our knowledge, only one study, carried out by Mansourmoghaddam et al. (2022) 7 , proposed a method based on object-based classification from aerial imagery, which could successfully tell artificial roads from natural ones. Another possible approach is to use spectral indices, as done by Zhao & Zhu (2022) 8 working on the distinction between artificial surfaces and bare land. However, their method is not specifically designed for road surfaces. The goal of this project was to determine whether the road cover is artificial or natural with the development of data science tools. For this first test, only the roads of the class \"3m Strasse\" are considered. Figure 1: Overview of the workflow for this project. As the location of roads was known, we faced a problem of supervised classification. Two approaches were tested to address it: machine learning (ML) and deep learning (DL). Both approaches used the same input data, aerial images and vector road location.","title":"1. Introduction"},{"location":"PROJ-ROADSURF/#2-data","text":"As input data, this project used two datasets produced by the Federal Office of Topography: swissTLM3D and SWISSIMAGE RS. We worked with data for the year 2018, for which the images and ground truth, i.e. the manually vectorized and classified roads, are available for the area of interest (AOI). Coordinates are expressed in the EPSG:2056 reference system.","title":"2. Data"},{"location":"PROJ-ROADSURF/#21-area-of-interest","text":"Figure 2: Delimitation of the area of interest with the tile numbers of the 1:25'000 Swiss national map. The area of interest (AOI) defined for this study was represented by the tiles 1168, 1188, 1208 and 1228 of the Swiss national map at a scale of 1:25'000. This zone covers an area of 840 km 2 and was chosen because of its representativeness of the Swiss territory.","title":"2.1. Area of interest"},{"location":"PROJ-ROADSURF/#22-swisstlm3d","text":"The swissTLM3D 2 dataset is a large-scale topographic model of Switzerland. It contains geospatial data necessary o the national map, such as roads, buildings and land cover. Periodical updates rely on the manual work of specialized operators. They interpret stereoscopic images and fill in attributes with the help of some additional information, like cadastral surveys and terrestrial images. The specification of aerial imagery is similar to the SWISSIMAGE RS product. The road layer contains lines with the identifier, the structure (none, bridge, tunnel, etc.), the object type (highways, 8m roads, 1 m paths, etc.) and the surface type as attributes. The two possible classes of the surface type are defined in the metadata: artificial (German: Hart) and natural (Natur). The artificial class contains surfaces of hard artificial materials like asphalt, concrete or slabs. The natural class contains roads with a surface of natural materials like gravel or dirt, and untreated surfaces. In this project, it was decided to test the classification for the type \"3m Strasse\" (3 m roads). This class encompasses roads that are between 2.81 m and 4.20 m wide. Within this subset, 6486 roads have an artificial surface and 289 a natural one. The dataset is heavily unbalanced toward the artificial roads. In addition, the swissTLM3D dataset was used to identify the forests. Indeed, they prevent us from observing roads from aerial images; hence those roads cannot be used in our study. As no layer in the swissTLM3D is specifically devoted to forested areas, they were deduced from the land cover classes. A filter was applied to only keep forests (\"Wald\") and open forests (\"Wald offen\"). Over the AOI, all the roads in quarries have a natural surface. We used our own layer from the project on the detection of mineral extraction sites to know their location. However, it is possible to use the information on the area of use from the swissTLM3D dataset which has a class on gravel quarries and one on stone quarries.","title":"2.2. swissTLM3D"},{"location":"PROJ-ROADSURF/#23-swissimage-rs","text":"The product SWISSIMAGE RS 9 contains aerial images of Switzerland composed by four bands: near-infrared (NIR), red (R), green (G) and blue (B). The ground resolution equals 0.10 m over the area of interest, except in some high altitude regions or regions with complex topography, where a resolution of 0.25 m is deemed sufficient. The standard deviation is +/- 0.15 m (1 sigma) for a ground resolution of 0.10 m and +/- 0.25 m (1 sigma) for a ground resolution of 0.25 m, +/- 3-5 m (1 sigma). The dataset is composed of a collection of 16-bit encoded GeoTIFF orthorectified images. The overlap between images varies, but stays always present.","title":"2.3. SWISSIMAGE RS"},{"location":"PROJ-ROADSURF/#3-preprocessing","text":"Both the swissTLM3D and SWISSIMAGE RS dataset were processed to be suitable for the algorithms we wanted to develop. This was achieved with two procedures: the generation of the road domain and the creation of a raster mosaic.","title":"3. Preprocessing"},{"location":"PROJ-ROADSURF/#31-generation-of-the-road-domain","text":"The swissTLM3D contains a vector layer representing every road section as a 3D line with some attached attributes. As a first test, the beneficiaries requested us to perform the analysis only on roads of the type \"3m Strasse\", i.e the roads wider than 2.81 m and thinner than 4.20 m. The engineered structures were excluded based on the attribute \"KUNSTBAUTE\". Only bridges and road sections without structures were kept. Data preparation differs slightly between the two performed analyses, machine and deep learning. Results for both approaches are shown here below. Figure 3: Resulting labels (left) from the initial TLM lines (right) in the case of the machine learning. Figure 4: Resulting labels (left) from the initial TLM lines (right) in the case of deep learning. For the machine learning analysis, only the 3m roads were kept (figure 3). For the deep learning analysis, we judged safer to keep all the visible roads (figure 4). Therefore, the neighboring roads were also considered. We made the hypothesis that we would obtain better results by training the model on all the visible roads, rather than on the 3m ones only. Still, the focus on \"3m Strasse\" class was enforced through the selection of raster tiles: only those tiles containing the specific class were used as input data. Road geometries, originally linear, were transformed into polygons by adding a buffer with a flat cap style. This procedure generated unwanted overlapping areas in the neighborhood of the intersection points between contiguous road sections. Such artifacts were handled differently depending on the road types: in the case of roads with different widths, the zone of the overlap inherited the class of the widest road section among the intersecting ones. in the case of roads with the same width, in the case of the machine learning analysis, overlapping parts were discarded; in the case of the deep learning analysis, it was supposed that leaving the overlapping parts would produce more understandable labels for the algorithm than suppressing the overlap. Once that the polygons were generated, sections hidden by a forest canopy were excluded. A buffer of 2 m was also added around forests as the canopy was often seen to be extending beyond the forest delimitation as recorded in the swissTLM3D dataset. We considered adding some information about the altitude of the length of the roads to the labels. Natural and artificial roads share pretty much the same distribution in terms of altitude. For the length, the longest roads all had an artificial surface. However, the experts could not tell us if it was the case for all Switzerland or a coincidence on our AOI. For the deep learning analysis, we tried to improve the overlap between labels and images by taking cadastral data into account. A larger buffer was used on the lines for the TLM. Then, only the parts of the buffer intersecting the road surfaces from cadastral surveying were kept. As described in the deep learning analysis section , we tested the labels straight out of the TLM and the ones augmented by the cadastral surveying. We also tried to merge the labels by width type or by surface type. After the pre-processing step described here above, for the machine learning analysis, 2'781 road sections were obtained, including 110 natural ones; for the deep learning analysis, 12'208 road sections were obtained, including 3078 natural ones. Let us remind that there were many more roads labeled in the second case as we considered all the visible roads. Especially for natural roads, the vast majority did not belong to the class of interest, but rather to the \"1m Weg\" and \"2m Weg\" classes.","title":"3.1. Generation of the Road Domain"},{"location":"PROJ-ROADSURF/#32-raster-mosaic-generation","text":"As said in the description of SWISSIMAGE RS , a large overlap between images is present in the dataset. To remove this overlap, a mosaic was created. Instead of merging all the images into one, we decided to set up a XYZ raster tile service, allowing us to work at different resolutions. The first step consists in reprojecting images in the EPSG:3857 projection, compliant with standard tile map services . Then, to save memory and disk space, images were converted from 16 to 8 bits. Besides, normalization was performed to optimize the usage of the available dynamic range. Finally, images were exported to the Cloud-Optimized GeoTIFF (COG) format. COG files can then be loaded by the TiTiler application, an Open Source dynamic tile server application 10 . The MosaicJSON specification was used to store image metadata 11 . Zoom levels were bound between 17 and 20, corresponding to resolutions between 1.20 m and 0.15 m.","title":"3.2. Raster Mosaic Generation"},{"location":"PROJ-ROADSURF/#4-machine-learning-analysis","text":"","title":"4. Machine Learning Analysis"},{"location":"PROJ-ROADSURF/#41-methodology","text":"Before delving into machine learning, we performed some exploratory data analysis, aiming at checking whether already existing features were discriminant enough to tell natural roads from artificial ones. Additional predictive features were also generated, based on ratios between pixel values in different bands (G/R, B/R, NIR/R, G/B, G/NIR, B/NIR); one spectral index; per-band statistics (mean, median, minimum, maximum, standard deviation). The machine learning analysis was performed only on the two middle tiles of the AOI. The most promising spectral index we found in the literature is the Artificial Surface Index (ASI) defined by Zhao & Zhu (2022) 12 . Unfortunately, the computation of the ASI requires the shortwave infrared (SWIR) band which is not available in the SWISSIMAGE RS data. The SWIR band can be available in satellite imagery (e.g.: Landsat 8, Sentinel 2), yet spatial resolution (20-30 m/px) is not enough for the problem at hand. Instead, the VgNIR-BI index 13 could be computed in our case, since it combines the green and NIR bands: \\[\\begin{align} \\ \\mbox{VgNIR-BI} = {\\rho_{green} - \\rho_{NIR} \\over \\rho_{green} + \\rho_{NIR}} \\ \\end{align}\\] where \u03c1 stands for the atmospherically corrected surface reflectance values of the band. In our case, no atmospheric correction was applied, because we dealt with aerial imagery instead of satellite imagery. Boxplots were generated to visualize the distribution of the aforementioned predictive features. Principal component analysis (PCA) were performed, too. The group of values passed to the PCA were the following: - pixel values: Each pixel displays 11 attributes corresponding to (1) its values on the different bands (R, G, B, NIR), (2) the ratio between bands (G/R, B/R, NIR/R, G/B, G/NIR, B/NIR), and (3) the VgNIR-BI spectral index 13 . - summary statistics: Each road has 5 attributes for each band: the mean, the median, the minimum (min), the maximum (max), and the standard deviation (std). Let us note that: these two analyses were carried out on a curated selection of input data, which was ought to maximize the separation between natural and artificial roads. The road sections were filtered by pixel number and margin of error on their mean to avoid small or crowded road sections. Were the results promising, the analysis would have been carried out on the entire dataset. We confirmed that results were not biased by performing each analysis on the entire dataset and a balanced subset. We also confirmed that results were stable with respect to the chosen zoom level.","title":"4.1. Methodology"},{"location":"PROJ-ROADSURF/#42-results","text":"In order not to make the presentation too cumbersome, here we only show results produced at zoom level 18, on the entire dataset, and considering road sections corresponding to the following criteria: covering at least 10 pixels; enjoying a margin of error (MOE) on the mean below 12.5, computed with a coefficient level of 0.95. Figure 5: Boxplots of the statistical distribution of pixel values on each band for each surface type. Each graph represents a band and each boxplot a surface type. We can see on the figure 5 that both the median and the upper quartile are systematically higher for natural than for artificial roads across all the bands, meaning the natural roads have brighter parts. Unfortunately, we have that pixel value statistics do not allow a sharp distinction between the two classes, as the lower quartile are very close. Figure 6: Boxplots of the pixel distribution on the VgNIR-BI index and the ratios between bands. Each graph represents a ratio or the index and each boxplot a surface type. Figure 6bis: Boxplots of the pixel distribution on the ratios between bands. Each graph represents a ratio and each boxplot a surface type. The ratios between bands and the VgNIR-BI present similar values for the artificial and natural roads, allowing no distinction between the classes. Figure 7: Boxplots of the distribution for the road summary statistics on the blue band. Each graph represents a statistic and each boxplot a type of road surface. Boxplots produced with the summary statistics computed per band and per road section lead to similar conclusions. Natural roads tend to be lighter than artificial ones. However, the difference is not strong enough to affect the lower quartiles and allow a sharp distinction between classes. Figure 8: PCA of the pixels based on their value on each band. Figure 9: PCA of the roads based on their statistics on the blue band. The figures 8 and 9 present respectively the results of the PCA on the pixel values and on the statistics over road sections. Once more, we have to acknowledge that, unfortunately, artificial and natural roads cannot be separated.","title":"4.2. Results"},{"location":"PROJ-ROADSURF/#43-discussion","text":"Although boxplots reveal that some natural roads can be brighter than artificial roads, statistical indicators overlap in such a way that no sharp distinction between the two classes can be drawn. The PCA confirms such an unfortunate finding. Those results are not surprising. As a matter of fact, natural roads which are found in the \"3m Strasse\" type are mainly made by gravel or similar materials which, color-wise, make them very similar to artificial roads.","title":"4.3. Discussion"},{"location":"PROJ-ROADSURF/#5-deep-learning-analysis","text":"","title":"5. Deep Learning Analysis"},{"location":"PROJ-ROADSURF/#51-methodology","text":"To perform the detection and classification of roads, the object detector (OD) framework developed by the STDL 14 was used. It is described in details in the dedicated page . The two central parts of the AOI constitute the training zone, i.e. the zone for the training, validation and test datasets. The two exterior parts constitute the inference-only zone, i.e. for the \"other\" dataset, to test the trained model on an entirely new zone. To assess the predictions, a script was written, final_metrics.py instead of using the one directly from the STDL's OD. We decided to take advantage that: 1. Predictions are not exclusive between classes. Every road section was detected several times with predictions of different class overlapping. 2. The delimitation of the roads are already known. Therefore, rather than choosing one correct prediction, we aggregated the predictions in a natural and an artificial index over each label. Those indices were defined as follows: \\[\\begin{align} \\ \\mbox{index}_{class} = \\frac{\\sum_{i=1}^{n} (A_{\\%,i} \\cdot \\mbox{score}_{class,i})}{\\sum_{i=1}^{n} A_{\\%,i}} \\ \\end{align}\\] where n is the number of predictions belonging to the class, \\(A_{\\%, i}\\) is the percentage of overlapping area between the label and the prediction, \\(\\mbox{score}_{class,i}\\) is its confidence score. \\[\\begin{align} \\ \\text{final class} = \\begin{cases} \\mbox{artificial} \\quad \\mbox{ if } \\quad \\mbox{index}_{artificial} \\gt \\mbox{index}_{natural}\\\\ \\mbox{natural} \\quad \\mbox{ if } \\quad \\mbox{index}_{artificial} \\lt \\mbox{index}_{natural} \\\\ \\mbox{undetected} \\quad \\text{ if } \\quad \\mbox{index}_{artificial} = 0 \\; \\text{ and } \\; \\mbox{index}_{natural} = 0 \\\\ \\mbox{undetermined} \\quad \\text{ if } \\quad \\mbox{index}_{artificial} = \\mbox{index}_{natural} \\; \\text{ and }\\; \\mbox{index}_{artificial} \\neq 0\\\\ \\end{cases} \\ \\end{align}\\] The largest index indicates the right class as better predictions are supporting it. Once every road has an attributed class, the result was evaluated in terms of recall, precision and balanced F1 score. \\[\\begin{align} \\ P_{class} = \\frac{TP_{class}}{TP_{class}+FP_{class}} \\text{ and } P = \\frac{P_{natural} + P_{artificial}}{2} \\ \\end{align}\\] \\[\\begin{align} \\ R_{class} = \\frac{TP_{class}}{TP_{class}+FN_{class}} \\text{ and } R = \\frac{R_{natural} + R_{artificial}}{2} \\ \\end{align}\\] \\[\\begin{align} \\ F1\\text{ }score = \\frac{2PR}{P + R} \\ \\end{align}\\] where \\(FN_{class}\\) is the number of roads that are not detected or wrongly assigned to the other class, \\(FP_{class}\\) is the number of roads from the other class wrongly attributed to the considered class, \\(P_{class}\\) is the precision, i.e. the percentage of correct roads in the detected class, \\(R_{class}\\) is the recall, i.e. the percentage of correctly found and classified roads from a class, \\(TP_{class}\\) is the number of roads correctly found in the class. The predictions are not necessarily all taken into account. They are filtered based on their confidence score. Thresholds were tested over the balanced F1 score of the validation dataset. The current dataset exhibits a very strong class imbalance. Therefore, we decided to use balanced metrics, giving the same weight to both classes. The balanced F1 score was chosen as the determining criterion between the different tested models. As it gives equal weight to both classes, the quality of the classification for the natural road was well taken into consideration. However, we have to keep in mind that we gave great importance to this class compared to its number of individuals. A great risk exists that the model would be biased toward artificial roads, because of the imbalance between classes. Therefore, we decided on a baseline model (BLM) where all the roads in the training zone are classified as artificial. Its metrics are the following: Artificial Natural Global Precision 0.97 0 0.49 Recall 1 0 0.5 F1 score 0.98 0 0.49 Table 1: Metrics for the BLM with all the roads classified as artificial The trained models should improve the global F1 score of 0.49 to be considered as an improvement. Finally, we wanted to know if the artificial and natural index could constitute a confidence score for their respective classes. The reliability diagram has been plotted to visualize the accuracy of the classification at different levels of those indices. Figure 10: Listing of the various tests carried out. To achieve the best possible results, several input parameters and files for the model training were tested. 1. We tried to improve the quality of the labels by integrating data from cadastral surveying and by merging the roads based on their cover, on their type, or not at all. 2. We trained the model with different zoom level images, from 17 to 20. 3. The influence of different band combinations on the model performance was investigated: true colors (RGB) and false colors (NirRG). For each test, the best configuration was chosen based on the global balanced F1 score. This method supposes that the best choice for one parameter did not depend on the others.","title":"5.1. Methodology"},{"location":"PROJ-ROADSURF/#52-results","text":"When testing different procedures to create the labels, using only the TLM and excluding the data from the cadastral survey gave the best metrics. Besides, cutting the label corresponding to the road sections and not merging them by road type or surface gave better metrics. Increasing the zoom level improved the balanced F1 score. Using the bands RGB and RG with NIR gave very similar results and an equal F1 score. Therefore, the best model is based on labels deduced from the TLM and using the RGB bands at a zoom level 20. Artificial Natural Global Precision 0.99 0.74 0.87 Recall 0.97 0.74 0.86 F1 score (1) 0.98 0.74 0.86 F1 score for the BLM (2) 0.98 0 0.49 Improvement: (1)-(2) 0 0.74 0.32 Table 2: metrics for the best model over the training, test and validation area. The F1 score for the natural roads and the global one outperformed the BLM. The per-class F1 scores has been judged as satisfying by the beneficiaries. Artificial Natural Global Precision 0.98 0.22 0.60 Recall 0.95 0.26 0.61 F1 score (1) 0.96 0.24 0.60 F1 score for the BLM (2) 0.98 0 0.49 Improvement: (1)-(2) -0.02 0.24 0.11 Table 3: metrics for the best model over the inference-only area. Those metrics are worse than the ones obtained over the training area. The global F1 score is still higher than for the BLM. However, the natural F1 score is not high enough. Figure 11: Absolute and relative repartition of the roads in the inference-only zone. 93.2% of the roads are correctly classified, 4.2% are in the wrong class and 2.6% are undetected or undetermined. Nearly half of the natural roads are either undetected or in the wrong class, but as they represent a tiny proportion of the dataset, they impact little the accuracy. In the training zone, only 2% of the roads are in the wrong class and 1.7% are undetected or undetermined. Figure 12: Reliability curves for the training and the inference-only zone. The artificial index can be used as confidence score for the artificial roads. The natural index can be used as confidence score for the natural ones. Indeed, the accuracy of the results for each class increases with their value.","title":"5.2. Results"},{"location":"PROJ-ROADSURF/#53-discussion","text":"The F1 score obtained is 0.86 over the area to train and validate the model and 0.60 over the rest of the AOI. The difference is essentially due to the decrease in the F1 score of the natural roads, passing from 0.74 to 0.24. The first intuition is that we were facing a case of overfitting. However, the validation loss was controlled in order to stop the training on time and avoid this problem. Another possibility would be that the two zones differ significantly and that a model trained on one cannot apply on the other. Hence, we also split the tiles randomly between the training and the inference-only zone. The gap between the balanced F1 score of the training and inference-only zone passed from 0.25 to 0.19 with the same hyper-parameters. The high recall for artificial roads indicates that the model properly detects them. However, once the artificial recall is high, the high artificial precision is in this case necessarily due. As the roads have a known location, the false positives not due to a class confusion are eliminated from our assessment. Then, only the roads classified in the wrong class can affect precision. As there are not a lot of natural roads, even if they were all wrongly classified as artificial like in the BLM, the precision would still remain well at 0.97. In the current case, the precision of the trained model is 0.01 higher than the one of the BLM. The drop in the natural F1 score is due to all the roads predicted in the wrong class. As they are only a few natural roads, errors of the model affect them more heavily. The part of the misclassified road increased by 44% between the training and the inference-only zone. Meanwhile, the part of undetermined roads only increased by 1% The F1 score could maybe be further improved by focusing more strictly on the 3m roads. Indeed, we considered it would be safer to teach the algorithm to differentiate only between surfaces and not between road types, which are defined by width. Therefore, the tiles were selected because they intersected 3m roads, but then all the roads on the tiles were transformed into labels. Because of the rarity of 3m natural roads, most of the natural roads seen by the algorithm are 2m roads and those often have a surface with grass, where the 3m natural roads have a surface made only of gravel or dirt. Over the training zone, 110 natural roads are 3m ones and 1183 ones are 2 m and 1 m paths. Maybe, labelling only the 3m roads would give better results than labelling all the visible roads. We did not tune the hyperparameter used by the deep learning model once we found a satisfying enough combination. In addition, as the algorithm is based on detectron2, not everything can easily be tuned. Using an entirely new framework and tuning the loss weights would allow better handling the class imbalance. A new framework could also allow integrating an attention mask and take advantage of the known road location like recommended by Epel (2018) 15 . Using a new framework could also allow to use images with 4 bands and integrating the NIR. However, we decided here to first try the tools we already had in our team. We can say that there is a bias in the model encouraging it to predict artificial roads. However, it is still better than the BLM. Therefore, this model is adapted for its purpose.","title":"5.3. Discussion"},{"location":"PROJ-ROADSURF/#6-conclusion","text":"Keeping the swissTLM3D dataset up to date is a time consuming and methodical task. This project aimed at finding a method to automatize the determination of the road surface type (artificial vs. natural). We focused on roads belonging to the \"3m Strasse\" class and discovered that statistics stemming from pixel values are not enough discriminating to tell artificial roads from natural ones. Therefore, we decided not to attempt any supervised classification based on machine learning. Instead, deep learning methods are performed. With 93% of the roads classified correctly, this method gave better results in regard to the global F1 score than a baseline model classifying all the roads as artificial. However, the model classifies 4.2% of the roads in the wrong class and has difficulties performing new zones. To ensure the quality of the swissTLM3D product, we advise to first perform a classification with the algorithm, then to check roads with a low class index or a change in surface type compared to the previous version years. It could represent a huge time saver for the operators who currently classify and check a second time all the roads. Despite our investigations, we could not find the cause of the gap between the metrics for the training and the inference-only zone. Further investigation is needed. The next step for this project would be to extend the algorithm to paths of 1 to 2 m wide. The natural roads of 3 m are mostly made of gravel, which strongly resembles asphalt, while natural paths are mostly made of dirt and can grow grass. Therefore, when mixing the two road width classes in one model, the natural roads of 3 m could be too difficult to distinguish from artificial roads and end up neglected.","title":"6. Conclusion"},{"location":"PROJ-ROADSURF/#7-references","text":"Office f\u00e9d\u00e9ral de la statistique. Longueur des routes en 2020 | Office f\u00e9d\u00e9ral de la statistique. https://www.bfs.admin.ch/news/fr/2020-0273, November 2020. \u21a9 swisstopo. swissTLM3D. https://www.swisstopo.admin.ch/de/geodata/landscape/tlm3d.html. \u21a9 \u21a9 Lushan Cheng, Xu Zhang, and Jie Shen. Road surface condition classification using deep learning. Journal of Visual Communication and Image Representation , 64:102638, October 2019. doi:10.1016/j.jvcir.2019.102638 . \u21a9 Susi Marianingsih, Fitri Utaminingrum, and Fitra Abdurrachman Bachtiar. Road Surface Types Classification Using Combination of K-Nearest Neighbor and Na\u00efve Bayes Based on GLCM. International Journal of Advanced Software Computer Application , 11(2):15\u201327, 2019. \u21a9 Marcus Nolte, Nikita Kister, and Markus Maurer. Assessment of Deep Convolutional Neural Networks for Road Surface Classification. In 2018 21st International Conference on Intelligent Transportation Systems (ITSC) , 381\u2013386. Maui, HI, November 2018. IEEE. doi:10.1109/ITSC.2018.8569396 . \u21a9 Viktor Slavkovikj, Steven Verstockt, Wesley De Neve, Sofie Van Hoecke, and Rik Van De Walle. Image-Based Road Type Classification. In 2014 22nd International Conference on Pattern Recognition , 2359\u20132364. Stockholm, August 2014. IEEE. doi:10.1109/ICPR.2014.409 . \u21a9 Mohammad Mansourmoghaddam, Hamid Reza Ghafarian Malamiri, Fahime Arabi Aliabad, Mehdi Fallah Tafti, Mohamadreza Haghani, and Saeed Shojaei. The Separation of the Unpaved Roads and Prioritization of Paving These Roads Using UAV Images. Air, Soil and Water Research , 15:117862212210862, January 2022. doi:10.1177/11786221221086285 . \u21a9 Hailing Zhou, Hui Kong, Lei Wei, Douglas Creighton, and Saeid Nahavandi. On Detecting Road Regions in a Single UAV Image. IEEE Transactions on Intelligent Transportation Systems , 18(7):1713\u20131722, July 2017. doi:10.1109/TITS.2016.2622280 . \u21a9 swisstopo. SWISSIMAGE RS. https://www.swisstopo.admin.ch/fr/geodata/images/ortho/swissimage-rs.html. \u21a9 TiTiler. https://developmentseed.org/titiler/. \u21a9 Vincent Sarago, Sean Harkins, and Drew Bollinger. Developmentseed / mosaicjson-spec. https://github.com/developmentseed/mosaicjson-spec, 2021. \u21a9 Yongquan Zhao and Zhe Zhu. ASI: An artificial surface Index for Landsat 8 imagery. International Journal of Applied Earth Observation and Geoinformation , 107:102703, March 2022. doi:10.1016/j.jag.2022.102703 . \u21a9 Ronald C. Estoque and Yuji Murayama. Classification and change detection of built-up lands from Landsat-7 ETM+ and Landsat-8 OLI/TIRS imageries: A comparative assessment of various spectral indices. Ecological Indicators , 56:205\u2013217, September 2015. doi:10.1016/j.ecolind.2015.03.037 . \u21a9 \u21a9 Swiss Territorial Data Lab. Object detector. February 2023. URL: https://github.com/swiss-territorial-data-lab/object-detector . \u21a9 Sagi Eppel. Classifying a specific image region using convolutional nets with an ROI mask as input. December 2018. arXiv:1812.00291 . \u21a9","title":"7. References"},{"location":"PROJ-TGLN/","text":"Updating the \u00abCultivable Area\u00bb Layer of the Agricultural Office, Canton of Thurgau \u00b6 Adrian Meyer (FHNW) Contributions to Background & Agricultural Law: Pascal Salath\u00e9 (FHNW) Proposed by the Canton of Thurgau - PROJ-TGOBJ March 2021 to June 2021 - Published on July 7, 2021 Abstract : The Cultivable agricultural area layer (\"LN, Landwirtschaftliche Nutzfl\u00e4che\") is a GIS vector product maintained by the cantonal agricultural offices and serves as the key calculation index for the receipt of direct subsidy contributions to farms. The canton of Thurgau requested a spatial vector layer indicating locations and area consumption extent of the largest silage bale deposits intersecting with the known LN area, since areas used for silage bale storage are not eligible for subsidies. Having detections of such objects readily available greatly reduces the workload of the responsible official by directing the monitoring process to the relevant hotspots. Ultimately public economical damage can be prevented which would result from the payout of unjustified subsidy contributions. 1 Introduction \u00b6 1.1 Background \u00b6 Switzerland's direct payment system is the basis for sustainable, market-oriented agriculture. The federal government supports local farms in the form of various types of contributions and enables farming families to claim an adequate income. (cf. Art. 104 BV) In the years 2014-2017 a new agricultural policy system was introduced in Switzerland. With specialized direct payment subsidies named \u00abLandscape Quality Contributions\u00bb (\u00abLQ\u00bb, Landschaftsqualit\u00e4tsbeitr\u00e4ge in German, Contributions \u00e0 la qualit\u00e9 du paysage in French) farms and agricultural businesses can be awarded for complying with measures that aim at increasing biodiversity and maintaining extensively cultivated open grasslands. Subsidies are calculated by area and the agricultural offices of the respective cantonal administration have to constantly monitor the landscape status as well as the compliance of the business operations in order to approve the requested amounts. Only certain land usage profiles are eligible for subsidies payment. According to Art. 104 \u00a71 BV, the agricultural sector, for its part, has to make a substantial decisive contribution to: Secure the supply of the population with goods and aliments. Preserve of the natural foundations of life and maintain the cultural landscape. Allow decentralized settlement throughout the territorial area. In order to be able to claim direct payments, farms are subject to various conditions. The Cultivable agricultural area layer (\u00abLN\u00bb, from German Landwirtschaftliche Nutzfl\u00e4che) is a GIS product maintained by the cantonal agricultural offices and serves as the key calculation index for the receipt of contributions. (cf. Art. 35 DZV). The registration and adjustment of the LN is part of the periodic update (\u00abPNF\u00bb, Periodische Nachf\u00fchrung) within the framework of the official cadastral survey (\u00abAV\u00bb, Amtliche Vermessung) and is usually carried out every 6 years (Gamma 2021). Its correct determination is of immense importance, because if the LN area derived from the cadastral survey data deviates from the actual conditions on site, incorrect contribution amounts may be paid out (swisstopo/BLW/BUWAL 2000). Farm areas that are not eligible for contributions, in particular areas that are not usable for effective agriculture such as farmyards or storage areas (e.g. for silage hay bales), are constantly changing due to the high degree of mechanization in agriculture and often fall within the perimeter of the LN. The tracking of these areas with conventional surveying such as repeated field visits or the visual interpretation of current aerial imagery proves to be very time-consuming and costly. Possible alternative approaches are searched for in the context of this use case project. Artificial neural networks based on Deep Learning (DL) have been used for automated detection and classification of image features for quite some time. Reliable detection from aerial imagery using applications of DL would enable cost-effective detection of uneligible areas and provide added value to agricultural offices in all cantons. The Swiss Territorial Data Lab (STDL) is a project of co-creation and a space of experimentation which aims to solve concrete problems of public administrations by using data science applied to geodata. These characteristics make it the perfect environment to conduct this project. Research in the agricultural domain was already lead by project's partners at Fachhochschule Nordwestschweiz (FHNW) using machine learning. Furthermore, students are regularly involved in these projects, for example to automatically define the agricultural cultivation boundaries in collaboration with the Canton of Thurgau. 1.2 Silage Bales \u00b6 Photo of wrapped and stacked silage hay bales (Source Wikimedia). One of several features of interest specifically excluded from the subsidized cultivable LN area are silage hay bales. These bales are processed and compacted fermenting grass cuttings wrapped in plastic foil. They often roughly measure 1 - 2 cubic meters in volume and are weighed in at around 900kg. They are mainly used as animal food during winter when no fresh hay is available. Farmers are encouraged to compactly (\u00abdiscretely\u00bb) stack them in regular piles at few locations rather than keeping them in scattered collections consuming large areas. The agricultural office can assess the silage bale stack locations and sizes in order to approve the application for subsidies, since areas where silage bales are stored do not count into the cultivable LN area. Farmers can specify those areas where they must not receive contributions for in a specialized webGIS system by digitizing them manually with the attribute \u00abcode 898\u00bb. For validation purposes specialists are manually evaluating aerial imagery and conduct field visits. The process of aerial imagery evaluation is arduous and monotonous and could therefore greatly profit from automatization. The agricultural office of the Canton of Thurgau (LWA) requested a spatial vector layer indicating locations and area consumption extent of the largest silage bale deposits intersecting with the known LN area. The delivered dataset should be compatible with their webGIS workflow and should be made available with new aquisitions of aerial imaging campaigns. Having such detections readily available would reduce the workload of the responsible official by directing the monitoring to the relevant hotspots. Ultimately public economical damage can be prevented which would result from the payout of unjustified subsidy contributions. This project therefore aims at the development of an efficient silage bale detection algorithm which offers a highly accurate performance and can be quickly deployed over imaged areas as large as the complete canton of Thurgau (approx. 992 km\u00b2). 2 Method \u00b6 2.1 Overview \u00b6 Sileage bale stacks are clearly visible on the newest 2019 layer of the 10cm Swissimage orthophoto provided by Swisstopo. A few hundred of these stacks were manually digitized as vector polygons with QGIS in a semi-automatic approach. Following the structure of the STDL Object Detection Framework, an Area of Interest (AoI) was defined (most of the cantonal area of Thurgau) and tiled into smaller quadratic images (tiles). Those tiles containing an intersecting overlap with an annotation were subsequently fed to a neural object detection network for training in a process known as Transfer Learning. A random portion of the dataset was kept aside from the training process in order to allow an unbiased evaluation of the detector performance. Multiple iterations were performed in order to find out near-optimal input parameters such as tile size, zoom level, or network- and training-specific variables termed \u00abhyperparameters\u00bb. All detector models were evaluated for their prediction perforwmance on the reserved test dataset. The best model was chosen by means of its optimal overall performance. This model was used in turn to perform a prediction operation (\u00abInference\u00bb) on all tiles comprising the AoI \u2013 thereby detecting silage hay bale stacks over the whole canton of Thurgau. Postprocessing included filtering the resulting polygons by a high confidence score threshold provided by the detector for each detection in order to reduce the risk of false positive results (misidentification of an object as a silage bale stack). Subsequently adjacent polygons on seperate tiles were merged by standard vector operations. A spatial intersection with the known LN layer was performed to identify the specific areas occupied by silage stacks which should not receive contributions but potentially did in last years rolling payout. Only stacks covering more than 50m2 of LN area are considered \u00abrelevant\u00bb for the final delivery which translates to the equivalent of max. 10 CHF subsidy payment difference. For completeness, all LN-intersecting polygons of detections covering at least 20m2 are included in the finaly delivery. Filtering can be undertaken easily on the end user side by sorting the features with along a precalculated area column. 2.2 Aerial Imagery \u00b6 The prototypical implementation uses the publically available Swissimage dataset. It was last flown for Thurgau in spring 2019 and offers a maximum spatial resolution of 10cm GSD (Ground Sampling Distance) at 3 year intervals. As the direct subsidies are paid out yearly the periodicity of Swissimage in theory is insufficient for annual use. In this case the high quality imagery on the one hand can serve as a proof of concept though. On the other hand the cantons have the option to order own flight campaigns to increase the periodicity of available aerial imagery if sufficient need can shown from several relevant administrative stakeholders. For our approach aerial images need to be downloaded as small quadratic subsamples of the orthomosaic called \u00abtiles\u00bb to be used in the Deep Learning process. The used tiling grid system follows the slippy map standard with an edge length of 256 pixels and a zoom level system which is derived from a quadaratic division on a mercator-projected world map (whole world equals zoom level = 0). A zoom level = 18 in this system would roughly equal to a ground sampling distance (GSD) of 60 cm. 2.3 Labels / Annotations \u00b6 As no conducive vector dataset for silage bale locations exists in Thurgau or other sources known at this point, the annotations for this use case had to be created manually by the data scientists at STDL. A specific labeling strategy to obtain such a dataset was therefore implemented. Using Swissimage 10cm as a WMS bound basemap in QGIS, a few rural areas throughout the canton of Thurgau were selected and initially approximately 200 stacks of silage bales were manually digitized as polygons. Clearly disjunct stacks were digitized as two separate polygons. For partially visible stacks only visible parts were included. Loose collection of bales were connected into one common polygon if the distances between the single bales were not exceeding the diameter of a single bale. Ground imprints where silage bales were previously stored were not included. Also shadows on the ground were not part of the polygon. Plastic membrane rests were not included unless they seemed to cover additional bales. Most bales were of circular shape with an approximate diameter of 1.2 \u2013 1.5 m, but also smaller rectangular ones were common. Colours ranged from mostly white or green tinted over still common dark green or grey to also more exotic variants such as pink, light blue and yellow (the latter three are related to a specific cancer awareness program). Image: Example of the annotation rules. With these initial 200 annotations a preliminary detector was trained on a relatively high zoom level (18, 60cm GSD, tiling grid at about 150m) and predictions were generated over the whole cantonal area (See section \u00abTraining\u00bb for details). Subsequently, the 300 highest scoring new predictions (all above 99.5%) were checked visually in QGIS, precisely corrected and then transferred into the training dataset. Image: Example of label annotations manually drawn (left and top), as well as semiautomatically generated (right) \u2013 the pixel structure of the detector is visible in the label. All tiles containing labels were checked visually again at full zoom and missing labels were created manually. The resulting annotation dataset consists of approximately 700 silage bale stacks. Image: Positions of the Silage Bale Labels (red) within the borders of Thurgau. 2.4 Training \u00b6 Training of the model was performed with the STDL Object Detection Framework. The technology is based on a Mask RCNN architecture implemented with the High-Level API Detectron2 and the Deep Learning framework Pytorch. Parallelisation is achieved with CUDA-enabled GPUs on the High-Performance Computing cluster at the FHNW server facility in Muttenz. The Mask RCNN Backbone is formed by a ResNet-50 implementation and is accompanied by a Feature Pyramid Network (FPN). This combination of code elements results in a neural network leveraging more than 40 Mio. parameters. The dataset consists of RGB images and feature regions represented by pixel masks superimposing the imagery in the shape of the silage bale stack vectors. Training is performed iteratively by presenting subsets of the tiled dataset to modify \u00abedge weights\u00bb in the network graph. Progress is measured step by step by statistically minimizing the loss functions. Only tiles containing masks (labels) can be trained. Two smaller subsets of all label containing tiles are reserved from the training set (TRN), so a total of 70% of the trainable tiles are presented to the network for loss minimization. The validation set (VAL, 15%) and the test set (TST, 15%) also contain labels but are statistically independent from the TRN set. The VAL set is used to perform recurrent evaluation during training. Training can be stopped if the loss function on the validation set has reached a minimum since after that point further training would push the model into an overfitting scenario. The TST set serves as an unbiased reserve to evaluate the detector performance on previously \u00abunseen\u00bb, but labelled data. Tiles not containing a label yet were classified into a separate class called \u00abother\u00bb (OTH). This dataset was only used for generating predictions. Image: Dataset Split \u2013 Grey tiles are only used in prediction (OTH); they do not contain any labels during training. The colourful tiles contain labels, but are scattered relatively sparsely. Green tiles are used for training the model weights (TRN); orange tiles validate the learning progress during training to avoid overfitting (VAL) and blue tiles are reserved for unbiased post-training evaluation (TST). Multiple training runs were performed not only to optimize the network-specific variables called \u00abhyper-parameters\u00bb (such as batch size, learning rate or momentum), but also to test which zoom level (spatial resolution) would yield the best results. 2.5 Prediction and Assessment \u00b6 For the TRN, VAL and TST subset, confusion matrix counts and classification metrics calculations can be performed since they offer a comparison with the digitized \u00abground truth\u00bb. For all subsets (including the rest of the canton as OTH), predictions are generated as vectors covering those areas of a tile that the detector algorithm identifies as target objects and therefore attributes a confidence score. In case of the label containing tiles, the overlap between the predictions and the labels can be checked. Is an overlap found between a label and a prediction this detection is considered a \u00abTrue Positive\u00bb (TP). If the detector missed a label entirely this label can be considered as \u00abFalse Negative\u00bb (FN). Did the detector predict a silage bale stack that was not present in the labelled data it is considered \u00abFalse Positive\u00bb (FP). On the unlabelled OTH tiles, all detections are by definition therefore considered FP. The counting of TPs, FPs and FNs on the TST subset allows the calculation of standard metrics such as precision (user accuracy), recall (producer accuracy) and F1 score (a common overall performance metric calculated as the harmonic mean of precision and recall). The counts, as well as the metrics can be plotted as function of the minimum confidence score threshold (THR) which can be set to an acceptable percentage for a certain detection task. A low threshold should generally yield fewer FN errors, while a high threshold should yield fewer FP detections. The best performing model by means of maximum F1 score was used to perform a prediction run over the entire cantonal surface area. 2.6 Post-Processing \u00b6 In order to obtain a consistent result dataset, detections need to be postprocessed. Firstly, the confidence score threshold operation is applied. Here, a comparatively high threshold can be used for this operation. \u00abMissing\u00bb the detection of a silage bale stack (FN) is not as costly for the analysis of the resulting dataset at the agricultural office as analyzing large numbers of FP detections would be. Also missing single individual silage bales is much less problematic than missing whole large stacks. These larger stacks are typically attributed with high confidence scores though and are therefore less likely to be missed. In some cases, silage bale stacks cross the tiling grid and are therefore detected on multiple images. This results in edge artifacts along the tile boundaries intersecting detections that should be unified. For this resaon adjacent detection polygons need to merged into a single polygon. This is achieved by first buffering all detections with a 1.5m radius (about the diameter of a single bale). Then all touching polygons are dissolved into a single feature. Afterwards, negative buffering with -1.5m radius is applied to restore the original boundary. This process also leads to an edge smoothing by planing the pixel step derived vector boundary into curves. Image: Example of adjacent detection polygons that need to be unified (buffer dissolved). Curve polygons contain a high number of vertex points, which is why a simplification operation can be performed afterwards. The intersection with the LN layer required a preparation of that dataset. First, the perimeters of all LN polygons in Thurgau, stemming from the cadastre, were intersected with the layer \"LN difference\". Areas which contained the attribute \"No LN\" in the difference layer were therefore removed, areas with the attribute \"LN\" or \"To be checked\" were kept or if necessary (if not yet available) added to the LN dataset. Areas excluded by farmers from the subsidy themself (so-called \"layer code 898\") were removed from the LN polygons. The silage bale detections were now intersected (clipped) with all remaining LN areas such that only those portions of the detections remained that were present within the LN perimeter. For all these leftover detection polygons, the area is calculated and added as an attribute to the polygon. With a threshold operation all silo bale stacks with an area below 20 m2 are filtered out of the dataset in order to provide only economically relevant detections. 3 Results \u00b6 3.1 Metrics and Evaluation \u00b6 Figure: Performance of serveral detectors depending on zoom level (ground sampling distance) as measured by their maximum F1-Score. The model trained with tiles at zoom level = 19 (every pixel approx. 30cm GSD) showed the highest performance with a maximum F1 Score of 92.3%. Increasing the resolution even further by using 15 cm/px GSD did not result in a gain in overall detection performance while drastically increasing storage needs and computational load. Figure: Confusion matrix counts on the TST dataset in dependency of the minimum confidence score threshold. The detector model is performing very well on the independent TST dataset detecting the largest portion of silage bale stacks at any given confidence threshold. The number of FP reaches very low counts towards the higher end of the threshold percentage. Figure: Performance metrics on the TST dataset as a function of the minimum confidence score threshold. Precision, Recall and F1 Score all remain on very performant values throughout the threshold range. The F1 Score plateaus above 90% performance between 5% and 93% essentially allowing to choose any given threshold value to adapt the model performance to the end user needs. For delivery of the dataset a detector was subsequently used at a threshold of 96%. At this value 809 silage bale stacks were rediscovered in the TRN, TST and VAL subset. Just 10 FP detections were found in these subsets. 97 silage bale stacks were not rediscovered (FN). Hence, the model precision (user accuracy) was set at approx. 99% and the recall (hit rate, producer accuracy) was set at approx. 89%. The applied model detected a total of 2\u2019473 additional silage bale stacks over the rest of the canton of Thurgau (FP on OTH). 3.2 Examples \u00b6 Image: Raw detections (yellow) of silage bale stacks displaying very high confidence scores. Image: Raw detections (yellow) and postprocessed detections (red) \u2013 the area occupied by these silage bale stacks does not interesect with the Cultivable land (LN, green hatched). Direct subsidies are correctly paid out in this case. 3.3 Relevant Features for Delivery \u00b6 In total, 288 silage bale stack sections are placed within the subsidized LN area and exhibit an area consumption larger than 20m\u00b2. 87 silage bale stacks consume more than 50m\u00b2, 24 stacks consume more than 100m\u00b2. One has to keep in mind that many stacks only partially intersect with the LN layer. The overlap between all detected silage bale stacks over 20m\u00b2 and the LN layer amounts to 14\u2019200m\u00b2 or an estimated damage between CHF 1'420.- and CHF 2'840.- (assuming the subsidy payout ranges between CHF 10.- and CHF 20.- per 100m\u00b2). Considering only the overlap of the 87 largest stacks with the LN layer the area consumption amounts to 7\u2019900m\u00b2 or a damage between CHF 790.- and CHF 1'580.-. Image: Undeclared silage bale stack (red and yellow) that intersects with the cultivable land layer \u00abLN\u00bb (green). Image: The left side silage bale stack (red) is only touching the LN area (green). The center bottom silage bale stack is completely undeclared within the LN area. Image: Approximately half of the center silage bale stack (red) is undeclared and situated within the LN area. Image: This farm selfdeclared almost all areas needed (blue) for silage bales (red) to be excluded from direct subsidies areas (green). Pink areas are already pre-excluded by the agricultural office. Image: The intersection between the silage bale stack (red) and the LN area (green) is so minute, that it should not be found within the delivery dataset to the agricultural office. Image: Small silage bale stacks in the very left and very right of the image (yellow) are undeclared but each detection falls below the relevance threshold. 4 Discussion \u00b6 4.1 Feedback by the Agricultural Office \u00b6 The contact person at the agricultural office, Mr. T. Froehlich describes the detections as very accurate with a very low percentage of wrong detections. As a GIS product the detections layer can be used in the standard workflow in order to cross-check base datasets or to perform updates and corrections. On an economical scale the damage from misplaced sileage bale stacks in the LN areas is not negligible but also not extremely relevant. Federal annual direct agricultural subsidies of approx. 110 Mio. CHF stand in stark contrast to the estimated economical damage of maybe approx. CHF 2'000.- that misplaced silage bales might have caused for the Canton of Thurgau in 2019. Most farmers adhere to the policies and false declaration of areas followed by sanctions is extremely rare. Silage bales are therefore not the first priority when monitoring the advancements and updates considering the LN layer. Nevertheless these new detections allow the end users at the agricultural office to direct their eyes more quickly at relevant hotspots and spare them some aspects of the long and tidious manual search that was performed in the past. 4.2 Outlook \u00b6 Silage bales are by far not the only object limiting the extent of the cultivable subsidized land. A much larger area is consumed by farm yards \u2013 heterogenous spaces around the central farm buildings. Monitoring the growth of these spaces into the LN layer would greatly diminuish the manual workload at the agricultural office. As these spaces might also be detectable by a similar approach, this project will continue to investigate the potential of the STDL Object Detection Framework now into this direction. References \u00b6 Federal Office of Topography swisstopo (2020). SWISSIMAGE 10 cm - The Digital Color Orthophotomosaic of Switzerland. https://www.swisstopo.admin.ch/en/geodata/images/ortho/swissimage10.html Girshick, R. (2015). Fast r-cnn. In Proceedings of the IEEE international conference on computer vision (pp. 1440-1448). https://openaccess.thecvf.com/content_iccv_2015/html/Girshick_Fast_R-CNN_ICCV_2015_paper.html He, K., Gkioxari, G., Doll\u00e1r, P., & Girshick, R. (2017). Mask r-cnn. In Proceedings of the IEEE international conference on computer vision (pp. 2961-2969). https://arxiv.org/abs/1703.06870 OpenStreetMap Foundation (2021). Slippy Map. https://wiki.openstreetmap.org/wiki/Slippy_Map QGIS.org (2021). QGIS Geographic Information System. QGIS Association. https://qgis.org/en/site/ Wu, Y., Kirillov, A., Massa, F., Lo, W. Y., & Girshick, R. (2019). Detectron2. https://github.com/facebookresearch/detectron2","title":"Updating the \u00abCultivable Area\u00bb Layer of the Agricultural Office, Canton of Thurgau"},{"location":"PROJ-TGLN/#updating-the-cultivable-area-layer-of-the-agricultural-office-canton-of-thurgau","text":"Adrian Meyer (FHNW) Contributions to Background & Agricultural Law: Pascal Salath\u00e9 (FHNW) Proposed by the Canton of Thurgau - PROJ-TGOBJ March 2021 to June 2021 - Published on July 7, 2021 Abstract : The Cultivable agricultural area layer (\"LN, Landwirtschaftliche Nutzfl\u00e4che\") is a GIS vector product maintained by the cantonal agricultural offices and serves as the key calculation index for the receipt of direct subsidy contributions to farms. The canton of Thurgau requested a spatial vector layer indicating locations and area consumption extent of the largest silage bale deposits intersecting with the known LN area, since areas used for silage bale storage are not eligible for subsidies. Having detections of such objects readily available greatly reduces the workload of the responsible official by directing the monitoring process to the relevant hotspots. Ultimately public economical damage can be prevented which would result from the payout of unjustified subsidy contributions.","title":"Updating the \u00abCultivable Area\u00bb Layer of the Agricultural Office, Canton of Thurgau"},{"location":"PROJ-TGLN/#1-introduction","text":"","title":"1 Introduction"},{"location":"PROJ-TGLN/#11-background","text":"Switzerland's direct payment system is the basis for sustainable, market-oriented agriculture. The federal government supports local farms in the form of various types of contributions and enables farming families to claim an adequate income. (cf. Art. 104 BV) In the years 2014-2017 a new agricultural policy system was introduced in Switzerland. With specialized direct payment subsidies named \u00abLandscape Quality Contributions\u00bb (\u00abLQ\u00bb, Landschaftsqualit\u00e4tsbeitr\u00e4ge in German, Contributions \u00e0 la qualit\u00e9 du paysage in French) farms and agricultural businesses can be awarded for complying with measures that aim at increasing biodiversity and maintaining extensively cultivated open grasslands. Subsidies are calculated by area and the agricultural offices of the respective cantonal administration have to constantly monitor the landscape status as well as the compliance of the business operations in order to approve the requested amounts. Only certain land usage profiles are eligible for subsidies payment. According to Art. 104 \u00a71 BV, the agricultural sector, for its part, has to make a substantial decisive contribution to: Secure the supply of the population with goods and aliments. Preserve of the natural foundations of life and maintain the cultural landscape. Allow decentralized settlement throughout the territorial area. In order to be able to claim direct payments, farms are subject to various conditions. The Cultivable agricultural area layer (\u00abLN\u00bb, from German Landwirtschaftliche Nutzfl\u00e4che) is a GIS product maintained by the cantonal agricultural offices and serves as the key calculation index for the receipt of contributions. (cf. Art. 35 DZV). The registration and adjustment of the LN is part of the periodic update (\u00abPNF\u00bb, Periodische Nachf\u00fchrung) within the framework of the official cadastral survey (\u00abAV\u00bb, Amtliche Vermessung) and is usually carried out every 6 years (Gamma 2021). Its correct determination is of immense importance, because if the LN area derived from the cadastral survey data deviates from the actual conditions on site, incorrect contribution amounts may be paid out (swisstopo/BLW/BUWAL 2000). Farm areas that are not eligible for contributions, in particular areas that are not usable for effective agriculture such as farmyards or storage areas (e.g. for silage hay bales), are constantly changing due to the high degree of mechanization in agriculture and often fall within the perimeter of the LN. The tracking of these areas with conventional surveying such as repeated field visits or the visual interpretation of current aerial imagery proves to be very time-consuming and costly. Possible alternative approaches are searched for in the context of this use case project. Artificial neural networks based on Deep Learning (DL) have been used for automated detection and classification of image features for quite some time. Reliable detection from aerial imagery using applications of DL would enable cost-effective detection of uneligible areas and provide added value to agricultural offices in all cantons. The Swiss Territorial Data Lab (STDL) is a project of co-creation and a space of experimentation which aims to solve concrete problems of public administrations by using data science applied to geodata. These characteristics make it the perfect environment to conduct this project. Research in the agricultural domain was already lead by project's partners at Fachhochschule Nordwestschweiz (FHNW) using machine learning. Furthermore, students are regularly involved in these projects, for example to automatically define the agricultural cultivation boundaries in collaboration with the Canton of Thurgau.","title":"1.1 Background"},{"location":"PROJ-TGLN/#12-silage-bales","text":"Photo of wrapped and stacked silage hay bales (Source Wikimedia). One of several features of interest specifically excluded from the subsidized cultivable LN area are silage hay bales. These bales are processed and compacted fermenting grass cuttings wrapped in plastic foil. They often roughly measure 1 - 2 cubic meters in volume and are weighed in at around 900kg. They are mainly used as animal food during winter when no fresh hay is available. Farmers are encouraged to compactly (\u00abdiscretely\u00bb) stack them in regular piles at few locations rather than keeping them in scattered collections consuming large areas. The agricultural office can assess the silage bale stack locations and sizes in order to approve the application for subsidies, since areas where silage bales are stored do not count into the cultivable LN area. Farmers can specify those areas where they must not receive contributions for in a specialized webGIS system by digitizing them manually with the attribute \u00abcode 898\u00bb. For validation purposes specialists are manually evaluating aerial imagery and conduct field visits. The process of aerial imagery evaluation is arduous and monotonous and could therefore greatly profit from automatization. The agricultural office of the Canton of Thurgau (LWA) requested a spatial vector layer indicating locations and area consumption extent of the largest silage bale deposits intersecting with the known LN area. The delivered dataset should be compatible with their webGIS workflow and should be made available with new aquisitions of aerial imaging campaigns. Having such detections readily available would reduce the workload of the responsible official by directing the monitoring to the relevant hotspots. Ultimately public economical damage can be prevented which would result from the payout of unjustified subsidy contributions. This project therefore aims at the development of an efficient silage bale detection algorithm which offers a highly accurate performance and can be quickly deployed over imaged areas as large as the complete canton of Thurgau (approx. 992 km\u00b2).","title":"1.2 Silage Bales"},{"location":"PROJ-TGLN/#2-method","text":"","title":"2 Method"},{"location":"PROJ-TGLN/#21-overview","text":"Sileage bale stacks are clearly visible on the newest 2019 layer of the 10cm Swissimage orthophoto provided by Swisstopo. A few hundred of these stacks were manually digitized as vector polygons with QGIS in a semi-automatic approach. Following the structure of the STDL Object Detection Framework, an Area of Interest (AoI) was defined (most of the cantonal area of Thurgau) and tiled into smaller quadratic images (tiles). Those tiles containing an intersecting overlap with an annotation were subsequently fed to a neural object detection network for training in a process known as Transfer Learning. A random portion of the dataset was kept aside from the training process in order to allow an unbiased evaluation of the detector performance. Multiple iterations were performed in order to find out near-optimal input parameters such as tile size, zoom level, or network- and training-specific variables termed \u00abhyperparameters\u00bb. All detector models were evaluated for their prediction perforwmance on the reserved test dataset. The best model was chosen by means of its optimal overall performance. This model was used in turn to perform a prediction operation (\u00abInference\u00bb) on all tiles comprising the AoI \u2013 thereby detecting silage hay bale stacks over the whole canton of Thurgau. Postprocessing included filtering the resulting polygons by a high confidence score threshold provided by the detector for each detection in order to reduce the risk of false positive results (misidentification of an object as a silage bale stack). Subsequently adjacent polygons on seperate tiles were merged by standard vector operations. A spatial intersection with the known LN layer was performed to identify the specific areas occupied by silage stacks which should not receive contributions but potentially did in last years rolling payout. Only stacks covering more than 50m2 of LN area are considered \u00abrelevant\u00bb for the final delivery which translates to the equivalent of max. 10 CHF subsidy payment difference. For completeness, all LN-intersecting polygons of detections covering at least 20m2 are included in the finaly delivery. Filtering can be undertaken easily on the end user side by sorting the features with along a precalculated area column.","title":"2.1 Overview"},{"location":"PROJ-TGLN/#22-aerial-imagery","text":"The prototypical implementation uses the publically available Swissimage dataset. It was last flown for Thurgau in spring 2019 and offers a maximum spatial resolution of 10cm GSD (Ground Sampling Distance) at 3 year intervals. As the direct subsidies are paid out yearly the periodicity of Swissimage in theory is insufficient for annual use. In this case the high quality imagery on the one hand can serve as a proof of concept though. On the other hand the cantons have the option to order own flight campaigns to increase the periodicity of available aerial imagery if sufficient need can shown from several relevant administrative stakeholders. For our approach aerial images need to be downloaded as small quadratic subsamples of the orthomosaic called \u00abtiles\u00bb to be used in the Deep Learning process. The used tiling grid system follows the slippy map standard with an edge length of 256 pixels and a zoom level system which is derived from a quadaratic division on a mercator-projected world map (whole world equals zoom level = 0). A zoom level = 18 in this system would roughly equal to a ground sampling distance (GSD) of 60 cm.","title":"2.2 Aerial Imagery"},{"location":"PROJ-TGLN/#23-labels-annotations","text":"As no conducive vector dataset for silage bale locations exists in Thurgau or other sources known at this point, the annotations for this use case had to be created manually by the data scientists at STDL. A specific labeling strategy to obtain such a dataset was therefore implemented. Using Swissimage 10cm as a WMS bound basemap in QGIS, a few rural areas throughout the canton of Thurgau were selected and initially approximately 200 stacks of silage bales were manually digitized as polygons. Clearly disjunct stacks were digitized as two separate polygons. For partially visible stacks only visible parts were included. Loose collection of bales were connected into one common polygon if the distances between the single bales were not exceeding the diameter of a single bale. Ground imprints where silage bales were previously stored were not included. Also shadows on the ground were not part of the polygon. Plastic membrane rests were not included unless they seemed to cover additional bales. Most bales were of circular shape with an approximate diameter of 1.2 \u2013 1.5 m, but also smaller rectangular ones were common. Colours ranged from mostly white or green tinted over still common dark green or grey to also more exotic variants such as pink, light blue and yellow (the latter three are related to a specific cancer awareness program). Image: Example of the annotation rules. With these initial 200 annotations a preliminary detector was trained on a relatively high zoom level (18, 60cm GSD, tiling grid at about 150m) and predictions were generated over the whole cantonal area (See section \u00abTraining\u00bb for details). Subsequently, the 300 highest scoring new predictions (all above 99.5%) were checked visually in QGIS, precisely corrected and then transferred into the training dataset. Image: Example of label annotations manually drawn (left and top), as well as semiautomatically generated (right) \u2013 the pixel structure of the detector is visible in the label. All tiles containing labels were checked visually again at full zoom and missing labels were created manually. The resulting annotation dataset consists of approximately 700 silage bale stacks. Image: Positions of the Silage Bale Labels (red) within the borders of Thurgau.","title":"2.3 Labels / Annotations"},{"location":"PROJ-TGLN/#24-training","text":"Training of the model was performed with the STDL Object Detection Framework. The technology is based on a Mask RCNN architecture implemented with the High-Level API Detectron2 and the Deep Learning framework Pytorch. Parallelisation is achieved with CUDA-enabled GPUs on the High-Performance Computing cluster at the FHNW server facility in Muttenz. The Mask RCNN Backbone is formed by a ResNet-50 implementation and is accompanied by a Feature Pyramid Network (FPN). This combination of code elements results in a neural network leveraging more than 40 Mio. parameters. The dataset consists of RGB images and feature regions represented by pixel masks superimposing the imagery in the shape of the silage bale stack vectors. Training is performed iteratively by presenting subsets of the tiled dataset to modify \u00abedge weights\u00bb in the network graph. Progress is measured step by step by statistically minimizing the loss functions. Only tiles containing masks (labels) can be trained. Two smaller subsets of all label containing tiles are reserved from the training set (TRN), so a total of 70% of the trainable tiles are presented to the network for loss minimization. The validation set (VAL, 15%) and the test set (TST, 15%) also contain labels but are statistically independent from the TRN set. The VAL set is used to perform recurrent evaluation during training. Training can be stopped if the loss function on the validation set has reached a minimum since after that point further training would push the model into an overfitting scenario. The TST set serves as an unbiased reserve to evaluate the detector performance on previously \u00abunseen\u00bb, but labelled data. Tiles not containing a label yet were classified into a separate class called \u00abother\u00bb (OTH). This dataset was only used for generating predictions. Image: Dataset Split \u2013 Grey tiles are only used in prediction (OTH); they do not contain any labels during training. The colourful tiles contain labels, but are scattered relatively sparsely. Green tiles are used for training the model weights (TRN); orange tiles validate the learning progress during training to avoid overfitting (VAL) and blue tiles are reserved for unbiased post-training evaluation (TST). Multiple training runs were performed not only to optimize the network-specific variables called \u00abhyper-parameters\u00bb (such as batch size, learning rate or momentum), but also to test which zoom level (spatial resolution) would yield the best results.","title":"2.4 Training"},{"location":"PROJ-TGLN/#25-prediction-and-assessment","text":"For the TRN, VAL and TST subset, confusion matrix counts and classification metrics calculations can be performed since they offer a comparison with the digitized \u00abground truth\u00bb. For all subsets (including the rest of the canton as OTH), predictions are generated as vectors covering those areas of a tile that the detector algorithm identifies as target objects and therefore attributes a confidence score. In case of the label containing tiles, the overlap between the predictions and the labels can be checked. Is an overlap found between a label and a prediction this detection is considered a \u00abTrue Positive\u00bb (TP). If the detector missed a label entirely this label can be considered as \u00abFalse Negative\u00bb (FN). Did the detector predict a silage bale stack that was not present in the labelled data it is considered \u00abFalse Positive\u00bb (FP). On the unlabelled OTH tiles, all detections are by definition therefore considered FP. The counting of TPs, FPs and FNs on the TST subset allows the calculation of standard metrics such as precision (user accuracy), recall (producer accuracy) and F1 score (a common overall performance metric calculated as the harmonic mean of precision and recall). The counts, as well as the metrics can be plotted as function of the minimum confidence score threshold (THR) which can be set to an acceptable percentage for a certain detection task. A low threshold should generally yield fewer FN errors, while a high threshold should yield fewer FP detections. The best performing model by means of maximum F1 score was used to perform a prediction run over the entire cantonal surface area.","title":"2.5 Prediction and Assessment"},{"location":"PROJ-TGLN/#26-post-processing","text":"In order to obtain a consistent result dataset, detections need to be postprocessed. Firstly, the confidence score threshold operation is applied. Here, a comparatively high threshold can be used for this operation. \u00abMissing\u00bb the detection of a silage bale stack (FN) is not as costly for the analysis of the resulting dataset at the agricultural office as analyzing large numbers of FP detections would be. Also missing single individual silage bales is much less problematic than missing whole large stacks. These larger stacks are typically attributed with high confidence scores though and are therefore less likely to be missed. In some cases, silage bale stacks cross the tiling grid and are therefore detected on multiple images. This results in edge artifacts along the tile boundaries intersecting detections that should be unified. For this resaon adjacent detection polygons need to merged into a single polygon. This is achieved by first buffering all detections with a 1.5m radius (about the diameter of a single bale). Then all touching polygons are dissolved into a single feature. Afterwards, negative buffering with -1.5m radius is applied to restore the original boundary. This process also leads to an edge smoothing by planing the pixel step derived vector boundary into curves. Image: Example of adjacent detection polygons that need to be unified (buffer dissolved). Curve polygons contain a high number of vertex points, which is why a simplification operation can be performed afterwards. The intersection with the LN layer required a preparation of that dataset. First, the perimeters of all LN polygons in Thurgau, stemming from the cadastre, were intersected with the layer \"LN difference\". Areas which contained the attribute \"No LN\" in the difference layer were therefore removed, areas with the attribute \"LN\" or \"To be checked\" were kept or if necessary (if not yet available) added to the LN dataset. Areas excluded by farmers from the subsidy themself (so-called \"layer code 898\") were removed from the LN polygons. The silage bale detections were now intersected (clipped) with all remaining LN areas such that only those portions of the detections remained that were present within the LN perimeter. For all these leftover detection polygons, the area is calculated and added as an attribute to the polygon. With a threshold operation all silo bale stacks with an area below 20 m2 are filtered out of the dataset in order to provide only economically relevant detections.","title":"2.6 Post-Processing"},{"location":"PROJ-TGLN/#3-results","text":"","title":"3 Results"},{"location":"PROJ-TGLN/#31-metrics-and-evaluation","text":"Figure: Performance of serveral detectors depending on zoom level (ground sampling distance) as measured by their maximum F1-Score. The model trained with tiles at zoom level = 19 (every pixel approx. 30cm GSD) showed the highest performance with a maximum F1 Score of 92.3%. Increasing the resolution even further by using 15 cm/px GSD did not result in a gain in overall detection performance while drastically increasing storage needs and computational load. Figure: Confusion matrix counts on the TST dataset in dependency of the minimum confidence score threshold. The detector model is performing very well on the independent TST dataset detecting the largest portion of silage bale stacks at any given confidence threshold. The number of FP reaches very low counts towards the higher end of the threshold percentage. Figure: Performance metrics on the TST dataset as a function of the minimum confidence score threshold. Precision, Recall and F1 Score all remain on very performant values throughout the threshold range. The F1 Score plateaus above 90% performance between 5% and 93% essentially allowing to choose any given threshold value to adapt the model performance to the end user needs. For delivery of the dataset a detector was subsequently used at a threshold of 96%. At this value 809 silage bale stacks were rediscovered in the TRN, TST and VAL subset. Just 10 FP detections were found in these subsets. 97 silage bale stacks were not rediscovered (FN). Hence, the model precision (user accuracy) was set at approx. 99% and the recall (hit rate, producer accuracy) was set at approx. 89%. The applied model detected a total of 2\u2019473 additional silage bale stacks over the rest of the canton of Thurgau (FP on OTH).","title":"3.1 Metrics and Evaluation"},{"location":"PROJ-TGLN/#32-examples","text":"Image: Raw detections (yellow) of silage bale stacks displaying very high confidence scores. Image: Raw detections (yellow) and postprocessed detections (red) \u2013 the area occupied by these silage bale stacks does not interesect with the Cultivable land (LN, green hatched). Direct subsidies are correctly paid out in this case.","title":"3.2 Examples"},{"location":"PROJ-TGLN/#33-relevant-features-for-delivery","text":"In total, 288 silage bale stack sections are placed within the subsidized LN area and exhibit an area consumption larger than 20m\u00b2. 87 silage bale stacks consume more than 50m\u00b2, 24 stacks consume more than 100m\u00b2. One has to keep in mind that many stacks only partially intersect with the LN layer. The overlap between all detected silage bale stacks over 20m\u00b2 and the LN layer amounts to 14\u2019200m\u00b2 or an estimated damage between CHF 1'420.- and CHF 2'840.- (assuming the subsidy payout ranges between CHF 10.- and CHF 20.- per 100m\u00b2). Considering only the overlap of the 87 largest stacks with the LN layer the area consumption amounts to 7\u2019900m\u00b2 or a damage between CHF 790.- and CHF 1'580.-. Image: Undeclared silage bale stack (red and yellow) that intersects with the cultivable land layer \u00abLN\u00bb (green). Image: The left side silage bale stack (red) is only touching the LN area (green). The center bottom silage bale stack is completely undeclared within the LN area. Image: Approximately half of the center silage bale stack (red) is undeclared and situated within the LN area. Image: This farm selfdeclared almost all areas needed (blue) for silage bales (red) to be excluded from direct subsidies areas (green). Pink areas are already pre-excluded by the agricultural office. Image: The intersection between the silage bale stack (red) and the LN area (green) is so minute, that it should not be found within the delivery dataset to the agricultural office. Image: Small silage bale stacks in the very left and very right of the image (yellow) are undeclared but each detection falls below the relevance threshold.","title":"3.3 Relevant Features for Delivery"},{"location":"PROJ-TGLN/#4-discussion","text":"","title":"4 Discussion"},{"location":"PROJ-TGLN/#41-feedback-by-the-agricultural-office","text":"The contact person at the agricultural office, Mr. T. Froehlich describes the detections as very accurate with a very low percentage of wrong detections. As a GIS product the detections layer can be used in the standard workflow in order to cross-check base datasets or to perform updates and corrections. On an economical scale the damage from misplaced sileage bale stacks in the LN areas is not negligible but also not extremely relevant. Federal annual direct agricultural subsidies of approx. 110 Mio. CHF stand in stark contrast to the estimated economical damage of maybe approx. CHF 2'000.- that misplaced silage bales might have caused for the Canton of Thurgau in 2019. Most farmers adhere to the policies and false declaration of areas followed by sanctions is extremely rare. Silage bales are therefore not the first priority when monitoring the advancements and updates considering the LN layer. Nevertheless these new detections allow the end users at the agricultural office to direct their eyes more quickly at relevant hotspots and spare them some aspects of the long and tidious manual search that was performed in the past.","title":"4.1 Feedback by the Agricultural Office"},{"location":"PROJ-TGLN/#42-outlook","text":"Silage bales are by far not the only object limiting the extent of the cultivable subsidized land. A much larger area is consumed by farm yards \u2013 heterogenous spaces around the central farm buildings. Monitoring the growth of these spaces into the LN layer would greatly diminuish the manual workload at the agricultural office. As these spaces might also be detectable by a similar approach, this project will continue to investigate the potential of the STDL Object Detection Framework now into this direction.","title":"4.2 Outlook"},{"location":"PROJ-TGLN/#references","text":"Federal Office of Topography swisstopo (2020). SWISSIMAGE 10 cm - The Digital Color Orthophotomosaic of Switzerland. https://www.swisstopo.admin.ch/en/geodata/images/ortho/swissimage10.html Girshick, R. (2015). Fast r-cnn. In Proceedings of the IEEE international conference on computer vision (pp. 1440-1448). https://openaccess.thecvf.com/content_iccv_2015/html/Girshick_Fast_R-CNN_ICCV_2015_paper.html He, K., Gkioxari, G., Doll\u00e1r, P., & Girshick, R. (2017). Mask r-cnn. In Proceedings of the IEEE international conference on computer vision (pp. 2961-2969). https://arxiv.org/abs/1703.06870 OpenStreetMap Foundation (2021). Slippy Map. https://wiki.openstreetmap.org/wiki/Slippy_Map QGIS.org (2021). QGIS Geographic Information System. QGIS Association. https://qgis.org/en/site/ Wu, Y., Kirillov, A., Massa, F., Lo, W. Y., & Girshick, R. (2019). Detectron2. https://github.com/facebookresearch/detectron2","title":"References"},{"location":"PROJ-TGPOOL/","text":"SWIMMING POOL DETECTION FOR THE CANTON OF THURGAU \u00b6 Adrian Meyer (FHNW) - Alessandro Cerioni (Canton of Geneva) Proposed by the Canton of Thurgau - PROJ-TGPOOL January 2021 to April 2021 - Published on April 21, 2021 Abstract : The Canton of Thurgau entrusted the STDL with the task of producing swimming pool detections over the cantonal area. Specifically interesting was to leverage the ground truth annotation data from the Canton of Geneva to generate a predictive model in Thurgau while using the publicly available SWISSIMAGE aerial imagery datasets provided by swisstopo. The STDL object detection framework produced highly accurate predictions of swimming pools in Thurgau and thereby proved transferability from one canton to another without having to manually redigitize annotations. These promising detections showcase the highly useful potential of this approach by greatly reducing the need of repetitive manual labour. Introduction \u00b6 Until February 2021 the Swiss Territorial Data Lab developed an approach based on Mask RCNN Deep Learning algorithms for the detection of objects on aerial images, with swimming pools serving as a demonstration object. The official cadastres of the Canton of Thurgau include \u2013 among many other objects \u2013 the registration of larger private swimming pools that are permanently anchored in the ground. The challenge is to keep the cadastre up to date on a regular basis which is usually done manually by surveying or verification with aerial imagery. Because the Canton of Thurgau (unlike the Canton of Geneva) does not maintain an own specific register of swimming pools, this study primarily serves as a technology demonstration. A secondary goal encompasses detailed knowledge transfer from the data scientist team at the STDL to the cantonal authorities such as providing insight and interpretation guidance into the performance metrics and raising awareness for the prerequisites of the detector framework. Methodology \u00b6 Process Overview \u00b6 Generating a Model from Cadastral Vectors and Aerial Images to Predict Objects in the Same or a New Area of Interest (AoI). The STDL object detection framework is based on a bipartite approach of training and inference. This means that a predictive model is statistically adapted to known and verified data (\"training\") in order to then generate classification predictions on new, unknown data (\"inference\"). To achieve this we resample large high-resolution orthophoto mosaics by decomposing them into small square image tiles on which vectorized annotations of swimming pools are drawn. Verified vector annotation data (\"ground truth\") for the training process was available for the cantonal area of Geneva, as well as for a smaller part of the cantonal area of Neuch\u00e2tel covering a total of almost 5'000 swimming pools present in 2019. The predictive model used is a convolutional neural network developed for computer vision (Mask RCNN). It was trained on a high performance computing cluster at the University of Applied Sciences Northwestern Switzerland FHNW using the open source Detectron2 object detection library. During inference, pixel-precise vector contours (\u201csegments\u201d) are produced over the tiled imagery of the canton of Thurgau. Each segment is attributed a confidence score which indicates the certainty of the detections when applied to new data. Using this score as a threshold level, performance metrics are computed in post-classification assessment. Ground Truth Dataset \u00b6 Label annotations are derived from cadastral data and manually curated Vector ground truth annotations demarcating private swimming pools were available at two locations: A near-complete coverage of the cantonal area of Geneva which contains 4\u2019652 known objects, as well as a smaller subsection of the cantonal area of Neuchatel which contains 227 known objects. Label annotations in both cases are derived from cadastral surface vector datasets and then manually curated/verified. In case of the Geneva dataset the manual verification was performed by STDL data scientists in a previous study; in case of the Neuchatel dataset the manual verification was performed by the local cadastre experts. Reference Data and Area of Interest \u00b6 Approximately 5000 cross checked swimming pool annotations are available as vectorized shapes in the Cantons of Geneva and partially in Neuch\u00e2tel. They are compatible with orthophotos from 2018/19 such as the latest SWISSIMAGE 10cm layer. The Area of Interest (AoI) for all tests conducted in this study are divided into two main sections: Those areas in Geneva and Neuchatel containing vectorized ground truth labels are used as \u201cTraining AoI\u201d. The cantonal area of Thurgau is used as \u201cPrediction AoI\u201d. Only those parts of the cantonal surface of Thurgau are used as Prediction AoI which are designated as relevant settlement areas. For this purpose the STDL has received two additional reference datasets from the canton of Thurgau: Vector layer: List of all water basins from the official survey; 3'131 objects. Vector layer: Settlement areas / construction zones to delimit the study area. 2,895 objects from the water basin layer are located wholly or partially within the \u201cPrediction AoI\u201d. Only these objects were used for analysis (see Figure 4, light green objects). For each grid square, an image file with 256x256 pixels edge length and 60cm GSD was generated by WMS. Metadata and georeferencing were stored in an associated JSON. A quick qualitative review of the Thurgau datasets in QGIS revealed two limitations of the datasets. About 7,5% of the water basins are not located in the selected settlement area (e.g., on remote farmsteads or mixed industrial / commercial zones), so no detection attempt was initially undertaken for areas encompassing these objects. It is important to note that there are some objects in the water basin layer that are not comparable to private swimming pools in shape or size, such as public large scale swimming pools, but also sewage treatment plants, silos, tanks, reservoirs, or retention dams. By limiting the Prediction AoI to residential areas and adjacent land, the largest portion of these objects could be excluded. Example of a water treatment plant that appears in the \u201cwater basin layer\u201d and had to be excluded by limiting the \u201cPrediction AoI\u201d to residential and adjacent areas. To additionally calculate metrics on the quality of this reference dataset vs. the quality of the detections a small area over the city of Frauenfeld (Thurgau) containing approximately 100 swimming pools was manually curated and verified by the STDL data scientists. Orthocorrected Imagery \u00b6 Orthoimagery tiles of 150m/256px edge length containing labelled annotations Both AoIs are split by a regular checkerboard segmentation grid into squares (\u201ctiles\u201d), making use of the \u201cSlippy Map Tiles\u201d quadtree-style system. The image data used here was tested with different zoom level resampling resolutions (Ground Sampling Distance, GSD) between 30 cm and 480 cm edge length per pixel while maintaining a consistent extent of 256x256 pixels. Query of the imagery was undertaken using public web map services such using common protocols such as WMS or the MIL standard. Three separate imagery sources were used over the course of the study. The 10cm GSD RGB orthophotomosaic layer SWISSIMAGE of Swisstopo was the primary target of investigation as it was used as the basis of prediction generation over the cantonal area of Thurgau. SWISSIMAGE was also used as the imagery basis for most of the training test runs over the ground truth areas of Geneva and Neuchatel. Additionally, a model was trained leveraging combined cantonal orthophoto imagery from Geneva (SITG) and Neuchatel (SITN) to comparatively test the prediction performance of such a model on the unrelated SWISSIMAGE inference dataset in Thurgau. As it was known from the STDL\u2019s previous work, that the usage of tiles exhibiting a GSD of ~60cm/Px (tile zoom level 18) offered a decent tradeoff between reaching high accuracies during training while keeping computational effort manageable this approach was used for the test using the own cantonal imagery of Geneva and Neuchatel. Using SWISSIMAGE for training, zoom levels in a range between 15 (~480 cm/Px) and 19 (~30 cm/Px) were tested. Training \u00b6 Transfer Learning \u00b6 The choice of a relevant predictive approach fell on a \u201cCOCO-pretrained\u201d deep learning model of the type \"ResNet 50 FPN\" structured in a \u201cMask-RCNN\u201d architecture and implemented with Python and the Detectron2 API. In a transfer learning process about 44 million trainable statistical parameters are adapted (\u201cfinetuned\u201d) as edge weights in a pretrained neural network graph through a number of iterations trying to minimize the value of the so-called \u201closs function\u201d (which is a primary measure for inaccuracy in classification). Transfer Learning is common practice with Deep Learning models. The acquired knowledge gained from massive datasets allows an adaptation of the model to smaller new datasets. Training is performed through highly multithreaded GPU parallelisation of the necessary tensor / matrix operations to speed up training duration. For this purpose the vector annotations are converted into pixel-per-pixel binary masks which are aligned with the respective input image. Network- or Training-specific pre-set variables (\u201chyperparameters\u201d) such as learning rate, learning rate decay, optimizer momentum, batch size or weight decay were either used in their standard configuration or iteratively manually tuned until comparatively high accuracies (e.g. by means of the F1-Score) could be reached. More systematic approaches such as hyperparameter grid search or advanced (e.g. Bayesian) optimization strategies could be implemented in follow-up studies. Dataset Split \u00b6 Tiles falling into the \u201cTraining AoI\u201d but not exhibiting any intersecting area with the Ground Truth Labels are discarded. The remaining ground truth tile datasets are randomly sampled into three disjunct subsets: The \u201cTraining Subset\u201d consists of 70% of the ground truth tiles and is used to change the network graph edge weights. The \u201cValidation Subset\u201d consists of another 15% of the ground truth tiles and is used to validate the generalization performance of the network during training. The iteration cycling is stopped when the loss on the validation dataset is minimized. The \u201cTest Subset\u201d consists of the last 15% of the ground truth tiles and is entirely reserved from the training process to allow for independent and unbiased assessment in the post processing. Subdivision of Ground Truth Datasets Inference and Assessment \u00b6 After training, tile by tile the entire \u201cPrediction AoI\u201d as well as the ground truth datasets presented to the final model for prediction generation. From a minimum confidence threshold up to 100% the model produces a segmentation mask for each swimming pool detection delimiting its proposed outer boundary. This boundary can be vectorized and transformed back from image space into map coordinates during post-processing. Through this process we can accumulate a consistent GIS-compatible vector layer for visualization, counting and further analysis. In case of the ground truth data the resulting vector layer can be intersected with the original input data (especially the \u201cTest Subset\u201d) to obtain unbiased model performance metrics. In case of a well-performing model the resulting vector layer can then be intersected with the \u201cPrediction AoI\u201d-derived Thurgau dataset to identify missing or surplus swimming pools in the cadastre. Results \u00b6 Metrics and Model Selection \u00b6 Results of different training runs using SWISSIMAGE depending on the chosen zoom level The choice of a correct confidence threshold (\"THR\") is of central importance for the interpretation of the results. The division of a data set into true/false positives/negatives is a function of the confidence threshold. A high threshold means that the model is very confident of a detection; a low threshold means that as few detections as possible should be missed, but at the same time more false positive (\"FP\") detections should be triggered. Results of different training runs using SWISSIMAGE depending on the chosen zoom level There are several standardized metrics to evaluate model performance on unknown data. The most important are \"Precision\" (user accuracy), \"Recall\" (hit rate or producer accuracy) and \"F1 Score\" (the mathematical harmonic mean of the other two). \"Precision\" should increase with higher THR, \"Recall\" should decrease. The maximum F1 Score can be used as a measure of how well the model performs regardless of the viewing direction. Results of different training runs using SWISSIMAGE depending on the chosen zoom level Using the cantonal orthomosaics as training input with zoom level 18 the F1 Score reached a maximum of 81,0%. Using SWISSIMAGE as training input with zoom level 18 a slightly higher maximum F1 Score of 83,4% was achieved resulting in the choice of a \u201conly SWISSIMAGE\u201d approach for both, training and inference. The best detection by means of maximum F1 Score was reached using tiles with zoom level 19 displaying a GSD of approx. 30 cm/Px. Since the Slippy Map tile system is based on equal division of squares increasing the zoom level by one step results roughly in quadrupling the number of tiles presented for analysis. Hence also computational demand increases with an exponential factor in particular for file system read/write and sequential processing operations if the zoom level is increased. On the other hand increasing the zoom level (and therefor the GSD) also boosts visibility and size of the target objects which in turn increases detection accuracy. Comparatively slight increases in F1 Score between zoom levels 17, 18 and 19 suggest an asymptotic behaviour where the usage of massively higher amounts computing resources will not result in a much higher detection accuracy any longer. Zoom level 20 (GSD~15cm/Px) was not computed for this reason. True Positives \u00b6 A detection is considered \"True Positive\" (TP) if the algorithm detected a pool that was listed at the same position in the cadastral layer. Setting the threshold very low (THR \u2265 5%), 2'227 of 2\u2019959 swimming pools were detected. This corresponds to a detection proportion of 75% of the recorded water pools. Conversely, this could mean that 25% or 732 objects are False Negatives and therefore \"erroneously\" recorded in the cadastre as swimming pools or missed by the algorithm. \u201cTrue Positive\u201d detections \u2013 note that cases of empty and covered swimming pools are detected with a very high confidence threshold in this example. False Negatives \u00b6 FN describe those objects that the algorithm completely failed to detect, no matter what threshold is set. A total of 732 objects were not detected. FN easily occur when there are obvious discrepancies between orthophoto and cadastre - for example, a pool may have been constructed after the time of flight. The combined number from FN and TP corresponds to the number of analyzed labels from the water pool layer (2\u2019959 objects). Due to the splitting of pools at the segmentation grid boundaries, this value is slightly higher than the 2\u2019895 objects that were in the \u201cPrediction AoI\u201d. Here, only objects larger than 5m\u00b2 in area were counted, since the segmentation grid cuts some pools into several parts and tiny residual of only a few pixels in total area polygons might otherwise be counted as FN even though the largest part of a swimming pool was detected (and therefore counted as TP). \u201cFalse Negatives\u201d \u2013 (Left) An obvious mismatch between the cadastre and the orthophoto, an update should be considered. (Right) An ambiguous swimming pool which might be covered by a white canvas and was therefore missed by the detector. False Positives \u00b6 Swimming pools that were recognized as such in the orthophoto but are not found in the cadastre represent the FP group. If the threshold is set very low (e.g. THR \u2265 5%), a total of 9'427 additional pools would be found in the settlement area. However, this number is not realistic, since most of the detections at such a low threshold do not correspond to pools, but only mark image areas that are related to a pool in a very distant way. Therefore, to get a better estimation of objects that really represent private pools but are still missing in the cadastre, the choice of a very high threshold is recommended. For example, the geoinformation services of the Canton of Geneva work with a threshold of THR \u2265 97%. Applying this threshold, 271 unrecorded swimming pools remain in the dataset with an extremely high probability of correct redetection (9% of the cadastre). However, it is still worth looking at slightly less likely FP detections with a threshold of THR \u2265 90% here. Filtering with this value, a total of 672 unregistered swimming pools were found, which would correspond to 23% of the cadastre layer. At the same time the risk for clear errors by the object detector also increases at lower thresholds, leading to some misclassifications. \u201cFalse Positive\u201d detections \u2013 (Top) Two clear examples of detected swimming pools that are missing in the cadastre. (Bottom Left) More ambiguous examples of detected swimming pools which might be missing in the cadastre. (Bottom Right) A clear error of the detector misclassifying a photovoltaic installation as a swimming pool. Conclusion \u00b6 Manual Evaluation \u00b6 In the city of Frauenfeld a sample district was chosen for manual evaluation by a STDL data scientist. Even though this task should ideally be performed by a local expert this analysis does provide some insight on the potential errors currently existing within the cadastre as well as the object detection quality. Within the sampled area a total of 99 identifiable swimming pool objects were found to be present. Table: Manually evaluated dataset accuracy vs. detector performance comparison. Green indicates the preferred value. Overall, the STDL Detector was more accurate than the provided dataset with a F1 Score of ~90% vs. ~87%. Especially a lot fewer swimming pools (5 FN) were missing in the detections than in the cadastre (18 FN). Room for improvement exists with the False Positives, where our detector identified 16 surplus objects as potential swimming pools which could be falsified manually. At the same time only 9 surplus objects were found in the cadastre. Interpretation \u00b6 We can conclude that the use of annotation data gathered in another canton of Switzerland allows for highly accurate predictions in Thurgau using the freely and publicly available SWISSIMAGE dataset. We demonstrate that such a transferrable approach can therefore be applied within a relatively short time span to other cantons without the effort of manually digitizing objects in a new area. This is supported by the assumption that SWISSIMAGE is of the same consistent radiometrical and spatial quality we see in Thurgau over the whole country. Manual evaluation will stay paramount before authorities take for example legal action or perform updates and changes to the cadastre. Nevertheless a great amount of workload reduction can be achieved by redirecting the eyes of the experts to the detected or undetected areas that are worth looking at. References \u00b6 Federal Office of Topography swisstopo (2020). SWISSIMAGE 10 cm - The Digital Color Orthophotomosaic of Switzerland. https://www.swisstopo.admin.ch/en/geodata/images/ortho/swissimage10.html Girshick, R. (2015). Fast r-cnn. In Proceedings of the IEEE international conference on computer vision (pp. 1440-1448). https://openaccess.thecvf.com/content_iccv_2015/html/Girshick_Fast_R-CNN_ICCV_2015_paper.html He, K., Gkioxari, G., Doll\u00e1r, P., & Girshick, R. (2017). Mask r-cnn. In Proceedings of the IEEE international conference on computer vision (pp. 2961-2969). https://arxiv.org/abs/1703.06870 OpenStreetMap Foundation (2021). Slippy Map. https://wiki.openstreetmap.org/wiki/Slippy_Map QGIS.org (2021). QGIS Geographic Information System. QGIS Association. https://qgis.org/en/site/ Wu, Y., Kirillov, A., Massa, F., Lo, W. Y., & Girshick, R. (2019). Detectron2. https://github.com/facebookresearch/detectron2","title":"SWIMMING POOL DETECTION FOR THE CANTON OF THURGAU"},{"location":"PROJ-TGPOOL/#swimming-pool-detection-for-the-canton-of-thurgau","text":"Adrian Meyer (FHNW) - Alessandro Cerioni (Canton of Geneva) Proposed by the Canton of Thurgau - PROJ-TGPOOL January 2021 to April 2021 - Published on April 21, 2021 Abstract : The Canton of Thurgau entrusted the STDL with the task of producing swimming pool detections over the cantonal area. Specifically interesting was to leverage the ground truth annotation data from the Canton of Geneva to generate a predictive model in Thurgau while using the publicly available SWISSIMAGE aerial imagery datasets provided by swisstopo. The STDL object detection framework produced highly accurate predictions of swimming pools in Thurgau and thereby proved transferability from one canton to another without having to manually redigitize annotations. These promising detections showcase the highly useful potential of this approach by greatly reducing the need of repetitive manual labour.","title":"SWIMMING POOL DETECTION FOR THE CANTON OF THURGAU"},{"location":"PROJ-TGPOOL/#introduction","text":"Until February 2021 the Swiss Territorial Data Lab developed an approach based on Mask RCNN Deep Learning algorithms for the detection of objects on aerial images, with swimming pools serving as a demonstration object. The official cadastres of the Canton of Thurgau include \u2013 among many other objects \u2013 the registration of larger private swimming pools that are permanently anchored in the ground. The challenge is to keep the cadastre up to date on a regular basis which is usually done manually by surveying or verification with aerial imagery. Because the Canton of Thurgau (unlike the Canton of Geneva) does not maintain an own specific register of swimming pools, this study primarily serves as a technology demonstration. A secondary goal encompasses detailed knowledge transfer from the data scientist team at the STDL to the cantonal authorities such as providing insight and interpretation guidance into the performance metrics and raising awareness for the prerequisites of the detector framework.","title":"Introduction"},{"location":"PROJ-TGPOOL/#methodology","text":"","title":"Methodology"},{"location":"PROJ-TGPOOL/#process-overview","text":"Generating a Model from Cadastral Vectors and Aerial Images to Predict Objects in the Same or a New Area of Interest (AoI). The STDL object detection framework is based on a bipartite approach of training and inference. This means that a predictive model is statistically adapted to known and verified data (\"training\") in order to then generate classification predictions on new, unknown data (\"inference\"). To achieve this we resample large high-resolution orthophoto mosaics by decomposing them into small square image tiles on which vectorized annotations of swimming pools are drawn. Verified vector annotation data (\"ground truth\") for the training process was available for the cantonal area of Geneva, as well as for a smaller part of the cantonal area of Neuch\u00e2tel covering a total of almost 5'000 swimming pools present in 2019. The predictive model used is a convolutional neural network developed for computer vision (Mask RCNN). It was trained on a high performance computing cluster at the University of Applied Sciences Northwestern Switzerland FHNW using the open source Detectron2 object detection library. During inference, pixel-precise vector contours (\u201csegments\u201d) are produced over the tiled imagery of the canton of Thurgau. Each segment is attributed a confidence score which indicates the certainty of the detections when applied to new data. Using this score as a threshold level, performance metrics are computed in post-classification assessment.","title":"Process Overview"},{"location":"PROJ-TGPOOL/#ground-truth-dataset","text":"Label annotations are derived from cadastral data and manually curated Vector ground truth annotations demarcating private swimming pools were available at two locations: A near-complete coverage of the cantonal area of Geneva which contains 4\u2019652 known objects, as well as a smaller subsection of the cantonal area of Neuchatel which contains 227 known objects. Label annotations in both cases are derived from cadastral surface vector datasets and then manually curated/verified. In case of the Geneva dataset the manual verification was performed by STDL data scientists in a previous study; in case of the Neuchatel dataset the manual verification was performed by the local cadastre experts.","title":"Ground Truth Dataset"},{"location":"PROJ-TGPOOL/#reference-data-and-area-of-interest","text":"Approximately 5000 cross checked swimming pool annotations are available as vectorized shapes in the Cantons of Geneva and partially in Neuch\u00e2tel. They are compatible with orthophotos from 2018/19 such as the latest SWISSIMAGE 10cm layer. The Area of Interest (AoI) for all tests conducted in this study are divided into two main sections: Those areas in Geneva and Neuchatel containing vectorized ground truth labels are used as \u201cTraining AoI\u201d. The cantonal area of Thurgau is used as \u201cPrediction AoI\u201d. Only those parts of the cantonal surface of Thurgau are used as Prediction AoI which are designated as relevant settlement areas. For this purpose the STDL has received two additional reference datasets from the canton of Thurgau: Vector layer: List of all water basins from the official survey; 3'131 objects. Vector layer: Settlement areas / construction zones to delimit the study area. 2,895 objects from the water basin layer are located wholly or partially within the \u201cPrediction AoI\u201d. Only these objects were used for analysis (see Figure 4, light green objects). For each grid square, an image file with 256x256 pixels edge length and 60cm GSD was generated by WMS. Metadata and georeferencing were stored in an associated JSON. A quick qualitative review of the Thurgau datasets in QGIS revealed two limitations of the datasets. About 7,5% of the water basins are not located in the selected settlement area (e.g., on remote farmsteads or mixed industrial / commercial zones), so no detection attempt was initially undertaken for areas encompassing these objects. It is important to note that there are some objects in the water basin layer that are not comparable to private swimming pools in shape or size, such as public large scale swimming pools, but also sewage treatment plants, silos, tanks, reservoirs, or retention dams. By limiting the Prediction AoI to residential areas and adjacent land, the largest portion of these objects could be excluded. Example of a water treatment plant that appears in the \u201cwater basin layer\u201d and had to be excluded by limiting the \u201cPrediction AoI\u201d to residential and adjacent areas. To additionally calculate metrics on the quality of this reference dataset vs. the quality of the detections a small area over the city of Frauenfeld (Thurgau) containing approximately 100 swimming pools was manually curated and verified by the STDL data scientists.","title":"Reference Data and Area of Interest"},{"location":"PROJ-TGPOOL/#orthocorrected-imagery","text":"Orthoimagery tiles of 150m/256px edge length containing labelled annotations Both AoIs are split by a regular checkerboard segmentation grid into squares (\u201ctiles\u201d), making use of the \u201cSlippy Map Tiles\u201d quadtree-style system. The image data used here was tested with different zoom level resampling resolutions (Ground Sampling Distance, GSD) between 30 cm and 480 cm edge length per pixel while maintaining a consistent extent of 256x256 pixels. Query of the imagery was undertaken using public web map services such using common protocols such as WMS or the MIL standard. Three separate imagery sources were used over the course of the study. The 10cm GSD RGB orthophotomosaic layer SWISSIMAGE of Swisstopo was the primary target of investigation as it was used as the basis of prediction generation over the cantonal area of Thurgau. SWISSIMAGE was also used as the imagery basis for most of the training test runs over the ground truth areas of Geneva and Neuchatel. Additionally, a model was trained leveraging combined cantonal orthophoto imagery from Geneva (SITG) and Neuchatel (SITN) to comparatively test the prediction performance of such a model on the unrelated SWISSIMAGE inference dataset in Thurgau. As it was known from the STDL\u2019s previous work, that the usage of tiles exhibiting a GSD of ~60cm/Px (tile zoom level 18) offered a decent tradeoff between reaching high accuracies during training while keeping computational effort manageable this approach was used for the test using the own cantonal imagery of Geneva and Neuchatel. Using SWISSIMAGE for training, zoom levels in a range between 15 (~480 cm/Px) and 19 (~30 cm/Px) were tested.","title":"Orthocorrected Imagery"},{"location":"PROJ-TGPOOL/#training","text":"","title":"Training"},{"location":"PROJ-TGPOOL/#inference-and-assessment","text":"After training, tile by tile the entire \u201cPrediction AoI\u201d as well as the ground truth datasets presented to the final model for prediction generation. From a minimum confidence threshold up to 100% the model produces a segmentation mask for each swimming pool detection delimiting its proposed outer boundary. This boundary can be vectorized and transformed back from image space into map coordinates during post-processing. Through this process we can accumulate a consistent GIS-compatible vector layer for visualization, counting and further analysis. In case of the ground truth data the resulting vector layer can be intersected with the original input data (especially the \u201cTest Subset\u201d) to obtain unbiased model performance metrics. In case of a well-performing model the resulting vector layer can then be intersected with the \u201cPrediction AoI\u201d-derived Thurgau dataset to identify missing or surplus swimming pools in the cadastre.","title":"Inference and Assessment"},{"location":"PROJ-TGPOOL/#results","text":"","title":"Results"},{"location":"PROJ-TGPOOL/#metrics-and-model-selection","text":"Results of different training runs using SWISSIMAGE depending on the chosen zoom level The choice of a correct confidence threshold (\"THR\") is of central importance for the interpretation of the results. The division of a data set into true/false positives/negatives is a function of the confidence threshold. A high threshold means that the model is very confident of a detection; a low threshold means that as few detections as possible should be missed, but at the same time more false positive (\"FP\") detections should be triggered. Results of different training runs using SWISSIMAGE depending on the chosen zoom level There are several standardized metrics to evaluate model performance on unknown data. The most important are \"Precision\" (user accuracy), \"Recall\" (hit rate or producer accuracy) and \"F1 Score\" (the mathematical harmonic mean of the other two). \"Precision\" should increase with higher THR, \"Recall\" should decrease. The maximum F1 Score can be used as a measure of how well the model performs regardless of the viewing direction. Results of different training runs using SWISSIMAGE depending on the chosen zoom level Using the cantonal orthomosaics as training input with zoom level 18 the F1 Score reached a maximum of 81,0%. Using SWISSIMAGE as training input with zoom level 18 a slightly higher maximum F1 Score of 83,4% was achieved resulting in the choice of a \u201conly SWISSIMAGE\u201d approach for both, training and inference. The best detection by means of maximum F1 Score was reached using tiles with zoom level 19 displaying a GSD of approx. 30 cm/Px. Since the Slippy Map tile system is based on equal division of squares increasing the zoom level by one step results roughly in quadrupling the number of tiles presented for analysis. Hence also computational demand increases with an exponential factor in particular for file system read/write and sequential processing operations if the zoom level is increased. On the other hand increasing the zoom level (and therefor the GSD) also boosts visibility and size of the target objects which in turn increases detection accuracy. Comparatively slight increases in F1 Score between zoom levels 17, 18 and 19 suggest an asymptotic behaviour where the usage of massively higher amounts computing resources will not result in a much higher detection accuracy any longer. Zoom level 20 (GSD~15cm/Px) was not computed for this reason.","title":"Metrics and Model Selection"},{"location":"PROJ-TGPOOL/#true-positives","text":"A detection is considered \"True Positive\" (TP) if the algorithm detected a pool that was listed at the same position in the cadastral layer. Setting the threshold very low (THR \u2265 5%), 2'227 of 2\u2019959 swimming pools were detected. This corresponds to a detection proportion of 75% of the recorded water pools. Conversely, this could mean that 25% or 732 objects are False Negatives and therefore \"erroneously\" recorded in the cadastre as swimming pools or missed by the algorithm. \u201cTrue Positive\u201d detections \u2013 note that cases of empty and covered swimming pools are detected with a very high confidence threshold in this example.","title":"True Positives"},{"location":"PROJ-TGPOOL/#false-negatives","text":"FN describe those objects that the algorithm completely failed to detect, no matter what threshold is set. A total of 732 objects were not detected. FN easily occur when there are obvious discrepancies between orthophoto and cadastre - for example, a pool may have been constructed after the time of flight. The combined number from FN and TP corresponds to the number of analyzed labels from the water pool layer (2\u2019959 objects). Due to the splitting of pools at the segmentation grid boundaries, this value is slightly higher than the 2\u2019895 objects that were in the \u201cPrediction AoI\u201d. Here, only objects larger than 5m\u00b2 in area were counted, since the segmentation grid cuts some pools into several parts and tiny residual of only a few pixels in total area polygons might otherwise be counted as FN even though the largest part of a swimming pool was detected (and therefore counted as TP). \u201cFalse Negatives\u201d \u2013 (Left) An obvious mismatch between the cadastre and the orthophoto, an update should be considered. (Right) An ambiguous swimming pool which might be covered by a white canvas and was therefore missed by the detector.","title":"False Negatives"},{"location":"PROJ-TGPOOL/#false-positives","text":"Swimming pools that were recognized as such in the orthophoto but are not found in the cadastre represent the FP group. If the threshold is set very low (e.g. THR \u2265 5%), a total of 9'427 additional pools would be found in the settlement area. However, this number is not realistic, since most of the detections at such a low threshold do not correspond to pools, but only mark image areas that are related to a pool in a very distant way. Therefore, to get a better estimation of objects that really represent private pools but are still missing in the cadastre, the choice of a very high threshold is recommended. For example, the geoinformation services of the Canton of Geneva work with a threshold of THR \u2265 97%. Applying this threshold, 271 unrecorded swimming pools remain in the dataset with an extremely high probability of correct redetection (9% of the cadastre). However, it is still worth looking at slightly less likely FP detections with a threshold of THR \u2265 90% here. Filtering with this value, a total of 672 unregistered swimming pools were found, which would correspond to 23% of the cadastre layer. At the same time the risk for clear errors by the object detector also increases at lower thresholds, leading to some misclassifications. \u201cFalse Positive\u201d detections \u2013 (Top) Two clear examples of detected swimming pools that are missing in the cadastre. (Bottom Left) More ambiguous examples of detected swimming pools which might be missing in the cadastre. (Bottom Right) A clear error of the detector misclassifying a photovoltaic installation as a swimming pool.","title":"False Positives"},{"location":"PROJ-TGPOOL/#conclusion","text":"","title":"Conclusion"},{"location":"PROJ-TGPOOL/#manual-evaluation","text":"In the city of Frauenfeld a sample district was chosen for manual evaluation by a STDL data scientist. Even though this task should ideally be performed by a local expert this analysis does provide some insight on the potential errors currently existing within the cadastre as well as the object detection quality. Within the sampled area a total of 99 identifiable swimming pool objects were found to be present. Table: Manually evaluated dataset accuracy vs. detector performance comparison. Green indicates the preferred value. Overall, the STDL Detector was more accurate than the provided dataset with a F1 Score of ~90% vs. ~87%. Especially a lot fewer swimming pools (5 FN) were missing in the detections than in the cadastre (18 FN). Room for improvement exists with the False Positives, where our detector identified 16 surplus objects as potential swimming pools which could be falsified manually. At the same time only 9 surplus objects were found in the cadastre.","title":"Manual Evaluation"},{"location":"PROJ-TGPOOL/#interpretation","text":"We can conclude that the use of annotation data gathered in another canton of Switzerland allows for highly accurate predictions in Thurgau using the freely and publicly available SWISSIMAGE dataset. We demonstrate that such a transferrable approach can therefore be applied within a relatively short time span to other cantons without the effort of manually digitizing objects in a new area. This is supported by the assumption that SWISSIMAGE is of the same consistent radiometrical and spatial quality we see in Thurgau over the whole country. Manual evaluation will stay paramount before authorities take for example legal action or perform updates and changes to the cadastre. Nevertheless a great amount of workload reduction can be achieved by redirecting the eyes of the experts to the detected or undetected areas that are worth looking at.","title":"Interpretation"},{"location":"PROJ-TGPOOL/#references","text":"Federal Office of Topography swisstopo (2020). SWISSIMAGE 10 cm - The Digital Color Orthophotomosaic of Switzerland. https://www.swisstopo.admin.ch/en/geodata/images/ortho/swissimage10.html Girshick, R. (2015). Fast r-cnn. In Proceedings of the IEEE international conference on computer vision (pp. 1440-1448). https://openaccess.thecvf.com/content_iccv_2015/html/Girshick_Fast_R-CNN_ICCV_2015_paper.html He, K., Gkioxari, G., Doll\u00e1r, P., & Girshick, R. (2017). Mask r-cnn. In Proceedings of the IEEE international conference on computer vision (pp. 2961-2969). https://arxiv.org/abs/1703.06870 OpenStreetMap Foundation (2021). Slippy Map. https://wiki.openstreetmap.org/wiki/Slippy_Map QGIS.org (2021). QGIS Geographic Information System. QGIS Association. https://qgis.org/en/site/ Wu, Y., Kirillov, A., Massa, F., Lo, W. Y., & Girshick, R. (2019). Detectron2. https://github.com/facebookresearch/detectron2","title":"References"},{"location":"PROJ-TPNL/","text":"DETECTION OF THERMAL PANELS ON CANTON TERRITORY TO FOLLOW RENEWABLE ENERGY DEPLOYMENT \u00b6 Nils Hamel (UNIGE) - Huriel Reichel (FHNW) Supervision : Roxane Pott (swisstopo) Project in collaboration with Geneva and Neuch\u00e2tel States - TASK-TPNL July 2021 to February 2022 - Published on February 22, 2022 Abstract : Deployment of renewable energy becomes a major stake in front of our societies challenges. This imposes authorities and domain expert to promote and to demonstrate the deployment of such energetic solutions. In case of thermal panels, politics ask domain expert to certify, along the year, of the amount of deployed surface. In front of such challenge, this project aims to determine to which extent data science can ease the survey of thermal panel installations deployment and how the work of domain expert can be eased. Introduction \u00b6 For authorities, being able to track the deployment of renewable energy is becoming a major challenge in front of stakes of our societies. In addition, following the deployment of installations on territory is difficult, as construction permits are not sufficient evidences. Indeed, the construction permits materialize a will, but the actual deployment and its specifications can differ from paperwork to reality. In case of thermal panels, domain experts are then put in front of a major challenge, as they have to certify of the surface of solar thermal energy that is deployed and active on their territory on a regular basis. This reporting is made for politics that aim to deploy a certain amount of renewable energy, part of territories energetic politic. Mainly based on paperwork, the current survey of thermal panels deployment are affected by drawbacks. Indeed, it is currently complicated to determine whether a construction permit lead to the deployment of a thermal panel installation and if this installation is still in activity. The goal of this project is to determine if data science is able to provide new solutions for the survey of thermal energy production in order to report more accurate surface values to the politics. Research Project Specification \u00b6 In this project, the goal is to determine whether it is possible to track down thermal panels installation on territory by using aerial images and deep learning methods. The main axis are : Train a deep learning model on aerial images to detect thermal panels Assess the performances of the deep learning model Determine to which extent it is possible to link the predictions to existing domain expert database Research Project Strategy and Collaboration \u00b6 This research project was made in collaboration with the States of Neuch\u00e2tel and Geneva . Both domain experts are facing similar challenges and their needs are nearly identical, despite their current processes differs. For each collaboration, the goals are similar, but the methodology is different. With Neuch\u00e2tel , the domain expert database is considered while with Geneva , the database is not considered. Considering the database in the collaboration with Neuch\u00e2tel lead to a much larger amount of work, as the database need to be pre-processed before to put it into perspective of the deep learning network results. It is nevertheless important to be able to assess the possibility to insert our demonstrator in the existing procedures, that are used by domain expert to track thermal panels installations. Research Data & Selected Areas \u00b6 As mentioned, the best (and probably the only) solution to track down thermal panels is to use aerial images. Indeed, due to their nature, thermal panels are always visible on aerial images. Exceptions to this rule are unusual. In addition, aerial images are acquired regularly and a full set of orthomosaic can be easily obtained each five years (at least in Switzerland). For Geneva and Neuch\u00e2tel , it is not impossible to obtain a set of images each two years. Nevertheless, using aerial images come with drawbacks. The main one is of course resolution ( GSD ). Aerial image sets used to compose orthomosaics are acquired to cover the whole territory. It follows that the resolution is limited. For a large amount of applications, the available resolution is sufficient. But for thermal panels, the resolution starts to become challenging. Illustration of the resolution at which thermal panels can be viewed on aerial images - Data : swisstopo, SITG (GSD ~ 10 cm/pixel) Despite the resolution, aerial images are selected to train a deep learning network. Mainly SWISSIMAGE from swisstopo are considered for this research project. At the time, the 2020 version of the orthomosaic is considered for both Neuch\u00e2tel and Geneva . For both cases, a test area is defined. On the side of Neuch\u00e2tel , a large test area is chosen in order to cover a large portion of the territory that mixes constructed zones and more rural ones. On the side of Geneva , the test area is defined by the domain expert and consists of a rectangular zone. Illustration of the test areas defined on Neuch\u00e2tel (left) and Geneva (right) - Data : swisstopo The research project is then only focusing on portion of territory to keep the scale realistic for such demonstrator according to the available time. Deep Learning Model Initial Training \u00b6 In this project, it is not possible to extract a ground truth, that is annotations on aerial images, from the domain expert databases. Thankfully, the FHNW , partner of the STDL , conducted some year ago annotations for thermal panels on the States of Aargau . The set consists of thousands of annotated tiles of 80x80m in size made on the SWISSIMAGE images set ( 2020 ). The annotation work was made by students of the FHNW and supervised by the D. Jordan scientists team. Such data-set is exactly the required bootstrap data to train an initial deep learning model. The only constraint is coming from the fact that the ground truth is defined by the 80x80m wide tiles on which annotations are made. Illustration of the FHNW ground truth - Labels in white, tiles in red - Data : swisstopo, FHNW Several training sessions are conducted in order to determine which sub-tiling system lead to the best performances scores. Due to the predefined ground truth, only sub-tiles of the 80x80m original tiles are possible. As a result, 80x80m , 40x40m and 26x26m tiles are considered for the network training. In all training sessions, the results are quite stable around a F1-score of 0.8-0.85 , with always a non-negligible proportion of false positives. The best results are obtained for the smaller tiles : 26x26m . It is unfortunate as small tiles comes with drawbacks. Indeed, using small tiles impose important tiling strategy to cover a large area. In addition, using small tiles also induce larger amount of cuts that have to be merged afterwards to create a usable geographical layer. Despite these drawbacks, as a demonstrator is desired, the performances are favored. The following plot shows the precision, recall and F1-score obtained for the initial training using the data of the FHNW . These values are computed over the test set, that consists of 15% of the total data-set. Scores obtained with the FHNW ground truth - Precision, Recall and F1-score On the previous plot, the scores are all computed entity-wise and not pixel-wised. This choice is made to fit the main necessity of domain experts, which is to inventory thermal panel installations more than estimating their surfaces, which is a secondary goal. One can see that encouraging results are obtained, but one can also see that the F1-score plateau is not significantly marked, a sign that the model is not yet optimal, despite the large amount of data. As we are working with domain experts, presenting F1-score according to threshold can be challenging and difficult to understand. During other research projects, it has been clear that efforts have to be put on our side to present the performances of our tools in a way that is informative and understandable by the domain exerts, in order to ensure a working collaboration and dialog, without which, such research projects can be difficult to conduct. It is the reason why an alternate representation of the performances are introduced. It shows the performances of the neural network in a more compact and readable way, focusing on elements that are interesting for the domain experts and their real-world necessities. The proposed plot is as follows : Simplified representation used with domain experts of the obtained scores - The green area is the true positives, the yellow one is false negatives and the red on is the false positive. The upper percentage give the inventory capacity, the lower one adding the false positive to the percentage. The bar is containing three proportions : the true positives, the false negatives and the false positives. The two first proportions are grouped into one in order to represent the capacity of the network to create a reliable inventory. It shows the amount of thermal panels detected over their total amount (recall). The overall bar adds the proportion of false positive, that are seen by domain experts as pollution of the obtained inventory. Showing this proportions indicates to the domain experts, in a simple way, how usable the inventory is. Assessment and Improvement of the Model \u00b6 This section is split into two separated parts, one for the Geneva case and the other for the Neuch\u00e2tel one, as the chosen strategy is different. The case of Geneva , with a more direct approach (not considering the domain expert pre-existing database), is presented first. Case of Geneva \u00b6 In the case of Geneva , the choice is made to not consider existing databases and to proceed on detecting thermal panel installations directly on images to create an inventory that can then be assessed by the domain expert to extract reliable performance scores. Assessment by the Domain Expert \u00b6 In order to produce the predictions over the test area, in this case defined by the domain expert, the area is split into tiles with the chosen size. The tiles are then sent to the deep learning network in order to produce the predictions of thermal panel installations. The following image shows the tiling system over the test area : Illustration of the tiling system applied on the Geneva test area (26x26m tiles) A set of tiles is obtained with predictions on them. The optimal threshold, deduced from the initial training on the FHNW data-set, is used to filter the predictions over the test area of Geneva . The tiles containing no prediction are removed by an automated process. The other tiles are associated with the predictions geographical footprints that and stored in a shapefile to keep the format simple and easy to exchange with the domain expert. By defining a common language with the domain expert on how to validate the predictions, the shapefile containing the predictions are sent to the domain expert along with the aerial images on which predictions are made. The role of the domain expert is to assess the predictions to indicate, on the tiles containing at least a prediction, the true positives, the false positives and the false negatives. Illustration of the common language defined to assess the predictions - The domain expert simply puts a mark in the determined false positive and at the location of the false negative. The true positives are left untouched By assessing the prediction with a domain expert, ensure that the obtained scores are reliable, as thermal panels are difficult to identify on the aerial image for a non expert. Without assessing the predictions through a domain expert would lead to unreliable scores. Results \u00b6 The assessment of the predictions made by the domain expert lead to the following results on the test area. A total of 89 tiles are formally certified by the domain expert with the following counts : Category Count TP 47 FP 63 FN 35 On a total of 110 predictions on the certified tiles, 47 are true positives, 63 being false positives. A total of 35 missing predictions are pointed by the domain expert. It follows that 47 thermal panel installations are found over 47+35=82 . This leads to the performances score for the initial deep learning over the Geneva test area model of : Score Value Precision 0.43 Recall 0.57 F1 0.49 From the inventory point of view, nearly 60% of the thermal panel installations are found by the initial deep learning model on the test area. This is clearly below the initial model, showing that the data-set are not sufficient to obtain stable results at this stage. The following plot shows the results presented in the simplified form : Score obtained on Geneva with the initial deep learning model - Simple representation Taking into account the large amount of false positives, the initial training is clearly not at the desired level to be usable by the domain expert to produce a reliable geographical layer of thermal panel installations. But these number are important, as they are certified by a domain expert, ensuring the ground truth used to assess the prediction is reliable. Improvement of the Deep Learning Network \u00b6 With the assessment made by the domain expert, reliable scores are obtained. In addition, as predictions are marked as correct or incorrect, with addition of missing thermal panel installations on the certified tiles, it was possible to create an extension to the ground truth. Indeed, driven by the corrections of the domain expert, new annotations are made on the certified tiles, including true positives and false negatives. These annotations are made by STDL on the images used to produce the predictions. The predictions in themselves are not sufficiently reliable to be directly translated into labels, and the false negative have to be added anyway. Annotations created on the Geneva area driven by the assessment of the domain expert - The labels are in white and the certified tiles in red In the case of Geneva , the ground truth extension is made on the same images used to produce the prediction. As the number of certified tiles is low, a strategy is tested in order to improve the ground truth extension. The idea consist in looking along the time dimension. Indeed, in Switzerland , aerial images are acquired in a regular basis. It follows that a history of aerial images is available. The time range from 2000 to 2020 is then considered in terms of the available images. For each set of images, the annotation created on the 2020 image set are transferred to the older images. This process is not straightforward, as each prediction have to be checked to certify that the thermal panel installation is there on older images. In addition, each tile has to be checked individually in order to check that no older thermal panel installation was there and destroyed before 2020 . Illustration of the propagation of the ground truth along the time dimension - The image on the right illustrates the limit of the process By doing this exploration along the time dimension, it was possible to increase the ground truth extracted from the assessment procedure made by the domain expert. From only 41 tiles and 64 annotations extracted using the initial test zone on the year 2020 , 394 tiles and 623 annotations are obtained by considering the 2000 to 2020 time range for aerial images. Considering the time dimension allows to better leverage the assessment made by the domain expert, despite the procedure is time-consuming. One has to keep in mind that such process is not ideal, as the same examples are simply repeated. It has some interest as it allows showing the same examples under different condition of luminosity and orientation, which can improve the deep learning model detection ability. With this new ground truth, it was possible to re-train the initial network. This was done using both the FHNW initial ground truth and the annotations made on Geneva . The following results are obtained, shown using the simple representation : Scores obtained on Geneva with consideration of the new annotations certified by the domain expert - Simple representation This plot shows the results on the test set limited to the Geneva test area. Again, the test set contains 15% of the ground truth, and limiting it to the area of Geneva leads to only several tens of tiles. This amount of tiles is quite low to conclude on the encouraging results obtained with the extended ground truth. This is reinforced by the lack of stability already observed in the previous results. Conclusion \u00b6 It is clear that the initial deep learning model, trained with the FHNW ground truth is not satisfying for a real-world usage by domain experts. Its ability to produce an inventory is not optimal, and the amount of false positives make the produced geographical layer difficult to use. Nevertheless, reliable score are obtained and can be trusted on the Geneva area thanks to the domain expert assessment. In addition, the assessment made by the domain expert, as it also included the false negatives (at least on the considered tiles), allowed to extend the ground truth. The extension of the ground truth along the time dimension allows taking advantage of the work of the domain expert as much as possible, leading to more certified tiles. The new training allowed to improve the situation on the Geneva area quite clearly. The inventory capacity of the deep learning model went from around 60% to around 80% . The amount of false positives is also drastically reduced. These are encouraging results, but the small amount of new tiles and the multiplication of the same examples along the time dimension has to lead us to a certain care, especially due to the instabilities of the results. Case of Neuch\u00e2tel \u00b6 The case of Neuch\u00e2tel is clearly more complex than the case of Geneva . In this case, the database of the domain expert is considered in order to try to link the predictions with the entries of the existing database. This choice is made to demonstrate the ability to integrate data science technology in existing pipeline, in order to avoid creating disruptive effect. Processing and Linkage with the Domain Expert Database \u00b6 In the first stage, the domain expert database is analyzed in order to determine the best solution to link the prediction made by the deep learning model and the entries of the database. The database in itself is a simple Excel sheet, with each line corresponding to a subsidy query that goes along the construction permit. Subsidies are provided by the authorities to promote deployment of the renewable energy. This is also a reason explaining the necessity for authorities to track down the construction of thermal panel installations. The major issue with the database is the localization of the thermal panels installation. Along the years, the database being quite old, different ways of localizing the installation were used. Three different localization systems are then available : the postal addresses, the geographical coordinate and the EGID (federal building identifier). Unfortunately, these standards are mixed, and all entries are localized differently. Sometimes only one localization is available, sometimes two or three. In some cases, the different localization information are not consistent, which lead to contradictions in the installation position. For some entries, the localization information is also incorrect or only approximate, which can lead to difficulties to associate a geo-referenced prediction to an entry of the database. For these reason, lots of efforts are put on the pre-processing of the database to make the link between prediction and entries as reliable as possible. The RegBL (federal register of buildings and dwellings) is used to assess the EGID and the postal addresses and to track down contradiction. In addition, the post addresses of the State of Neuch\u00e2tel is also considered to match addresses with geographical positions for the same reason. By doing this, many potential positions are extracted for each entry of the database. This allows to assess the contradiction in order to retain the most probable and reliable localization for each entry of the database. Of course, in many cases, the assessment is quite weak as the amount of information on localization is low (this is especially the case for older installation, the new one being localized in a much more reliable manner using the EGID ). At the end of this complex and time-consuming task, almost all entries of the database are associated with a geographical position. This allows to match predictions, that are geographically localized, to the most probable entry of the database. This process is important as it allows the domain expert to not only have a geographical layer of the thermal panel installation but to have also the link with its pre-existing database. This allows to put into perspective prediction and database to track down construction and destruction of installations along the time dimension. Assessment by the Domain Expert \u00b6 After pre-processing of the domain expert database, a region of Neuch\u00e2tel state is defined. A tiling strategy is made to translate the defined area in tiles of the appropriated size according to the initial training of the deep learning model. Predictions are then made on each of the tiles. Again, the optimal threshold is selected according to the initial training to filter the predictions made on the test area. At this stage, the procedure differ from the case of Geneva . Here, tiles are not filtered based on their content of prediction or not. The database is considered, after its pre-processing, and the predictions are linked to the optimal entry according to its best localization. As a result, a set of predictions linked to a specific entry of the database is obtained. The other predictions are simply discarded for this specific assessment procedure. In order to serve as much as possible the interests of the domain expert, a specific assessment procedure is set. This is set to allow to assess the prediction on one side and to help the domain expert to correct the bad localization of the thermal panel installation in his database on the other side. The chosen approach is based on a dictionary of GeoTIFF images on which the prediction are shown and on which additional information are specified to help the domain expert to assess the localization provided by the database. Illustration of one page of the dictionary corresponding to one database entry - For each entry, such image is provided, showing information on the entry, its localization consistency and the prediction made by the model - Each image is a geo-referenced TIFF The dictionary is made of a GeoTIFF per prediction that is linked with a unique entry of the database. In addition to the prediction geometry drawn on the image, basic information on the linked database entry is provided. The optimal localization (between post addresses, coordinates or EGID) used to link the prediction and the entry of the database is also indicated to help the domain expert to understand the link. Information about the estimated quality of the localization of the thermal panel installation is also provided. This quality indicator is based on the consistency of the multiple location information (post address, coordinates and EGID). The more consistent they are, the better the localization is considered. In case of a potential bad localization, the domain expert is invited to check the entry of the database to correct the position. In parallel, a simple Excel file is set and filled by the domain expert along the procedure. It allows setting the corrected positions, when required, and to indicate if the prediction is correct and correctly linked to the database entry. This process allows setting a win-win strategy where incorrectly located installation are treated on the side of the database and the prediction is assessed for the correct localization. The procedure for the domain expert consists then only to parse a sequence of images on which all the information are shown and to fill columns in the assessment Excel sheet. This allows to assess quickly and efficiently the prediction while correcting the inconsistency in the database. Results \u00b6 Thanks to the assessment procedure, part of the predictions are certified by the domain expert. This allows to compute scores on the capacity of the initial deep learning model to compute inventory of thermal panel installations. Unfortunately, this assessment procedure does not allow the computation of the formal scores, as the false negative are not considered. This is the main drawback coming from the fact that we work in parallel with the domain expert database. On the 354 predictions linked to the database, 316 corresponds to correctly localized entries of the database. On the 316 correct entries of the database, the domain expert reported 255 visible installation. This shows that many installations, present in the database through an entry, are not visible in the reality. With these numbers, one can deduce that 61 installations are reported in the database through paper work but cannot be found in the real world. The explanation is probably complex, but this shows how difficult it is to keep a database of installation up to date with the reality. Without a formal historical analysis, it is not possible to determine what happened to these missing installation. For some of them, one needs to consider the natural cycle of life of such installations. Indeed, thermal panel have a determined lifetime and need to be replaced or decommissioned. It is also possible that for some of them, the construction permit was asked but without leading to the actual construction of a thermal panel installation. This case is expected to be less usual. Back to the score of the initial deep learning model, on the 255 visible installation, the domain expert determined that 204 are correctly detected by the model. This lead to an inventory capacity of 0.8 which remains in the initial model scores. It is interesting to observe that the initial model scores seem to hold in the case of Neuch\u00e2tel but not in the previous case of Geneva . Indeed, on Geneva , the inventory capacity drop to 0.6 . Improvement of the Deep Learning Network \u00b6 With the assessment made by the domain expert, despite false negatives are not considered, it was possible to increase the ground truth with new annotation on the test area of Neuch\u00e2tel . The procedure starts by isolating all prediction that are marked as correct (true positive) by the domain expert. A tiling system is then set to cover the entire test area with size fitting the initial choices. The certified true positive are then manually processed to create a proper annotation, as the prediction are not reliable enough. The certifications made by the domain expert are sufficiently clear for a data scientist to do this task autonomously. The last stage consist in validating the tiles containing a new annotation. This part is the most complex one, as the data scientist has to work autonomously. The tiles containing a new annotation can only be validated, and enter the ground-truth, if and only if no other ambiguous element appear in the validated tiles. If any ambiguities arise for a tile, it needs to be dropped and not considered for the ground truth. In the case of Neuch\u00e2tel a few tiles are then removed for this reason. With this procedure, 272 new annotation are added to the ground truth on 254 tiles. These annotations, as for Geneva , are certified by a domain expert, providing a reliable ground truth. With this new set of annotation, and considering the new annotation made in the case of Geneva , it is possible to conduct a new training of the deep learning model. For this last training, the full ground truth is considered, with the FHNW annotations and those coming from the domain experts of Geneva and Neuch\u00e2tel . The following plot gives an overall simple representation of the obtained results : Score obtained using all the available ground truth, including FHNW, Geneva and Neuch\u00e2tel - Simple representation On the test set, an F1-score of 0.82 is obtained, which is slightly worse that for the initial training ( 0.85 ). On the overall, one can also sees that the inventory capacity is decreased while the amount of false positive is reduced. Again, one can here sees the instabilities of the results, showing that the used data is not sufficient or not enough well suited for such task. One can see on this following plots, the simple representation of the score reduced only the Geneva and Neuch\u00e2tel areas : Score obtained restricted to the Geneva (test set) - Simple representation Score obtained restricted to the Neuch\u00e2tel (test set) - Simple representation One has to take into account that restricting the score to such area leads to very few prediction, leading to poor statistics. It is nevertheless clear that the results on the Neuch\u00e2tel restriction demonstrate the instabilities observed all along the project. On Neuch\u00e2tel , choosing a different threshold could lead to a better inventory capacity, but the fact that the threshold needs to be adapted according to the situation shows that the model was not able to generalise. It is most likely that the nature of the objects, its similarity with other objects and the resolution of the images play a central role in the lack of generalisation. As a conclusion, detecting thermal panels needs higher resolution in order for the model to be able to extract more reliable features from the object instead of relying only on the situation of the object. Conclusion \u00b6 In the case of Neuch\u00e2tel , the procedure is more complex, as the database is considered. The work on the database is time-consuming and the linkage of the predictions with the entries of the database is not straightforward, mainly due to the inconsistencies on thermal panel installation localization. In addition, considering the database lead it to be the main point of view from which the prediction are analyzed, assessed and understood. It offers a very interesting point of view as it allows assessing the synchronization between the database and the current state of the thermal panel installations deployment. Nevertheless, such point of view also introduce drawback, as it does not allow to directly assess the false negative and only part of the false positive. This lead to intermediate scores, that are more focused on the database-reality synchronization than the performances of the deep learning model. It is then clearly demonstrated that a deep learning model can be interfaced with an existing database to ensure processes continuity with the introduction of new technologies in the territory management. It shows that new methods can be introduced without requiring to abandon the previous processes, which is always complicated and undesired. On the initial deep learning model assessment, with an inventory capacity of around 0.85 (recall), one can observe a difference between Neuch\u00e2tel and Geneva . Indeed, in Geneva , the recall dropped to around 0.6 while it was more around 0.8 in the Neuch\u00e2tel case. A possible explanation is the similarity between the Aargau (used as to train the initial deep learning model) and Neuch\u00e2tel in terms of geography. The case of Geneva is more urban than these two others. This confirms the instabilities already observed and seems to indicate that thermal panels remains a complex object to detect at this stage considering the available data. Conclusion and Perspectives \u00b6 As a main conclusion, this project, performed in two stage with Geneva and Neuch\u00e2tel states, is a complex task. The nature of the object of interest is the main source of difficulty. The current available aerial images made the detection of such object possible, but the resolution of the images (GSD) makes the task very difficult. Indeed, as mentioned, the thermal panel installations visible on the image are at the limit of resolution. This forces the deep learning model to learn more with the context than with the object features themselves. To add complexity, thermal panels appear very alike electrical panels on images, leading to a major source of confusion. The fact that the deep learning model is relying more on context than on object features lead the electrical panel to be reported as a thermal one, reducing the efficiency of inventory, leading to large amount of false positive. Despite that, interesting results are obtained and cannot lead to the conclusion that inventory such object is currently impossible. It remains very challenging, but data science can already bring help in the tracking and surveillance of the thermal panel installations. The collaboration with the domain experts is here a necessity. Indeed, such installations, especially with the image resolution, are extremely complex to confirm as such (mainly due to the confusion with electrical panels and other roof elements ). Even for the domain expert, determining if a prediction is a true positive or not is challenging and time-consuming. Without the help of domain experts, data scientists are not able to tackle such problem. Another positive outcome is the demonstration that data science can be interfaced smoothly with existing processes. This is shown with the Neuch\u00e2tel case, where the predictions can instantly be linked to the entries of the pre-existing domain expert database. This eases the domain expert assessment procedure and can also participate to assess the synchronization between the database and the reality. As a final word, the obtained deep learning model is not formally able to enter the management of the territory. It is demonstrated that the nature of the object and the available data makes the model unstable from a situation to another. This shows that the current data available is not formally enough to lead to the production of a fully working prototype able to satisfy the specifications of the domain experts. Nevertheless, such model can already perform pre-processes to ease the work of domain expert in the complex task of tracking the deployment of thermal energy generators on the Swiss territory.","title":"DETECTION OF THERMAL PANELS ON CANTON TERRITORY TO FOLLOW RENEWABLE ENERGY DEPLOYMENT"},{"location":"PROJ-TPNL/#detection-of-thermal-panels-on-canton-territory-to-follow-renewable-energy-deployment","text":"Nils Hamel (UNIGE) - Huriel Reichel (FHNW) Supervision : Roxane Pott (swisstopo) Project in collaboration with Geneva and Neuch\u00e2tel States - TASK-TPNL July 2021 to February 2022 - Published on February 22, 2022 Abstract : Deployment of renewable energy becomes a major stake in front of our societies challenges. This imposes authorities and domain expert to promote and to demonstrate the deployment of such energetic solutions. In case of thermal panels, politics ask domain expert to certify, along the year, of the amount of deployed surface. In front of such challenge, this project aims to determine to which extent data science can ease the survey of thermal panel installations deployment and how the work of domain expert can be eased.","title":"DETECTION OF THERMAL PANELS ON CANTON TERRITORY TO FOLLOW RENEWABLE ENERGY DEPLOYMENT"},{"location":"PROJ-TPNL/#introduction","text":"For authorities, being able to track the deployment of renewable energy is becoming a major challenge in front of stakes of our societies. In addition, following the deployment of installations on territory is difficult, as construction permits are not sufficient evidences. Indeed, the construction permits materialize a will, but the actual deployment and its specifications can differ from paperwork to reality. In case of thermal panels, domain experts are then put in front of a major challenge, as they have to certify of the surface of solar thermal energy that is deployed and active on their territory on a regular basis. This reporting is made for politics that aim to deploy a certain amount of renewable energy, part of territories energetic politic. Mainly based on paperwork, the current survey of thermal panels deployment are affected by drawbacks. Indeed, it is currently complicated to determine whether a construction permit lead to the deployment of a thermal panel installation and if this installation is still in activity. The goal of this project is to determine if data science is able to provide new solutions for the survey of thermal energy production in order to report more accurate surface values to the politics.","title":"Introduction"},{"location":"PROJ-TPNL/#research-project-specification","text":"In this project, the goal is to determine whether it is possible to track down thermal panels installation on territory by using aerial images and deep learning methods. The main axis are : Train a deep learning model on aerial images to detect thermal panels Assess the performances of the deep learning model Determine to which extent it is possible to link the predictions to existing domain expert database","title":"Research Project Specification"},{"location":"PROJ-TPNL/#research-project-strategy-and-collaboration","text":"This research project was made in collaboration with the States of Neuch\u00e2tel and Geneva . Both domain experts are facing similar challenges and their needs are nearly identical, despite their current processes differs. For each collaboration, the goals are similar, but the methodology is different. With Neuch\u00e2tel , the domain expert database is considered while with Geneva , the database is not considered. Considering the database in the collaboration with Neuch\u00e2tel lead to a much larger amount of work, as the database need to be pre-processed before to put it into perspective of the deep learning network results. It is nevertheless important to be able to assess the possibility to insert our demonstrator in the existing procedures, that are used by domain expert to track thermal panels installations.","title":"Research Project Strategy and Collaboration"},{"location":"PROJ-TPNL/#research-data-selected-areas","text":"As mentioned, the best (and probably the only) solution to track down thermal panels is to use aerial images. Indeed, due to their nature, thermal panels are always visible on aerial images. Exceptions to this rule are unusual. In addition, aerial images are acquired regularly and a full set of orthomosaic can be easily obtained each five years (at least in Switzerland). For Geneva and Neuch\u00e2tel , it is not impossible to obtain a set of images each two years. Nevertheless, using aerial images come with drawbacks. The main one is of course resolution ( GSD ). Aerial image sets used to compose orthomosaics are acquired to cover the whole territory. It follows that the resolution is limited. For a large amount of applications, the available resolution is sufficient. But for thermal panels, the resolution starts to become challenging. Illustration of the resolution at which thermal panels can be viewed on aerial images - Data : swisstopo, SITG (GSD ~ 10 cm/pixel) Despite the resolution, aerial images are selected to train a deep learning network. Mainly SWISSIMAGE from swisstopo are considered for this research project. At the time, the 2020 version of the orthomosaic is considered for both Neuch\u00e2tel and Geneva . For both cases, a test area is defined. On the side of Neuch\u00e2tel , a large test area is chosen in order to cover a large portion of the territory that mixes constructed zones and more rural ones. On the side of Geneva , the test area is defined by the domain expert and consists of a rectangular zone. Illustration of the test areas defined on Neuch\u00e2tel (left) and Geneva (right) - Data : swisstopo The research project is then only focusing on portion of territory to keep the scale realistic for such demonstrator according to the available time.","title":"Research Data & Selected Areas"},{"location":"PROJ-TPNL/#deep-learning-model-initial-training","text":"In this project, it is not possible to extract a ground truth, that is annotations on aerial images, from the domain expert databases. Thankfully, the FHNW , partner of the STDL , conducted some year ago annotations for thermal panels on the States of Aargau . The set consists of thousands of annotated tiles of 80x80m in size made on the SWISSIMAGE images set ( 2020 ). The annotation work was made by students of the FHNW and supervised by the D. Jordan scientists team. Such data-set is exactly the required bootstrap data to train an initial deep learning model. The only constraint is coming from the fact that the ground truth is defined by the 80x80m wide tiles on which annotations are made. Illustration of the FHNW ground truth - Labels in white, tiles in red - Data : swisstopo, FHNW Several training sessions are conducted in order to determine which sub-tiling system lead to the best performances scores. Due to the predefined ground truth, only sub-tiles of the 80x80m original tiles are possible. As a result, 80x80m , 40x40m and 26x26m tiles are considered for the network training. In all training sessions, the results are quite stable around a F1-score of 0.8-0.85 , with always a non-negligible proportion of false positives. The best results are obtained for the smaller tiles : 26x26m . It is unfortunate as small tiles comes with drawbacks. Indeed, using small tiles impose important tiling strategy to cover a large area. In addition, using small tiles also induce larger amount of cuts that have to be merged afterwards to create a usable geographical layer. Despite these drawbacks, as a demonstrator is desired, the performances are favored. The following plot shows the precision, recall and F1-score obtained for the initial training using the data of the FHNW . These values are computed over the test set, that consists of 15% of the total data-set. Scores obtained with the FHNW ground truth - Precision, Recall and F1-score On the previous plot, the scores are all computed entity-wise and not pixel-wised. This choice is made to fit the main necessity of domain experts, which is to inventory thermal panel installations more than estimating their surfaces, which is a secondary goal. One can see that encouraging results are obtained, but one can also see that the F1-score plateau is not significantly marked, a sign that the model is not yet optimal, despite the large amount of data. As we are working with domain experts, presenting F1-score according to threshold can be challenging and difficult to understand. During other research projects, it has been clear that efforts have to be put on our side to present the performances of our tools in a way that is informative and understandable by the domain exerts, in order to ensure a working collaboration and dialog, without which, such research projects can be difficult to conduct. It is the reason why an alternate representation of the performances are introduced. It shows the performances of the neural network in a more compact and readable way, focusing on elements that are interesting for the domain experts and their real-world necessities. The proposed plot is as follows : Simplified representation used with domain experts of the obtained scores - The green area is the true positives, the yellow one is false negatives and the red on is the false positive. The upper percentage give the inventory capacity, the lower one adding the false positive to the percentage. The bar is containing three proportions : the true positives, the false negatives and the false positives. The two first proportions are grouped into one in order to represent the capacity of the network to create a reliable inventory. It shows the amount of thermal panels detected over their total amount (recall). The overall bar adds the proportion of false positive, that are seen by domain experts as pollution of the obtained inventory. Showing this proportions indicates to the domain experts, in a simple way, how usable the inventory is.","title":"Deep Learning Model Initial Training"},{"location":"PROJ-TPNL/#assessment-and-improvement-of-the-model","text":"This section is split into two separated parts, one for the Geneva case and the other for the Neuch\u00e2tel one, as the chosen strategy is different. The case of Geneva , with a more direct approach (not considering the domain expert pre-existing database), is presented first.","title":"Assessment and Improvement of the Model"},{"location":"PROJ-TPNL/#case-of-geneva","text":"In the case of Geneva , the choice is made to not consider existing databases and to proceed on detecting thermal panel installations directly on images to create an inventory that can then be assessed by the domain expert to extract reliable performance scores.","title":"Case of Geneva"},{"location":"PROJ-TPNL/#case-of-neuchatel","text":"The case of Neuch\u00e2tel is clearly more complex than the case of Geneva . In this case, the database of the domain expert is considered in order to try to link the predictions with the entries of the existing database. This choice is made to demonstrate the ability to integrate data science technology in existing pipeline, in order to avoid creating disruptive effect.","title":"Case of Neuch\u00e2tel"},{"location":"PROJ-TPNL/#conclusion-and-perspectives","text":"As a main conclusion, this project, performed in two stage with Geneva and Neuch\u00e2tel states, is a complex task. The nature of the object of interest is the main source of difficulty. The current available aerial images made the detection of such object possible, but the resolution of the images (GSD) makes the task very difficult. Indeed, as mentioned, the thermal panel installations visible on the image are at the limit of resolution. This forces the deep learning model to learn more with the context than with the object features themselves. To add complexity, thermal panels appear very alike electrical panels on images, leading to a major source of confusion. The fact that the deep learning model is relying more on context than on object features lead the electrical panel to be reported as a thermal one, reducing the efficiency of inventory, leading to large amount of false positive. Despite that, interesting results are obtained and cannot lead to the conclusion that inventory such object is currently impossible. It remains very challenging, but data science can already bring help in the tracking and surveillance of the thermal panel installations. The collaboration with the domain experts is here a necessity. Indeed, such installations, especially with the image resolution, are extremely complex to confirm as such (mainly due to the confusion with electrical panels and other roof elements ). Even for the domain expert, determining if a prediction is a true positive or not is challenging and time-consuming. Without the help of domain experts, data scientists are not able to tackle such problem. Another positive outcome is the demonstration that data science can be interfaced smoothly with existing processes. This is shown with the Neuch\u00e2tel case, where the predictions can instantly be linked to the entries of the pre-existing domain expert database. This eases the domain expert assessment procedure and can also participate to assess the synchronization between the database and the reality. As a final word, the obtained deep learning model is not formally able to enter the management of the territory. It is demonstrated that the nature of the object and the available data makes the model unstable from a situation to another. This shows that the current data available is not formally enough to lead to the production of a fully working prototype able to satisfy the specifications of the domain experts. Nevertheless, such model can already perform pre-processes to ease the work of domain expert in the complex task of tracking the deployment of thermal energy generators on the Swiss territory.","title":"Conclusion and Perspectives"},{"location":"PROJ-TREEDET/","text":"Tree Detection from Point Clouds over the Canton of Geneva \u00b6 Alessandro Cerioni (Canton of Geneva) - Flann Chambers (University of Geneva) - Gilles Gay des Combes (CJBG - City of Geneva and University of Geneva) - Adrian Meyer (FHNW) - Roxane Pott (swisstopo) Proposed by the Canton of Geneva - PROJ-TREEDET May 2021 to March 2022 - Published on April 22, 2022 Abstract : Trees are essential assets, in urban context among others. Since several years, the Canton of Geneva maintains a digital inventory of isolated (or \"urban\") trees. This project aimed at designing a methodology to automatically update Geneva's tree inventory, using high-density LiDAR data and off-the-shelf software. Eventually, only the sub-task of detecting and geolocating trees was explored. Comparisons against ground truth data show that the task can be more or less tricky depending on how sparse or dense trees are. In mixed contexts, we managed to reach an accuracy of around 60%, which unfortunately is not high enough to foresee a fully unsupervised process. Still, as discussed in the concluding section there may be room for improvement. 1. Introduction \u00b6 1.1 Context \u00b6 Human societies benefits from the presence of trees in cities and their surroundings. More specifically, as far as urban contexts are concerned, trees deliver many ecosystem services such as: the reduction of heat islands, by shading and cooling their direct environment; the mitigation of flood risks, by intercepting precipitation through their foliage and increasing soil infiltration; the reduction of atmospheric pollution; the reduction of noise pollution; a positive contribution to the physical, mental and social health of the population. Moreover, they play an important role of support of the biodiversity by offering resources and shelter to numerous animal, plant and fungus species. The quality and quantity of such benefits depend on various parameters, such as the height, the age, the leaf area, the species diversity within a given population of trees. Therefore, the preservation and the development of a healthy and functional tree population is one of the key elements of those public policies which aim at increasing resilience against climate change. For these reasons, the Canton of Geneva has set the ambitious goal of increasing its canopy cover (= ratio between the area covered by foliage and the total area) from 21% (as estimated in 2019) to 30% by 2050. In order to reach this goal, the concerned authorities ( i.e. the Office cantonal de l\u2019agriculture et de la nature ) need detailed data and tools to keep track of the cantonal tree population and drive its development. The Inventaire Cantonal des Arbres Isol\u00e9s (ICA) is the most extensive and detailed source of data on isolated trees (= trees that do not grow in forests) within the Canton of Geneva. Such dataset is maintained by a joint effort of several public administrations (green spaces departments of various municipalities, the Office cantonal de l\u2019agriculture et de la nature , the Geneva Conservatory and Botanical Garden, etc.). For each tree, several attributes are provided: geographical coordinates, species, height, plantation date, trunk diameter, crown diameter, etc. To date, the ICA includes data about more than 237 000 trees. However, it comes with a host of known limitations: only the public domain is covered (no records about trees which are found within private properties); moreover, the coverage of the public domain is partial (business experts estimate that half of the actual trees are missing). The freshness of data is not consistent among the various records, as it relies on sporadic ground surveys and manual updates. Trees tagged as \"historical\" lack precision in terms of geolocation and taxonomical information. In light of Geneva's ambitions in terms of the canopy growth, the latter observations call for the need of a more efficient methodology to improve the exhaustivity and veracity of the ICA. Over the last few years, several joint projects of the Canton, the City and the University of Geneva explored the potential of using LiDAR point clouds and tailored software to characterize trees in a semi-automatic way, following practices that are already established in forestry. Yet, forest and urban settings are quite different from each other: forests exhibit higher tree density, which can hinder tree detection; forests exhibit lower heterogeneity in terms of species and morphology, which can facilitate tree detection. Hence, the task of automatic detection is likely to be harder in urban contexts than in forests. The study reported in this page, proposed by the Office cantonal de l\u2019agriculture et de la nature (OCAN) and carried out by the STDL, represents a further yet modest step ahead towards the semi-automatic digitalisation of urban trees. 1.2 Objectives \u00b6 The objectives of this project was fixed by the OCAN domain experts and, in one sentence, amount to designing a robust and reproducible semi-automatic methodology allowing one to \"know everything\" about each and every isolated tree of the Canton of Geneva, which means: detecting all the trees (exhaustivity); geolocating the trunk and the top of every tree; measuring all the properties of every tree: height, trunk and crown diameter, canopy area and volume; identify species. Regarding quality, the following requirements were fixed: Property Expected precision Trunk geolocation 1 m Top geolocation 1 m Height 2 m Trunk diameter at 1m height 10 cm Crown diameter 1 m Canopy area 1 m\u00b2 Canopy volume 1 m\u00b3 In spite of such thorough and ambitious objectives, the time span of this project was not long enough to address them all. As a matter of fact, the STDL team only managed to tackle the tree detection and trunk geolocation. 1.3 Methodology \u00b6 As shown in Figure 1.1 here below, algorithms and software exist, which can detect individual trees from point clouds. Figure 1.1: The two panels represent a sample of a point cloud before (top panel) and after (bottom) tree detection. Not only such tools take point cloud as input data, but also the values of a bunch of parameters have to be chosen by users. The quality of results depend both on input data and on input parameters. The application of some pre-processing to the input point cloud have an impact, too. Therefore, it becomes clear that in order to find the optimal configuration for a given context, one should be able to measure the quality of results as a function of the chosen parameters as well as of the pre-processing operations. To this end, the STDL team called for the acquisition of ground truth data. Further details about input data (point cloud and ground truth), software and methodology will be provided shortly. 1.4 Input data \u00b6 1.4.1 LiDAR data \u00b6 A high-density point cloud dataset was produced by the Flotron Ingenieure company, through Airborne Laser Scanning (ALS, also commonly known by the acronym LiDAR - Light Detection And Ranging). Thanks to a lateral overlap of flight lines of ~80%, more than 200 pts/m\u00b2 were collected, quite a high density when compared to more conventional acquisitions (30 \u2013 40 pts/m\u00b2). Flotron Ingenieure took care of the point cloud classification, too. The following table summarizes the main features of the dataset: LIDAR 2021 - OCAN, Flotron Ingenieure Coverage Municipalities of Ch\u00eane-Bourg and Th\u00f4nex (GE) Date of acquisition March 10, 2021 Density > 200 pts/m\u00b2 Planimetric precision 20 mm Altimetric precision 50 mm Tiles 200 tiles of 200 m x 200 m Format LAS 1.2 Classes 0 - Unclassified 2 - Ground 4 - Medium vegetation (0.5 - 3m) 5 - High vegetation (> 3m) 6 - Building 7 - Low points 10 - Error points 13 - Bridges 16 - Noise / Vegetation < 0.5m Figs. 1.2 and 1.3 represent the coverage of the dataset and a sample, respectively. Figure 1.2: Coverage and tiling of the 2021 high-density point cloud dataset. Figure 1.3: A sample of the 2021 high-density point cloud. Colors correspond to different classes: green = vegetation (classes 4 and 5), orange = buildings (class 6), grey = ground or unclassified points (class 2 and 0, respectively). 1.4.2 Test sectors and ground truth data \u00b6 In order to be able to assess the exhaustivity and quality of our results, we needed reference (or \"ground truth\") data to compare with. Following the advice of domain experts, it was decided to acquire ground truth data regarding trees within three test sectors, which represent three different types of contexts: [1] alignment of trees, [2] park, [3] a mix of [1] and [2]. Of course, these types can also be found elsewhere within the Canton of Geneva. Ground truth data was acquired through surveys conducted by geometers, who recorded the (x, y) coordinates of the trunk at 1 m above the ground; the trunk diameter at 1 m above the ground, for every tree having a trunk diameter larger than 10 cm. Details about the three test sectors are provided in the following, where statistics on species, height, age and crown diameter stem from the ICA. Avenue de Bel-Air (Ch\u00eane-Bourg, GE) \u00b6 Property Value Type Alignment of trees Trees 135 individuals Species monospecific ( Tilia tomentosa ) Height range 6 - 15 m Age range 17 - 28 yo Crown diameters 3 - 10 m Comments Well separated trees, heights and morphologies are relatively homogenous, no underlying vegetation (bushes) around the trunks. Figure 1.4: \"Avenue de Bel-Air\" test sector in Ch\u00eane-Bourg (GE). Orange dots represents ground truth trees as recorded by geometers. Parc Floraire (Ch\u00eane-Bourg, GE) \u00b6 Property Value Type Park with ornemental trees Trees 95 individuals Species 65 species Height range 1.5 - 28 m Age range Unknown Crown diameters 1 - 23 m Comments Many ornemental species of all sizes and shapes, most of them not well separated. Very heterogenous vegetation structure. Figure 1.5: \"Parc Floraire\" test sector in Ch\u00eane-Bourg (GE). Orange dots represents ground truth trees as recorded by geometers. Adrien-Jeandin (Th\u00f4nex, GE) \u00b6 Property Value Type Mixed (park, alignment of tree, tree hedges, etc.) Trees 362 individuals Species 43 species Height range 1 - 34 m Age range Unknown Crown diameters 1 - 21 m Comments Mix of different vegetation structures, such as homogenous tree alignments, dense tree hedges and park with a lot of underlying vegetation under big trees. Figure 1.6: \"Adrien-Jeandin\" test sector in Th\u00f4nex (GE). Orange dots represents ground truth trees as recorded by the geometers. 1.5 Off-the-shelf software \u00b6 Two off-the-shelf software products were used to detect trees from LiDAR data, namely TerraScan and the Digital Forestry Toolbox (DFT). The following table summarizes the main similarities and differences between the two: Feature Terrascan DFT Licence Proprietary (*) Open Source (GPL-3.0) Price See here Free Standalone No: requires MicroStation or Spatix No: requires Octave or MATLAB Graphical User Interface Yes No In-app point cloud visualization Yes (via MicroStation or Spatix ) No (**) Scriptable Partly (via macros ) Yes Hackable No Yes (*) Unfortunately, we must acknowledge that using network licenses turned out to be quite problematic. Weeks of unexpected downtime were experienced, due to puzzling issues related to the interplay between the self-hosted license server, firewalls, VPN and end-devices. (**) We used the excellent Potree Free and Open Source software for visualization. The following sections are devoted to brief descriptions of these two tools; further details will be provided in Section 4 and Section 5 . 1.5.1 Terrascan \u00b6 Terrascan is a proprietary software, developed and commercialized by Terrasolid , a MicroStation and Spatix plugin which is capable of performing several tasks on point clouds, including visualisation, classification. As far as tree detection is concerned, Terrascan offers multiple options to manually, semi- or fully-automatically detect and segment trees in point clouds; estimate the value of a host of properties (height, trunk diameter, etc.). Two methods are provided to group (one may also say \"to segment\") points into individual trees: the so-called \"highest point\" (aka \"watershed\") method, suitable for airborne point clouds. the so-called \"trunk\" method, which requires a high amount of points from trunks and hence is suitable for very high-density airborne point clouds, for mobile data and point clouds from static scanners. For further details on these two methods, we refer the reader to the official documentation . 1.5.2 Digital Forestry Toolbox (DFT) \u00b6 The Digital Forestry Toolbox (DFT) is a collection of tools and tutorials for Matlab/Octave designed to help process and analyze remote sensing data related to forests (source: official website ) developed and maintained by Matthew Parkan, released under an Open Source license (GPL-3.0). The DFT implements algorithms allowing one to perform tree top detection, via a marker-controlled watershed segmentation (cf. this tutorial ); stem detection (cf. this other tutorial ). We refer the reader to the official documentation for further information. 2. Method \u00b6 As already stated, in spite of the thorough and ambitious objectives of this project (cf. here ), only the tree detection and trunk geolocation sub-tasks could be tackled given the resources (time, humans) which were allocated to the STDL. The method we followed goes through several steps, pre-processing, running Terrascan or DFT, post-processing, which are documented here-below. 2.1 Pre-processing: point cloud reclassification and cleaning \u00b6 [1] In some cases, points corresponding to trunks may be misclassified and lay in class 0 \u2013 Unclassified instead of class 4 \u2013 Medium vegetation . As the segmentation process only takes vegetation classes (namely classes 4 and 5) into account, the lack of trunk points can make some trees \"invisibles\". [2] We suspected that the standard classification of vegetation in LiDAR point clouds could be too basic for the task at hand. Indeed, vegetation points found at less (more) than 3 m above the ground are classified as 4 \u2013 Medium Vegetation ( 5 \u2013 High Vegetation ). This may cause one potential issue: all the points of a given tree that are located at up to 3 meters above the ground (think about the trunk!) belong to a class (namely class no. 4) which can also be populated by bushes and hedges. The \"contamination\" by bushes and hedges may spoil the segmentation process, especially in situations where dense low vegetation exists around higher trees. Indeed, it was acknowledged that in such situations the segmentation algorithm fails to properly identify trunk locations and distinguish one tree from another. Issues [1] and [2] can be solved or at least mitigated by reclassifying and cleaning the input point cloud, respectively. Figures 2.1 and 2.2 show how tree grouping (or \"segmentation\") yields better results if pre-processed pointclouds are used. Figure 2.1: Tree grouping (or \"segmentation\") applied to the original (top panel) vs pre-processed (bottom) point cloud. Without pre-processing, two trees connected by a hedge are segmented as one single individual. Therefore, only one detection is made (green circle slightly above the ground). With pre-processing, we get rid of the hedge and recover the lowest trunk points belonging to the tree on the left. Eventually, both trees are properly segmented and we end up having two detections (green circles). Figure 2.2: Tree grouping (or \"segmentation\") applied to the original (left panel) vs reclassified (right) point cloud. Without pre-processing, segmentation yields a spurious detection (= false positive, red circle slightly above the ground), resulting from the combination of a pole and a hedge. With pre-processing, we get rid of most of the points belonging to the hedge and the pole; no false positive shows up. 2.1.1 Reclassification with Terrascan and FME Desktop \u00b6 The reclassification step aims at recovering trunk points which might be misclassified and hence found in some class other than class 4 \u2013 Medium Vegetation ( e.g. class 0 - Unclassified ). It was carried out with Terrascan using the Classify by normal vectors tool, which identifies linear features generated by groups of class 0 and 4 points; moves the concerned points to an empty class (here: class 10). Finally, during the cleaning process with FME Desktop (cf. Chapter 2.1.2 here below), these points are reclassified in class 4. The outcome of this reclassification step is shown in Figure 2.3. Figure 2.3: Outcome of reclassification. In the upper picture, the trunk of the tree on the left is partially misclassified, while the trunk of the tree in the middle is completely misclassified. After reclassification, almost all the points belonging to trunks are back in class 4. Let us note that the reclassification process may also recover some unwanted objects enjoying linear features similar to trees (poles, power lines, etc.). However, such spurious objects can at least partly filtered out by cleaning step described here below. 2.1.2 Cleaning point clouds with FME Desktop \u00b6 The cleaning step aims to filter as many \"non-trunk\" points as possible out of class 4 \u2013 Medium Vegetation , in order to isolate trees from other types of vegetation. Vegetation is considered as part of a tree if higher than 3 m. Cleaning consists in two steps: Every point of class 4 which is NOT vertically covered by any class 5 point ( i.e. any class 4 point which is not under a tree) is moved to another class. This filters out an important part of bushes and hedges. Only those bushes and hedges which are actually under a tree remain in class 4. Every point of class 4 which is located above a wall is moved to another class. Actually, it was noticed that many hedges were located on or against walls. This filters out some additional \"hedge points\", which may escape the first cleaning step if found straight under a tree. Note that in case the point cloud is reclassified in order to recover missing trunks, the cleaning step also allow to get rid of unwanted linear objects (poles, electric lines, etc) that have been recovered during the reclassification. The class containing reclassified points (class 10) will simply be process together with class 4 and receive the same treatment. Eventually, reclassified points that are kept (discarded) by the cleaning process will be integrated in class 4 (3). Figure 2.4: Outcome of the cleaning process. Red points correspond to the \"cleaned\" points that were moved to class 3. Figure 2.5: Outcome of the cleaning process. Red points correspond to the \"cleaned\" points that were moved to class 3. Hedges under trees escape the cleaning. 2.1.3 FME files and documentation of pre-processing steps \u00b6 More detailed information about the reclassification and cleaning of the point cloud can be found here . FME files can be downloaded by following these links: FME Workbench File (requires a Canopy Cover Layer) Alternative FME Workbench File (does not require a Canopy Cover Layer Further information on the generation of a Canopy Cover Layer can be found here . 2.2 Running Terrascan \u00b6 Terrascan offers multiple ways to detect trees from point clouds. In this project, we focused on the fully automatic segmentation, which is available through the \"Assign Groups\" command. As already said (cf. here ), two methods are available: highest point (aka \"watershed\") method and trunk method. In what follows, we introduce the reader to the various parameters that are involved in such methods. 2.2.1 Watershed method parameters \u00b6 Group planar surfaces \u00b6 Quoting the official documentation , If on, points that fit to planes are grouped. Points fitting to the same plane get the same group number. Min height \u00b6 This parameter defines a minimum threshold on the distance from the ground that the highest of a group of points must have, in order for the group to be considered as a tree. The default value is 4 meters. The Inventaire Cantonal des Arbres Isol\u00e9s includes trees which are at least 3 m high. This parameter ranged from 2 to 6 m in our tests. Figure 2.6: Cross-section view of two detected trees. The left tree would not be detected if the parameter \"Min height\" were larger than 3.5 m. Require \u00b6 This parameter defines the minimum number of points which are required to form a group ( i.e. a tree). The default value is 20 points, which is very low in light of the high density of the dataset we used. Probably, the default value is meant to be used with point clouds having a one order of magnitude smaller density. In our analysis, we tested the following values: 20 (default), 50, 200, 1000, 2000, 4000, 6000. 2.2.2 Trunk method parameters \u00b6 Group planar surfaces \u00b6 See here . Min Height \u00b6 Same role as in the watershed method, see here . Max diameter \u00b6 This parameter defines the maximum diameter (in meters) which a group of points identified as trunk can reach. Default value is 0.6 meters. Knowing that very few trees of the ICA exceed this value; yet, older trees can exhibit larger diameters, we used the following values: 0.20, 0.30, 0.40, 0.60 (default), 0.80, 1.00, 1.50 meters. Min trunk \u00b6 This parameter defines a minimum threshold on the length of tree trunks. Default value is 2 m. We tested the following values: 0.50, 1.00, 1.50, 2.00 (default), 2.50, 3.00, 4.00, 5.00 meters. Group by density \u00b6 Quoting the official documentation , If on, points are grouped based on their distance to each other. Close-by points get the same group number. Gap \u00b6 Quoting the official documentation , Distance between consecutive groups: Automatic: the software decides what points belong to one group or to another. This is recommended for objects with variable gaps, such as moving objects on a road. User fixed: the user can define a fixed distance value in the text field. This is suited for fixed objects with large distances in between, such as powerline towers. We did not attempt the optimization of this parameter but kept the default value (Auto). 2.2.3 Visualizing results \u00b6 Terrascan allows the user to visualize the outcome of the tree segmentation straight from within the Graphical User Interface. Points belonging to the same group ( i.e. to the same tree) are assigned the same random color, which allows the user to perform intuitive, quick, qualitative in-app assessments. An example is provided in Figure 2.7. Figure 2.7: Three examples of tree segmentations. From a qualitative point of view, we can acknowledge that the leftmost (rightmost) example is affected by undersegmentation (oversegmentation). The example in the middle seems to be a good compromise. 2.2.4 Exporting results \u00b6 As already said, Terrascan takes point clouds as input data and can run algorithms which form group out of these points, each group corresponding to an individual tree. A host of \"features\" (or \"measurements\"/ \"attributes\"/...) are generated for each group, which the user can export to text files using the \"Write group info\" command. The set of exported features can be customized through a dedicated configuration panel which can be found within the software settings (\"File formats / User group formats\"). The list and documentation of all the exportable features can be found here . Let us note that depending on the segmentation method, not all the features can be populated; multiple geolocation information can exist. The following table summarizes the features which the watershed and trunk methods can export: Feature Watershed Method Trunk Method Group ID Yes Yes Point Count Yes Yes Average XY Coordinates Yes Yes Ground Z at Avg. XY Yes Yes Trunk XY No Yes Ground Z at Trunk XY No Yes Trunk Diameter See here below See here below Canopy Width Yes Yes Biggest Distance above Ground (Max. Height) Yes Yes Smallest Distance above Ground Yes Yes Length Yes Yes Width Yes Yes Height Yes Yes 2.2.5 Trunk Diameters \u00b6 Terrascan integrates a functionality allowing users to measure trunk diameters (see Figure 2.8). Figure 2.8: Screenshots of the trunk diameter measurement function. Let us note that the measurement of trunk diameters can be feasible or not, depending on the number of points which sample a given trunk. We performed some rapid experiments, which showed that some diameters could actually be estimated, given the high density of the point cloud we used (cf. here ). Still, we did not analyzed the reliability of such estimations against reference/ground truth data. 2.3 Running DFT \u00b6 As already said, DFT consists of a collection of functions which can be run either with Octave or MATLAB . The former software was used in the frame of this context. A few custom Octave scripts were written to automatize the exploration of the parameter space. Our preliminary, warm-up tests showed that we could not obtain satisfactory results by using the \"tree top detection method\" (cf. here ). Indeed, upon using this method the F1-score topped at around 40%. Therefore, we devoted our efforts to exploring the parameter space of the other available method, namely the \"tree stem detection method\" (cf. this tutorial ). In the following, we provide a brief description of the various parameters involved in such a detection method. 2.3.2 Parameters concerned by the tree stem detection method \u00b6 Quoting the official tutorial , The stem detection algorithm uses the planimetric coordinates and height of the points above ground as an input. To compute the height, DFT provides a function called elevationModels , which takes the classified 3D point cloud as input, as well as some parameters. Regarding these parameters, we stuck to the values suggested by the official tutorial, except for the cellSize parameter (= size of the raster cells) which was set to 0.8 (meters); the searchRadius parameter which was set to 10 (meters). Once that each point is assigned an height above the ground, the actual tree stem detection algorithm can be invoked ( treeStems DFT function, cf. DFT Tree Stem Detection Tutorial / Step 4 - Detect the stems ), which takes a host of parameters. While referring the reader to the official tutorial for the definition of these parameters, we provide the list of values we used (unit = meters): Parameter Value cellSize 0.9 bandWidth 0.7 verticalStep 0.15 searchRadius from 1 to 6, step = 0.5 minLength from 1 to 6, step = 0.5 searchRadius ( minLength ) was fixed to 4 (meters) when minLength ( searchRadius ) was let vary between 1 and 6 meters. 2.3.3 Visualizing results \u00b6 DFT does not include any specific Graphical User Interface. Still, users can rely on Octave/MATLAB to generate plots, something useful and clever especially when performing analysis in an interactive way. In our case, DFT was used in a non-interactive way and visualisation was delayed until the assessment step, which we describe in Section 2.4 . 2.3.4 Exporting results \u00b6 Thanks to the vast Octave/MATLAB ecosystem, DFT results can be output to disk in several ways and using data formats. More specifically, we used the ESRI Shapefile file format to export the average (x, y) coordinates of the detected stems/peaks. 2.3.5 Trunk diameters \u00b6 This feature is missing in DFT. 2.4 Post-processing: assessment algorithm and metrics computation \u00b6 As already said, the STDL used a couple of third-party tools, namely TerraScan and the Digital Forestry Toolbox (DFT) , in order to detect trees from point clouds. Both tools can output a segmented point cloud, in which points associated to the same tree are assigned the same identifier; one (X, Y, Z) triplet per detected tree, where the X, Y and Z (optional) coordinates are computed either as the centroid of all the points which get associated to a given tree, or - under some conditions - as the centroid of the trunk only; expressed in the same reference system as the input point cloud. As the ground truth data the STDL was provided with take the form of one (X', Y') pair per tree, with Z' implicitly equal to 1 meter above the ground, the comparison between detections and ground truth trees could only be performed on the common ground of 2D space. In other words, we could not assess the 3D point clouds segmentations obtained by either TerraScan or DFT against reference/ground truth segmentations in the 3D space. The problem which needed to be solved amounts to finding matching and unmatching items between two sets of 2D points: a 1st set including the (X', Y') coordinates of ground truth trees; a 2nd set including the (X, Y) coordinates of detected trees. In order to fulfill the requirement of a 1 meter accuracy which was set by the beneficiaries of this project, the following matching rule was adopted: a detection (D) matches a ground truth tree (GT) (and vice versa) if and only if the Cartesian distance between D and GT is less or equal to 1 meter Figure 2.9 shows how such a rule would allow one to tag detections as either True Positives (TPs) or False Positives (FPs) ground truth trees as either True Positives (TPs) or False Negatives (FNs) in the most trivial case. Figure 2.9: Tagging as True Positive (TP), False Positive (FP), False Negative (FN) ground truth and detected trees in the most trivial case. Actually, far less trivial cases can arise, such as the one illustrated in Figure 2.10. Figure 2.10: Only one detection can exist for two candidate ground truth trees, or else two detections can exist for only one candidate ground truth tree. The STDL designed and implemented an algorithm, which would produce relevant TP, FP, FN tags and counts even in such more complex cases. For instance, in a setting like the one in the image here above, one would expect the algorithm to count 2 TPs, 1 FP, 1 FN. Details are provided here below. 2.4.1 The tagging and counting algorithm \u00b6 1st step: geohash detections and ground truth trees \u00b6 In order to keep track of the various detections and ground truth trees all along the execution of the assessment algorithm, each item is given a unique identifier, computed as the geohash of its coordinates, using the pygeohash Python module. Such identifier is not only unique (as far as a sufficiently high precision is used), but also stable across subsequent executions. The latter property allows analysts to \"synchronise\" the concerned objects between the output of the (Python) code and the views generated with GIS tools such as QGIS , which turns out to be quite useful especially at development and debugging time. 2nd step: convert point detections to circles \u00b6 As a 2nd step, each detection is converted to a circle, centered on the (X, Y) coordinates of the detection; having a 1 m radius. This operation can be accomplished by generating a 1 m buffer around each detection. For the sake of precision, this method was used, which generates a polygonal surface approximating the intended circle. 3rd step: perform left and right outer spatial joins \u00b6 As a 3rd step, the following two spatial joins are computed: left outer join between the circles generated at the previous step and ground truth trees; right outer join between the same two operands. In both cases, the \"intersects\" operation is used (cf. this page for more technical details). 4th step: tag trivial False Positives and False Negatives \u00b6 All those detections output by the left outer join for which no right attribute exists (in particular, we focus on the right geohash) can trivially be tagged as FPs. As a matter of fact, this means that the 1 m circular buffer surrounding the detection does not intersect any ground truth tree; in other words, that no ground truth tree can be found within 1 m from the detection. The same reasoning leads to trivially tagging as FNs all those ground truth trees output by the right outer join for which no left attribute exists. These cases correspond to the two rightmost items in Fig. 6.1. For reasons which will be clarified here below, the algorithm does not actually tag items as either FPs or FNs; instead, TP and FP \"charges\" are assigned to detected trees; TP and FN charges are assigned to ground truth trees. Here's how: for FP detected trees: TP charge FP charge 0 1 for FN ground truth trees: TP charge FN charge 0 1 5th step: tag non-trivial False Positives and False Negatives \u00b6 The left outer spatial join performed at step 3 establishes relations between each detection and those ground truth trees which are located no further than 1 meter, as shown in Figure 2.11. Figure 2.11: The spatial join between buffered detections and ground truth trees establishes relations between groups of items of these two populations. In the sample setting depicted in this picture, two unrelated groups can be found. The example here above shows 4 relations, D1 - GT1, D1 - GT2, D2 - GT3, D3 - GT3 which can be split (see the red dashed line) into two unrelated, independent groups: {D1 - GT1, D1 - GT2} {D2 - GT3, D3 - GT3} In order to generate this kind of groups in a programmatic way, the algorithm first builds a graph out of the relations established by the left outer spatial join, then it extracts the connected components of such a graph (cf. this page ). The tagging and counting of TPs, FPs, FNs is performed on a per-group basis, according to the following strategy: if a group contains more ground truth than detected trees, then the group is assigned an excess \"FN charge\", equal to the difference between the number of ground truth trees and detected trees. This excess charge is then divided by the number of ground truth trees and the result assigned to each of them. For instance, the {D1 - GT1, D1 - GT2} group in the image here above would be assigned an FN charge equal to 1; then, each ground truth tree would be assigned an FN charge equal to 1/2. Similarly, if a group contains more detected trees than ground truth trees, then the group is assigned an excess FP charge, equal to the difference between the number of detected trees and ground truth trees. This excess charge is then divided by the number of detections and the result assigned to each of them. For instance, the {D2 - GT3, D3 - GT3} group in the image here above would be assigned an excess FN charge equal to 1; then, each detection would be assigned an FP charge equal to 1/2. In case the number of ground truth trees be the same as the number of detections, no excess FN/FP charge is assigned to the group. Concerning the assignment of TP charges, the per-group budget is established as the minimum between the number of ground truth and detected trees, then equally split between the items of these two populations. In the example above, both groups would be assigned TP charge = 1. Wrapping things up, here are the charges which the algorithm would assign to the various items of the example here above: item TP charge FP charge Total charge D1 1 0 1 D2 1/2 1/2 1 D3 1/2 1/2 1 Sum 2 1 3 item TP charge FN charge Total charge GT1 1/2 1/2 1 GT2 1/2 1/2 1 GT3 1 0 1 Sum 2 1 3 Let us note that: the count of TPs yields the same result, whether we consider detections or ground truth trees, which makes sense; the \"Total charge\" column allows one to check the consistency of the algorithm; as expected, we obtain 2 FPs, 1 FP, 1 FN; the algorithm does not even attempt to establish 1:1 relations, \"optimal\" in a given sense, between ground truth and detected trees. As a matter of fact, the algorithm is designed to produce meaningful counts and tags only; of course, the algorithm also works in far more complex settings than the one depicted in Figs. 6.2 and 6.3. 2.4.2 From counts to metrics \u00b6 TP, FP, FN counts are extensive properties, out of which we can compute some standard metrics such as precision recall F1-score which are intensive, instead. While referring the reader to this paragraph for the definition of these metrics, let us state the interpretation which holds in the present use case: precision is optimal (= 1.0) if and only if (iff) all the detections are matched by ground truth trees (no FPs); recall is optimal (= 1.0) iff all the ground truth trees are detected (no FNs). Typically, one cannot optimize both precision and recall for the same values of a set of parameters. Instead, they can exhibit opposite trends as a function of a given parameter ( e.g. precision increases while recall decreases). In such cases, the F1-score would exhibit convexity and could be optimized. 3. Results and discussion \u00b6 Figure 3.1 shows some of the tree detection trials we performed, using Terrascan and DFT. Each trial corresponds to a different set of parameters and is represented either by gray dots or colored diamonds in a precision-recall plot (see the image caption for further details). Figure 3.1: Precision vs. Recall of a subset of the tree detections we attempted, using different parameters in Terrascan and DFT. Colored diamonds represent the starting point (red) as well as our \"last stops\" in the parameter space, with (yellow, green) and without (orange) pre-processing. All the three test sectors are here combined. Let us note that: the DFT parameter space can be conveniently explored by scripting the batch execution of various runs; on the contrary, the exploration of the Terrascan parameter space is more laborious, has to be performed manually, trying out one specific set of parameters after another, with repeated manual export of features (including geographical coordinates) in between. Indeed, although Terrascan let users define macros, unfortunately the \"Write Group Info\" command cannot be used in macros; in both cases, the parameter space was explored in quite an heuristic and partial way; we aimed at optimizing the F1-score all sectors combined. More detailed comments follow, concerning the best trials made with Terrascan and DFT. 3.1 The best trial made with Terrascan \u00b6 Among the trials we ran with Terrascan, the one which yielded the best F1-score was obtained using the following parameters: Parameter Value Method / Algorithm Trunk Classes 4+5, cleaned and reclassified Group planar surfaces Off Min height 3.00 m Max diameter 0.40 m Min trunk 3.00 m Group by density On Gap Auto Require 1500 pts This trial corresponds to the green diamond shown in Figure 3.1. Figure 3.2: Test sectors as segmented by the best trial made with Terrascan. Figure 3.2 provides a view of the outcome on the three test sectors. Metrics read as follows: Sector TP FP FN Detectable (TP+FN) Precision Recall F1-Score Global 323 137 234 557 70.2% 58.0% 63.5% Adrien-Jeandin 177 69 160 337 72.0% 52.5% 60.7% Bel-Air 114 15 11 125 88.4% 91.2% 89.8% Floraire 32 53 63 89 37.6% 33.7% 35.6% Figure 3.3 provides a graphical representation of the same findings, with the addition of the metrics we computed before cleaning and reclassifying the LiDAR point cloud. Figure 3.3: Cleaning and reclassifying the point cloud has a positive influence on precision and recall, although modest. Our results confirm that the tree detection task is more or less hard depending on the sector at hand. Without any surprise, we acknowledge that: the \"Avenue de Bel-Air\" test sector (BEL), enjoying an alley of well-separated trees, is easily tackled by Terrascan. Quite decent precision and recall are obtained. In contrast, the \"Parc Floraire\" test sector (FLO) turns out to be the hardest one, given the vegetation density and heterogeneity. The \"Adrien-Jeandin\" (ADR) is actually a mix of dense and sparse contexts and turns out to be a good proxy for the global performance. Cleaning and Reclassification have a benificial impact on Precision and Recall for all sectors as well as the global context (TOT). While for BEL mainly Recall profited from preprocessing, ADR and FLO showed a stronger increase in Precision. For the global context both, Precision and Recall, could be increased slighty. Figure 3.4: The F1-score attained by our best Terrascan trial. Figure 3.4 shows how our best Terrascan trial performed in terms of F1-score: globally, on a per-sector basis; with and without pre-processing. We can notice that pre-processing slightly improves the F1-score for the global context as well as for the individual sectors. The largest impact was observed for the Bel-Air sector, especially for preprocessing including Reclassification. 3.2 The best trial made with DFT \u00b6 The DFT trial yielding the highest global F1-score was obtained using the stem detection method and the following parameters: Parameter Value Method / Algorithm Stem detection Classes 4+5, cleaned and reclassified Search radius 4.00 Minimum length 4.00 Here's a summary of the resulting metrics: Sector Precision Recall F1-score Adrien-Jeandin 75.4% 36.5% 49.2% Bel-Air 88.0% 82.4% 85.1% Floraire 47.9% 36.8% 41.7% Global 74.0% 46.6% 57.2% Similar comments to those formulated here apply: the \"Avenue de Bel-Air\" sector remains the easiest to process; \"Parc Floraire\" the hardest. However, here we acknowledge a bigger gap between the global F1-score and the F1-score related to the \"Adrien-Jeandin\" test sector. Figure 3.5 shows how our best DFT trial performed in terms of F1-score: globally, on a per-sector basis; with and without pre-processing. We can notice that the impact of point cloud reclassification can be slightly positive or negative depending on the test sector. Figure 3.5: The F1-score attained by our best DFT trial. 3.3 Comparison: Terrascan vs. DFT \u00b6 Figure 3.6: Comparison of Terrascan and DFT in terms of F1-score. The comparison of the best Terrascan trial vs. the best DFT trial in terms of F1-score shows that there is no clear winner (see Figure 3.6). Still, we can notice that: DFT reaches the best F1-score ever in the \"Parc Floraire\" (\"Avenue de Bel-Air\") sector, without (with) pre-processing. Terrascan performs slightly better on global scores and substantially better on the mixed context of the Adrien-Jeandin sector,especially after pre-processing. 3.4 Trials with standard-density datasets \u00b6 In addition to applying our method to the 2021 high-density (HD) LiDAR dataset, we also tried using two other datasets exhibiting a by far more standard point density (20-30 pt/m\u00b2): Nuage de points LiDAR 2017 Nuage de points LiDAR 2019 The goal was twofold: finding evidence for the added value of high-density (HD) datasets, despite their higher cost; checking whether the parameters which turned out to yield optimal scores with HD LiDAR data could also yield acceptable results if used with standard-density (SD) datasets. Concerning the 1st point, lower point densities make the \"trunk method\" unreliable (if not completely unusable). In Figure 3.7, we report results obtained with the watershed method, along with results related to the best performing trials obtained with the 2021 HD dataset. The scores we obtained with the SD dataset are far below the best we obtained with the HD dataset, confirming the interest of high-density acquisitions. Figure 3.7: Comparison of F1-scores of the best performing trials. Parameters were optimized for each model individually. Concerning the 2nd point, without any surprise we confirmed that parameters must be re-optimized for SD datasets. The usage of the set of parameters which were optimized on the basis of the HD dataset yielded poor results, as shown in Figure 3.8. Figure 3.8: Using the parameters which were optimized for the high-density dataset leads to poor results (strong under-segmentation) on SD datasets. In accordance with the TS documentation we can see that the trunk method is unusable for lower and medium density datasets. The watershed algorithm produces a more realistic segmentation pattern on the SD dataset but still cannot reach the performance levels of the trunk or the watershed method on the HD dataset. After optimizing parameters, we could obtain quite decent results though (see Figure 3.9). Figure 3.9: After a dataset-specific parameter optimization, convincing results can be achieved on the medium-density 2019 dataset (Terrascan's watershed method was used). 3.5 Tree detection over the full 2021 high-density LiDAR dataset \u00b6 Clearly, from a computational point of view processing large point cloud dataset is not the same as processing small datasets. Given the extremely high density of the 2021 LiDAR datasets, we wanted to check whether and how Terrascan could handle such a resource-intensive task. Thanks to Terrascan's macro actions, one can split the task into a set of smaller sub-tasks, each sub-task dealing with a \"tile\" of the full dataset. Additionally, Terrascan integrates quite a smart feature, which automatically merges groups of points ( i.e. trees) spanning multiple tiles. Figure 3.10 provides a static view of the results we obtained, using the parameters which globally performed the best on the three sectors. We refer the reader to this Potree viewer (kindly hosted by the G\u00e9oportail du SITN ) for an interactive view. Figure 3.10: Result of the application of the best performing Terrascan parameters to the full dataset. 4. Conclusion and outlook \u00b6 Despite all the efforts documented here above, the results we obtained are not as satisfactory as expected. Indeed, the metrics we managed to attain all sectors combined indicate that tree detections are neither reliable (low precision) nor exhaustive (low recall). Still, we think that results may be improved by further developing some ideas, which we sketch in the following. 4.1 Further the DFT parameter space exploration \u00b6 We devoted much more time to exploring Terrascan's parameter space than DFT's. Indeed, as already stated here , we only explored the two parameters searchRadius and minLenght . Other parameters such as cellSize , bandwidth and verticalStep were not explored at all (we kept default values). We think it is definitely worth exploring these other parameters, too. Moreover, we did not try feeding all the LiDAR returns to the stem detection method, we only used the last returns. It is surely worth checking whether the usage of the other returns could be beneficial. Upon using the peak detection method, we did not manage to reach a better F1-score than ~40%, as opposed to the 57% obtained with the stem detection method. However, the peak detection method is particularly interesting because it can also delimit canopies. Hence, it may be worth trying to improve the F1-score, for instance by tuning the parameters of the power law equation relating the crown radius to the tree height (cf. here ). 4.2 Exploit contextual information \u00b6 We showed that the algorithms implemented by TerraScan and DFT yield much better results in sparse contexts (ex.: the \"Avenue de Bel-Air\" test sector) than in dense ones (ex.: the \"Parc Floraire\" test sector). This means that precision may be improved (at the expense of recall, though) if one could restrain the tree detection to sparse contexts only, either as a pre- or post-processing step. We can think of at least a couple of methods which would allow one to (semi-)automatically tell sparse from dense contexts: intrinsic method: after segmenting the point cloud into individual trees, one could analyze how close (far) each individual is to (from) the nearest neighbor and estimate the density of trees on some 2D or 3D grid; extrinsic method: territorial data exist (see for instance the dataset \"Carte de couverture du sol selon classification OTEMO\" distributed by the SITG ), providing information about urban planning and land use ( e.g . roads, parks, sidewalks, etc.). These data may be analyzed in order to extract hints on how likely it is for a tree to be in close proximity with another, according to its position. 4.3 Combine detections stemming from two or more independent trials \u00b6 Detections coming from two or more independent trials (obtained with different software or else with the same software but different parameters) could be combined in order to improve either precision or recall: recall would be improved (i.e. the number of false negatives would be reduced) if detections coming from multiple trials were merged. In order to prevent double counting, two or more detections coming from two or more sources could be counted as just one if they were found within a given distance from each other. The algorithm would follow along similar lines as the ones which led us to the \"tagging and counting algorithm\" presented here above ; precision would be improved (i.e. the number of false positives would be reduced) if we considered only those detections for which a consensus could be established among two or more trials, and discarded the rest. A distance-based criterion could be used to establish such consensus, along similar lines as those leading to our \"tagging and counting algorithm\" . 4.4 Use generic point cloud segmentation algorithms \u00b6 Generic ( i.e. not tailored for tree detection) clustering algorithms exist, such as DBSCAN (\"Density-Based Spatial Clustering of Applications with Noise\", see e.g. here ), which could be used to segment a LiDAR point cloud into individual trees. We think it would be worth giving these algorithms a try! 4.5 Use Machine Learning \u00b6 The segmentation algorithms we used in this project do not rely on Machine Learning. Yet, alternative/complementary approaches might me investigated, in which a point cloud segmentation model would be first trained on reference data, then used to infer tree segmentations within a given area of interest. For instance, it would be tempting to test this Deep Learning model published by ESRI and usable with their ArcGIS Pro software. It would be also worth deep diving into this research paper and try replicating the proposed methodology. Regarding training data, we could generate a ground truth dataset by using our best TerraScan/DFT model to segment the 3D point cloud; using 2D ground truth data to filter out wrong segmentations. 5. Other resources \u00b6 The work documented here was the object of a Forum SITG which took place online on March 29, 2022. Videos and presentation materials can be found here . 6. Acknowledgements \u00b6 This project was made possible thanks to a tight collaboration between the STDL team and some experts of the Canton of Neuch\u00e2tel (NE), the Canton of Geneva (GE), the Conservatoire et Jardin botaniques de la Ville de Gen\u00e8ve (CJBG) and the University of Geneva (UNIGE). The STDL team acknowledges key contributions from Marc Riedo (SITN, NE), Bertrand Favre (OCAN, GE), Nicolas Wyler (CJBG) and Gregory Giuliani (UNIGE). We also wish to warmly thank Matthew Parkan for developing, maintaining and advising us on the Digital Forestry Toolbox .","title":" Tree Detection from Point Clouds over the Canton of Geneva "},{"location":"PROJ-TREEDET/#tree-detection-from-point-clouds-over-the-canton-of-geneva","text":"Alessandro Cerioni (Canton of Geneva) - Flann Chambers (University of Geneva) - Gilles Gay des Combes (CJBG - City of Geneva and University of Geneva) - Adrian Meyer (FHNW) - Roxane Pott (swisstopo) Proposed by the Canton of Geneva - PROJ-TREEDET May 2021 to March 2022 - Published on April 22, 2022 Abstract : Trees are essential assets, in urban context among others. Since several years, the Canton of Geneva maintains a digital inventory of isolated (or \"urban\") trees. This project aimed at designing a methodology to automatically update Geneva's tree inventory, using high-density LiDAR data and off-the-shelf software. Eventually, only the sub-task of detecting and geolocating trees was explored. Comparisons against ground truth data show that the task can be more or less tricky depending on how sparse or dense trees are. In mixed contexts, we managed to reach an accuracy of around 60%, which unfortunately is not high enough to foresee a fully unsupervised process. Still, as discussed in the concluding section there may be room for improvement.","title":" Tree Detection from Point Clouds over the Canton of Geneva "},{"location":"PROJ-TREEDET/#1-introduction","text":"","title":"1. Introduction"},{"location":"PROJ-TREEDET/#11-context","text":"Human societies benefits from the presence of trees in cities and their surroundings. More specifically, as far as urban contexts are concerned, trees deliver many ecosystem services such as: the reduction of heat islands, by shading and cooling their direct environment; the mitigation of flood risks, by intercepting precipitation through their foliage and increasing soil infiltration; the reduction of atmospheric pollution; the reduction of noise pollution; a positive contribution to the physical, mental and social health of the population. Moreover, they play an important role of support of the biodiversity by offering resources and shelter to numerous animal, plant and fungus species. The quality and quantity of such benefits depend on various parameters, such as the height, the age, the leaf area, the species diversity within a given population of trees. Therefore, the preservation and the development of a healthy and functional tree population is one of the key elements of those public policies which aim at increasing resilience against climate change. For these reasons, the Canton of Geneva has set the ambitious goal of increasing its canopy cover (= ratio between the area covered by foliage and the total area) from 21% (as estimated in 2019) to 30% by 2050. In order to reach this goal, the concerned authorities ( i.e. the Office cantonal de l\u2019agriculture et de la nature ) need detailed data and tools to keep track of the cantonal tree population and drive its development. The Inventaire Cantonal des Arbres Isol\u00e9s (ICA) is the most extensive and detailed source of data on isolated trees (= trees that do not grow in forests) within the Canton of Geneva. Such dataset is maintained by a joint effort of several public administrations (green spaces departments of various municipalities, the Office cantonal de l\u2019agriculture et de la nature , the Geneva Conservatory and Botanical Garden, etc.). For each tree, several attributes are provided: geographical coordinates, species, height, plantation date, trunk diameter, crown diameter, etc. To date, the ICA includes data about more than 237 000 trees. However, it comes with a host of known limitations: only the public domain is covered (no records about trees which are found within private properties); moreover, the coverage of the public domain is partial (business experts estimate that half of the actual trees are missing). The freshness of data is not consistent among the various records, as it relies on sporadic ground surveys and manual updates. Trees tagged as \"historical\" lack precision in terms of geolocation and taxonomical information. In light of Geneva's ambitions in terms of the canopy growth, the latter observations call for the need of a more efficient methodology to improve the exhaustivity and veracity of the ICA. Over the last few years, several joint projects of the Canton, the City and the University of Geneva explored the potential of using LiDAR point clouds and tailored software to characterize trees in a semi-automatic way, following practices that are already established in forestry. Yet, forest and urban settings are quite different from each other: forests exhibit higher tree density, which can hinder tree detection; forests exhibit lower heterogeneity in terms of species and morphology, which can facilitate tree detection. Hence, the task of automatic detection is likely to be harder in urban contexts than in forests. The study reported in this page, proposed by the Office cantonal de l\u2019agriculture et de la nature (OCAN) and carried out by the STDL, represents a further yet modest step ahead towards the semi-automatic digitalisation of urban trees.","title":"1.1 Context"},{"location":"PROJ-TREEDET/#12-objectives","text":"The objectives of this project was fixed by the OCAN domain experts and, in one sentence, amount to designing a robust and reproducible semi-automatic methodology allowing one to \"know everything\" about each and every isolated tree of the Canton of Geneva, which means: detecting all the trees (exhaustivity); geolocating the trunk and the top of every tree; measuring all the properties of every tree: height, trunk and crown diameter, canopy area and volume; identify species. Regarding quality, the following requirements were fixed: Property Expected precision Trunk geolocation 1 m Top geolocation 1 m Height 2 m Trunk diameter at 1m height 10 cm Crown diameter 1 m Canopy area 1 m\u00b2 Canopy volume 1 m\u00b3 In spite of such thorough and ambitious objectives, the time span of this project was not long enough to address them all. As a matter of fact, the STDL team only managed to tackle the tree detection and trunk geolocation.","title":"1.2 Objectives"},{"location":"PROJ-TREEDET/#13-methodology","text":"As shown in Figure 1.1 here below, algorithms and software exist, which can detect individual trees from point clouds. Figure 1.1: The two panels represent a sample of a point cloud before (top panel) and after (bottom) tree detection. Not only such tools take point cloud as input data, but also the values of a bunch of parameters have to be chosen by users. The quality of results depend both on input data and on input parameters. The application of some pre-processing to the input point cloud have an impact, too. Therefore, it becomes clear that in order to find the optimal configuration for a given context, one should be able to measure the quality of results as a function of the chosen parameters as well as of the pre-processing operations. To this end, the STDL team called for the acquisition of ground truth data. Further details about input data (point cloud and ground truth), software and methodology will be provided shortly.","title":"1.3 Methodology"},{"location":"PROJ-TREEDET/#14-input-data","text":"","title":"1.4 Input data"},{"location":"PROJ-TREEDET/#15-off-the-shelf-software","text":"Two off-the-shelf software products were used to detect trees from LiDAR data, namely TerraScan and the Digital Forestry Toolbox (DFT). The following table summarizes the main similarities and differences between the two: Feature Terrascan DFT Licence Proprietary (*) Open Source (GPL-3.0) Price See here Free Standalone No: requires MicroStation or Spatix No: requires Octave or MATLAB Graphical User Interface Yes No In-app point cloud visualization Yes (via MicroStation or Spatix ) No (**) Scriptable Partly (via macros ) Yes Hackable No Yes (*) Unfortunately, we must acknowledge that using network licenses turned out to be quite problematic. Weeks of unexpected downtime were experienced, due to puzzling issues related to the interplay between the self-hosted license server, firewalls, VPN and end-devices. (**) We used the excellent Potree Free and Open Source software for visualization. The following sections are devoted to brief descriptions of these two tools; further details will be provided in Section 4 and Section 5 .","title":"1.5 Off-the-shelf software"},{"location":"PROJ-TREEDET/#2-method","text":"As already stated, in spite of the thorough and ambitious objectives of this project (cf. here ), only the tree detection and trunk geolocation sub-tasks could be tackled given the resources (time, humans) which were allocated to the STDL. The method we followed goes through several steps, pre-processing, running Terrascan or DFT, post-processing, which are documented here-below.","title":"2. Method"},{"location":"PROJ-TREEDET/#21-pre-processing-point-cloud-reclassification-and-cleaning","text":"[1] In some cases, points corresponding to trunks may be misclassified and lay in class 0 \u2013 Unclassified instead of class 4 \u2013 Medium vegetation . As the segmentation process only takes vegetation classes (namely classes 4 and 5) into account, the lack of trunk points can make some trees \"invisibles\". [2] We suspected that the standard classification of vegetation in LiDAR point clouds could be too basic for the task at hand. Indeed, vegetation points found at less (more) than 3 m above the ground are classified as 4 \u2013 Medium Vegetation ( 5 \u2013 High Vegetation ). This may cause one potential issue: all the points of a given tree that are located at up to 3 meters above the ground (think about the trunk!) belong to a class (namely class no. 4) which can also be populated by bushes and hedges. The \"contamination\" by bushes and hedges may spoil the segmentation process, especially in situations where dense low vegetation exists around higher trees. Indeed, it was acknowledged that in such situations the segmentation algorithm fails to properly identify trunk locations and distinguish one tree from another. Issues [1] and [2] can be solved or at least mitigated by reclassifying and cleaning the input point cloud, respectively. Figures 2.1 and 2.2 show how tree grouping (or \"segmentation\") yields better results if pre-processed pointclouds are used. Figure 2.1: Tree grouping (or \"segmentation\") applied to the original (top panel) vs pre-processed (bottom) point cloud. Without pre-processing, two trees connected by a hedge are segmented as one single individual. Therefore, only one detection is made (green circle slightly above the ground). With pre-processing, we get rid of the hedge and recover the lowest trunk points belonging to the tree on the left. Eventually, both trees are properly segmented and we end up having two detections (green circles). Figure 2.2: Tree grouping (or \"segmentation\") applied to the original (left panel) vs reclassified (right) point cloud. Without pre-processing, segmentation yields a spurious detection (= false positive, red circle slightly above the ground), resulting from the combination of a pole and a hedge. With pre-processing, we get rid of most of the points belonging to the hedge and the pole; no false positive shows up.","title":"2.1 Pre-processing: point cloud reclassification and cleaning"},{"location":"PROJ-TREEDET/#22-running-terrascan","text":"Terrascan offers multiple ways to detect trees from point clouds. In this project, we focused on the fully automatic segmentation, which is available through the \"Assign Groups\" command. As already said (cf. here ), two methods are available: highest point (aka \"watershed\") method and trunk method. In what follows, we introduce the reader to the various parameters that are involved in such methods.","title":"2.2 Running Terrascan"},{"location":"PROJ-TREEDET/#23-running-dft","text":"As already said, DFT consists of a collection of functions which can be run either with Octave or MATLAB . The former software was used in the frame of this context. A few custom Octave scripts were written to automatize the exploration of the parameter space. Our preliminary, warm-up tests showed that we could not obtain satisfactory results by using the \"tree top detection method\" (cf. here ). Indeed, upon using this method the F1-score topped at around 40%. Therefore, we devoted our efforts to exploring the parameter space of the other available method, namely the \"tree stem detection method\" (cf. this tutorial ). In the following, we provide a brief description of the various parameters involved in such a detection method.","title":"2.3 Running DFT"},{"location":"PROJ-TREEDET/#24-post-processing-assessment-algorithm-and-metrics-computation","text":"As already said, the STDL used a couple of third-party tools, namely TerraScan and the Digital Forestry Toolbox (DFT) , in order to detect trees from point clouds. Both tools can output a segmented point cloud, in which points associated to the same tree are assigned the same identifier; one (X, Y, Z) triplet per detected tree, where the X, Y and Z (optional) coordinates are computed either as the centroid of all the points which get associated to a given tree, or - under some conditions - as the centroid of the trunk only; expressed in the same reference system as the input point cloud. As the ground truth data the STDL was provided with take the form of one (X', Y') pair per tree, with Z' implicitly equal to 1 meter above the ground, the comparison between detections and ground truth trees could only be performed on the common ground of 2D space. In other words, we could not assess the 3D point clouds segmentations obtained by either TerraScan or DFT against reference/ground truth segmentations in the 3D space. The problem which needed to be solved amounts to finding matching and unmatching items between two sets of 2D points: a 1st set including the (X', Y') coordinates of ground truth trees; a 2nd set including the (X, Y) coordinates of detected trees. In order to fulfill the requirement of a 1 meter accuracy which was set by the beneficiaries of this project, the following matching rule was adopted: a detection (D) matches a ground truth tree (GT) (and vice versa) if and only if the Cartesian distance between D and GT is less or equal to 1 meter Figure 2.9 shows how such a rule would allow one to tag detections as either True Positives (TPs) or False Positives (FPs) ground truth trees as either True Positives (TPs) or False Negatives (FNs) in the most trivial case. Figure 2.9: Tagging as True Positive (TP), False Positive (FP), False Negative (FN) ground truth and detected trees in the most trivial case. Actually, far less trivial cases can arise, such as the one illustrated in Figure 2.10. Figure 2.10: Only one detection can exist for two candidate ground truth trees, or else two detections can exist for only one candidate ground truth tree. The STDL designed and implemented an algorithm, which would produce relevant TP, FP, FN tags and counts even in such more complex cases. For instance, in a setting like the one in the image here above, one would expect the algorithm to count 2 TPs, 1 FP, 1 FN. Details are provided here below.","title":"2.4 Post-processing: assessment algorithm and metrics computation"},{"location":"PROJ-TREEDET/#3-results-and-discussion","text":"Figure 3.1 shows some of the tree detection trials we performed, using Terrascan and DFT. Each trial corresponds to a different set of parameters and is represented either by gray dots or colored diamonds in a precision-recall plot (see the image caption for further details). Figure 3.1: Precision vs. Recall of a subset of the tree detections we attempted, using different parameters in Terrascan and DFT. Colored diamonds represent the starting point (red) as well as our \"last stops\" in the parameter space, with (yellow, green) and without (orange) pre-processing. All the three test sectors are here combined. Let us note that: the DFT parameter space can be conveniently explored by scripting the batch execution of various runs; on the contrary, the exploration of the Terrascan parameter space is more laborious, has to be performed manually, trying out one specific set of parameters after another, with repeated manual export of features (including geographical coordinates) in between. Indeed, although Terrascan let users define macros, unfortunately the \"Write Group Info\" command cannot be used in macros; in both cases, the parameter space was explored in quite an heuristic and partial way; we aimed at optimizing the F1-score all sectors combined. More detailed comments follow, concerning the best trials made with Terrascan and DFT.","title":"3. Results and discussion"},{"location":"PROJ-TREEDET/#31-the-best-trial-made-with-terrascan","text":"Among the trials we ran with Terrascan, the one which yielded the best F1-score was obtained using the following parameters: Parameter Value Method / Algorithm Trunk Classes 4+5, cleaned and reclassified Group planar surfaces Off Min height 3.00 m Max diameter 0.40 m Min trunk 3.00 m Group by density On Gap Auto Require 1500 pts This trial corresponds to the green diamond shown in Figure 3.1. Figure 3.2: Test sectors as segmented by the best trial made with Terrascan. Figure 3.2 provides a view of the outcome on the three test sectors. Metrics read as follows: Sector TP FP FN Detectable (TP+FN) Precision Recall F1-Score Global 323 137 234 557 70.2% 58.0% 63.5% Adrien-Jeandin 177 69 160 337 72.0% 52.5% 60.7% Bel-Air 114 15 11 125 88.4% 91.2% 89.8% Floraire 32 53 63 89 37.6% 33.7% 35.6% Figure 3.3 provides a graphical representation of the same findings, with the addition of the metrics we computed before cleaning and reclassifying the LiDAR point cloud. Figure 3.3: Cleaning and reclassifying the point cloud has a positive influence on precision and recall, although modest. Our results confirm that the tree detection task is more or less hard depending on the sector at hand. Without any surprise, we acknowledge that: the \"Avenue de Bel-Air\" test sector (BEL), enjoying an alley of well-separated trees, is easily tackled by Terrascan. Quite decent precision and recall are obtained. In contrast, the \"Parc Floraire\" test sector (FLO) turns out to be the hardest one, given the vegetation density and heterogeneity. The \"Adrien-Jeandin\" (ADR) is actually a mix of dense and sparse contexts and turns out to be a good proxy for the global performance. Cleaning and Reclassification have a benificial impact on Precision and Recall for all sectors as well as the global context (TOT). While for BEL mainly Recall profited from preprocessing, ADR and FLO showed a stronger increase in Precision. For the global context both, Precision and Recall, could be increased slighty. Figure 3.4: The F1-score attained by our best Terrascan trial. Figure 3.4 shows how our best Terrascan trial performed in terms of F1-score: globally, on a per-sector basis; with and without pre-processing. We can notice that pre-processing slightly improves the F1-score for the global context as well as for the individual sectors. The largest impact was observed for the Bel-Air sector, especially for preprocessing including Reclassification.","title":"3.1 The best trial made with Terrascan"},{"location":"PROJ-TREEDET/#32-the-best-trial-made-with-dft","text":"The DFT trial yielding the highest global F1-score was obtained using the stem detection method and the following parameters: Parameter Value Method / Algorithm Stem detection Classes 4+5, cleaned and reclassified Search radius 4.00 Minimum length 4.00 Here's a summary of the resulting metrics: Sector Precision Recall F1-score Adrien-Jeandin 75.4% 36.5% 49.2% Bel-Air 88.0% 82.4% 85.1% Floraire 47.9% 36.8% 41.7% Global 74.0% 46.6% 57.2% Similar comments to those formulated here apply: the \"Avenue de Bel-Air\" sector remains the easiest to process; \"Parc Floraire\" the hardest. However, here we acknowledge a bigger gap between the global F1-score and the F1-score related to the \"Adrien-Jeandin\" test sector. Figure 3.5 shows how our best DFT trial performed in terms of F1-score: globally, on a per-sector basis; with and without pre-processing. We can notice that the impact of point cloud reclassification can be slightly positive or negative depending on the test sector. Figure 3.5: The F1-score attained by our best DFT trial.","title":"3.2 The best trial made with DFT"},{"location":"PROJ-TREEDET/#33-comparison-terrascan-vs-dft","text":"Figure 3.6: Comparison of Terrascan and DFT in terms of F1-score. The comparison of the best Terrascan trial vs. the best DFT trial in terms of F1-score shows that there is no clear winner (see Figure 3.6). Still, we can notice that: DFT reaches the best F1-score ever in the \"Parc Floraire\" (\"Avenue de Bel-Air\") sector, without (with) pre-processing. Terrascan performs slightly better on global scores and substantially better on the mixed context of the Adrien-Jeandin sector,especially after pre-processing.","title":"3.3 Comparison: Terrascan vs. DFT"},{"location":"PROJ-TREEDET/#34-trials-with-standard-density-datasets","text":"In addition to applying our method to the 2021 high-density (HD) LiDAR dataset, we also tried using two other datasets exhibiting a by far more standard point density (20-30 pt/m\u00b2): Nuage de points LiDAR 2017 Nuage de points LiDAR 2019 The goal was twofold: finding evidence for the added value of high-density (HD) datasets, despite their higher cost; checking whether the parameters which turned out to yield optimal scores with HD LiDAR data could also yield acceptable results if used with standard-density (SD) datasets. Concerning the 1st point, lower point densities make the \"trunk method\" unreliable (if not completely unusable). In Figure 3.7, we report results obtained with the watershed method, along with results related to the best performing trials obtained with the 2021 HD dataset. The scores we obtained with the SD dataset are far below the best we obtained with the HD dataset, confirming the interest of high-density acquisitions. Figure 3.7: Comparison of F1-scores of the best performing trials. Parameters were optimized for each model individually. Concerning the 2nd point, without any surprise we confirmed that parameters must be re-optimized for SD datasets. The usage of the set of parameters which were optimized on the basis of the HD dataset yielded poor results, as shown in Figure 3.8. Figure 3.8: Using the parameters which were optimized for the high-density dataset leads to poor results (strong under-segmentation) on SD datasets. In accordance with the TS documentation we can see that the trunk method is unusable for lower and medium density datasets. The watershed algorithm produces a more realistic segmentation pattern on the SD dataset but still cannot reach the performance levels of the trunk or the watershed method on the HD dataset. After optimizing parameters, we could obtain quite decent results though (see Figure 3.9). Figure 3.9: After a dataset-specific parameter optimization, convincing results can be achieved on the medium-density 2019 dataset (Terrascan's watershed method was used).","title":"3.4 Trials with standard-density datasets"},{"location":"PROJ-TREEDET/#35-tree-detection-over-the-full-2021-high-density-lidar-dataset","text":"Clearly, from a computational point of view processing large point cloud dataset is not the same as processing small datasets. Given the extremely high density of the 2021 LiDAR datasets, we wanted to check whether and how Terrascan could handle such a resource-intensive task. Thanks to Terrascan's macro actions, one can split the task into a set of smaller sub-tasks, each sub-task dealing with a \"tile\" of the full dataset. Additionally, Terrascan integrates quite a smart feature, which automatically merges groups of points ( i.e. trees) spanning multiple tiles. Figure 3.10 provides a static view of the results we obtained, using the parameters which globally performed the best on the three sectors. We refer the reader to this Potree viewer (kindly hosted by the G\u00e9oportail du SITN ) for an interactive view. Figure 3.10: Result of the application of the best performing Terrascan parameters to the full dataset.","title":"3.5 Tree detection over the full 2021 high-density LiDAR dataset"},{"location":"PROJ-TREEDET/#4-conclusion-and-outlook","text":"Despite all the efforts documented here above, the results we obtained are not as satisfactory as expected. Indeed, the metrics we managed to attain all sectors combined indicate that tree detections are neither reliable (low precision) nor exhaustive (low recall). Still, we think that results may be improved by further developing some ideas, which we sketch in the following.","title":"4. Conclusion and outlook"},{"location":"PROJ-TREEDET/#41-further-the-dft-parameter-space-exploration","text":"We devoted much more time to exploring Terrascan's parameter space than DFT's. Indeed, as already stated here , we only explored the two parameters searchRadius and minLenght . Other parameters such as cellSize , bandwidth and verticalStep were not explored at all (we kept default values). We think it is definitely worth exploring these other parameters, too. Moreover, we did not try feeding all the LiDAR returns to the stem detection method, we only used the last returns. It is surely worth checking whether the usage of the other returns could be beneficial. Upon using the peak detection method, we did not manage to reach a better F1-score than ~40%, as opposed to the 57% obtained with the stem detection method. However, the peak detection method is particularly interesting because it can also delimit canopies. Hence, it may be worth trying to improve the F1-score, for instance by tuning the parameters of the power law equation relating the crown radius to the tree height (cf. here ).","title":"4.1 Further the DFT parameter space exploration"},{"location":"PROJ-TREEDET/#42-exploit-contextual-information","text":"We showed that the algorithms implemented by TerraScan and DFT yield much better results in sparse contexts (ex.: the \"Avenue de Bel-Air\" test sector) than in dense ones (ex.: the \"Parc Floraire\" test sector). This means that precision may be improved (at the expense of recall, though) if one could restrain the tree detection to sparse contexts only, either as a pre- or post-processing step. We can think of at least a couple of methods which would allow one to (semi-)automatically tell sparse from dense contexts: intrinsic method: after segmenting the point cloud into individual trees, one could analyze how close (far) each individual is to (from) the nearest neighbor and estimate the density of trees on some 2D or 3D grid; extrinsic method: territorial data exist (see for instance the dataset \"Carte de couverture du sol selon classification OTEMO\" distributed by the SITG ), providing information about urban planning and land use ( e.g . roads, parks, sidewalks, etc.). These data may be analyzed in order to extract hints on how likely it is for a tree to be in close proximity with another, according to its position.","title":"4.2 Exploit contextual information"},{"location":"PROJ-TREEDET/#43-combine-detections-stemming-from-two-or-more-independent-trials","text":"Detections coming from two or more independent trials (obtained with different software or else with the same software but different parameters) could be combined in order to improve either precision or recall: recall would be improved (i.e. the number of false negatives would be reduced) if detections coming from multiple trials were merged. In order to prevent double counting, two or more detections coming from two or more sources could be counted as just one if they were found within a given distance from each other. The algorithm would follow along similar lines as the ones which led us to the \"tagging and counting algorithm\" presented here above ; precision would be improved (i.e. the number of false positives would be reduced) if we considered only those detections for which a consensus could be established among two or more trials, and discarded the rest. A distance-based criterion could be used to establish such consensus, along similar lines as those leading to our \"tagging and counting algorithm\" .","title":"4.3 Combine detections stemming from two or more independent trials"},{"location":"PROJ-TREEDET/#44-use-generic-point-cloud-segmentation-algorithms","text":"Generic ( i.e. not tailored for tree detection) clustering algorithms exist, such as DBSCAN (\"Density-Based Spatial Clustering of Applications with Noise\", see e.g. here ), which could be used to segment a LiDAR point cloud into individual trees. We think it would be worth giving these algorithms a try!","title":"4.4 Use generic point cloud segmentation algorithms"},{"location":"PROJ-TREEDET/#45-use-machine-learning","text":"The segmentation algorithms we used in this project do not rely on Machine Learning. Yet, alternative/complementary approaches might me investigated, in which a point cloud segmentation model would be first trained on reference data, then used to infer tree segmentations within a given area of interest. For instance, it would be tempting to test this Deep Learning model published by ESRI and usable with their ArcGIS Pro software. It would be also worth deep diving into this research paper and try replicating the proposed methodology. Regarding training data, we could generate a ground truth dataset by using our best TerraScan/DFT model to segment the 3D point cloud; using 2D ground truth data to filter out wrong segmentations.","title":"4.5 Use Machine Learning"},{"location":"PROJ-TREEDET/#5-other-resources","text":"The work documented here was the object of a Forum SITG which took place online on March 29, 2022. Videos and presentation materials can be found here .","title":"5. Other resources"},{"location":"PROJ-TREEDET/#6-acknowledgements","text":"This project was made possible thanks to a tight collaboration between the STDL team and some experts of the Canton of Neuch\u00e2tel (NE), the Canton of Geneva (GE), the Conservatoire et Jardin botaniques de la Ville de Gen\u00e8ve (CJBG) and the University of Geneva (UNIGE). The STDL team acknowledges key contributions from Marc Riedo (SITN, NE), Bertrand Favre (OCAN, GE), Nicolas Wyler (CJBG) and Gregory Giuliani (UNIGE). We also wish to warmly thank Matthew Parkan for developing, maintaining and advising us on the Digital Forestry Toolbox .","title":"6. Acknowledgements"},{"location":"TASK-4RAS/","text":"TASK-4RAS - HR, NH \u00b6 Schedule : September 2020 to February 2021 (initially planned from August 2021 February 2022) This document describe the state of an ongoing task (DIFF) and is subject to daily revision and evolution Context \u00b6 The 4D platform developed at EPFL with the collaboration of Cadastre Suisse is able to ingest both large scale point-based and vector-based models. During the previous development, the possibility to have this different type of data in a single framework lead to interesting results, showing the interest to have the possibility to put this different type of data into perspectives. Illustrations of mixed models in the 4D platform : INTERLIS, Mesh and LIDAR - Data : SITN Taking into account point-based and vector-based model allows to almost cover all type of data that are traditionally considered for land registering. The only type of data that is currently missing is the two-dimensional rasters. Indeed, due to their nature, image are more complicated to put in perspective of other three-dimensional data. The goal of this task is then to address the management of the raster by the platform in order to be able to ingest, store and broadcast any type of data with the 4D platform. Specifications \u00b6 In order to address this task, a step-by-step approach is defined. In the first place, a set of data has to be gathered from the STDL partners : Gathering a dataset of geo-referenced ortho-photography of a chosen place of reasonable size The dataset has to provide ortho-photography for at least two different times The format of the dataset has to be analyzed in order to be able to extract the image pixels with their position (CH1903+) As the platform indexation formalism is not straightforward, the images are treated as point-based model, each pixel being one colored point of the model. This will allow to provide a way of starting to analyze and understand the indexation formalism while having first results on image integration : Transform images into simple point-based models (each pixel being one point) Injection of the point-based model in an experimental instance of the platform Understanding the indexation formalism for point-based models and, subsequently, its adaptation for the vector-based models As the indexation formalism is understood for point-based models, the following adaptation will be performed : removing the third dimension from the point-based indexation specifically for the image (flat indexation) At this point, a first reporting is required : Is there an advantage to add raster to such a platform in perspective of the other types of model (points, vectors, meshes) ? How the adaptation of the point-based indexation performs for images ? How taking advantage of color accumulation enrich the image integration ? What is the cost of rendering the image with the adaptation of the point-based indexation ? Based on the formulated answer, the following strategical choice has to be discussed : Would it be more efficient to integrate image keeping them as raster (deviation from the current indexation) ? Depending on the answer, a new set of specification will be decided (if this direction is favored). Depending on the remaining time and on the obtained results, the question of the time management in the platform will be addressed. Currently, the time is treated linearly in the platform and a multi-scale approach, as for the spatial dimensions, could be interesting. The specifications will be decided as the previous points will be fulfilled. Resources \u00b6 List of the resources initially linked to the task : liberatosthene - Platform and indexation back-end eratosthene-suite - Platform front-end Other resources will be provided according to requirements.","title":"**TASK-4RAS** - HR, NH"},{"location":"TASK-4RAS/#task-4ras-hr-nh","text":"Schedule : September 2020 to February 2021 (initially planned from August 2021 February 2022) This document describe the state of an ongoing task (DIFF) and is subject to daily revision and evolution","title":"TASK-4RAS - HR, NH"},{"location":"TASK-4RAS/#context","text":"The 4D platform developed at EPFL with the collaboration of Cadastre Suisse is able to ingest both large scale point-based and vector-based models. During the previous development, the possibility to have this different type of data in a single framework lead to interesting results, showing the interest to have the possibility to put this different type of data into perspectives. Illustrations of mixed models in the 4D platform : INTERLIS, Mesh and LIDAR - Data : SITN Taking into account point-based and vector-based model allows to almost cover all type of data that are traditionally considered for land registering. The only type of data that is currently missing is the two-dimensional rasters. Indeed, due to their nature, image are more complicated to put in perspective of other three-dimensional data. The goal of this task is then to address the management of the raster by the platform in order to be able to ingest, store and broadcast any type of data with the 4D platform.","title":"Context"},{"location":"TASK-4RAS/#specifications","text":"In order to address this task, a step-by-step approach is defined. In the first place, a set of data has to be gathered from the STDL partners : Gathering a dataset of geo-referenced ortho-photography of a chosen place of reasonable size The dataset has to provide ortho-photography for at least two different times The format of the dataset has to be analyzed in order to be able to extract the image pixels with their position (CH1903+) As the platform indexation formalism is not straightforward, the images are treated as point-based model, each pixel being one colored point of the model. This will allow to provide a way of starting to analyze and understand the indexation formalism while having first results on image integration : Transform images into simple point-based models (each pixel being one point) Injection of the point-based model in an experimental instance of the platform Understanding the indexation formalism for point-based models and, subsequently, its adaptation for the vector-based models As the indexation formalism is understood for point-based models, the following adaptation will be performed : removing the third dimension from the point-based indexation specifically for the image (flat indexation) At this point, a first reporting is required : Is there an advantage to add raster to such a platform in perspective of the other types of model (points, vectors, meshes) ? How the adaptation of the point-based indexation performs for images ? How taking advantage of color accumulation enrich the image integration ? What is the cost of rendering the image with the adaptation of the point-based indexation ? Based on the formulated answer, the following strategical choice has to be discussed : Would it be more efficient to integrate image keeping them as raster (deviation from the current indexation) ? Depending on the answer, a new set of specification will be decided (if this direction is favored). Depending on the remaining time and on the obtained results, the question of the time management in the platform will be addressed. Currently, the time is treated linearly in the platform and a multi-scale approach, as for the spatial dimensions, could be interesting. The specifications will be decided as the previous points will be fulfilled.","title":"Specifications"},{"location":"TASK-4RAS/#resources","text":"List of the resources initially linked to the task : liberatosthene - Platform and indexation back-end eratosthene-suite - Platform front-end Other resources will be provided according to requirements.","title":"Resources"},{"location":"TASK-DIFF/","text":"AUTOMATIC DETECTION OF CHANGES IN THE ENVIRONMENT \u00b6 Nils Hamel (UNIGE) Project scheduled in the STDL research roadmap - TASK-DIFF September 2020 to November 2020 - Published on December 7, 2020 Abstract : Developed at EPFL with the collaboration of Cadastre Suisse to handle large scale geographical models of different nature, the STDL 4D platform offers a robust and efficient indexation methodology allowing to manage storage and access to large-scale models. In addition to spatial indexation, the platform also includes time as part of the indexation, allowing any area to be described by models in both spatial and temporal dimensions. In this development project, the notion of model temporal derivative is explored and proof-of-concepts are implemented in the platform. The goal is to demonstrate that, in addition to their formal content, models coming with different temporal versions can be derived along the time dimension to compute difference models. Such proof-of-concept is developed for both point cloud and vectorial models, demonstrating that the indexation formalism of the platform is able to ease considerably the computation of difference models. This research project demonstrates that the time dimension can be fully exploited in order to access the data it holds. Task Context : Difference Detection \u00b6 As the implemented indexation formalism is based on equivalences classes defined on space and time, a natural discretization along all the four dimensions is obtained. In the field of difference detection, it allowed implementing simple logical operators on the four-dimensional space. The OR , AND and XOR operators were then implemented allowing the platform to compute, in real time , convolutions to compare models with each others across the time. The implementation of these operators was simple due to the natural spatio-temporal discretization obtained from the indexation formalism. Nevertheless, two major drawbacks appeared : the first one is that such operators only works for point-based models. Having the opportunity to compute and render differences and similarities between any type of data is not possible with such formal operators. The second drawback comes from the nature of the point-based capturing devices. Indeed, taking the example of a building, even without any change to its structure, two digitization campaigns can lead to disparities only due to measures sampling. The XOR operator is the natural choice to detect and render differences, but this operator is very sensitive to sampling disparities. Computing the XOR convolution between two point-based models leads the rendering to be dominated by sampling variations rather than the desired structural differences. This drawback was partially solved by considering the AND operator. Indeed, the AND operator allows to only shows constant structural elements from two different positions in time and is insensitive to sampling disparities. As shown on the following images, the AND operator shows differences as black spots (missing parts) : AND convolution between two LIDAR models : Geneva 2005 and 2009 - Data : SITG As one can see, AND convolutions allow detecting, through the black spots, large area of structural changes between the two times and also, with more care, allow guessing smaller differences. Nevertheless, reading and interpreting such representation remains complex for users. The goal of this task is then to tackle these two drawbacks, allowing the platform to detect changes not only for point-based models but also for vector-based models and to implement a variation of the XOR operator for point-based models allowing to efficiently highlight the structural evolution. The task consists then in the implementation, testing and validation of a difference detection algorithm suitable for any type of model and to conduct a formal analysis on the best rendering techniques. Methodology \u00b6 A step by step methodology is defined to address the problem of difference detection in the platform. In a first phase, the algorithm will be developed and validated on vector-based models as follows : Obtaining a large scale vector-based model on which synthetic variation are introduced Development of the algorithm using the synthetic variations model Testing and validation of the algorithm (using the known synthetic variations) First conclusion In a second phase, true land register data will be used to formally detect real evolutions of the territory : Obtaining true land register vector-based models (INTERLIS) at different times Analysis of the difference detection algorithm on true land register vector-based models Second conclusion In a third phase, the algorithm will be validated and adapted to work on point-based models : Obtaining true land register point-based models (LAS) at different position in time Verifying the performances of the vector-based detection algorithm on point-based data Adaptation of the algorithm for point-based models Analysis of the difference detection algorithm on true land register point-based models Comparison of the detected differences on point-based models and on their corresponding land register vector-based models (INTERLIS) Third conclusion In addition, the development of difference detection algorithm has to be conducted keeping in mind the possible future evolutions of the platform such as addition of layers (separation of data), implementation of a multi-scale approach of the time dimension and addition of raster data in the platform. First Phase : Synthetic Variations \u00b6 In order to implements the vector-based difference detection algorithm, sets of data are considered as base on which synthetic differences are applied to simulate the evolution of the territory. This approach allows focusing on well controlled data to formally benchmark the results of the implemented algorithm. Experiments are conducted using these data to formally evaluate the performance of the developed algorithm. Selected Resources and Models \u00b6 Vector Models : Line-based \u00b6 In this first phase, line-based data are gathered from openstreetmap in order to create simple models used during the implementation and validation of the detection algorithm. A first set of vector-based models are considered made only of lines. Three sets are created each with a different scale, from city to the whole Switzerland. The line-based sets of data are extracted from openstreetmap shapefiles and the elevations are restored using the SRTM geotiff data. The EGM96-5 geoid model is then used to convert the elevation from MSL to ellipsoid heights. The following images give an illustration of these sets of data : Line-based data-sets : Switzerland - Data : OSM The following table gives a summary of the models sizes and primitives count : Model Size (UV3) Primitive Count Frauenfeld 5.0 Mio 93.3 K-Lines Neuch\u00e2tel 33.1 Mio 620.2 K-Lines Switzerland 1.3 Gio 25.0 M-Lines In order to simulate evolution of the territory in time, synthetic variations are added to these models. A script is developed and used to insert controlled variations on selected primitives. The script works by randomly selecting a user-defined amount of primitives of a model and by adding a variation on one of its vertex position using a user-specified amplitude. The variation is applied on the three dimensions of space. Vector Models : Triangle-based \u00b6 A second set of triangle-based models is also considered for implementing and validating the difference detection algorithm. The selected model is a mesh model of the Swiss buildings provided by swisstopo . It comes aligned in the CH1903+ frame with elevations. It is simply converted into the WGS84 frame using again the EGM96-5 geoid model : Triangle-based data-sets : Switzerland - Data : swisstopo The following table gives a summary of the models sizes and primitives count : Model Size (UV3) Primitive Count Frauenfeld 116.9 Mio 1.4 M-Triangles Neuch\u00e2tel 842.2 Mio 10.5 M-Triangles Switzerland 30.5 Gio 390.6 M-Triangles These models are very interesting for difference detection as the ratio between primitive size and model amplitude is very low. It means that all the primitives are small according to the model coverage, especially for the Switzerland one. The developed script for line-based models is also used here to add synthetic variations to the models primitives in order to simulate an evolution of the territory. Models : Statistical Analysis \u00b6 Before using the models in the following developments, a statistical analysis is performed on the two Switzerland models, line and triangle-based. Each primitive of these two models are considered and their edges size are computed to deduce their distribution : Statistical analysis : Models primitive edge size distribution, in meters, for the Switzerland models : line-based (left) and triangle-based (right) One can see that the line-based model comes with a much more broad distribution of the primitives size . Most of the model is made from lines between zero and twenty meters. In the case of the triangle-based models, the primitives are much smaller. As most of them are less than ten meters, a significant fraction of primitives is below one meter. Implementation of the Algorithm \u00b6 In order to compare two models at two different positions in time to detect differences, the solution is of course to search for each primitive of the primary time if it has a corresponding one in the secondary time. In such case, the primitives can be concluded as static in time and only the primitives that have no correspondence will be highlighted as differences. A first approach was initially tested : a vertex-based comparison. As every primitive (points, lines and triangles) is supported by vertexes, it can be seen as a common denominator on which comparison can take place. Unfortunately, it is not a relevant approach as it leads to an asymmetric detection algorithm. To illustrate the issue, the following image shows the situation of a group of line-based primitives at two different times with an evolution on one of the primitive vertex : Asymmetric approach : The variation is detected only when comparing backward in time When the comparison occurs between the second time and the first one, the modified vertex correspondence is not found, and the vertex can be highlighted as a difference. The asymmetry appears as the first time is compared to the second one. In this case, despite the primitive vertex changed, the vertex-based approach is able to find another vertex, part of another primitive, and interprets it as a vertex identity, leading the modified primitive to be considered as static. In order to obtain a fully symmetric algorithm, that does not depend on the way models are compared in times, a primitive-attached approach is considered. The implemented algorithm then treats the correspondence problem from the whole primitive point of view, by checking that the whole primitive can be found in the other model to which it is compared to. This allows to highlight any primitive showing a modification, regardless of the way models are compared and the nature of the modification. In addition to highlighting the primitives that changed through time, the implemented algorithm also renders the primitives that have not changed. The primitives are then shown by modulating their color to emphasize the modifications by keeping their original color for the modified one, while the static primitives are shown in dark gray. This allows to not only show the modifications but also to keep the context of the modifications, helping the user to fully understand the nature of the territory evolution. In addition to color modulation, a variation of difference rendering is analyzed. In addition to color modulation, a visual and artificial marker is added to ease their search. The visual marker is a simple line emanating from the primitive and goes straight up with a size of 512 meters. Such markers are introduced to ease the detection of small primitives that can be difficult to spot according to large point of views. Additional developments were required for triangle-based models : indeed, such models need to be subjected to a light source during rendering for the user to understand the model (face shading). The previously implemented lighting model is then modified to take into account color modulation in order to correctly render the triangle that are highlighted. Moreover, the lighting model was modified to light both face of the triangles in order to light them regardless of the point of view. In addition, as mesh models are made of triangles, primitives can hide themselves. It can then be difficult for the user to spot the highlighted primitives as they can be hidden by others. An option was added to the rendering client allowing the user to ask the rendering of triangles as line-loops or points in order to make them transparent. Finally, an option allowing the user to enable or disable the render face culling was added for him to be able to see the primitive from backward. Results and Experiments \u00b6 With the implemented algorithm, a series of experiments are conducted in order to validate its results and to analyze the efficiency of the difference detection and rendering from a user point of view. In addition, experiments are also conducted to quantify the efficiency of the difference detection for automated processes. Difference Detection : Overview \u00b6 Considering the selected data-sets, each original model is injected at a given time and synthetic variations are added to a copy of it to create a second model injected at another time. The synthetic variations are randomly added to a small amount of primitives of the original model and are of the order of one meter. On the following examples, the detection is operated considering the original model as primary and the modified one as secondary. The following images show examples of how the detection algorithm allows to highlight the detected differences while keeping the rest of the model using a darker color in case of line-based models : Example of difference detection on line-based Frauenfeld (left) and Neuch\u00e2tel (right) models - Data : OSM One can see how the modified primitives are highlighted while keeping the context of the modifications. The highlighted primitive is the one belonging to the primary time. Comparing the models in the other way around would lead the secondary model primitives to be highlighted. Considering the Frauenfeld example, the following images show the situation in the primary time (original model) and the secondary time (model with synthetic variations) : Primary model (left) and secondary one (right) showing the formal situations - The modified primitive is circled in read - Data : OSM As a result, the user can choose between the differences highlighting with the choice of model as primary and can also switch back and worth between the models themselves though the platform interface. Of course, the readability of the difference detection models depends on the size of the modified primitive and the scale at which the model is looked at by the user. If the user adopts a large scale point of view, the differences, even highlighted, can become difficult to spot. This issue can be worsened as triangle-based models are considered. In addition to primitive size, triangles also bring occlusions. The visual markers added to the highlighted primitives can considerably improve ease of differences search by the user. The following images give an example of difference detection without and with the visual markers added by the algorithm : Example of highlighted primitives without (left) and with (right) visual markers - Data : OSM Considering the triangle-based models, difference detection is made more complicated by at least three aspects : the first one is that 3D vector models are more complex than 2D ones in the way primitives (triangles) are more densely packed in the same regions of space in order to correctly model the buildings. The second one is that triangles are solid primitives that bring occlusions in the rendering, hiding other primitives. The last aspect is that such a model can contain very small primitives in order to model the details of the buildings. In such a case, the primitives can be difficult to see, even when highlighted. The following images show an example of highlighted triangles on the Frauenfeld model : Example of highlighted primitive on the Frauenfeld building model - Data : swisstopo On the right image above, the highlighted triangle is underneath the roof of the house, forcing the user to adopt an unconventional point of view (from above the house) to see it. In addition, some primitives can be defined fully inside a volume close by triangles, making them impossible to see without going inside the volume or playing with triangle rendering mode. In such a context, the usage of the visual markers become very important for such models coming with large amount of occlusion and small primitives : Example of highlighted primitives without (left) and with (right) visual markers - Data : swisstopo In case of triangle-based models, the usage of markers appears to be mandatory in order for the user to be able to locate the position of the detected differences in a reasonable amount of time. Difference Detection : User-Based Experiments \u00b6 In any case, for both line and triangle-based models, the difference detection algorithm is only able to highlight visible primitives. Depending on the point of view of the user, part of the primitives are not provided by the platform because of their small size. Indeed, the whole point of the platform is to allow the user to browse through arbitrary large models, which implies to provided only the relevant primitives according to its point of view. As a result, the detection algorithm will not be able to highlight the variations as the involved primitives are not considered as a query answer by the platform. The user has then to reduce is point of view in order to zoom on the small primitives to make them appear, and so, allowing the algorithm to highlight them. In order to show this limitation, an experiment is performed. For each model, a copy is made on which eight synthetic differences are randomly introduced. The variations are of the order of one meter. The models and their modulated copy are injected in the platform. The rule is the following : the user uses the detection algorithm on each model and its modulated copy and has five minutes to detect the eight differences. Each time a difference is seen by the user, the detection time is kept. The user is allowed to use the platform in the way he wants. In each case, the experiment is repeated five times to get a mean detection rate. As one could ask, these measures are made by the user and are difficult to understand without a reference. In order to provide such reference, the following additional experiment is conducted : each model and its modulated copy are submitted to a naive automated detection process. This process parses each primitive of the original model to search in its modulated copy if the primitive appear. If the primitive is not found, the process trigger a difference detection. This process is called naive as it simply implements two nested loops, which is the simplest searching algorithm implementation. The process is written in C with full code optimization and executed by a single thread. Starting with the line-based models, the following figures shows the difference detection rates according to time. For each of the three models, the left plots show the rate without visual markers, the middle ones with visual markers and the right ones the naive process detection rate : Frauenfeld : The black curve shows the mean detection rate while the blue (left, middle) and red (right) area gives the worst and best rates Left : without visual markers - Middle : with visual markers - Right : automated process Canton of Neuch\u00e2tel : The black curve shows the mean detection rate while the blue (left, middle) and red (right) area gives the worst and best rates Left : without visual markers - Middle : with visual markers - Right : automated process Switzerland : The black curve shows the mean detection rate while the blue (left, middle) and red (right) area gives the worst and best rates Left : without visual markers - Middle : with visual markers - Right : automated process As expected, the larger the model is, the more difficult it is for the user to find the highlighted differences, with or without visual markers. Considering a city, the differences, even of the order of one meter, are easy to spot quickly. As the model gets larger, the more time it takes for the user to find the differences. On a model covering a whole canton (Neuch\u00e2tel), one can see that most of the differences are detected in a reasonable amount of time despite their small size according to the overall model. On the Swiss model, things get more complicated, as simply looking at each part of the country is already complicated in only five minutes, leading the detection rate to be lower, even using the visual markers. These results are consistent with the statistical analysis made on the line-based Switzerland model. Detection on a city or even a whole canton lead the user to adopt a point of view sufficiently close to make most of the primitives appearing. For the Switzerland model, the user is forced to adopt a larger point of view, leading to a significant proportion of primitives to stay hidden. These results also show that adding visual markers to the highlighted primitives increases the user detection rate, meaning that the markers lead to a more suitable rendering from the user experience point of view. Considering the user results and the naive detection process, one can see that the user obtains at least similar results but most of the time outperforms the automated process. This allows to demonstrate how the implementation and data broadcasting strategy of the platform is able to provide an efficient way to access models and composite models, here in the context of difference detection. The following figures show the experiments results for the triangle-based models, which were not performed on the whole Switzerland model due to limited rendering capabilities : Frauenfeld : The black curve shows the mean detection rate while the blue (left, middle) and red (right) area gives the worst and best rates Left : without visual markers - Middle : with visual markers - Right : automated process Canton of Neuch\u00e2tel : The black curve shows the mean detection rate while the blue (left, middle) and red (right) area gives the worst and best rates Left : without visual markers - Middle : with visual markers - Right : automated process Similar conclusions apply for the triangle-based models : the larger the model is, the more difficult the difference detection is. These results also confirm that adding visual markers in addition to primitives highlighting significantly helps the user, particularly in case of triangle-based models. The obtained results on triangle-based models are lower than for line-based models. A first explanation is the greater amount of primitive that lead the user to spend more time at each successive point of view. The occlusion problem also seems to play a role, but to a lesser extent as the visual markers seems to largely solve it. The differences between detection on line and triangle-based models have to be searched in the statistical analysis of the triangle-based models. Indeed, for these models, a large proportion of the primitives are very small (less than a meter), leading them to be rendered only as the user adopts a close point of view, making the detection much more complicated in such a small amount of time. The triangle-based models being larger than the line-based one, the results of the naive process are very poor. As for the line-based models experiments, the user outperforms this automated process, in a much more significant way. Difference Detection : Process-Based Experiments \u00b6 In the previous experiments, the user ability to find the differences on the data-sets, using synthetic variations, was benchmark in perspective of the results provided by a naive automated process. The user performs quite well using the platform, but start to struggle as the data-sets get bigger according to the sizes of their primitives. In this second set of experiments, the platform is used through an automated process instead of a user. The process has the same task as the user, that is, finding the eight synthetic differences introduced in the models copy. The process starts with a list of index (the discretization cells of the platform) in order to query the corresponding data to the platform before to search for differences in each cell. The process implements, then, a systematic difference detection covering the whole model. In order for the process to work, it requires an input index list. To create it, the primitive injection condition of the platform is used to determine the maximal depth of these index. The following formula gives the poly-vertex (lines and triangles) primitives injection condition according to the platform scale. In other words, the formula gives the shallowest scale at which the primitive is considered through queries according to its size : where s gives the shallowest scale, R being the WGS84 major semi-axis and e is the largest distance, in meters, between the primitive first vertex and its other ones. For example, choosing s = 26 allows the index to reach any primitive that is greater than ~30 cm over the whole model covered by the index. The scale 26 is then chosen as the deepest search scale in the following experiments. This value can be adapted according to the primitives size and to the nature of the detection process. The larger it is, the more data are broadcast by the platform increasing the processing time. In order to compare the user-based experiments, the naive automated approach and this process-based exhaustive search, the same protocol is considered. The process addresses queries to the platform, based on the index list, and save the detection time of each difference. The detection rate is plot in the same way as for the previous experiments. Again, eight synthetic differences are randomly introduced and the experiment is repeated five times for the line-based model and only two times for the triangle-based model. As the scale 26 is chosen as the deepest search scale, the index list can be built in different ways. Indeed, as a query is made of one spatial index, that points at the desired cell, and an additional depth ( span ), to specify the density of data, the only constraint to maintain the deepest search scale at 26 is the following : where the two left hand side terms are the spatial index size and span value. In these experiments, a first list of index is built using a span of 9 and a second with a span of 10 . As the deepest scale is maintained constant, increasing the span reduces the index list size, but the queried cells contain more data to analyze. The following figures show the mean detection rate for the Switzerland lined-based model with the deepest scale at 26 and span at 9 and 10 . The plots are scaled in the same way as for the user-based experiments : Switzerland : The black curve shows the mean detection rate while the blue area gives the worst and best rates - Span at 9 (left) and 10 (right) One can see that the detection rate on such a model is much better than the user-based or naive approach ones. In a manner of five minutes, for the span set to 10 , the eight differences can be detected and reported. The full detection process took ~5 minutes with span set to 10 and ~8 minutes with the span set to 9 . This shows how the platform can be used by automated processes as an efficient data provider. In addition, as the data are queried by the automated process, the detected primitive geometry is directly available, allowing all sorts of subsequent processes to take place. As the deepest scale was set to 26 , in one of the five measures session, one of the eight differences was not detected (at all). It means that the primitive on which a synthetic variation was introduced is smaller than 30cm and was then not reached by any index. This shows the importance of defining the spatial index and spans according to the processes needs. For example, increasing the deepest scale to 27 would allow reaching primitive down to ~15 cm over the whole Switzerland, and so on. The following figures show the mean detection rate for the Switzerland triangle-based model. In this case, only two measure sessions were made to limit the time spent on this analysis : Switzerland : The black curve shows the mean detection rate while the blue area gives the worst and best rates - Span at 9 (left) and 10 (right) The conclusion remain, but the rate is slower in this case as the model contains much more primitives than the line-based one. In this case, the full detection process took ~15 minutes with span set to 10 and ~20 minutes with the span set to 9 . Again, in one of the two measure session, one difference was not detected due to the size of the primitive. Nevertheless, these results shows how the platform, seen as a process data provider, allows outperforming user-based and classic detection algorithms. Such process-based strategy can be performed in many ways depending on the needs. For example, the index list can be limited to a specific area or set to focus on spread and defined locations (for example at the intersection of the Swiss hectometric grid). The following image gives a simple example of how the detected differences can be leveraged. As the geometry of the differences is known by the process, a summary of the differences can be provided through a simple map : Example of a differences map based on the results of the detection process - Data : SRTM The eight synthetic differences are easily presented allowing a user to analyze them more in detail in the platform interface for example. This map was created detecting the eight differences on the line-based Switzerland model in about 5 minutes with a span set to 10 . Conclusion : First Phase \u00b6 During this first phase, the difference detection algorithm was developed and validated on both line-based and triangle-based data. An efficient algorithm is then implemented in the platform allowing emphasizing differences between models at different temporal positions. The algorithm is able to perform the detection on the fly with good performances allowing the users to dynamically browse the data to detect and analyze the territory evolutions. The performances of the detection algorithm allow the platform to be suitable for automated detection processes, as a data provider, answering large amounts of queries in an efficient and remote manner. Two variations of the difference detection algorithm are implemented. The first version consists in highlighting the primitives that are subject to modifications over a time. This variation is suitable for automated processes that can rely on simple search methods to list the differences. For the users, this first variation can lead to more difficult visual detection of the differences, especially in case the highlighted primitives are small or hidden by others. For this reason, visual markers were added on top of the highlighted primitives in order to be seen from far away, regardless of the primitives size. The measures sessions made during the user-based experiments showed a clear improvement of the detection rate when using the visual markers. This was especially true for triangle-based models, where the primitives bring occlusions. The user-based experiments showed that using the platform interface, a human can significantly outperform the result of a naive automated process operating on the models themselves. The experiments showed that the user is able to efficiently search and find through space and time the evolutions of the territory appearing in the data. Of course, as the model size and complexity increases, the user-driven interface starts to show its limits. In such a case, the process-based experiments showed that automated processes can take over these more complicated searches through methods allowing performing exhaustive detection over wide models in a matter of several minutes. At this point, the developments and validations of the algorithm, and its variations, were conducted on synthetic modifications introduced in models using controlled procedures. The next phase focuses on formal data extracted from land registers. Second Phase : True Variations \u00b6 In this second phase, also dedicated to vector-based models, the focus is set on applying the developed difference detection algorithm on true land register models. Two sets of data are considered in order to address short-term and long-term difference detection. Selected Resources and Models \u00b6 In both cases, short-term and long-term, INTERLIS data are considered. A selection of tables in different topics is performed to extract the most interesting geometries of the land registering. For all models, the following colors are used to distinguish the extracted layers : INTERLIS selected topics and tables colors - Official French and German designations The layers are chosen according to their geometric content. The color assignation is arbitrary and does not correspond to any official colorization standard. Short-Term Difference Detection : Thurgau \u00b6 For the short-term application of the difference detection algorithm, the case of the Thurgau canton is considered. Two set of INTERLIS data are considered that are very close in time, of the order of days. The selected layers are extracted from the source files before to be converted to the WGS84 frame using the EGM95-6 geoid model. The heights are restored using the SRTM topographic model. The following images give an illustration of the considered data : Canton of Thurgau (left) and close view of Frauenfeld (right) - Data : Kanton Thurgau Two INTERLIS models are considered with times 2020-10-13 and 2020-10-17, corresponding to the models gathering time. The following table gives the models size and primitives count : Model Size (UV3) Primitive Count Thurgau 2020-10-13 203.7 Mio 3.8 M-Lines Thurgau 2020-10-17 203.8 Mio 3.8 M-Lines As the two models are very close in time, they are very similar in size and content as the corrections count made during the considered time range is small. Long-Term Difference Detection : Geneva \u00b6 For the long-term difference detection analysis, the Geneva case is selected as the canton of Geneva keeps a copy of each land register model for each month from at least 2009 . This allows to compare INTERLIS models that are further away from each other from a temporal point of view. The selected layers are extracted and converted to the WGS84 coordinates system using the EGM96-6 geoid model. Again, the SRTM model is used to restore the heights. The following images give an illustration of the selected models : Canton of Geneva in 2019-04 (left) and close view of Geneva in 2013-04 (right) - Data : SITG The selected models are not chosen randomly along the time dimension. Models that corresponds to the Geneva LIDAR campaigns are selected as they are used in the next phase. In addition, as the LIDAR campaigns are well spread along the time dimension, the selected models are far away from each other in time, of the order of at least two years. The following table summarize the models size and primitives count : Model Size (UV3) Primitive Count Geneva 2009-10 (MN03) 550.2 Mio 10.3 M-Lines Geneva 2013-04 407.0 Mio 7.6 M-Lines Geneva 2017-04 599.6 Mio 11.2 M-Lines Geneva 2019-04 532.6 Mio 9.9 M-Lines As the temporal gaps between the models are much larger than for the Thurgau models, the size and primitive count show larger variations across the time, indicating that numerous differences should be detected on these data. Models : Statistical Analysis \u00b6 As in the first phase, a statistical analysis of the Thurgau and Geneva models is conducted. The following figures show the line length distribution of the two Thurgau models : Statistical analysis : Primitive size distribution, in meters, for the Thurgau 2020-10-13 (left) and 2020-10-17 (right) As expected, as the models are very similar, the distribution between both models is almost identical. In both cases, the distribution is centered around two meters and is mostly contained within the [0,5] range. The following figures show the same statistical analysis for the Geneva models, more spread along the time dimension : Statistical analysis : Primitive size distribution, in meters, for the Geneva 2009-10 (top-left), 2013-04 (top-right), 2017-04 (bottom-left) and 2019-04 (bottom-right) One can see that the distribution varies more from a time to another. In addition, in comparison with the Thurgau models, the Geneva models tend to have smaller primitive, mostly distributed in the [0,1] range with a narrower distribution. Results and Analysis \u00b6 Short-Term : Thurgau \u00b6 In the case of Thurgau data, the models are only separated in time by a few days. It follows that only a small amount of differences is expected. As an introduction, the following images show the overall situation of the difference detection between the two models. The differences are highlighted by keeping the primitive original color while identities are shown in dark gray to allow context conservation : Overall view of difference detection : Thurgau (right) and Amriswil (left) As expected, as the two models are very close in time, only a limited amount of differences is detected. Such situation allows to have a clear view and understanding of each difference. In order to analyze the results of the difference detection algorithm on real cases , selected differences, using the algorithm itself, are studied more in detail to emphasize the ability of the algorithm to detect and make the difference understandable for the user. As a first example, the case of the Bielackerstrasse in Amriswil is considered and illustrated by the following images : Example of difference detection : Bielackerstrasse in Amriswil - 2020-10-17 (right) and 2020-10-13 (left) as primary time In this case, new buildings are added to the official land register. As the 2020-10-17 is selected as primary, the highlighted elements correspond the footprint of the added buildings. When the 2020-10-13 time is set as primary, as it does not contain the building footprints, the highlighted elements only corresponds to the re-measured elements for land register correction. This illustrates the asymmetry of the difference detection algorithm that only highlight primitives of the primary time. In addition, by keeping the color of the highlighted primitives, the difference detection algorithm allows to immediately see that three layers of the land register have been affected by the modification (German : Einzelobjekte, Flaechenelement Geometrie; Bodenbedeckung, BoFlaeche Geometrie; Einzelobjekte, Linienelement). The following images show the respective situation of the 2020-10-13 and 2020-10_17 models : Situation of Bielackerstrasse in Amriswil - 2020-10-17 (right) and 2020-10-13 (left) This confirms the analysis deduced from the difference detection algorithm that a group of new buildings are added to the land register. In this example, if the inner road was not re-measured, at least on some portion, the difference detection with 2020-10-13 as primary time would have shown noting. To illustrate the asymmetry of the algorithm more clearly, the example of Mammern is considered. On the following image, the result of the difference detection is illustrated with both time chosen successively as primary : Example of difference detection : Mammern - 2020-10-17 (right) and 2020-10-13 (left) as primary time On this specific example, one can see that choosing the 2020-10-17 time as primary, which is the most recent time, nothing is highlighted by the detection algorithm. But when the 2020-10-13 time is set as primary, a specific element appears as highlighted, showing an evolution of the land register. This example illustrates the deletion of a sequence of primitive of the property (German : Liegenschaften, ProjLiegenschaft Geometrie) layer of the land register, which then only appear as the oldest time is set as primary. The following images show both time situation : Situation of Mammern - 2020-10-17 (right) and 2020-10-13 (left) This example shows the opposite situation of the previous one, where elements were deleted from the land register instead of added. As a last example, an in-between situation is selected. The case of the Trungerstrasse in M\u00fcnchwilen is considered and illustrated by the following images showing both time as primary : Example of difference detection : Trungerstrasse in M\u00fcnchwilen - 2020-10-17 (right) and 2020-10-13 (left) as primary time This situation is in-between the two previous one as nothing really appeared and nothing really disappeared from the land register. A modification was made on the situation of this specific property and so, appear no matter which of the two times is selected as primary. The following images show the formal situation of the land register for the two times : Situation of Trungerstrasse in M\u00fcnchwilen - 2020-10-17 (right) and 2020-10-13 (left) One can see that the correction made are around the pointed house, as the access road of the rear delimitation. For this type of situation, the algorithm recover some kind of symmetry, as the selected time as primary does is not relevant to detect the difference. To conclude this short-term difference detection analysis, the efficiency of visual markers is illustrated on the region of Romanshorn and Amriswil on the following images. Both images show the difference detection rendering without and with the visual markers : Illustration of difference detection without (right) and with (left) visual markers - 2020-10-17 as primary time for both images One can see that, for small highlighted primitive, the usage of visual markers eases the differences view for the user. Of course, as the highlighted primitive are big enough, or if the point of view is very close to the model, the efficiency of the visual markers decreases. Long-Term : Geneva \u00b6 Considering the Geneva land register, the compared model are much more spread along the time dimension, leading to a much richer difference model. Starting with the 2019-04 and 2017-04 models, the following images gives an overview of the detected differences on the whole canton : Overall view of difference detection between Geneva 2019-04 and 2017-04 models with 2019-04 as primary On this example, one can see that a much larger amount of differences is detected as the model are separated by two years. As the first observation, one can see that large portions of the model seems to have entirely moved between the two dates. Three of these zones are clearly visible on the images above as all their content is highlighted by the difference detection algorithm : the superior half of the Geneva commune , the Carouge commune and the left half of the Plan-les-Ouates commune , but more can be seen, looking more closely. These zones have been subjected to correction during the time interval separating the two models. These corrections mainly comes from the FINELTRA [1] adjustment used to ensure conversion between the old Swiss coordinates system MN03 and the MN95 current standard. As these corrections operate on each coordinate, the whole area is then modified of the order of a few centimeters. In these condition, the whole area is then highlighted by the difference detection algorithm as illustrated by the following image on the Carouge commune : Closer view of the Carouge 2019-04 and 2017-04 differences with 2019-04 as primary On this closer view, one can see that almost all the primitive of this specific commune have been corrected. Some exceptions remain. It is the case of the train tracks for example, that appear as static between the two models. Looking more closely, one can also observe that some primitive were not affected by the correction. Looking at the areas that have not been corrected through the FINELTRA triangular model, one can see that a lot of modification appear. For example, the following two images gives the differences of the Geneva historical part and the Verbois dam : Closer view of the Historical city (left) and Verbois dam (right) 2019-04 and 2017-04 differences with 2019-04 as primary One can see that, despite very few elements truly changed, a lot of primitives are highlighted as differences. This can be explained by a constant work of correction based on in-situ measurement. Some other factors can also explain these large amount of differences such as scripts used to correct the data to bring them in the expected Swiss standards. In such context, detected real changes of the territory is made much more complicated, as large amounts of detected differences are due to corrections of the model itself, without underlying true modification on the territory. Nevertheless, differences that corresponds to a true territory modification can be found. The following images show an example on the Chemin du Signal in Bernex : Differences on Chemin du Signal in Bernex with 2019-04 (left) and 2017-04 (right) as primary These differences can be detected by the user on the difference model as they appear more clearly due to an accumulation of highlighted primitives. Indeed, in case of simple correction, the highlighted primitive appear more isolated. The following images give the formal situation for the two times : Situation of Chemin du Signal in Bernex in 2019-04 (left) and 2017-04 (right) On this example, one can see that, with both time as primary, the territory evolution can be seen by the user as the highlighted primitives are more consistent. Nevertheless, territory changes are more difficult to list in such a case than in the previous short-term analysis. The following images give two example of visible territory changes in the difference model : La Gradelle (left) and Puplinge (right) 2019-04 and 2017-04 differences with 2019-04 as primary On the previous left image, a clear block of buildings can be seen as more highlighted than the rest of the difference model and correspond to new building. On the right of this block, a smaller one can also be seen that also corresponds to new buildings. On the right images, a clear block of new buildings is also visible, as more highlighted. In such a case, the user has more effort to perform in order to detect the differences that correspond to true changes in the territory, the differences model showing the land register modification in the first place rather than of the proper territory evolution. Considering the 2013-04 model, similar observations apply with stronger effect due to the larger temporal gap. The difference models are dominated by correction made to the model rather than proper territory changes. Comparing the 2017-04 and 2013-04 lead to even more difficult detection of these true modification, as the correction are widely dominating the difference models. The case of the 2009-10 model is made even worse by its coordinates system, as it is expressed in the old MN03 coordinates system. This model is made very difficult to compare with the three others, expressed in the MN95 frame, as all its primitives are highlighted in difference models due to the conversion performed between the MN03 and MN95 frames. Comparing the 2009-10 model with the 2013-04 lead to no primitive detected as identity, leaving only differences. Conclusion : Second Phase \u00b6 Two cases have been addressed in this phase showing each specific interesting application of the difference detection applied on land register data through the INTERLIS format. Indeed, short and long term differences emphasize two different points of view according to the analysis of the land register and its evolution in time. In the first place, the short term application clearly showed how difference detection and their representation opens a new point of view on the evolution of the land register as it allows focusing on clear and well identified modifications. As the compared models are close in time, one is able to produced differences models allowing to clearly see, modification by modification, what happened between the two compare situations, allowing focusing on each evolution to fully understand the modification. It follows that this short-term difference detection can provide a useful approach for the user of the land register that are more interested in the evolution of the model rather than in the model itself. The difference models can provide users a clear a simple view on what to search and to analyze to understand the evolution of such complex models. In some way, the differences on land register models can be seen as an additional layer proposed to the user to allow him to reach information that are not easy to extract from the models themselves. The case of Geneva , illustrating the long-term difference detection case, showed another interesting point of view. In the first place, one has to understand that land register models are complex and living models, not only affected by the transcription of the real-world situation across the time. Indeed, on the Geneva models, a large amount of differences is detected even on a relative short period of time (two years). In addition to the regular updates, following the territory evolution, a large amount of corrections is made to keep the model in the correct reference frame. The Swiss federal system can also add complexity, as all Cantons have to align themselves on a common set of expectations. In such a case, the difference detection turned out to be an interesting tool to understand and follows the corrections made to the model in addition to the regular updates. On the Geneva case, we illustrated that, by detecting it in the difference model, the correction on the coordinates frame on large pieces of the territory. This shows how the difference detection can be seen as a service that can help to keep track of the life of the model by detecting and checking these type of modifications. As a result, difference detection can be a tool for the user of the land register but can also be a tool for the land register authorities themselves. The difference models can be used to check and audit the evolution of the models, helping the required follow-up on the applied correction and updates. Third Phase : Point-Based Models \u00b6 In this third and last phase, the developed algorithm for difference detection on vector models is tested on point-based ones. As mentioned in the introduction, the platform was already implementing logical operators allowing comparing point-based models across time. As illustrated in the introduction, only the AND operator allowed emphasizing differences, but rendering them as missing part of the composite models. It was then difficult for the user to determine and analyze those differences. The goal of this last phase is to determine in which extend the developed algorithm is able to improve the initial results of point-based logical operators and how it can be adapted to provide better detection of differences. Selected Resources and Models \u00b6 Point-Based Models : LIDAR \u00b6 Smaller data-sets are considered as point-based models are usually much larger. The city of Geneva is chosen as an example. Four identical chunks of LIDAR data are considered covering the railway station and its surroundings. The four models correspond to the digitization campaigns of 2005, 2009, 2013 and 2017. The data are converted from LAS to UV3 and brought to WGS84 using the EGM96-5 geoid model. The following images give an overview of the selected models : Point-based data-sets : Geneva LIDAR of 2005 (left) and 2009 (right) - Data : SITG The following table gives a summary of the models sizes and primitive count : Model Size (UV3) Primitive Count Geneva 2005 663.2 Mio 24.8 M-Points Geneva 2009 1.2 Gio 46.7 M-Points Geneva 2013 3.9 Gio 4.2 G-Points Geneva 2017 7.0 Gio 7.5 G-Points The color of the models corresponds to the point classification. In addition, the models have a density that considerably increases with time, from 1 points/m^2 (2005) to 25 points/m^2 (2017). This disparity of density is considered as part of the sampling disparity, leading to a set of data very interesting to analyze and benchmark the difference detection algorithm. Models : Statistical Analysis \u00b6 As for line and triangle-based models, a statistical analysis of the point-based models is performed. The analysis consists in computing an approximation of the nearest neighbor distance distribution of points. The following figure shows the distribution of the 2005 and 2009 models : Statistical analysis : Nearest neighbor distribution approximation of the 2005 (left) and 2009 (right) models and the following figure shows the results for the 2013 and 2017 models : Statistical analysis : Nearest neighbor distribution approximation of the 2013 (left) and 2017 (right) models The nearest neighbor distribution tends to go toward zeros with the year of acquisition, showing that modern models are significantly denser that the older ones, making these models interesting for the difference detection algorithm analysis. Differences Detection Algorithm : Direct Application on Point-Based Models \u00b6 In order to determine the performances of the difference detection algorithm on the selected point-based models, the algorithm is simply applied without any adaptation on the data-sets and the results are analyzed. The following images give an overview of the obtained results comparing the 2005 and 2009 models : Application of the difference detection algorithm on point-based models : Geneva model of 2005 and 2009 with 2005 as primary (left) and inversely (right) - Data SITG One can see that the obtained results are very similar to the results obtained with the previously implemented XOR logical operator. The only differences is that the identical points are shown (in dark gray) along with the highlighted points (showing the differences). The same conclusion applies : the obtained composite model is difficult to read as it is dominated by sampling disparities. One can, by carefully looking at the model, ending up detecting large modifications by searching for highlighted points accumulation. In addition, taking one model or the other as primary for the algorithm does not really help as shown on the images above. The same conclusion applies even when the two compared models comes with a similar point density as the 2013 and 2017 models : Application of the difference detection algorithm on point-based models : Geneva model of 2013 and 2017 with 2013 as primary (left) and inversely (right) - Data SITG One can nevertheless observe that choosing the less dense model as primary leads to results a bit more clear for difference detection, but remaining very hard to interpret for a user, and much more for automated processes. In addition, the performances of the algorithm are very poor as point-based models are much denser in terms of primitives than line or triangle-based models. These reasons lead to the conclusion that the algorithm can not be directly used for point-based models and need a more specific approach. Differences Detection Algorithm : Adaptation for Point-Based Models \u00b6 In order to adapt the difference detection algorithm for point-based models, two aspects have to be addressed : the efficiency of the detection and the reduction of the sampling disparities over-representation, which are both server-side operations. The problem of efficiency can be solved quite easily if the adaptation of the difference detection algorithm goes in the direction of logical operators, for which an efficient methodology is already implemented. Solving the sampling disparity over-representation is more complicated. The adopted solution is inspired from a simple observation : the less deep (density of cells) the queries are, the clearer the obtained representation is. This can be illustrated by the following images showing the 2005 model compared with the 2009 one with depth equal to 7, 6 and 5, from left to right : Example of decreasing query depth on the comparison of 2005 and 2009 models - Data SITG This is expected, as the sampling disparities can only appear at scales corresponding to the nearest neighbor distribution. Nevertheless, as the depth is decreased, the models become less and less dense. The increase of difference readability is then compensated by the lack of density, making the structures more difficult to identify, and then, their subsequent modifications. The goal of the algorithm adaptation is to keep both readability and density. To achieve this goal, the implementation of the previous XOR operator is considered as a base, mostly for its efficiency. As the XOR simply detects if a cell of the space-time discretization at a given time is in a different state as its counterpart at another time, it can be modulated to introduce a scale delay mechanism that only applies detection on low-valued scales, broadcasting their results to their daughter cells. This allows to preserve the density and to perform the detection only on sufficiently shallow scales to avoid sampling disparities to become dominant. The question is how to operate the scale delay according to the scale itself. Indeed, with large points of view, the delay is not necessary as the model is viewed from far away. The necessity of the scale delay appears as the point of view is reduced, and, the more it is reduced, the larger the scale delay needs to be. A scale-attached delay is then defined to associate a specific value for each depth. Results and Experiments \u00b6 The adaptation of the difference detection algorithm for point-based models is analyzed using the selected data-sets. An overview of its result is presented before a more formal analysis is made using difference detection made on line-based official land register data to be compared with the differences on point-based models. Differences Detection : Overview \u00b6 Considering the two first models, from 2005 and 2009 campaigns, the following images shows the results of the initial version of the difference detection algorithm (similar to XOR operator) and its adapted version implementing the scale delay : Differences detection on 2005 and 2009 models with 2005 as primary - Left : without scale delay - Right : with scale delay - Data SITG One can see how scale delay is able to drastically reduce the effect of sampling disparities while comparing two point-based models. The effect is more obvious as the 2009 model is set as primary for difference detection : Differences detection on 2005 and 2009 models with 2009 as primary - Left : without scale delay - Right : with scale delay - Data SITG This improvement gets more clear as the point of view is reduced. The following image shows the initial algorithm and the scale delay algorithm on a specific area of the city with 2005 as primary model : Differences detection on 2005 and 2009 models with 2005 as primary - Left : without scale delay - Right : with scale delay - Data SITG By inverting the model roles and making the 2009 model primary for difference detection lead to similar results : Differences detection on 2005 and 2009 models with 2009 as primary - Left : without scale delay - Right : with scale delay - Data SITG Considering the denser models of 2013 and 2017 campaigns, the results of the scale delay introduction also lead to a better understanding of the differences as shown on the following images : Differences detection on 2013 and 2017 models with scale delay - Left : 2013 as primary - Right : 2017 as primary - Data SITG Nevertheless, one can see that scale delay is not able to get rid entirely of sampling disparities. The right image above, comparing the 2017 model to the 2013 one, shows sampling disparities being highlighted as differences on the wall of the building in the background. This does not affect too much the user readability, but still make the model a bit more complicated to understand. In addition, the models play an important role in the way differences can be detected through classic approach. For example, focusing on a specific building, the obtained highlighted differences : Differences detection on 2013 and 2017 models with scale delay with 2013 (left) and 2017 (right) as primary - Data SITG could lead the user to consider the building wall as a difference. Looking at the formal situation in both 2013 and 2017 models : Structural situation in 2013 (left) and 2017 (right) - Data SITG One can see that the detected difference comes from the missing wall on the 2013, and not from a formal evolution of the building. This example illustrates that sampling disparity is not the only factor that could reduce the readability of the model for the user. Differences Detection : Comparison with Land Register Differences \u00b6 As the algorithm is already tested for land register models, one can use its results on these data in order to put them into perspective of the detected differences on point cloud. As the methodology is not the same for vector-based and point-based models, it is interesting to see the coherence and deviations of both approaches. One important thing to underline, is that difference detection in land register model does not detect changes in the environment directly, but detects the revision of the land register itself, as discussed in the previous phase. Of course, land register models evolve with environment, but come also with a large amount of modifications that only represent corrections of the model and not formal changes in the environment. This reason reinforces the interest to but point-based model difference detection with the land register models ones. In the previous phase, the land register models of Geneva were selected to be the closest to the LIDAR campaigns. It follows, that these models can be directly used here, as each corresponding to the compared point-based model of this phase. As a first example, the following case is studied : Rue de Bourgogne and Rue de Lyon . In this case, looking at the following images giving the situation in 2013-04 and 2017-04 through the LIDAR models, that an industrial building was partially demolished. Structural situation in 2013 (left) and 2017 (right) - Data SITG The following images show the differences computed on both point-based and line-based models : Difference models between 2013 and 2017 of LIDAR (left) and INTERLIS (right), with 2013 as primary - Data SITG One can clearly see that the difference detection on the LIDAR models correctly emphasized a true structural difference between the two times. The situation is much less clear on the land register model. Indeed, as the time separating the two models is quite high, four years in such a case, a large mount of corrections dominates the difference model, leading to a difficult interpretation of the building situation change. The following images give the situation of the land register model in 2013 and 2017 that lead to the difference model above : Land register situation in 2013 (left) and 2017 (right) - Data SITG Looking at the land register models, one can also see that such large scale modification of the building situation does not appear clearly. Indeed, it takes some effort to detect minor changes on the two models, without leading to a clear indication of the modification. This shows how the LIDAR and its differences can help to detect and analyze differences in complement to the land register itself. Considering the second example, Avenue de France and Avenue Blanc , the following images give the structural situation of the two times as capture by the LIDAR campaigns : Structural situation in 2013 (left) and 2017 (right) - Data SITG One can clearly see the destruction of the two 2013 buildings replaced by a parking lot in 2017 . The detected differences on the LIDAR and land register models are presented on the following images : Difference models between 2013 and 2017 of LIDAR (left) and INTERLIS (right), with 2013 as primary - Data SITG Again, despite the differences are clearly and correctly highlighted on the LIDAR differences model, the situation remains unclear on the differences model of the land register. Again, one can observe that the land register was highly corrected between the two dates, leading to difficulties to understand the modification and its nature. Looking at the land register respective models : Land register situation in 2013 (left) and 2017 (right) - Data SITG the modification appears a bit more clearly. One can clearly see the disappearance of the two 2013 buildings in the land register replaced by a big empty area. Again, the difference detection on LIDAR seems clearly more relevant to detect and analyze structural differences than the land register itself. An interesting example is provided by the situation just east of the Basilique Notre-Dame . The two situations as captured by the LIDAR campaigns are presented on the following images : Structural situation in 2013 (left) and 2017 (right) - Data SITG One can observe two structure mounted on top of two buildings roof in the 2013 situation. These structures are used to ease the work that has to be performed on the roofs. These structures are no more present in the 2017 situation. The following images give the difference detection models for the LIDAR and land register : Difference models between 2013 and 2017 of LIDAR (left) and INTERLIS (right), with 2013 as primary - Data SITG In such a case, as the structural modification between 2013 and 2017 occurs on top of the buildings, their footprints is not affected and the differences have no chance to appear in the land register models, even looking at them individually as in the following images : Land register situation in 2013 (left) and 2017 (right) - Data SITG This is another example where the LIDAR difference detection lead to more and clearer information on the structural modification that appear on Geneva between the two times. Conclusion : Third Phase \u00b6 The main element of this third phase conclusion is that difference detection on point-based models is less straightforward than for other models. Indeed, applied naively, the algorithm is dominated by the sampling disparities of the compared models. This illustrate that point-based models, being a close mirror of the true territory state, have a large information density that is more difficult to reach, especially from their evolution point of view. Nevertheless, we showed that the algorithm can be adapted, with relatively simple adjustments, to perform well on point-based models difference detection problem. The implemented algorithm is able to track and represent the differences appearing between the models in a useful and comprehensive way for users. The proposed example showed that the differences models are able to guide the user toward interesting structural changes in the territory, with a clear view of the third dimension. Of course, the highlighted differences in point-based models are more complex and required a trained user that is able to interpret correctly the detail of the highlighted part of the model. The trees are a good example. As the tree re-grow each year, they will always appear as a differences in the compared models. A user only interested in building changes has to be aware of that and be able to separate the relevant differences from the others. Following the comparison between LIDAR and land register ( INTERLIS ) differences models, a very surprising conclusion appear. In the first place, one could stand that land register is the proper way of detected changes that can be then analyzed more in detail in point-based differences models. In turns out that to opposite is true. Several reason explain this surprising situation. In the first place, LIDAR are available only with large temporal gaps between them, at least two/three years. This allows the land register models to be filled with large amount of updates and correction, leading the differences model on this temporal gap to be filled with much more than structural modification. In addition, the LIDAR models come with the third dimension where the land register models are flat. The third dimension comes with large amount of differences that can not be seen in the land register. To some extend, the land register, and its evolution, is the reflect of the way the territory is surveyed, not the reflect of the formal territory evolution. In the opposite, as LIDAR models are a structural snapshot of a territory situation, the analyze of their differences across the time lead to a better tracking of the formal modification of the real world . Conclusion \u00b6 First Phase \u00b6 In the first phase, the difference detection algorithm was implemented for vector models and tested using synthetic differences on selected models. The results showed the interest of the obtained differences models to emphasize evolution of models from both user and process points of view. It was demonstrated that the information between models exists and can be extracted and represented in a relevant way for both users and processes. Second Phase \u00b6 In the second phase, the difference detection algorithm was tested on the Swiss land register models on which the results obtained during the first phase were confirmed. The differences models are able to provide both user and process a clear and understandable view of the modification brought to the models. In addition, through the short and long-term perspectives, it was possible to demonstrate how the difference detection algorithm is able to provide different points of view on the model evolution. From a short-term perspective, the differences models are able to provide a clear and individual view of the modification while the long-term perspective allows to see the large scale evolution and transformation of the models. It follows that the difference models can be used as a tool for various actors using or working with the land register models. Third Phase \u00b6 In the third phase, the difference detection algorithm, developed on vector models, was applied on point-based models, showing that a direct application on these models lead to the same issue as the logical operators : the differences models are dominated by sampling disparities, making them complicated to read. The solution of scale delay brought to the algorithm allowed to produce much clearer differences models for point-based data, allowing to generalize the difference detection on any models. In addition to these results, the comparison of difference models on land register and on their corresponding LIDAR point-based models showed an interesting result : for structural changes, the point-based models lead to much more interesting results through the highlighted differences. Indeed, as land register models, considered long term perspective, are dominated by a large amount of corrections and adjustments in addition to territory evolution updates, making the structural changes not easy to detect and understand. The differences models are more clear with point-based models form this point of view. In addition, as point-based models, such as LIDAR , come with the third dimension, a large amount of structural differences can only be seen through such data as many structural changes are made along the third dimension. It then follows that difference detection applied to point-based models offers a very interesting point of view for the survey of territory structural changes. Synthesis \u00b6 As a synthesis, it is clear that models are carrying a large amount of richness themselves, that is already a challenge to exploit, but it is also clear that a large amount of information can be found between the versions of the models. The difference detection algorithm brings a first tool that demonstrate the ability to reach and start to exploit these informations. More than the content of the models itself, the understanding of the evolution of this content is a major topic especially in the field of geodata as they represent, transcript, the evolution of the surveyed territory. It then appears clear that being able to reach and exploit the information contained in-between the models is a major advantage as it allows understanding what are these models, that is four dimensional objects. Perspectives \u00b6 Many perspectives are opened following the implementation and analysis of the difference detection. Several perspectives, mostly technical, are presented here as a final section. In the first place, as raster are entering the set of data that can be injected in the platform, evolution of the difference detection could be applied to the platform, taking advantage of the evolution of machine learning. The possibility of detected differences in images could lead to very interesting perspective through the data communication features of the platform. Another perspective could be to allow the platform to separate the data into formal layers, the separation being only currently ensure by type and times. Splitting data into layers would allow applying difference detection in a much more controlled manner, leading to difference models focused on very specific elements of the model temporal evolution. The addition of layer could also be the starting point to the notion of data convolution micro language . Currently, data communication and difference detection only apply through the specification of two different and parallel navigation time. The users, or processes, have to specify each of the two time position in order to obtain the mixed of differences models they need. An interesting evolution would be to replace these two navigation time by a small and simple micro language allowing the user to compare more than two times in a more complex manner. This could also benefit from data separation through layer. Such micro language could allow to compare two, three or more models, or layers, and would also open the access the mixed models of differences models such as comparing the difference detection between point-based and vector-based models, which would then be a comparison of a comparison. Reproduction Resources \u00b6 To reproduce the presented experiments, the STDL 4D framework has to be used and can be found here : STDL 4D framework (eratosthene-suite), STDL You can follow the instructions on the README to both compile and use the framework. Only part of the considered datasets are publicly available. For the OpenStreetMap datasets, you can download them from the following source : Shapefile layers, OpenStreetMap For the Swiss 3D buildings model, you can contact swisstopo : Shapefile 3D buildings, swisstopo For the land register datasets of Geneva and Thurgau , you can contact the SITG and the Thurgau Kanton : INTERLIS land register, Thurgau Kanton INTERLIS land register, SITG (Geneva) The point-based models of Geneva can be downloaded from the SITG online extractor : LAS MNS, SITG (Geneva) To extract and convert the data from planimetric shapefiles , the following code is used : Shapefile CSV export to UV3 (csv-wkt-to-uv3), STDL where the README gives all the information needed. In case of shapefile containing 3D models, please ask the STDL for advice and tools. To extract and convert the data from INTERLIS and LAS , the following codes are used : INTERLIS to UV3 (dalai-suite), STDL/EPFL LAS to UV3 (dalai-suite), STDL/EPFL where the README gives all the information needed. For the 3D geographical coordinates conversion and heights restoration, we used two STDL internal tools. You can contact the STDL to obtain the tools and support in this direction : ptolemee-suite : 3D coordinate conversion tool (EPSG:2056 to WGS84) height-from-geotiff : Restoring geographical heights using topographic GeoTIFF ( SRTM ) You can contact STDL for any question regarding the reproduction of the presented results. Auxiliary Developments & Corrections \u00b6 In addition to the main developments made, some additional scripts and other corrections have been made to solve auxiliary problems or to improve the code according to the developed features during this task. The auxiliary developments are summarized here : Correction of socket read function to improve server-client connectivity. Creation of scripts that allows to insert synthetic modifications (random displacements on the vertex coordinates) on UV3 models. Creation of a script to convert CSV export from shapefile to UV3 format. The script code is available here . Adding temporary addresses (space-time index) exportation in platform 3D interface. Correction of the cell enumeration process in platform 3D interface (wrong depth limit implementation). Creation of a script allowing segmenting UV3 model according to geographical bounding box. Creation of C codes to perform statistical analysis of the point, line and triangle-based models : computation of edge size and nearest neighbor distributions. Creation of a C code allowing enumerating non-empty cell index over the Switzerland models injected in the platform. Creation of a C code allowing to automate the difference detection based on an index list and by searching in the data queried from the platform. Developments of various scripts for plots and figures creations. References \u00b6 [1] REFRAME, SwissTopo, https://www.swisstopo.admin.ch/de/karten-daten-online/calculation-services.html","title":"AUTOMATIC DETECTION OF CHANGES IN THE ENVIRONMENT"},{"location":"TASK-DIFF/#automatic-detection-of-changes-in-the-environment","text":"Nils Hamel (UNIGE) Project scheduled in the STDL research roadmap - TASK-DIFF September 2020 to November 2020 - Published on December 7, 2020 Abstract : Developed at EPFL with the collaboration of Cadastre Suisse to handle large scale geographical models of different nature, the STDL 4D platform offers a robust and efficient indexation methodology allowing to manage storage and access to large-scale models. In addition to spatial indexation, the platform also includes time as part of the indexation, allowing any area to be described by models in both spatial and temporal dimensions. In this development project, the notion of model temporal derivative is explored and proof-of-concepts are implemented in the platform. The goal is to demonstrate that, in addition to their formal content, models coming with different temporal versions can be derived along the time dimension to compute difference models. Such proof-of-concept is developed for both point cloud and vectorial models, demonstrating that the indexation formalism of the platform is able to ease considerably the computation of difference models. This research project demonstrates that the time dimension can be fully exploited in order to access the data it holds.","title":"AUTOMATIC DETECTION OF CHANGES IN THE ENVIRONMENT"},{"location":"TASK-DIFF/#task-context-difference-detection","text":"As the implemented indexation formalism is based on equivalences classes defined on space and time, a natural discretization along all the four dimensions is obtained. In the field of difference detection, it allowed implementing simple logical operators on the four-dimensional space. The OR , AND and XOR operators were then implemented allowing the platform to compute, in real time , convolutions to compare models with each others across the time. The implementation of these operators was simple due to the natural spatio-temporal discretization obtained from the indexation formalism. Nevertheless, two major drawbacks appeared : the first one is that such operators only works for point-based models. Having the opportunity to compute and render differences and similarities between any type of data is not possible with such formal operators. The second drawback comes from the nature of the point-based capturing devices. Indeed, taking the example of a building, even without any change to its structure, two digitization campaigns can lead to disparities only due to measures sampling. The XOR operator is the natural choice to detect and render differences, but this operator is very sensitive to sampling disparities. Computing the XOR convolution between two point-based models leads the rendering to be dominated by sampling variations rather than the desired structural differences. This drawback was partially solved by considering the AND operator. Indeed, the AND operator allows to only shows constant structural elements from two different positions in time and is insensitive to sampling disparities. As shown on the following images, the AND operator shows differences as black spots (missing parts) : AND convolution between two LIDAR models : Geneva 2005 and 2009 - Data : SITG As one can see, AND convolutions allow detecting, through the black spots, large area of structural changes between the two times and also, with more care, allow guessing smaller differences. Nevertheless, reading and interpreting such representation remains complex for users. The goal of this task is then to tackle these two drawbacks, allowing the platform to detect changes not only for point-based models but also for vector-based models and to implement a variation of the XOR operator for point-based models allowing to efficiently highlight the structural evolution. The task consists then in the implementation, testing and validation of a difference detection algorithm suitable for any type of model and to conduct a formal analysis on the best rendering techniques.","title":"Task Context : Difference Detection"},{"location":"TASK-DIFF/#methodology","text":"A step by step methodology is defined to address the problem of difference detection in the platform. In a first phase, the algorithm will be developed and validated on vector-based models as follows : Obtaining a large scale vector-based model on which synthetic variation are introduced Development of the algorithm using the synthetic variations model Testing and validation of the algorithm (using the known synthetic variations) First conclusion In a second phase, true land register data will be used to formally detect real evolutions of the territory : Obtaining true land register vector-based models (INTERLIS) at different times Analysis of the difference detection algorithm on true land register vector-based models Second conclusion In a third phase, the algorithm will be validated and adapted to work on point-based models : Obtaining true land register point-based models (LAS) at different position in time Verifying the performances of the vector-based detection algorithm on point-based data Adaptation of the algorithm for point-based models Analysis of the difference detection algorithm on true land register point-based models Comparison of the detected differences on point-based models and on their corresponding land register vector-based models (INTERLIS) Third conclusion In addition, the development of difference detection algorithm has to be conducted keeping in mind the possible future evolutions of the platform such as addition of layers (separation of data), implementation of a multi-scale approach of the time dimension and addition of raster data in the platform.","title":"Methodology"},{"location":"TASK-DIFF/#first-phase-synthetic-variations","text":"In order to implements the vector-based difference detection algorithm, sets of data are considered as base on which synthetic differences are applied to simulate the evolution of the territory. This approach allows focusing on well controlled data to formally benchmark the results of the implemented algorithm. Experiments are conducted using these data to formally evaluate the performance of the developed algorithm.","title":"First Phase : Synthetic Variations"},{"location":"TASK-DIFF/#selected-resources-and-models","text":"","title":"Selected Resources and Models"},{"location":"TASK-DIFF/#implementation-of-the-algorithm","text":"In order to compare two models at two different positions in time to detect differences, the solution is of course to search for each primitive of the primary time if it has a corresponding one in the secondary time. In such case, the primitives can be concluded as static in time and only the primitives that have no correspondence will be highlighted as differences. A first approach was initially tested : a vertex-based comparison. As every primitive (points, lines and triangles) is supported by vertexes, it can be seen as a common denominator on which comparison can take place. Unfortunately, it is not a relevant approach as it leads to an asymmetric detection algorithm. To illustrate the issue, the following image shows the situation of a group of line-based primitives at two different times with an evolution on one of the primitive vertex : Asymmetric approach : The variation is detected only when comparing backward in time When the comparison occurs between the second time and the first one, the modified vertex correspondence is not found, and the vertex can be highlighted as a difference. The asymmetry appears as the first time is compared to the second one. In this case, despite the primitive vertex changed, the vertex-based approach is able to find another vertex, part of another primitive, and interprets it as a vertex identity, leading the modified primitive to be considered as static. In order to obtain a fully symmetric algorithm, that does not depend on the way models are compared in times, a primitive-attached approach is considered. The implemented algorithm then treats the correspondence problem from the whole primitive point of view, by checking that the whole primitive can be found in the other model to which it is compared to. This allows to highlight any primitive showing a modification, regardless of the way models are compared and the nature of the modification. In addition to highlighting the primitives that changed through time, the implemented algorithm also renders the primitives that have not changed. The primitives are then shown by modulating their color to emphasize the modifications by keeping their original color for the modified one, while the static primitives are shown in dark gray. This allows to not only show the modifications but also to keep the context of the modifications, helping the user to fully understand the nature of the territory evolution. In addition to color modulation, a variation of difference rendering is analyzed. In addition to color modulation, a visual and artificial marker is added to ease their search. The visual marker is a simple line emanating from the primitive and goes straight up with a size of 512 meters. Such markers are introduced to ease the detection of small primitives that can be difficult to spot according to large point of views. Additional developments were required for triangle-based models : indeed, such models need to be subjected to a light source during rendering for the user to understand the model (face shading). The previously implemented lighting model is then modified to take into account color modulation in order to correctly render the triangle that are highlighted. Moreover, the lighting model was modified to light both face of the triangles in order to light them regardless of the point of view. In addition, as mesh models are made of triangles, primitives can hide themselves. It can then be difficult for the user to spot the highlighted primitives as they can be hidden by others. An option was added to the rendering client allowing the user to ask the rendering of triangles as line-loops or points in order to make them transparent. Finally, an option allowing the user to enable or disable the render face culling was added for him to be able to see the primitive from backward.","title":"Implementation of the Algorithm"},{"location":"TASK-DIFF/#results-and-experiments","text":"With the implemented algorithm, a series of experiments are conducted in order to validate its results and to analyze the efficiency of the difference detection and rendering from a user point of view. In addition, experiments are also conducted to quantify the efficiency of the difference detection for automated processes.","title":"Results and Experiments"},{"location":"TASK-DIFF/#conclusion-first-phase","text":"During this first phase, the difference detection algorithm was developed and validated on both line-based and triangle-based data. An efficient algorithm is then implemented in the platform allowing emphasizing differences between models at different temporal positions. The algorithm is able to perform the detection on the fly with good performances allowing the users to dynamically browse the data to detect and analyze the territory evolutions. The performances of the detection algorithm allow the platform to be suitable for automated detection processes, as a data provider, answering large amounts of queries in an efficient and remote manner. Two variations of the difference detection algorithm are implemented. The first version consists in highlighting the primitives that are subject to modifications over a time. This variation is suitable for automated processes that can rely on simple search methods to list the differences. For the users, this first variation can lead to more difficult visual detection of the differences, especially in case the highlighted primitives are small or hidden by others. For this reason, visual markers were added on top of the highlighted primitives in order to be seen from far away, regardless of the primitives size. The measures sessions made during the user-based experiments showed a clear improvement of the detection rate when using the visual markers. This was especially true for triangle-based models, where the primitives bring occlusions. The user-based experiments showed that using the platform interface, a human can significantly outperform the result of a naive automated process operating on the models themselves. The experiments showed that the user is able to efficiently search and find through space and time the evolutions of the territory appearing in the data. Of course, as the model size and complexity increases, the user-driven interface starts to show its limits. In such a case, the process-based experiments showed that automated processes can take over these more complicated searches through methods allowing performing exhaustive detection over wide models in a matter of several minutes. At this point, the developments and validations of the algorithm, and its variations, were conducted on synthetic modifications introduced in models using controlled procedures. The next phase focuses on formal data extracted from land registers.","title":"Conclusion : First Phase"},{"location":"TASK-DIFF/#second-phase-true-variations","text":"In this second phase, also dedicated to vector-based models, the focus is set on applying the developed difference detection algorithm on true land register models. Two sets of data are considered in order to address short-term and long-term difference detection.","title":"Second Phase : True Variations"},{"location":"TASK-DIFF/#selected-resources-and-models_1","text":"In both cases, short-term and long-term, INTERLIS data are considered. A selection of tables in different topics is performed to extract the most interesting geometries of the land registering. For all models, the following colors are used to distinguish the extracted layers : INTERLIS selected topics and tables colors - Official French and German designations The layers are chosen according to their geometric content. The color assignation is arbitrary and does not correspond to any official colorization standard.","title":"Selected Resources and Models"},{"location":"TASK-DIFF/#results-and-analysis","text":"","title":"Results and Analysis"},{"location":"TASK-DIFF/#conclusion-second-phase","text":"Two cases have been addressed in this phase showing each specific interesting application of the difference detection applied on land register data through the INTERLIS format. Indeed, short and long term differences emphasize two different points of view according to the analysis of the land register and its evolution in time. In the first place, the short term application clearly showed how difference detection and their representation opens a new point of view on the evolution of the land register as it allows focusing on clear and well identified modifications. As the compared models are close in time, one is able to produced differences models allowing to clearly see, modification by modification, what happened between the two compare situations, allowing focusing on each evolution to fully understand the modification. It follows that this short-term difference detection can provide a useful approach for the user of the land register that are more interested in the evolution of the model rather than in the model itself. The difference models can provide users a clear a simple view on what to search and to analyze to understand the evolution of such complex models. In some way, the differences on land register models can be seen as an additional layer proposed to the user to allow him to reach information that are not easy to extract from the models themselves. The case of Geneva , illustrating the long-term difference detection case, showed another interesting point of view. In the first place, one has to understand that land register models are complex and living models, not only affected by the transcription of the real-world situation across the time. Indeed, on the Geneva models, a large amount of differences is detected even on a relative short period of time (two years). In addition to the regular updates, following the territory evolution, a large amount of corrections is made to keep the model in the correct reference frame. The Swiss federal system can also add complexity, as all Cantons have to align themselves on a common set of expectations. In such a case, the difference detection turned out to be an interesting tool to understand and follows the corrections made to the model in addition to the regular updates. On the Geneva case, we illustrated that, by detecting it in the difference model, the correction on the coordinates frame on large pieces of the territory. This shows how the difference detection can be seen as a service that can help to keep track of the life of the model by detecting and checking these type of modifications. As a result, difference detection can be a tool for the user of the land register but can also be a tool for the land register authorities themselves. The difference models can be used to check and audit the evolution of the models, helping the required follow-up on the applied correction and updates.","title":"Conclusion : Second Phase"},{"location":"TASK-DIFF/#third-phase-point-based-models","text":"In this third and last phase, the developed algorithm for difference detection on vector models is tested on point-based ones. As mentioned in the introduction, the platform was already implementing logical operators allowing comparing point-based models across time. As illustrated in the introduction, only the AND operator allowed emphasizing differences, but rendering them as missing part of the composite models. It was then difficult for the user to determine and analyze those differences. The goal of this last phase is to determine in which extend the developed algorithm is able to improve the initial results of point-based logical operators and how it can be adapted to provide better detection of differences.","title":"Third Phase : Point-Based Models"},{"location":"TASK-DIFF/#selected-resources-and-models_2","text":"","title":"Selected Resources and Models"},{"location":"TASK-DIFF/#differences-detection-algorithm-direct-application-on-point-based-models","text":"In order to determine the performances of the difference detection algorithm on the selected point-based models, the algorithm is simply applied without any adaptation on the data-sets and the results are analyzed. The following images give an overview of the obtained results comparing the 2005 and 2009 models : Application of the difference detection algorithm on point-based models : Geneva model of 2005 and 2009 with 2005 as primary (left) and inversely (right) - Data SITG One can see that the obtained results are very similar to the results obtained with the previously implemented XOR logical operator. The only differences is that the identical points are shown (in dark gray) along with the highlighted points (showing the differences). The same conclusion applies : the obtained composite model is difficult to read as it is dominated by sampling disparities. One can, by carefully looking at the model, ending up detecting large modifications by searching for highlighted points accumulation. In addition, taking one model or the other as primary for the algorithm does not really help as shown on the images above. The same conclusion applies even when the two compared models comes with a similar point density as the 2013 and 2017 models : Application of the difference detection algorithm on point-based models : Geneva model of 2013 and 2017 with 2013 as primary (left) and inversely (right) - Data SITG One can nevertheless observe that choosing the less dense model as primary leads to results a bit more clear for difference detection, but remaining very hard to interpret for a user, and much more for automated processes. In addition, the performances of the algorithm are very poor as point-based models are much denser in terms of primitives than line or triangle-based models. These reasons lead to the conclusion that the algorithm can not be directly used for point-based models and need a more specific approach.","title":"Differences Detection Algorithm : Direct Application on Point-Based Models"},{"location":"TASK-DIFF/#differences-detection-algorithm-adaptation-for-point-based-models","text":"In order to adapt the difference detection algorithm for point-based models, two aspects have to be addressed : the efficiency of the detection and the reduction of the sampling disparities over-representation, which are both server-side operations. The problem of efficiency can be solved quite easily if the adaptation of the difference detection algorithm goes in the direction of logical operators, for which an efficient methodology is already implemented. Solving the sampling disparity over-representation is more complicated. The adopted solution is inspired from a simple observation : the less deep (density of cells) the queries are, the clearer the obtained representation is. This can be illustrated by the following images showing the 2005 model compared with the 2009 one with depth equal to 7, 6 and 5, from left to right : Example of decreasing query depth on the comparison of 2005 and 2009 models - Data SITG This is expected, as the sampling disparities can only appear at scales corresponding to the nearest neighbor distribution. Nevertheless, as the depth is decreased, the models become less and less dense. The increase of difference readability is then compensated by the lack of density, making the structures more difficult to identify, and then, their subsequent modifications. The goal of the algorithm adaptation is to keep both readability and density. To achieve this goal, the implementation of the previous XOR operator is considered as a base, mostly for its efficiency. As the XOR simply detects if a cell of the space-time discretization at a given time is in a different state as its counterpart at another time, it can be modulated to introduce a scale delay mechanism that only applies detection on low-valued scales, broadcasting their results to their daughter cells. This allows to preserve the density and to perform the detection only on sufficiently shallow scales to avoid sampling disparities to become dominant. The question is how to operate the scale delay according to the scale itself. Indeed, with large points of view, the delay is not necessary as the model is viewed from far away. The necessity of the scale delay appears as the point of view is reduced, and, the more it is reduced, the larger the scale delay needs to be. A scale-attached delay is then defined to associate a specific value for each depth.","title":"Differences Detection Algorithm : Adaptation for Point-Based Models"},{"location":"TASK-DIFF/#results-and-experiments_1","text":"The adaptation of the difference detection algorithm for point-based models is analyzed using the selected data-sets. An overview of its result is presented before a more formal analysis is made using difference detection made on line-based official land register data to be compared with the differences on point-based models.","title":"Results and Experiments"},{"location":"TASK-DIFF/#conclusion-third-phase","text":"The main element of this third phase conclusion is that difference detection on point-based models is less straightforward than for other models. Indeed, applied naively, the algorithm is dominated by the sampling disparities of the compared models. This illustrate that point-based models, being a close mirror of the true territory state, have a large information density that is more difficult to reach, especially from their evolution point of view. Nevertheless, we showed that the algorithm can be adapted, with relatively simple adjustments, to perform well on point-based models difference detection problem. The implemented algorithm is able to track and represent the differences appearing between the models in a useful and comprehensive way for users. The proposed example showed that the differences models are able to guide the user toward interesting structural changes in the territory, with a clear view of the third dimension. Of course, the highlighted differences in point-based models are more complex and required a trained user that is able to interpret correctly the detail of the highlighted part of the model. The trees are a good example. As the tree re-grow each year, they will always appear as a differences in the compared models. A user only interested in building changes has to be aware of that and be able to separate the relevant differences from the others. Following the comparison between LIDAR and land register ( INTERLIS ) differences models, a very surprising conclusion appear. In the first place, one could stand that land register is the proper way of detected changes that can be then analyzed more in detail in point-based differences models. In turns out that to opposite is true. Several reason explain this surprising situation. In the first place, LIDAR are available only with large temporal gaps between them, at least two/three years. This allows the land register models to be filled with large amount of updates and correction, leading the differences model on this temporal gap to be filled with much more than structural modification. In addition, the LIDAR models come with the third dimension where the land register models are flat. The third dimension comes with large amount of differences that can not be seen in the land register. To some extend, the land register, and its evolution, is the reflect of the way the territory is surveyed, not the reflect of the formal territory evolution. In the opposite, as LIDAR models are a structural snapshot of a territory situation, the analyze of their differences across the time lead to a better tracking of the formal modification of the real world .","title":"Conclusion : Third Phase"},{"location":"TASK-DIFF/#conclusion","text":"","title":"Conclusion"},{"location":"TASK-DIFF/#first-phase","text":"In the first phase, the difference detection algorithm was implemented for vector models and tested using synthetic differences on selected models. The results showed the interest of the obtained differences models to emphasize evolution of models from both user and process points of view. It was demonstrated that the information between models exists and can be extracted and represented in a relevant way for both users and processes.","title":"First Phase"},{"location":"TASK-DIFF/#second-phase","text":"In the second phase, the difference detection algorithm was tested on the Swiss land register models on which the results obtained during the first phase were confirmed. The differences models are able to provide both user and process a clear and understandable view of the modification brought to the models. In addition, through the short and long-term perspectives, it was possible to demonstrate how the difference detection algorithm is able to provide different points of view on the model evolution. From a short-term perspective, the differences models are able to provide a clear and individual view of the modification while the long-term perspective allows to see the large scale evolution and transformation of the models. It follows that the difference models can be used as a tool for various actors using or working with the land register models.","title":"Second Phase"},{"location":"TASK-DIFF/#third-phase","text":"In the third phase, the difference detection algorithm, developed on vector models, was applied on point-based models, showing that a direct application on these models lead to the same issue as the logical operators : the differences models are dominated by sampling disparities, making them complicated to read. The solution of scale delay brought to the algorithm allowed to produce much clearer differences models for point-based data, allowing to generalize the difference detection on any models. In addition to these results, the comparison of difference models on land register and on their corresponding LIDAR point-based models showed an interesting result : for structural changes, the point-based models lead to much more interesting results through the highlighted differences. Indeed, as land register models, considered long term perspective, are dominated by a large amount of corrections and adjustments in addition to territory evolution updates, making the structural changes not easy to detect and understand. The differences models are more clear with point-based models form this point of view. In addition, as point-based models, such as LIDAR , come with the third dimension, a large amount of structural differences can only be seen through such data as many structural changes are made along the third dimension. It then follows that difference detection applied to point-based models offers a very interesting point of view for the survey of territory structural changes.","title":"Third Phase"},{"location":"TASK-DIFF/#synthesis","text":"As a synthesis, it is clear that models are carrying a large amount of richness themselves, that is already a challenge to exploit, but it is also clear that a large amount of information can be found between the versions of the models. The difference detection algorithm brings a first tool that demonstrate the ability to reach and start to exploit these informations. More than the content of the models itself, the understanding of the evolution of this content is a major topic especially in the field of geodata as they represent, transcript, the evolution of the surveyed territory. It then appears clear that being able to reach and exploit the information contained in-between the models is a major advantage as it allows understanding what are these models, that is four dimensional objects.","title":"Synthesis"},{"location":"TASK-DIFF/#perspectives","text":"Many perspectives are opened following the implementation and analysis of the difference detection. Several perspectives, mostly technical, are presented here as a final section. In the first place, as raster are entering the set of data that can be injected in the platform, evolution of the difference detection could be applied to the platform, taking advantage of the evolution of machine learning. The possibility of detected differences in images could lead to very interesting perspective through the data communication features of the platform. Another perspective could be to allow the platform to separate the data into formal layers, the separation being only currently ensure by type and times. Splitting data into layers would allow applying difference detection in a much more controlled manner, leading to difference models focused on very specific elements of the model temporal evolution. The addition of layer could also be the starting point to the notion of data convolution micro language . Currently, data communication and difference detection only apply through the specification of two different and parallel navigation time. The users, or processes, have to specify each of the two time position in order to obtain the mixed of differences models they need. An interesting evolution would be to replace these two navigation time by a small and simple micro language allowing the user to compare more than two times in a more complex manner. This could also benefit from data separation through layer. Such micro language could allow to compare two, three or more models, or layers, and would also open the access the mixed models of differences models such as comparing the difference detection between point-based and vector-based models, which would then be a comparison of a comparison.","title":"Perspectives"},{"location":"TASK-DIFF/#reproduction-resources","text":"To reproduce the presented experiments, the STDL 4D framework has to be used and can be found here : STDL 4D framework (eratosthene-suite), STDL You can follow the instructions on the README to both compile and use the framework. Only part of the considered datasets are publicly available. For the OpenStreetMap datasets, you can download them from the following source : Shapefile layers, OpenStreetMap For the Swiss 3D buildings model, you can contact swisstopo : Shapefile 3D buildings, swisstopo For the land register datasets of Geneva and Thurgau , you can contact the SITG and the Thurgau Kanton : INTERLIS land register, Thurgau Kanton INTERLIS land register, SITG (Geneva) The point-based models of Geneva can be downloaded from the SITG online extractor : LAS MNS, SITG (Geneva) To extract and convert the data from planimetric shapefiles , the following code is used : Shapefile CSV export to UV3 (csv-wkt-to-uv3), STDL where the README gives all the information needed. In case of shapefile containing 3D models, please ask the STDL for advice and tools. To extract and convert the data from INTERLIS and LAS , the following codes are used : INTERLIS to UV3 (dalai-suite), STDL/EPFL LAS to UV3 (dalai-suite), STDL/EPFL where the README gives all the information needed. For the 3D geographical coordinates conversion and heights restoration, we used two STDL internal tools. You can contact the STDL to obtain the tools and support in this direction : ptolemee-suite : 3D coordinate conversion tool (EPSG:2056 to WGS84) height-from-geotiff : Restoring geographical heights using topographic GeoTIFF ( SRTM ) You can contact STDL for any question regarding the reproduction of the presented results.","title":"Reproduction Resources"},{"location":"TASK-DIFF/#auxiliary-developments-corrections","text":"In addition to the main developments made, some additional scripts and other corrections have been made to solve auxiliary problems or to improve the code according to the developed features during this task. The auxiliary developments are summarized here : Correction of socket read function to improve server-client connectivity. Creation of scripts that allows to insert synthetic modifications (random displacements on the vertex coordinates) on UV3 models. Creation of a script to convert CSV export from shapefile to UV3 format. The script code is available here . Adding temporary addresses (space-time index) exportation in platform 3D interface. Correction of the cell enumeration process in platform 3D interface (wrong depth limit implementation). Creation of a script allowing segmenting UV3 model according to geographical bounding box. Creation of C codes to perform statistical analysis of the point, line and triangle-based models : computation of edge size and nearest neighbor distributions. Creation of a C code allowing enumerating non-empty cell index over the Switzerland models injected in the platform. Creation of a C code allowing to automate the difference detection based on an index list and by searching in the data queried from the platform. Developments of various scripts for plots and figures creations.","title":"Auxiliary Developments & Corrections"},{"location":"TASK-DIFF/#references","text":"[1] REFRAME, SwissTopo, https://www.swisstopo.admin.ch/de/karten-daten-online/calculation-services.html","title":"References"},{"location":"TASK-IDET/","text":"Object Detection Framework \u00b6 Alessandro Cerioni, Etat de Geneve - Cl\u00e9mence Herny, Exolabs - Adrian F. Meyer, FHNW - Gwena\u00eblle Salamin, Exolabs Published on November 22, 2021 Updated on December 12, 2023 Abstract : The STDL develops a framework allowing users to train and use deep learning models to detect objects in aerial images. While relying on a generic-purpose third-party open-source library, the STDL's framework implements a somewhat opinionated workflow, targeting georeferenced aerial images and labels. After a brief introduction to object detection, this article provides detailed information on the STDL's object detection framework and the opinions it implements. References to successful applications are provided along with concluding remarks. Introduction \u00b6 Object detection is a computer vision task which aims at detecting instances of objects of some target classes ( e.g. buildings, swimming pools, solar panels, ...) in digital images and videos. According to the commonly adopted terminology, a distinction is made between the following tasks: object detection , in which the goal is to determine the rectangular \"bounding box\" surrounding each detected object; instance segmentation , in which one aims at finding the pixels belonging to each detected object. This distinction is well illustrated by the bottom half of the following image: Object Detection vs Instance Segmentation. Image credit: Waleed Abdulla . Significant progress has been made over the past decades in the domain of object detection and instance segmentation (cf. e.g. this review paper ). Applications of object detection methods are today popular also in real-world products: for instance, some cars are already capable of detecting and reading speed limit signs; social media applications integrate photo and video effects based on face and pose detection. All these applications usually rely on deep learning methods, which are the subset of machine learning methods leveraging deep neural networks. While referring the reader to other sources for further information on machine and deep learning methods (cf. e.g. these lecture notes ), we wish to highlight a key point in all these approaches based on learning: no rigid, static, human-engineered rule is given to the machine to accomplish the task. Instead, the machine is provided with a collection of input-output pairs, where the output represents the outcome of a properly solved task. As far as object detection is concerned, we provide deep learning algorithms with a set of images accompanied by reference annotations (\"ground truth labels\"), which the machine is expected to reproduce. Clearly, things become interesting when the machine learns how to generate acceptable detections/segmentation on previously unseen images; such a crucial ability is referred to as \"generalization\". A generic framework was developed within the STDL, allowing the usage of state-of-the-art machine learning methods to detect objects in aerial images. Such framework allows one to leverage aerial images e.g. to provide valuable hints towards the update of cadastral information. At least as far as Switzerland is concerned, high-resolution (< 30 cm Ground Sample Distance) are acquired at the cantonal and federal scales on a regular basis. An inventory of the STDL's applications will be provided at the end of this article. The STDL's object detection framework is powered at its core by Detectron2 , a Python library developed by the Facebook Artificial Intelligence Research group and released under the Apache 2.0 open-source license . Detectron2 includes methods to train models performing various tasks, object detection and instance segmentation to name a few. Specific pieces of code were written by the STDL to pre-process data to be input to Detectron2, as well as to post-process outputs and turn them into meaningful information for the projects being developed. More precisely, our developments enable the usage of Detectron2 with georeferenced images and labels. Our workflow goes through the steps described here-below. Workflow \u00b6 1. Tileset generation \u00b6 Typically, aerial coverages are made accessible through Web Services, publicly or privately. While making opaque to the user the server-side tiling and file-based structure, these Web Services can efficiently generate raster images on-demand depending on the parameters sent by the requesting client. These parameters include: the bounding box of the requested area; the image width and height (in pixels); the reference system of both the bounding box (input) and the requested image (output). GIS tools such as QGIS and ArcGIS Pro as well as Web Applications powered by Web Mapping clients such as Leaflet , OpenLayers , MapLibre GL , etc. actually rely on this mechanism to let end-users navigating through tons of bits in quite a seamless, fluent, reactive way. As a matter of fact, zooming in and out in such 2D scenes amounts to fetching and visualizing different images depending on the zoom level, instead of \"simply\" increasing/decreasing the size of the various image pixels as displayed on screen. Through this 1st step of our workflow, several requests are issued against a Web Service in order to generate a consistent set of tiled images (\"tileset\") covering the so-called \" area of interest \" (AoI), namely the area over which the user intend to train a detection model and/or to perform the actual object detection. Connectors for the following two Web Services have been developed so far: OGC's Web Mapping Service (WMS) ; ESRI's Map Image Layer . XYZ link Except when using the XYZ connector that requires the EPSG:3857, our framework is agnostic with respect to the tiling scheme. The user has to provide as a input file compliant with some requirements. We refer the user to the code documentation for detailed information about these requirements. Concerning the AoI and its extension, the following scenarios are supported: training-only scenarios, i.e. the user intends to train a model to be used for detection at a later stage. In this case, the AoI would only cover the area for which reference, ground truth data exist. Detection-only (or \"inference-only\") scenarios, in which the user wishes to carry out object detection leveraging a previously trained model. In this case, the AoI would cover areas for which no reference data is available. Training AND detection scenarios, namely the composition of tasks 1 and 2. In the case of scenarios no. 1 and 3, ground truth labels are necessary. Provided by the user as polygons in some geographic coordinate system, the spatial coordinates of the vertices of these polygons must be mapped onto each image coordinate system - the latter ranging from (0, 0) to ( - 1, - 1) - in order to generate reference, ground truth instance segmentations. Technically, such a mapping can be achieved through an affine transformation . Labels can optionally be provided in the case of inference-only scenarios as well, should the user be willing to check non-ground truth labels against detections and vice-versa. At least two somewhat \"standard\" data formats exist, which allow one to formalize the link between images and instance segmentations (cf. e.g. this article for further information): Pascal VOC, COCO . Since Detectron2 natively supports the latter but not the former, we made the obvious choice to opt for the COCO format. As mentioned above, machine learning models are valuable as far as they do not \"overfit\" to the training data; in other words, as far as they generalize well to new, unseen data. One of the techniques which are commonly used in order to prevent machine learning algorithms from overfitting is the \"train, validation, test split\". While referring the interested reader to this Wikipedia page for further details, let us note that a 70%-15%-15% split is currently hard-coded in our framework. Various independent COCO tilesets are generated, depending on the scenario: in training-only scenarios, three COCO tilesets are generated: training tileset, abbreviated as trn ; validation tileset ( val ); test tileset ( tst ). For now, training, validation and test tiles are chosen exclusively among the tiles of the AoI including one or more ground truth labels. Having realized that some of our models tend to produce false detections, we will shortly improve our framework in order to allow for unlabeled tiles within the training, validation, test tilesets. In inference-only scenarios, a single COCO tileset labeled as \"other\" is generated ( oth is the abbreviation we use). In training + inference scenarios, the full collection of tilesets is generated: trn , val , tst , oth . 2. Model training \u00b6 The 1st step provides a collection of consistent ( i.e. same size and resolution) tiled images and corresponding COCO files ( trn + val + tst and/or oth depending on the scenario). The 2nd step consists in training a prediction model by iterating over the training dataset, as customarily done in machine and deep learning. As already mentioned, we delegate this crucial part of the process to the Detectron2 library; support for other libraries may be implemented in the future, if suitable. Detectron2 comes with a large collection of pre-trained models tailored for various tasks. In particular, as far as instance segmentation is concerned, pre-trained models can be selected from this list . In our workflow, we setup Detectron2 in such a way that inference is made on the validation dataset every N training iterations, being N a user-defined parameter. By doing this, we can monitor both the training and validation losses all along the iterative learning and decide when to stop. Typically, learning is stopped when the validation loss reaches a minimum (cf. e.g. this article for further information on early stopping). As training and validation loss curves are somewhat noisy, typically an on-the-fly smoothing is applied in order to reveal steady trends. Other metrics may be tracked and used to decide when to stop. For now, within our framework (early) stopping can be done manually and is left to the user; it will be made automatic in the future, following some suitable criterion. Training and validation losses in a sample object detection task. In this case, one could stop the training after the first ~1400 iterations. Note that, in this example, the validation loss is evaluated every 200 iterations. Let us note that the learning process is regulated by several parameters, which are usually called \"hyper-parameters\" in order to distinguish them from the learned \"parameters\", the latter being - in our deep learning context - the coefficients of the many neurons populating the various layers of the deep neural network. In successful scenarios, the iterative learning process does actually lower the validation loss until a minimum value is reached. Yet, such a minimum is likely to be a \"local\" one ( i.e. relative to a given set of hyper-parameters); indeed, the global minimum may be found along a different trajectory, corresponding to a different set of hyper-parameters. Actually, even finding the global minimum of the validation loss could be not as relevant as checking how different models resulting from different choices of the hyper-parameters compare with each other on the common ground of more meaningful \"business metrics\". Even though currently our code does not implement any automatic hyper-parameter tuning, neither in terms of expert metrics nor in terms of business ones, we have already setup everything that is needed to produce business metrics, as explained here-below. 3. Detection \u00b6 The model trained at the preceding step can be used to perform the actual object detection or instance segmentation over the various tilesets concerned by a given study: in training-only scenarios, detections can be made on the training, validation and test sets, for model assessment purposes (cf. next section); in inference-only scenarios, detections can be made over the tileset which we call \"other\", for now. Depending on the configuration, Detectron2 is capable to perform either object detection AND instance segmentation at once, or object detection only. In both cases, every detection is accompanied by the following information: the class the detected object belongs to; a confidence score, ranging from 0 to 1. In the case of object detection only, a bounding box is output as a list of vertices relative to the image coordinate system. In case instance segmentation is demanded, detections are also output under the form of binary (\"monochromatic\") masks, one per input tile/image, in which pixels belonging to target objects are encoded with ones whereas background pixels are encoded with zeros. Detectron2 output is then converted into a georeferenced vector. Polygon geometry can be simplified using the Ramer-Douglas-Peucker algorithm (RDP) by tuning the epsilon parameter. 4. Assessment \u00b6 The results are evaluated by matching the detections and the ground truth labels, i.e. by finding detections overlapping with ground truth labels. To be considered a match, the intersection over union (IoU) between the detection polygon and label polygon must be greater than a threshold set by the user, with a default value = 0.25. In addition, if there are intersections between several detections and ground truth labels, only the pair with the largest IoU is considered to be a valid match. Intersection over union between a label and a detection is defined as: \\(\\mbox{IoU} = \\frac{A_{label \\cap detection}}{A_{label \\cup detection}}\\) The spatial intersection between the vectorized detections and the ground truth labels is computed to tag detections according to the following classification: true positive (TP): detections matching correctly a ground truth object; false positive (FP): detections not matching any ground truth object; false negative (FN): missing detections, namely objects of the ground truth which are not detected; wrong class: detections matching a ground truth object of another class. The reader may wonder why there are no true negatives (TN) in the list. Actually, all the image pixels which are rightly not associated with the target class can be considered as \"true negatives\". Yet, as far as object detection and instance segmentation are concerned, we do not need to group leftover pixels into some sort of \"dummy objects\". Should the user need to model such a scenario, one idea might consist in introducing a dummy class ( e.g. \"background\" or \"other\"), to which all the (ir)relevant pixels would be associated. The metrics are calculated per-class to take into account possible imbalances between classes. The detections in the wrong class will be classified as FN, i.e. missed object, or false positive (FP), i.e. detections not matching any object, depending on the target class we are calculating for. Precision and recall by class are used here: \\(\\mbox{precision}_{class} = \\frac{\\mbox{TP}_{class}}{\\mbox{TP}_{class} + \\mbox{FP}_{class}}\\) \\(\\mbox{recall}_{class} = \\frac{\\mbox{TP}_{class}}{\\mbox{TP}_{class} + \\mbox{FN}_{class}}\\) While referring the reader to this page for further information on these metrics, let us note that: Precision is optimal when it equals one, i.e. when the count of FPs is equal to zero. This metric measures how good the model is in detecting only objects with the class of interest; Recall is optimal when it equals one, i.e. when the count of FNs is equal to zero. This metric measures how good the model is in detecting all objects of the class of interest without missing any. Each metric can be aggregated to keep only one value per dataset, rather than one per class. \\(\\mbox{precision} = \\frac{\\sum_{class}\\mbox{precision}_{class}}{\\mbox{nbr of classes}}\\) \\(\\mbox{recall} = \\frac{\\sum_{class}\\mbox{recall}_{class}}{\\mbox{nbr of classes}}\\) As already mentioned, each detection is assigned a confidence score, ranging from 0 to 1. By filtering out all the detections exhibiting a score smaller than some cut-off/threshold value, one would end up having more or less detections to compare against ground truth data; the higher the threshold, the smaller the number of detections, the better their quality in terms of the confidence score. Sampling the threshold from a minimal user-defined value to a maximum value ( e.g. 0.95) and counting TPs, FPs, FNs at each sampling step, meaningful curves can be obtained representing counts and/or metrics like precision and recall as a function of the threshold. Typically, precision (recall) is monotonically increasing (decreasing) as a function of the threshold. As such, neither the precision nor the recall can be used to determine the optimal value of the threshold, which is why precision and recall are customarily aggregated in order to form a third metric which can be convex if computed as a function of the threshold or, at least, it can exhibit local minima. This metric is named \" \\(F_1\\) score\" and is defined as follows: \\(F_1 = 2\\times \\frac{\\mbox{precision}\\;\\times\\;\\mbox{recall}}{\\mbox{precision}\\; +\\; \\mbox{recall}}\\) Different models can then be compared with each other in terms of \\(F_1\\) scores; the best model can be selected as the one exhibiting the maximum \\(F_1\\) over the validation dataset. At last, the test dataset can be used to assess the selected model and provide the end-user with an objective figures concerning its reliability. Other approaches exist, allowing one to summarize metrics and eventually come up with threshold-independent scores. One of these approaches consist in computing the \"Area Under the ROC curve\" (AUC, cf. this page ) and will be soon implemented by the STDL. 5. Iterate until results are satisfactory \u00b6 Several training sessions can be executed, using different values of the various hyper-parameters involved in the process. As a matter of fact, reviewing and improving ground truth data is also part of the hyper-parameter tuning (cf. \" From Model-centric to Data-centric Artificial Intelligence ''). Keeping track of the above-mentioned metrics across multiple realizations, eventually an optimal model should be found (at least, a local optimum). The exploration of the hyper-parameter space is a tedious task, which consumes time as well as human and computing resources. It can be performed in a more or less systematic/heuristic way, depending on the experience of the operator as well as on the features offered by the code. Typically, a partial exploration is enough to obtain acceptable results. Within the STDL team, it is customary to first perform some iterations until \"decent scores\" are obtained, then to involve beneficiaries and domain experts in the continuous evaluation and improvement of results, until satisfactory results are obtained. These exchanges between data scientists and domain experts are also key to raise both communities' awareness of the virtues and flaws of machine learning approaches. Use cases \u00b6 Here is a list of the successful applications of the object detection framework described in this article: Automatic detection of quarries Swimming Pool Detection for the Canton of Geneva Swimming Pool Detection for the Canton of Thurgau Classification of road surfaces Updating the \u00abCultivable Area\u00bb Layer of the Agricultural Office, Canton of Thurgau Concluding remarks \u00b6 The STDL's object detection framework is still under development and receives updates as new use cases are tackled.","title":" Object Detection Framework "},{"location":"TASK-IDET/#object-detection-framework","text":"Alessandro Cerioni, Etat de Geneve - Cl\u00e9mence Herny, Exolabs - Adrian F. Meyer, FHNW - Gwena\u00eblle Salamin, Exolabs Published on November 22, 2021 Updated on December 12, 2023 Abstract : The STDL develops a framework allowing users to train and use deep learning models to detect objects in aerial images. While relying on a generic-purpose third-party open-source library, the STDL's framework implements a somewhat opinionated workflow, targeting georeferenced aerial images and labels. After a brief introduction to object detection, this article provides detailed information on the STDL's object detection framework and the opinions it implements. References to successful applications are provided along with concluding remarks.","title":" Object Detection Framework "},{"location":"TASK-IDET/#introduction","text":"Object detection is a computer vision task which aims at detecting instances of objects of some target classes ( e.g. buildings, swimming pools, solar panels, ...) in digital images and videos. According to the commonly adopted terminology, a distinction is made between the following tasks: object detection , in which the goal is to determine the rectangular \"bounding box\" surrounding each detected object; instance segmentation , in which one aims at finding the pixels belonging to each detected object. This distinction is well illustrated by the bottom half of the following image: Object Detection vs Instance Segmentation. Image credit: Waleed Abdulla . Significant progress has been made over the past decades in the domain of object detection and instance segmentation (cf. e.g. this review paper ). Applications of object detection methods are today popular also in real-world products: for instance, some cars are already capable of detecting and reading speed limit signs; social media applications integrate photo and video effects based on face and pose detection. All these applications usually rely on deep learning methods, which are the subset of machine learning methods leveraging deep neural networks. While referring the reader to other sources for further information on machine and deep learning methods (cf. e.g. these lecture notes ), we wish to highlight a key point in all these approaches based on learning: no rigid, static, human-engineered rule is given to the machine to accomplish the task. Instead, the machine is provided with a collection of input-output pairs, where the output represents the outcome of a properly solved task. As far as object detection is concerned, we provide deep learning algorithms with a set of images accompanied by reference annotations (\"ground truth labels\"), which the machine is expected to reproduce. Clearly, things become interesting when the machine learns how to generate acceptable detections/segmentation on previously unseen images; such a crucial ability is referred to as \"generalization\". A generic framework was developed within the STDL, allowing the usage of state-of-the-art machine learning methods to detect objects in aerial images. Such framework allows one to leverage aerial images e.g. to provide valuable hints towards the update of cadastral information. At least as far as Switzerland is concerned, high-resolution (< 30 cm Ground Sample Distance) are acquired at the cantonal and federal scales on a regular basis. An inventory of the STDL's applications will be provided at the end of this article. The STDL's object detection framework is powered at its core by Detectron2 , a Python library developed by the Facebook Artificial Intelligence Research group and released under the Apache 2.0 open-source license . Detectron2 includes methods to train models performing various tasks, object detection and instance segmentation to name a few. Specific pieces of code were written by the STDL to pre-process data to be input to Detectron2, as well as to post-process outputs and turn them into meaningful information for the projects being developed. More precisely, our developments enable the usage of Detectron2 with georeferenced images and labels. Our workflow goes through the steps described here-below.","title":"Introduction"},{"location":"TASK-IDET/#workflow","text":"","title":"Workflow"},{"location":"TASK-IDET/#1-tileset-generation","text":"Typically, aerial coverages are made accessible through Web Services, publicly or privately. While making opaque to the user the server-side tiling and file-based structure, these Web Services can efficiently generate raster images on-demand depending on the parameters sent by the requesting client. These parameters include: the bounding box of the requested area; the image width and height (in pixels); the reference system of both the bounding box (input) and the requested image (output). GIS tools such as QGIS and ArcGIS Pro as well as Web Applications powered by Web Mapping clients such as Leaflet , OpenLayers , MapLibre GL , etc. actually rely on this mechanism to let end-users navigating through tons of bits in quite a seamless, fluent, reactive way. As a matter of fact, zooming in and out in such 2D scenes amounts to fetching and visualizing different images depending on the zoom level, instead of \"simply\" increasing/decreasing the size of the various image pixels as displayed on screen. Through this 1st step of our workflow, several requests are issued against a Web Service in order to generate a consistent set of tiled images (\"tileset\") covering the so-called \" area of interest \" (AoI), namely the area over which the user intend to train a detection model and/or to perform the actual object detection. Connectors for the following two Web Services have been developed so far: OGC's Web Mapping Service (WMS) ; ESRI's Map Image Layer . XYZ link Except when using the XYZ connector that requires the EPSG:3857, our framework is agnostic with respect to the tiling scheme. The user has to provide as a input file compliant with some requirements. We refer the user to the code documentation for detailed information about these requirements. Concerning the AoI and its extension, the following scenarios are supported: training-only scenarios, i.e. the user intends to train a model to be used for detection at a later stage. In this case, the AoI would only cover the area for which reference, ground truth data exist. Detection-only (or \"inference-only\") scenarios, in which the user wishes to carry out object detection leveraging a previously trained model. In this case, the AoI would cover areas for which no reference data is available. Training AND detection scenarios, namely the composition of tasks 1 and 2. In the case of scenarios no. 1 and 3, ground truth labels are necessary. Provided by the user as polygons in some geographic coordinate system, the spatial coordinates of the vertices of these polygons must be mapped onto each image coordinate system - the latter ranging from (0, 0) to ( - 1, - 1) - in order to generate reference, ground truth instance segmentations. Technically, such a mapping can be achieved through an affine transformation . Labels can optionally be provided in the case of inference-only scenarios as well, should the user be willing to check non-ground truth labels against detections and vice-versa. At least two somewhat \"standard\" data formats exist, which allow one to formalize the link between images and instance segmentations (cf. e.g. this article for further information): Pascal VOC, COCO . Since Detectron2 natively supports the latter but not the former, we made the obvious choice to opt for the COCO format. As mentioned above, machine learning models are valuable as far as they do not \"overfit\" to the training data; in other words, as far as they generalize well to new, unseen data. One of the techniques which are commonly used in order to prevent machine learning algorithms from overfitting is the \"train, validation, test split\". While referring the interested reader to this Wikipedia page for further details, let us note that a 70%-15%-15% split is currently hard-coded in our framework. Various independent COCO tilesets are generated, depending on the scenario: in training-only scenarios, three COCO tilesets are generated: training tileset, abbreviated as trn ; validation tileset ( val ); test tileset ( tst ). For now, training, validation and test tiles are chosen exclusively among the tiles of the AoI including one or more ground truth labels. Having realized that some of our models tend to produce false detections, we will shortly improve our framework in order to allow for unlabeled tiles within the training, validation, test tilesets. In inference-only scenarios, a single COCO tileset labeled as \"other\" is generated ( oth is the abbreviation we use). In training + inference scenarios, the full collection of tilesets is generated: trn , val , tst , oth .","title":"1. Tileset generation"},{"location":"TASK-IDET/#2-model-training","text":"The 1st step provides a collection of consistent ( i.e. same size and resolution) tiled images and corresponding COCO files ( trn + val + tst and/or oth depending on the scenario). The 2nd step consists in training a prediction model by iterating over the training dataset, as customarily done in machine and deep learning. As already mentioned, we delegate this crucial part of the process to the Detectron2 library; support for other libraries may be implemented in the future, if suitable. Detectron2 comes with a large collection of pre-trained models tailored for various tasks. In particular, as far as instance segmentation is concerned, pre-trained models can be selected from this list . In our workflow, we setup Detectron2 in such a way that inference is made on the validation dataset every N training iterations, being N a user-defined parameter. By doing this, we can monitor both the training and validation losses all along the iterative learning and decide when to stop. Typically, learning is stopped when the validation loss reaches a minimum (cf. e.g. this article for further information on early stopping). As training and validation loss curves are somewhat noisy, typically an on-the-fly smoothing is applied in order to reveal steady trends. Other metrics may be tracked and used to decide when to stop. For now, within our framework (early) stopping can be done manually and is left to the user; it will be made automatic in the future, following some suitable criterion. Training and validation losses in a sample object detection task. In this case, one could stop the training after the first ~1400 iterations. Note that, in this example, the validation loss is evaluated every 200 iterations. Let us note that the learning process is regulated by several parameters, which are usually called \"hyper-parameters\" in order to distinguish them from the learned \"parameters\", the latter being - in our deep learning context - the coefficients of the many neurons populating the various layers of the deep neural network. In successful scenarios, the iterative learning process does actually lower the validation loss until a minimum value is reached. Yet, such a minimum is likely to be a \"local\" one ( i.e. relative to a given set of hyper-parameters); indeed, the global minimum may be found along a different trajectory, corresponding to a different set of hyper-parameters. Actually, even finding the global minimum of the validation loss could be not as relevant as checking how different models resulting from different choices of the hyper-parameters compare with each other on the common ground of more meaningful \"business metrics\". Even though currently our code does not implement any automatic hyper-parameter tuning, neither in terms of expert metrics nor in terms of business ones, we have already setup everything that is needed to produce business metrics, as explained here-below.","title":"2. Model training"},{"location":"TASK-IDET/#3-detection","text":"The model trained at the preceding step can be used to perform the actual object detection or instance segmentation over the various tilesets concerned by a given study: in training-only scenarios, detections can be made on the training, validation and test sets, for model assessment purposes (cf. next section); in inference-only scenarios, detections can be made over the tileset which we call \"other\", for now. Depending on the configuration, Detectron2 is capable to perform either object detection AND instance segmentation at once, or object detection only. In both cases, every detection is accompanied by the following information: the class the detected object belongs to; a confidence score, ranging from 0 to 1. In the case of object detection only, a bounding box is output as a list of vertices relative to the image coordinate system. In case instance segmentation is demanded, detections are also output under the form of binary (\"monochromatic\") masks, one per input tile/image, in which pixels belonging to target objects are encoded with ones whereas background pixels are encoded with zeros. Detectron2 output is then converted into a georeferenced vector. Polygon geometry can be simplified using the Ramer-Douglas-Peucker algorithm (RDP) by tuning the epsilon parameter.","title":"3. Detection"},{"location":"TASK-IDET/#4-assessment","text":"The results are evaluated by matching the detections and the ground truth labels, i.e. by finding detections overlapping with ground truth labels. To be considered a match, the intersection over union (IoU) between the detection polygon and label polygon must be greater than a threshold set by the user, with a default value = 0.25. In addition, if there are intersections between several detections and ground truth labels, only the pair with the largest IoU is considered to be a valid match. Intersection over union between a label and a detection is defined as: \\(\\mbox{IoU} = \\frac{A_{label \\cap detection}}{A_{label \\cup detection}}\\) The spatial intersection between the vectorized detections and the ground truth labels is computed to tag detections according to the following classification: true positive (TP): detections matching correctly a ground truth object; false positive (FP): detections not matching any ground truth object; false negative (FN): missing detections, namely objects of the ground truth which are not detected; wrong class: detections matching a ground truth object of another class. The reader may wonder why there are no true negatives (TN) in the list. Actually, all the image pixels which are rightly not associated with the target class can be considered as \"true negatives\". Yet, as far as object detection and instance segmentation are concerned, we do not need to group leftover pixels into some sort of \"dummy objects\". Should the user need to model such a scenario, one idea might consist in introducing a dummy class ( e.g. \"background\" or \"other\"), to which all the (ir)relevant pixels would be associated. The metrics are calculated per-class to take into account possible imbalances between classes. The detections in the wrong class will be classified as FN, i.e. missed object, or false positive (FP), i.e. detections not matching any object, depending on the target class we are calculating for. Precision and recall by class are used here: \\(\\mbox{precision}_{class} = \\frac{\\mbox{TP}_{class}}{\\mbox{TP}_{class} + \\mbox{FP}_{class}}\\) \\(\\mbox{recall}_{class} = \\frac{\\mbox{TP}_{class}}{\\mbox{TP}_{class} + \\mbox{FN}_{class}}\\) While referring the reader to this page for further information on these metrics, let us note that: Precision is optimal when it equals one, i.e. when the count of FPs is equal to zero. This metric measures how good the model is in detecting only objects with the class of interest; Recall is optimal when it equals one, i.e. when the count of FNs is equal to zero. This metric measures how good the model is in detecting all objects of the class of interest without missing any. Each metric can be aggregated to keep only one value per dataset, rather than one per class. \\(\\mbox{precision} = \\frac{\\sum_{class}\\mbox{precision}_{class}}{\\mbox{nbr of classes}}\\) \\(\\mbox{recall} = \\frac{\\sum_{class}\\mbox{recall}_{class}}{\\mbox{nbr of classes}}\\) As already mentioned, each detection is assigned a confidence score, ranging from 0 to 1. By filtering out all the detections exhibiting a score smaller than some cut-off/threshold value, one would end up having more or less detections to compare against ground truth data; the higher the threshold, the smaller the number of detections, the better their quality in terms of the confidence score. Sampling the threshold from a minimal user-defined value to a maximum value ( e.g. 0.95) and counting TPs, FPs, FNs at each sampling step, meaningful curves can be obtained representing counts and/or metrics like precision and recall as a function of the threshold. Typically, precision (recall) is monotonically increasing (decreasing) as a function of the threshold. As such, neither the precision nor the recall can be used to determine the optimal value of the threshold, which is why precision and recall are customarily aggregated in order to form a third metric which can be convex if computed as a function of the threshold or, at least, it can exhibit local minima. This metric is named \" \\(F_1\\) score\" and is defined as follows: \\(F_1 = 2\\times \\frac{\\mbox{precision}\\;\\times\\;\\mbox{recall}}{\\mbox{precision}\\; +\\; \\mbox{recall}}\\) Different models can then be compared with each other in terms of \\(F_1\\) scores; the best model can be selected as the one exhibiting the maximum \\(F_1\\) over the validation dataset. At last, the test dataset can be used to assess the selected model and provide the end-user with an objective figures concerning its reliability. Other approaches exist, allowing one to summarize metrics and eventually come up with threshold-independent scores. One of these approaches consist in computing the \"Area Under the ROC curve\" (AUC, cf. this page ) and will be soon implemented by the STDL.","title":"4. Assessment"},{"location":"TASK-IDET/#5-iterate-until-results-are-satisfactory","text":"Several training sessions can be executed, using different values of the various hyper-parameters involved in the process. As a matter of fact, reviewing and improving ground truth data is also part of the hyper-parameter tuning (cf. \" From Model-centric to Data-centric Artificial Intelligence ''). Keeping track of the above-mentioned metrics across multiple realizations, eventually an optimal model should be found (at least, a local optimum). The exploration of the hyper-parameter space is a tedious task, which consumes time as well as human and computing resources. It can be performed in a more or less systematic/heuristic way, depending on the experience of the operator as well as on the features offered by the code. Typically, a partial exploration is enough to obtain acceptable results. Within the STDL team, it is customary to first perform some iterations until \"decent scores\" are obtained, then to involve beneficiaries and domain experts in the continuous evaluation and improvement of results, until satisfactory results are obtained. These exchanges between data scientists and domain experts are also key to raise both communities' awareness of the virtues and flaws of machine learning approaches.","title":"5. Iterate until results are satisfactory"},{"location":"TASK-IDET/#use-cases","text":"Here is a list of the successful applications of the object detection framework described in this article: Automatic detection of quarries Swimming Pool Detection for the Canton of Geneva Swimming Pool Detection for the Canton of Thurgau Classification of road surfaces Updating the \u00abCultivable Area\u00bb Layer of the Agricultural Office, Canton of Thurgau","title":"Use cases"},{"location":"TASK-IDET/#concluding-remarks","text":"The STDL's object detection framework is still under development and receives updates as new use cases are tackled.","title":"Concluding remarks"}]} \ No newline at end of file +{"config":{"indexing":"full","lang":["en"],"min_search_length":3,"prebuild_index":false,"separator":"[\\s\\-]+"},"docs":[{"location":"","text":"Swiss Territorial Data Lab - STDL \u00b6 The STDL aims to promote collective innovation around the Swiss territory and its digital copy. It mainly explores the possibilities provided by data science to improve official land registering. A multidisciplinary team composed of cantonal, federal and academic partners is reinforced by engineers specialized in geographical data science to tackle the challenges around the management of territorial data-sets. The developed STDL platform codes and documentation are published under open licenses to allow partners and Swiss territory management actors to leverage the developed technologies. Exploratory Projects \u00b6 Exploratory projects in the field of the Swiss territorial data are conducted at the demand of institutions or actors of the Swiss territory. The exploratory projects are conducted with the supervision of the principal in order to closely analyze the answers to the specifications along the project. The goal of exploratory project aims to provide proof-of-concept and expertise in the application of technologies to Swiss territorial data. Automatic detection and observation of mineral extraction sites in Switzerland January 2024 Cl\u00e9mence Herny (ExoLabs) - Shanci Li (Uzufly) - Alessandro Cerioni (Etat de Gen\u00e8ve) - Roxane Pott (Swisstopo) Proposed by the Federal Office of Topography swisstopo - TASK-DQRY The study of the evolution of mineral extraction sites (MES) is primordial for the management of mineral resources and the assessment of their environmental impact. In this context, swisstopo has solicited the STDL to automate the vectorisation of MES over the years. This tedious task was previously carried out manually and was not regularly updated. Automatic object detection using a deep learning method was applied to SWISSIMAGE RGB orthophotos with a spatial resolution of 1.6 m px -1 . The trained model proved its ability to accurately detect MES, achieving a f1-score of 82%. Detection by inference was performed on images from 1999 to 2021, enabling us to track the evolution of potential MES over several years. Although the results are satisfactory, a careful examination of the detections must be carried out by experts to validate them as true MES. Despite this remaining manual work involved, the process is faster than a full manual vectorisation and can be used in the future to keep MES information up-to-date. Full article Dieback of beech trees: methodology for determining the health state of beech trees from airborne images and LiDAR point clouds August 2023 Clotilde Marmy (ExoLabs) - Gwena\u00eblle Salamin (ExoLabs) - Alessandro Cerioni (Canton of Geneva) - Roxane Pott (swisstopo) Proposed by the Republic and Canton of Jura - PROJ-HETRES Beech trees are sensitive to drought and repeated episodes can cause dieback. This issue affects the Jura forests requiring the development of new tools for forest management. In this project, descriptors for the health state of beech trees were derived from LiDAR point clouds, airborne images and satellite images to train a random forest predicting the health state per tree in a study area (5 km\u00b2) in Ajoie. A map with three classes was produced: healthy, unhealthy, dead. Metrics computed on the test dataset revealed that the model trained with all the descriptors has an overall accuracy up to 0.79, as well as the model trained only with descriptors derived from airborne imagery. When all the descriptors are used, the yearly difference of NDVI between 2018 and 2019, the standard deviation of the blue band, the mean of the NIR band, the mean of the NDVI, the standard deviation of the canopy cover and the LiDAR reflectance appear to be important descriptors. Full article Using spatio-temporal neighbor data information to detect changes in land use and land cover April 2023 Shanci Li (Uzufly) - Alessandro Cerioni (Canton of Geneva) - Clotilde Marmy (ExoLabs) - Roxane Pott (swisstopo) Proposed by the Swiss Federal Statistical Office - PROJ-LANDSTATS From 2020 on, the Swiss Federal Statistical Office started to update the land use/cover statistics over Switzerland for the fifth time. To help and lessen the heavy workload of the interpretation process, partially or fully automated approaches are being considered. The goal of this project was to evaluate the role of spatio-temporal neighbors in predicting class changes between two periods for each survey sample point. The methodolgy focused on change detection, by finding as many unchanged tiles as possible and miss as few changed tiles as possible. Logistic regression was used to assess the contribution of spatial and temporal neighbors to the change detection. While time deactivation and less-neighbors have a 0.2% decrease on the balanced accuracy, the space deactivation causes 1% decrease. Furthermore, XGBoost, random forest (RF), fully convolutional network (FCN) and recurrent convolutional neural network (RCNN) performance are compared by the means of a custom metric, established with the help of the interpretation team. For the spatial-temporal module, FCN outperforms all the models with a value of 0.259 for the custom metric, whereas the logistic regression indicates a custom metrics of 0.249. Then, FCN and RF are tested to combine the best performing model with the model trained by OFS on image data only. When using temporal-spatial neighors and image data as inputs, the final integration module achieves 0.438 in custom metric, against 0.374 when only the the image data is used.It was conclude that temporal-spatial neighbors showed that they could light the process of tile interpretation. Full article Classification of road surfaces March 2023 Gwena\u00eblle Salamin (swisstopo) - Cl\u00e9mence Herny (Exolabs) - Roxane Pott (swisstopo) - Alessandro Cerioni (Canton of Geneva) Proposed by the Federal Office of Topography swisstopo - PROJ-ROADSURF The Swiss road network extends over 83\u2019274 km. Information about the type of road surface is useful not only for the Swiss Federal Roads Office and engineering companies, but also for cyclists and hikers. Currently, the data creation and update is entirely done manually at the Swiss Federal Office of Topography. This is a time-consuming and methodical task, potentially suitable to automation by data science methods. The goal of this project is classifying Swiss roads according to their surface type, natural or artificial. We first searched for statistical differences between these two classes, in order to then perform supervised classification based on machine-learning methods. As we could not find any discriminant feature, we used deep learning methods. Full article Tree Detection from Point Clouds for the Canton of Geneva March 2022 Alessandro Cerioni (Canton of Geneva) - Flann Chambers (University of Geneva) - Gilles Gay des Combes (CJBG - City of Geneva and University of Geneva) - Adrian Meyer (FHNW) - Roxane Pott (swisstopo) Proposed by the Canton of Geneva - PROJ-TREEDET Trees are essential assets, in urban context among others. Since several years, the Canton of Geneva maintains a digital inventory of isolated (or \"urban\") trees. This project aimed at designing a methodology to automatically update Geneva's tree inventory, using high-density LiDAR data and off-the-shelf software. Eventually, only the sub-task of detecting and geolocating trees was explored. Comparisons against ground truth data show that the task can be more or less tricky depending on how sparse or dense trees are. In mixed contexts, we managed to reach an accuracy of around 60%, which unfortunately is not high enough to foresee a fully unsupervised process. Still, as discussed in the concluding section there may be room for improvement. Full article Detection of thermal panels on canton territory to follow renewable energy deployment February 2022 Nils Hamel (UNIGE) - Huriel Reichel (FHNW) Project in collaboration with Geneva and Neuch\u00e2tel States - TASK-TPNL Deployment of renewable energy becomes a major stake in front of our societies challenges. This imposes authorities and domain expert to promote and to demonstrate the deployment of such energetic solutions. In case of thermal panels, politics ask domain expert to certify, along the year, of the amount of deployed surface. In front of such challenge, this project aims to determine to which extent data science can ease the survey of thermal panel installations deployment and how the work of domain expert can be eased. Full article Automatic detection of quarries and the lithology below them in Switzerland January 2022 Huriel Reichel (FHNW) - Nils Hamel (UNIGE) Proposed by the Federal Office of Topography swisstopo - TASK-DQRY Mining is an important economic activity in Switzerland and therefore it is monitored by the Confederation through swisstopo. To this points, the identification of quarries has been mode manually, which even being done with very high quality, unfortunately does not follow the constant changing and updating pattern of these features. For this reason, swisstopo contacted the STDL to automatically detect quarries through the whole country. The training was done using SWISSIMAGE with 10cm spatial resolution and the Deep Learning Framework from the STDL. Moreover there were two iteration steps with the domain expert which included the manual correction of detection for new training. Interaction with the domain expert was very relevant for final results and summing to his appreciation, an f1-score of 85% was obtained in the end, which due to peculiar characteristics of quarries can be considered an optimal result. Full article Updating the \u00abCultivable Area\u00bb Layer of the Agricultural Office, Canton of Thurgau June 2021 Adrian Meyer (FHNW) - Pascal Salath\u00e9 (FHNW) Proposed by the Canton of Thurgau - PROJ-TGLN The Cultivable agricultural area layer (\"LN, Landwirtschaftliche Nutzfl\u00e4che\") is a GIS vector product maintained by the cantonal agricultural offices and serves as the key calculation index for the receipt of direct subsidy contributions to farms. The canton of Thurgau requested a spatial vector layer indicating locations and area consumption extent of the largest silage bale deposits intersecting with the known LN area, since areas used for silage bale storage are not eligible for subsidies. Having detections of such objects readily available greatly reduces the workload of the responsible official by directing the monitoring process to the relevant hotspots. Ultimately public economical damage can be prevented which would result from the payout of unjustified subsidy contributions. Full article Swimming Pool Detection for the Canton of Thurgau April 2021 Adrian Meyer (FHNW) - Alessandro Cerioni (Canton of Geneva) Proposed by the Canton of Thurgau - PROJ-TGPOOL The Canton of Thurgau entrusted the STDL with the task of producing swimming pool detections over the cantonal area. Specifically interesting was to leverage the ground truth annotation data from the Canton of Geneva to generate a predictive model in Thurgau while using the publicly available SWISSIMAGE aerial imagery datasets provided by swisstopo. The STDL object detection framework produced highly accurate predictions of swimming pools in Thurgau and thereby proved transferability from one canton to another without having to manually redigitize annotations. These promising detections showcase the highly useful potential of this approach by greatly reducing the need of repetitive manual labour. Full article Completion of the federal register of buildings and dwellings February 2021 Nils Hamel (UNIGE) - Huriel Reichel (swisstopo) Proposed by the Federal Statistical Office - TASK-REGBL The Swiss Federal Statistical Office is in charge of the national Register of of Buildings and Dwellings (RBD) which keep tracks of every existing building in Switzerland. Currently, the register is being completed with building in addition to regular dwellings to offer a reliable and official source of information. The completion of the register introduced issue dues to missing information and their difficulty to be collected. The construction years of the building is one missing information for large amount of register entries. The Statistical Office mandated the STDL to investigate on the possibility to use the Swiss National Maps to extract this missing information using an automated process. A research was conducted in this direction with the development of a proof-of-concept and a reliable methodology to assess the obtained results. Full article Swimming Pool Detection from Aerial Images over the Canton of Geneva January 2021 Alessandro Cerioni (Canton of Geneva) - Adrian Meyer (FHNW) Proposed by the Canton of Geneva - PROJ-GEPOOL Object detection is one of the computer vision tasks which can benefit from Deep Learning methods. The STDL team managed to leverage state-of-art methods and already existing open datasets to first build a swimming pool detector, then to use it to potentially detect unregistered swimming pools over the Canton of Geneva. Despite the success of our approach, we will argue that domain expertise still remains key to post-process detections in order to tell objects which are subject to registration from those which aren't. Pairing semi-automatic Deep Learning methods with domain expertise turns out to pave the way to novel workflows allowing administrations to keep cadastral information up to date. Full article Difference models applied to the land register November 2020 Nils Hamel (UNIGE) - Huriel Reichel (swisstopo) Project scheduled in the STDL research roadmap - TASK-DTRK Being able to track modifications in the evolution of geographical datasets is one important aspect in territory management, as a large amount of information can be extracted out of differences models. Differences detection can also be a tool used to assess the evolution of a geographical model through time. In this research project, we apply differences detection on INTERLIS models of the official Swiss land registers in order to emphasize and follow its evolution and to demonstrate that change in reference frames can be detected and assessed. Full article Research Developments \u00b6 Research developments are conducted aside of the research projects to provide a framework of tools and expertise around the Swiss territorial data and related technologies. The research developments are conducted according to the research plan established by the data scientists and validated by the steering committee. OBJECT DETECTION FRAMEWORK November 2021 Alessandro Cerioni (Canton of Geneva) - Cl\u00e9mence Herny (Exolabs) - Adrian Meyer (FHNW) - Gwena\u00eblle Salamin (Exolabs) Project scheduled in the STDL research roadmap - TASK-IDET This strategic component of the STDL consists of the automated analysis of geospatial images using deep learning while providing practical applications for specific use cases. The overall goal is the extraction of vectorized semantic information from remote sensing data. The involved case studies revolve around concrete object detection use cases deploying modern machine learning methods and utilizing a multitude of available datasets. The goal is to arrive at a prototypical platform for object detection which is highly useful not only for cadastre specialists and authorities but also for stakeholders at various contact points in society. Full article AUTOMATIC DETECTION OF CHANGES IN THE ENVIRONMENT November 2020 Nils Hamel (UNIGE) Project scheduled in the STDL research roadmap - TASK-DIFF Developed at EPFL with the collaboration of Cadastre Suisse to handle large scale geographical models of different nature, the STDL 4D platform offers a robust and efficient indexation methodology allowing to manage storage and access to large-scale models. In addition to spatial indexation, the platform also includes time as part of the indexation, allowing any area to be described by models in both spatial and temporal dimensions. In this development project, the notion of model temporal derivative is explored and proof-of-concepts are implemented in the platform. The goal is to demonstrate that, in addition to their formal content, models coming with different temporal versions can be derived along the time dimension to compute difference models. Such proof-of-concept is developed for both point cloud and vectorial models, demonstrating that the indexation formalism of the platform is able to ease considerably the computation of difference models. This research project demonstrates that the time dimension can be fully exploited in order to access the data it holds. Full article Steering Committee \u00b6 The steering committee of the Swiss Territorial Data Lab is composed of Swiss public administrations bringing their expertise and competences to guide the conducted projects and developments. Members of the STDL steering committee Submitting a project \u00b6 To submit a project to the STDL, simply fill this form . To contact the STDL, please write an email to info@stdl.ch . We will reply as soon as possible!","title":"Homepage"},{"location":"#swiss-territorial-data-lab-stdl","text":"The STDL aims to promote collective innovation around the Swiss territory and its digital copy. It mainly explores the possibilities provided by data science to improve official land registering. A multidisciplinary team composed of cantonal, federal and academic partners is reinforced by engineers specialized in geographical data science to tackle the challenges around the management of territorial data-sets. The developed STDL platform codes and documentation are published under open licenses to allow partners and Swiss territory management actors to leverage the developed technologies.","title":"Swiss Territorial Data Lab - STDL"},{"location":"#exploratory-projects","text":"Exploratory projects in the field of the Swiss territorial data are conducted at the demand of institutions or actors of the Swiss territory. The exploratory projects are conducted with the supervision of the principal in order to closely analyze the answers to the specifications along the project. The goal of exploratory project aims to provide proof-of-concept and expertise in the application of technologies to Swiss territorial data. Automatic detection and observation of mineral extraction sites in Switzerland January 2024 Cl\u00e9mence Herny (ExoLabs) - Shanci Li (Uzufly) - Alessandro Cerioni (Etat de Gen\u00e8ve) - Roxane Pott (Swisstopo) Proposed by the Federal Office of Topography swisstopo - TASK-DQRY The study of the evolution of mineral extraction sites (MES) is primordial for the management of mineral resources and the assessment of their environmental impact. In this context, swisstopo has solicited the STDL to automate the vectorisation of MES over the years. This tedious task was previously carried out manually and was not regularly updated. Automatic object detection using a deep learning method was applied to SWISSIMAGE RGB orthophotos with a spatial resolution of 1.6 m px -1 . The trained model proved its ability to accurately detect MES, achieving a f1-score of 82%. Detection by inference was performed on images from 1999 to 2021, enabling us to track the evolution of potential MES over several years. Although the results are satisfactory, a careful examination of the detections must be carried out by experts to validate them as true MES. Despite this remaining manual work involved, the process is faster than a full manual vectorisation and can be used in the future to keep MES information up-to-date. Full article Dieback of beech trees: methodology for determining the health state of beech trees from airborne images and LiDAR point clouds August 2023 Clotilde Marmy (ExoLabs) - Gwena\u00eblle Salamin (ExoLabs) - Alessandro Cerioni (Canton of Geneva) - Roxane Pott (swisstopo) Proposed by the Republic and Canton of Jura - PROJ-HETRES Beech trees are sensitive to drought and repeated episodes can cause dieback. This issue affects the Jura forests requiring the development of new tools for forest management. In this project, descriptors for the health state of beech trees were derived from LiDAR point clouds, airborne images and satellite images to train a random forest predicting the health state per tree in a study area (5 km\u00b2) in Ajoie. A map with three classes was produced: healthy, unhealthy, dead. Metrics computed on the test dataset revealed that the model trained with all the descriptors has an overall accuracy up to 0.79, as well as the model trained only with descriptors derived from airborne imagery. When all the descriptors are used, the yearly difference of NDVI between 2018 and 2019, the standard deviation of the blue band, the mean of the NIR band, the mean of the NDVI, the standard deviation of the canopy cover and the LiDAR reflectance appear to be important descriptors. Full article Using spatio-temporal neighbor data information to detect changes in land use and land cover April 2023 Shanci Li (Uzufly) - Alessandro Cerioni (Canton of Geneva) - Clotilde Marmy (ExoLabs) - Roxane Pott (swisstopo) Proposed by the Swiss Federal Statistical Office - PROJ-LANDSTATS From 2020 on, the Swiss Federal Statistical Office started to update the land use/cover statistics over Switzerland for the fifth time. To help and lessen the heavy workload of the interpretation process, partially or fully automated approaches are being considered. The goal of this project was to evaluate the role of spatio-temporal neighbors in predicting class changes between two periods for each survey sample point. The methodolgy focused on change detection, by finding as many unchanged tiles as possible and miss as few changed tiles as possible. Logistic regression was used to assess the contribution of spatial and temporal neighbors to the change detection. While time deactivation and less-neighbors have a 0.2% decrease on the balanced accuracy, the space deactivation causes 1% decrease. Furthermore, XGBoost, random forest (RF), fully convolutional network (FCN) and recurrent convolutional neural network (RCNN) performance are compared by the means of a custom metric, established with the help of the interpretation team. For the spatial-temporal module, FCN outperforms all the models with a value of 0.259 for the custom metric, whereas the logistic regression indicates a custom metrics of 0.249. Then, FCN and RF are tested to combine the best performing model with the model trained by OFS on image data only. When using temporal-spatial neighors and image data as inputs, the final integration module achieves 0.438 in custom metric, against 0.374 when only the the image data is used.It was conclude that temporal-spatial neighbors showed that they could light the process of tile interpretation. Full article Classification of road surfaces March 2023 Gwena\u00eblle Salamin (swisstopo) - Cl\u00e9mence Herny (Exolabs) - Roxane Pott (swisstopo) - Alessandro Cerioni (Canton of Geneva) Proposed by the Federal Office of Topography swisstopo - PROJ-ROADSURF The Swiss road network extends over 83\u2019274 km. Information about the type of road surface is useful not only for the Swiss Federal Roads Office and engineering companies, but also for cyclists and hikers. Currently, the data creation and update is entirely done manually at the Swiss Federal Office of Topography. This is a time-consuming and methodical task, potentially suitable to automation by data science methods. The goal of this project is classifying Swiss roads according to their surface type, natural or artificial. We first searched for statistical differences between these two classes, in order to then perform supervised classification based on machine-learning methods. As we could not find any discriminant feature, we used deep learning methods. Full article Tree Detection from Point Clouds for the Canton of Geneva March 2022 Alessandro Cerioni (Canton of Geneva) - Flann Chambers (University of Geneva) - Gilles Gay des Combes (CJBG - City of Geneva and University of Geneva) - Adrian Meyer (FHNW) - Roxane Pott (swisstopo) Proposed by the Canton of Geneva - PROJ-TREEDET Trees are essential assets, in urban context among others. Since several years, the Canton of Geneva maintains a digital inventory of isolated (or \"urban\") trees. This project aimed at designing a methodology to automatically update Geneva's tree inventory, using high-density LiDAR data and off-the-shelf software. Eventually, only the sub-task of detecting and geolocating trees was explored. Comparisons against ground truth data show that the task can be more or less tricky depending on how sparse or dense trees are. In mixed contexts, we managed to reach an accuracy of around 60%, which unfortunately is not high enough to foresee a fully unsupervised process. Still, as discussed in the concluding section there may be room for improvement. Full article Detection of thermal panels on canton territory to follow renewable energy deployment February 2022 Nils Hamel (UNIGE) - Huriel Reichel (FHNW) Project in collaboration with Geneva and Neuch\u00e2tel States - TASK-TPNL Deployment of renewable energy becomes a major stake in front of our societies challenges. This imposes authorities and domain expert to promote and to demonstrate the deployment of such energetic solutions. In case of thermal panels, politics ask domain expert to certify, along the year, of the amount of deployed surface. In front of such challenge, this project aims to determine to which extent data science can ease the survey of thermal panel installations deployment and how the work of domain expert can be eased. Full article Automatic detection of quarries and the lithology below them in Switzerland January 2022 Huriel Reichel (FHNW) - Nils Hamel (UNIGE) Proposed by the Federal Office of Topography swisstopo - TASK-DQRY Mining is an important economic activity in Switzerland and therefore it is monitored by the Confederation through swisstopo. To this points, the identification of quarries has been mode manually, which even being done with very high quality, unfortunately does not follow the constant changing and updating pattern of these features. For this reason, swisstopo contacted the STDL to automatically detect quarries through the whole country. The training was done using SWISSIMAGE with 10cm spatial resolution and the Deep Learning Framework from the STDL. Moreover there were two iteration steps with the domain expert which included the manual correction of detection for new training. Interaction with the domain expert was very relevant for final results and summing to his appreciation, an f1-score of 85% was obtained in the end, which due to peculiar characteristics of quarries can be considered an optimal result. Full article Updating the \u00abCultivable Area\u00bb Layer of the Agricultural Office, Canton of Thurgau June 2021 Adrian Meyer (FHNW) - Pascal Salath\u00e9 (FHNW) Proposed by the Canton of Thurgau - PROJ-TGLN The Cultivable agricultural area layer (\"LN, Landwirtschaftliche Nutzfl\u00e4che\") is a GIS vector product maintained by the cantonal agricultural offices and serves as the key calculation index for the receipt of direct subsidy contributions to farms. The canton of Thurgau requested a spatial vector layer indicating locations and area consumption extent of the largest silage bale deposits intersecting with the known LN area, since areas used for silage bale storage are not eligible for subsidies. Having detections of such objects readily available greatly reduces the workload of the responsible official by directing the monitoring process to the relevant hotspots. Ultimately public economical damage can be prevented which would result from the payout of unjustified subsidy contributions. Full article Swimming Pool Detection for the Canton of Thurgau April 2021 Adrian Meyer (FHNW) - Alessandro Cerioni (Canton of Geneva) Proposed by the Canton of Thurgau - PROJ-TGPOOL The Canton of Thurgau entrusted the STDL with the task of producing swimming pool detections over the cantonal area. Specifically interesting was to leverage the ground truth annotation data from the Canton of Geneva to generate a predictive model in Thurgau while using the publicly available SWISSIMAGE aerial imagery datasets provided by swisstopo. The STDL object detection framework produced highly accurate predictions of swimming pools in Thurgau and thereby proved transferability from one canton to another without having to manually redigitize annotations. These promising detections showcase the highly useful potential of this approach by greatly reducing the need of repetitive manual labour. Full article Completion of the federal register of buildings and dwellings February 2021 Nils Hamel (UNIGE) - Huriel Reichel (swisstopo) Proposed by the Federal Statistical Office - TASK-REGBL The Swiss Federal Statistical Office is in charge of the national Register of of Buildings and Dwellings (RBD) which keep tracks of every existing building in Switzerland. Currently, the register is being completed with building in addition to regular dwellings to offer a reliable and official source of information. The completion of the register introduced issue dues to missing information and their difficulty to be collected. The construction years of the building is one missing information for large amount of register entries. The Statistical Office mandated the STDL to investigate on the possibility to use the Swiss National Maps to extract this missing information using an automated process. A research was conducted in this direction with the development of a proof-of-concept and a reliable methodology to assess the obtained results. Full article Swimming Pool Detection from Aerial Images over the Canton of Geneva January 2021 Alessandro Cerioni (Canton of Geneva) - Adrian Meyer (FHNW) Proposed by the Canton of Geneva - PROJ-GEPOOL Object detection is one of the computer vision tasks which can benefit from Deep Learning methods. The STDL team managed to leverage state-of-art methods and already existing open datasets to first build a swimming pool detector, then to use it to potentially detect unregistered swimming pools over the Canton of Geneva. Despite the success of our approach, we will argue that domain expertise still remains key to post-process detections in order to tell objects which are subject to registration from those which aren't. Pairing semi-automatic Deep Learning methods with domain expertise turns out to pave the way to novel workflows allowing administrations to keep cadastral information up to date. Full article Difference models applied to the land register November 2020 Nils Hamel (UNIGE) - Huriel Reichel (swisstopo) Project scheduled in the STDL research roadmap - TASK-DTRK Being able to track modifications in the evolution of geographical datasets is one important aspect in territory management, as a large amount of information can be extracted out of differences models. Differences detection can also be a tool used to assess the evolution of a geographical model through time. In this research project, we apply differences detection on INTERLIS models of the official Swiss land registers in order to emphasize and follow its evolution and to demonstrate that change in reference frames can be detected and assessed. Full article","title":"Exploratory Projects"},{"location":"#research-developments","text":"Research developments are conducted aside of the research projects to provide a framework of tools and expertise around the Swiss territorial data and related technologies. The research developments are conducted according to the research plan established by the data scientists and validated by the steering committee. OBJECT DETECTION FRAMEWORK November 2021 Alessandro Cerioni (Canton of Geneva) - Cl\u00e9mence Herny (Exolabs) - Adrian Meyer (FHNW) - Gwena\u00eblle Salamin (Exolabs) Project scheduled in the STDL research roadmap - TASK-IDET This strategic component of the STDL consists of the automated analysis of geospatial images using deep learning while providing practical applications for specific use cases. The overall goal is the extraction of vectorized semantic information from remote sensing data. The involved case studies revolve around concrete object detection use cases deploying modern machine learning methods and utilizing a multitude of available datasets. The goal is to arrive at a prototypical platform for object detection which is highly useful not only for cadastre specialists and authorities but also for stakeholders at various contact points in society. Full article AUTOMATIC DETECTION OF CHANGES IN THE ENVIRONMENT November 2020 Nils Hamel (UNIGE) Project scheduled in the STDL research roadmap - TASK-DIFF Developed at EPFL with the collaboration of Cadastre Suisse to handle large scale geographical models of different nature, the STDL 4D platform offers a robust and efficient indexation methodology allowing to manage storage and access to large-scale models. In addition to spatial indexation, the platform also includes time as part of the indexation, allowing any area to be described by models in both spatial and temporal dimensions. In this development project, the notion of model temporal derivative is explored and proof-of-concepts are implemented in the platform. The goal is to demonstrate that, in addition to their formal content, models coming with different temporal versions can be derived along the time dimension to compute difference models. Such proof-of-concept is developed for both point cloud and vectorial models, demonstrating that the indexation formalism of the platform is able to ease considerably the computation of difference models. This research project demonstrates that the time dimension can be fully exploited in order to access the data it holds. Full article","title":"Research Developments"},{"location":"#steering-committee","text":"The steering committee of the Swiss Territorial Data Lab is composed of Swiss public administrations bringing their expertise and competences to guide the conducted projects and developments. Members of the STDL steering committee","title":"Steering Committee"},{"location":"#submitting-a-project","text":"To submit a project to the STDL, simply fill this form . To contact the STDL, please write an email to info@stdl.ch . We will reply as soon as possible!","title":"Submitting a project"},{"location":"PROJ-DQRY/","text":"Automatic Detection of Quarries and the Lithology below them in Switzerland \u00b6 Huriel Reichel (FHNW) - Nils Hamel (UNIGE) Supervision : Nils Hamel (UNIGE) - Raphael Rollier (swisstopo) Proposed by swisstopo - PROJ-DQRY June 2021 to January 2022 - Published on January 30th, 2022 Abstract : Mining is an important economic activity in Switzerland and therefore it is monitored by the Confederation through swisstopo. To this points, the identification of quarries has been made manually, which even being done with very high quality, unfortunately does not follow the constant changing and updating pattern of these features. For this reason, swisstopo contacted the STDL to automatically detect quarries through the whole country. The training was done using SWISSIMAGE with 10cm spatial resolution and the Deep Learning Framework from the STDL. Moreover there were two iteration steps with the domain expert which included the manual correction of detection for new training. Interaction with the domain expert was very relevant for final results and summing to his appreciation, an F1 Score of 85% was obtained in the end, which due to peculiar characteristics of quarries can be considered an optimal result. 1 - Introduction \u00b6 Mining is an important economic activity worldwide and this is also the case in Switzerland. The Confederation topographic office (swisstopo) is responsible for monitoring the presence of quarries and also the materials being explored. This is extremely relevant for planning the demand and shortage of explored materials and also their transportation through the country. As this of federal importance the mapping of these features is already done. Although this work is very detailed and accurate, quarries have a very characteristical updating pattern. Quarries can appear and disappear in a matter of a few months, in especial when they are relatively small, as in Switzerland. Therefore it is of interest of swisstopo to make an automatic detection of quarries in a way that it is also reproducible in time. A strategy offen offered by the Swiss Territorial Data Lab is the automatic detection of several objects in aerial imagery through deep learning, following our Object Detection Framework . In this case it is fully applicable as quarries in Switzerland are relatively small, so high resolution imagery is required, which is something our Neural Network has proven to tackle with mastery in past projects. This high resolution imagery is also reachable through SWISSIMAGE , aerial images from swisstopo that cover almost the whole country with a 10cm pixel size (GSD). Nevertheless, in order to train our neural network, and as it's usually the case in deep learning, several labelled images are required. These data work as ground truth so that the neural network \"learns\" what's the object to be detected and which should not. For this purpose, the work from the topographic landscape model ( TLM ) team of swisstopo has been of extreme importance. Among different surface features, quarries have been mapped all over Switzerland with a highly detailed scale. Although the high quality and precision of the labels from TLM, quarries are constantly changing, appearing and disappearing, and therefore the labels are not always synchronized with the images from SWISSIMAGE. This lack of of synchronization between these sets of data can be seen in Figure 1, where in the left one has the year of mapping of TLM and on the right the year of the SWISSIMAGE flights. Figure 1 : Comparison of TLM (left) and SWISSIMAGE (right) temporality. For this purpose, a two-times interaction was necessary with the domain expert. In order to have a ground truth that was fully synchronized with SWISSIMAGE we required two stages of training : one making use of the TLM data and a second one with a manual correction of the predicted labels from the first interaction. It is of crucial importance to state that this correction needed to be made by the domain expert so that he could carefully check each detection in pre-defined tiles. With that in hands, we could go further with a more trustworthy training. As stated, it is of interest of swisstopo to also identify the material being explored by every quarry. For that purpose, it was recommended the usage of the GeoCover dataset from swisstopo as well. This dataset a vector layer of the the geological cover of the whole Switzerland, which challenged us to cross the detector predictions with such vector information. In summary, the challenge of the STDL was to investigate to which extent is it possible to automatically detect quarries using Deep Learning considering their high update ratio using aerial imagery. 2 - Methodology \u00b6 First of all the \"area of interest\" must be identified. This is where the detection and training took place. In this case, a polygon of the whole Switzerland was used. After that, the area of interest is divided in several tiles of fixed size. This is then defining the slicing of SWISSIMAGE (given as WMS). For this study, tiles of different sizes were tested, being 500x500m tiles defined for final usage. Following the resolution of the images must be defined, which, again, after several tests, was defined as 512x512 pixels. For validation purposes the data is then split into Training, Validation and Testing. The training data-set is used inside the network for its learning; the validation is completely apart from training and used only to check results and testing is used for cross-validation. 70% of the data was used for training, 15% for validation and 15% for testing. To what concerns the labels, the ones from TLM were manually checked so that a group of approximately 250 labels with full synchronization with the SWISSIMAGE were found and recorded. Following, the first row training passes through the same framework from former STDL projects. We make use of a predictive Recursive-Convolutional Neural Network with ResNet-50 backbone provided by Detectron2 . A deeper explanation of the network functionality can be found here and here . Even with different parameters set, it was observed that predictions were including too much false positives, which were mainly made of snow. Most probably the reflectance of snow is similar to the one of quarries and this needed a special treatment. For this purpose, a filtering of the results was used. First of all the features were filtered based on the score values (0.9) and then by elevation, using the SRTM digital elevation model. As snow usually does not precipitate below around 1155 m, this was used as threshold. Finally an area threshold is also passed (using smallest predictions area) and predictions are merged. A more detailed description of how to operate this first filter can be seen here . Once several tests were performed, the new predictions were sent back to the domain expert for detailed revision with a rigid protocol. This included the removal of false positives and the inclusion of false negatives, mainly. This was performed by 4 different experts from swisstopo in 4 regions with the same amount of tiles to be analyzed. It is important to the state again the importance of domain expertise in this step, as a very careful and manual evaluation of what is and what is not a quarry must be made. Once the predictions were corrected, a new session of training was performed using different parameters. Once again, the same resolution and tile size were used as in the first iteration (512x512m tiles with 512x512 pixels of resolution), although this time a new filtering was developed. Very similar to the first one, but in a different order, allowing more aesthetical predictions in the end, something the domain expert was also carrying about. This procedure is summarized in figure 2. Figure 2 : Methodology applied for the detection of quarries and new training sessions. In the end, in order to also include the geological information of the detected quarries, a third layer resulting of the intersection of both the predictions and the GeoCover labels is created. This was done in a way that the final user can click to obtain both information on the quarry (when not a pure prediction) and the information of the geology/lithology on this part of the quarry. As a result, each resulting intersection poylgon contains both information from quarry and GeoCover. In order to evaluate the obtained results, the F1 Score was computed and also the final predictions were compared to the corrected labels from the domain expert side. This was done visually by acquiring the centroid of each quarry detected and by a heat-map, allowing one to detect the spatial pattern of detections. The heat-map was computed using 10'000 m radius and a 100 m pixel size. 3 - Results & Discussion \u00b6 In the first iteration, when the neural was trained with some labels of the TLM vector data, an optimal F1 score of approximately 0.78 was obtained. The figure 3 shows the behavior of the precision, recall and F1 score for the final model selected. Figure 3 : Precision, Recall and F1 score of the first iteration (using TLM data). Given the predictions resulting from the correction by the domain experts, there was an outstanding improve in the F1 score obtained, which was of approximately 0.85 in its optimal, as seen in figure 4. A total of 1265 were found in Switzerland after filtering. Figure 4 : Precision, Recall and F1 score of the second iteration (using data corrected by the domain expert). Figure 5 demonstrates some examples of detected quarries and this one can have some notion of the quality of the shape of the detections and how they mark the real-world quarries. Examples of false positives and false negatives, unfortunately still present in the detections are also shown. This is also an interesting demonstration of how some objects that are very similar to quarries, in the point of view of non-experts and how they may influence the results. These examples of errors are also an interesting indication of the importance of domain expertise in evaluating machine made results. Figure 5 : Examples of detected quarries, with true positive, false negative and false positive. To check on the validity of the new predictions generated, the centroid of them was plot along the centroid of the corrected labels, so one could check the spatial pattern of them and this way evaluate if they were respecting the same behavior. Figure 6 shows this plot. Figure 6 : Disposition of the centroids of assessed predictions and final predictions. One can see that despite some slight differences, the overall pattern is very similar among the disposition of the predictions. A very similar result can be seen with the computed heat-map of these points, seen in figure 7. Figure 7 : Heatmap of assessed predictions and final predictions. There is a small area to the west of the country where there were less detections than desired and in general there were more predictions than before. The objective of the heat-map is more to give a general view of the results than giving an exact comparison, as a point is created for every feature and the new filter used tended to smooth the results and join many features into a single one too. At the end the results were also intersected with GeoCover, which provide the Swiss soil detailed lithology, and an example of the results can be seen below using the QGIS Software. Figure 8 : Intersection of predictions with GeoCover seen in QGIS. Finally and most important, the domain expert was highly satisfied with this work, due to the support it can give to swisstopo and the TLM team in mapping the future quarries. The domain expert also demonstrated interest in pursuing the work by investigating the temporal pattern of quarries and detecting the volume of material in each quarry. 4 - Conclusion \u00b6 Through this collaboration with swisstopo, we managed to demonstrate that data science is able to provide relevant and efficient tool to ease complex and time-consuming task. With the produced inventory of the quarries on the whole Swiss territory, we were able to provide a quasi-exhaustive view of the situation to the domain expert, leading him to have a better view of the exploitation sites. This is of importance and a major step forward compared to the previous situation. Indeed, before this project, the only solution available to the domain expert was to gather all the federal and cantonal data, through non-standardized and time-consuming process, to hope having a beginning of an inventory, with temporality issues. With the developed prototype, within hours, the entire SWISSIMAGE data-set can be processed and turn into a full scale inventory, guiding the domain expert directly toward its interests. The resulting geographical layer can then be seen as the result of this demonstrator, able to turn the aerial images into a simple polygonal layer representing the quarries, with little false positive and false negative, providing the required view for the domain expert understanding of the Swiss situation. With such a result, it is possible to convolve it with all the other existing data, with the GeoCover in the first place. This lithology model of the Swiss soil can be intersected with the produced quarries layer in order to create a secondary geographical layer merging both quarries location and quarries soil type, leading to a powerful analyzing tool for the domain expert. The produced demonstrator shows that it is possible, in hours, to deduce a simple and reliable geographical layer based on a simple set of orthomosaic. The STDL then was able to prove the possibility to repeat the process along the time dimension, for future and past images, opening the way to build and rebuild the history and evolution of the quarries. With such a process, it will be possible to compute statistical quantities on the long term to catch the evolution and the resources, leading to more reliable strategical understanding of the Swiss resources and sovereignty.","title":"Automatic Detection of Quarries and the Lithology below them in Switzerland"},{"location":"PROJ-DQRY/#automatic-detection-of-quarries-and-the-lithology-below-them-in-switzerland","text":"Huriel Reichel (FHNW) - Nils Hamel (UNIGE) Supervision : Nils Hamel (UNIGE) - Raphael Rollier (swisstopo) Proposed by swisstopo - PROJ-DQRY June 2021 to January 2022 - Published on January 30th, 2022 Abstract : Mining is an important economic activity in Switzerland and therefore it is monitored by the Confederation through swisstopo. To this points, the identification of quarries has been made manually, which even being done with very high quality, unfortunately does not follow the constant changing and updating pattern of these features. For this reason, swisstopo contacted the STDL to automatically detect quarries through the whole country. The training was done using SWISSIMAGE with 10cm spatial resolution and the Deep Learning Framework from the STDL. Moreover there were two iteration steps with the domain expert which included the manual correction of detection for new training. Interaction with the domain expert was very relevant for final results and summing to his appreciation, an F1 Score of 85% was obtained in the end, which due to peculiar characteristics of quarries can be considered an optimal result.","title":"Automatic Detection of Quarries and the Lithology below them in Switzerland"},{"location":"PROJ-DQRY/#1-introduction","text":"Mining is an important economic activity worldwide and this is also the case in Switzerland. The Confederation topographic office (swisstopo) is responsible for monitoring the presence of quarries and also the materials being explored. This is extremely relevant for planning the demand and shortage of explored materials and also their transportation through the country. As this of federal importance the mapping of these features is already done. Although this work is very detailed and accurate, quarries have a very characteristical updating pattern. Quarries can appear and disappear in a matter of a few months, in especial when they are relatively small, as in Switzerland. Therefore it is of interest of swisstopo to make an automatic detection of quarries in a way that it is also reproducible in time. A strategy offen offered by the Swiss Territorial Data Lab is the automatic detection of several objects in aerial imagery through deep learning, following our Object Detection Framework . In this case it is fully applicable as quarries in Switzerland are relatively small, so high resolution imagery is required, which is something our Neural Network has proven to tackle with mastery in past projects. This high resolution imagery is also reachable through SWISSIMAGE , aerial images from swisstopo that cover almost the whole country with a 10cm pixel size (GSD). Nevertheless, in order to train our neural network, and as it's usually the case in deep learning, several labelled images are required. These data work as ground truth so that the neural network \"learns\" what's the object to be detected and which should not. For this purpose, the work from the topographic landscape model ( TLM ) team of swisstopo has been of extreme importance. Among different surface features, quarries have been mapped all over Switzerland with a highly detailed scale. Although the high quality and precision of the labels from TLM, quarries are constantly changing, appearing and disappearing, and therefore the labels are not always synchronized with the images from SWISSIMAGE. This lack of of synchronization between these sets of data can be seen in Figure 1, where in the left one has the year of mapping of TLM and on the right the year of the SWISSIMAGE flights. Figure 1 : Comparison of TLM (left) and SWISSIMAGE (right) temporality. For this purpose, a two-times interaction was necessary with the domain expert. In order to have a ground truth that was fully synchronized with SWISSIMAGE we required two stages of training : one making use of the TLM data and a second one with a manual correction of the predicted labels from the first interaction. It is of crucial importance to state that this correction needed to be made by the domain expert so that he could carefully check each detection in pre-defined tiles. With that in hands, we could go further with a more trustworthy training. As stated, it is of interest of swisstopo to also identify the material being explored by every quarry. For that purpose, it was recommended the usage of the GeoCover dataset from swisstopo as well. This dataset a vector layer of the the geological cover of the whole Switzerland, which challenged us to cross the detector predictions with such vector information. In summary, the challenge of the STDL was to investigate to which extent is it possible to automatically detect quarries using Deep Learning considering their high update ratio using aerial imagery.","title":"1 - Introduction"},{"location":"PROJ-DQRY/#2-methodology","text":"First of all the \"area of interest\" must be identified. This is where the detection and training took place. In this case, a polygon of the whole Switzerland was used. After that, the area of interest is divided in several tiles of fixed size. This is then defining the slicing of SWISSIMAGE (given as WMS). For this study, tiles of different sizes were tested, being 500x500m tiles defined for final usage. Following the resolution of the images must be defined, which, again, after several tests, was defined as 512x512 pixels. For validation purposes the data is then split into Training, Validation and Testing. The training data-set is used inside the network for its learning; the validation is completely apart from training and used only to check results and testing is used for cross-validation. 70% of the data was used for training, 15% for validation and 15% for testing. To what concerns the labels, the ones from TLM were manually checked so that a group of approximately 250 labels with full synchronization with the SWISSIMAGE were found and recorded. Following, the first row training passes through the same framework from former STDL projects. We make use of a predictive Recursive-Convolutional Neural Network with ResNet-50 backbone provided by Detectron2 . A deeper explanation of the network functionality can be found here and here . Even with different parameters set, it was observed that predictions were including too much false positives, which were mainly made of snow. Most probably the reflectance of snow is similar to the one of quarries and this needed a special treatment. For this purpose, a filtering of the results was used. First of all the features were filtered based on the score values (0.9) and then by elevation, using the SRTM digital elevation model. As snow usually does not precipitate below around 1155 m, this was used as threshold. Finally an area threshold is also passed (using smallest predictions area) and predictions are merged. A more detailed description of how to operate this first filter can be seen here . Once several tests were performed, the new predictions were sent back to the domain expert for detailed revision with a rigid protocol. This included the removal of false positives and the inclusion of false negatives, mainly. This was performed by 4 different experts from swisstopo in 4 regions with the same amount of tiles to be analyzed. It is important to the state again the importance of domain expertise in this step, as a very careful and manual evaluation of what is and what is not a quarry must be made. Once the predictions were corrected, a new session of training was performed using different parameters. Once again, the same resolution and tile size were used as in the first iteration (512x512m tiles with 512x512 pixels of resolution), although this time a new filtering was developed. Very similar to the first one, but in a different order, allowing more aesthetical predictions in the end, something the domain expert was also carrying about. This procedure is summarized in figure 2. Figure 2 : Methodology applied for the detection of quarries and new training sessions. In the end, in order to also include the geological information of the detected quarries, a third layer resulting of the intersection of both the predictions and the GeoCover labels is created. This was done in a way that the final user can click to obtain both information on the quarry (when not a pure prediction) and the information of the geology/lithology on this part of the quarry. As a result, each resulting intersection poylgon contains both information from quarry and GeoCover. In order to evaluate the obtained results, the F1 Score was computed and also the final predictions were compared to the corrected labels from the domain expert side. This was done visually by acquiring the centroid of each quarry detected and by a heat-map, allowing one to detect the spatial pattern of detections. The heat-map was computed using 10'000 m radius and a 100 m pixel size.","title":"2 - Methodology"},{"location":"PROJ-DQRY/#3-results-discussion","text":"In the first iteration, when the neural was trained with some labels of the TLM vector data, an optimal F1 score of approximately 0.78 was obtained. The figure 3 shows the behavior of the precision, recall and F1 score for the final model selected. Figure 3 : Precision, Recall and F1 score of the first iteration (using TLM data). Given the predictions resulting from the correction by the domain experts, there was an outstanding improve in the F1 score obtained, which was of approximately 0.85 in its optimal, as seen in figure 4. A total of 1265 were found in Switzerland after filtering. Figure 4 : Precision, Recall and F1 score of the second iteration (using data corrected by the domain expert). Figure 5 demonstrates some examples of detected quarries and this one can have some notion of the quality of the shape of the detections and how they mark the real-world quarries. Examples of false positives and false negatives, unfortunately still present in the detections are also shown. This is also an interesting demonstration of how some objects that are very similar to quarries, in the point of view of non-experts and how they may influence the results. These examples of errors are also an interesting indication of the importance of domain expertise in evaluating machine made results. Figure 5 : Examples of detected quarries, with true positive, false negative and false positive. To check on the validity of the new predictions generated, the centroid of them was plot along the centroid of the corrected labels, so one could check the spatial pattern of them and this way evaluate if they were respecting the same behavior. Figure 6 shows this plot. Figure 6 : Disposition of the centroids of assessed predictions and final predictions. One can see that despite some slight differences, the overall pattern is very similar among the disposition of the predictions. A very similar result can be seen with the computed heat-map of these points, seen in figure 7. Figure 7 : Heatmap of assessed predictions and final predictions. There is a small area to the west of the country where there were less detections than desired and in general there were more predictions than before. The objective of the heat-map is more to give a general view of the results than giving an exact comparison, as a point is created for every feature and the new filter used tended to smooth the results and join many features into a single one too. At the end the results were also intersected with GeoCover, which provide the Swiss soil detailed lithology, and an example of the results can be seen below using the QGIS Software. Figure 8 : Intersection of predictions with GeoCover seen in QGIS. Finally and most important, the domain expert was highly satisfied with this work, due to the support it can give to swisstopo and the TLM team in mapping the future quarries. The domain expert also demonstrated interest in pursuing the work by investigating the temporal pattern of quarries and detecting the volume of material in each quarry.","title":"3 - Results & Discussion"},{"location":"PROJ-DQRY/#4-conclusion","text":"Through this collaboration with swisstopo, we managed to demonstrate that data science is able to provide relevant and efficient tool to ease complex and time-consuming task. With the produced inventory of the quarries on the whole Swiss territory, we were able to provide a quasi-exhaustive view of the situation to the domain expert, leading him to have a better view of the exploitation sites. This is of importance and a major step forward compared to the previous situation. Indeed, before this project, the only solution available to the domain expert was to gather all the federal and cantonal data, through non-standardized and time-consuming process, to hope having a beginning of an inventory, with temporality issues. With the developed prototype, within hours, the entire SWISSIMAGE data-set can be processed and turn into a full scale inventory, guiding the domain expert directly toward its interests. The resulting geographical layer can then be seen as the result of this demonstrator, able to turn the aerial images into a simple polygonal layer representing the quarries, with little false positive and false negative, providing the required view for the domain expert understanding of the Swiss situation. With such a result, it is possible to convolve it with all the other existing data, with the GeoCover in the first place. This lithology model of the Swiss soil can be intersected with the produced quarries layer in order to create a secondary geographical layer merging both quarries location and quarries soil type, leading to a powerful analyzing tool for the domain expert. The produced demonstrator shows that it is possible, in hours, to deduce a simple and reliable geographical layer based on a simple set of orthomosaic. The STDL then was able to prove the possibility to repeat the process along the time dimension, for future and past images, opening the way to build and rebuild the history and evolution of the quarries. With such a process, it will be possible to compute statistical quantities on the long term to catch the evolution and the resources, leading to more reliable strategical understanding of the Swiss resources and sovereignty.","title":"4 - Conclusion"},{"location":"PROJ-DQRY-TM/","text":"Automatic detection and observation of mineral extraction sites in Switzerland \u00b6 Cl\u00e9mence Herny (Exolabs), Shanci Li (Uzufly), Alessandro Cerioni (\u00c9tat de Gen\u00e8ve), Roxane Pott (swisstopo) Proposed by swisstopo - PROJ-DQRY-TM October 2022 to February 2023 - Published on January 2024 Abstract : Studying the evolution of mineral extraction sites (MES) is of primary importance for assessing the availability of mineral resources, managing MES and evaluating the impact of mining activity on the environment. In Switzerland, MES are inventoried at local level by the cantons and at federal level by swisstopo. The latter performs manual vectorisation of MES boundaries. Unfortunately, although the data is of high quality, it is not regularly updated. To automate this tedious task and to better observe the evolution of MES, swisstopo has solicited the STDL to carry out an automatic detection of MES in Switzerland over the years. We performed instance segmentation using a deep learning method to automatically detect MES in RGB aerial images with a spatial resolution of 1.6 m px -1 . The detection model was trained with 266 labels and orthophotos from the SWISSIMAGE RGB mosaic published in 2020. The selected trained model achieved a f1-score of 82% on the validation dataset. The model was used to do detection by inference of potential MES in SWISSIMAGE RGB orthophotos from 1999 to 2021. The model shows good ability to detect potential MES with about 82% of labels detected for the 2020 SWISSIMAGE mosaic. The detections obtained with SWISSIMAGE orthophotos acquired over different years can be tracked to observe their temporal evolution. The framework developed can perform detection in an area of interest (about a third of Switzerland at the most) in just a few hours, which is a major advantage over manual mapping. We acknowledge that there are some missed and false detections in the final product, and the results need to be reviewed and validated by domain experts before being analysed and interpreted. The results can be used to perform statistics over time and update MES evolution in future image acquisitions. 1. Introduction \u00b6 1.1 Context \u00b6 Mineral extraction constitutes a strategic activity worldwide, including in Switzerland. Demand for mineral resources has been growing significantly in recent decades 1 , mainly due to the rapid increase in the production of batteries and electronic chips, or buildings construction, for example. As a result, the exploitation of some resources, such as rare earth elements, lithium, or sand, is putting pressure on their availability. Being able to observe the development of mineral extraction sites (MES) is of primary importance to adapting mining strategy and anticipating demand and shortage. Mining has also strong environmental and societal impact 2 3 . It implies the extraction of rocks and minerals from water ponds, cliffs, and quarries. The surface affected, initially natural areas, can reach up to thousands of square kilometres 1 . The extraction of some minerals could lead to soil and water pollution and involves polluting truck transport. Economic and political interests of some resources might overwhelm land protection, and conflicts are gradually intensifying 2 . MES are dynamic features that can evolve according to singular patterns, especially if they are small, as is the case in Switzerland. A site can expand horizontally and vertically or be filled to recover the site 4 2 3 5 . Changes can happen quickly, in a couple of months. As a results, updating the MES inventory can be challenging. There is a significant demand for effective MES observation of development worldwide. Majority of MES mapping is performed manually by visual inspection of images 1 . Alternatively, recent improvements in the availability of high spatial and temporal resolution space/airborne imagery and computational methods have encouraged the development of automated image processing. Supervised classification of spectral images is an effective method but requires complex workflow 6 4 2 . More recently, few studies have implemented deep learning algorithms to train models to detect extraction sites in images and have shown high levels of accuracy 3 . In Switzerland, MES management is historically regulated on a canton-based level using GIS data, including information about the MES location, extent, and extracted materials among others. At the federal level, swisstopo and the Federal Office of Statistics (FSO) observe the development of MES. swisstopo has carried out a detailed manual delineation of MES based on SWISSIMAGE dataset over Switzerland. In the scope to fasten and improving the process of MES mapping in Switzerland, we developed a method for automating MES detection over the years. Ultimately, the goal is to keep the database up to date when new images are acquired. The results can be statistically process to better assess the MES evolution over time in Switzerland. 1.2. Approach \u00b6 The STDL has developed a framework named object-detector to automatically detect objects in a georeferenced imagery dataset based on deep learning method. The framework can be adapted to detect MES (also referred as quarry in the project) in Switzerland. A project to automatically detect MES in Switzerland 7 has been carried out by the STDL in 2021 ( detector-interface framework). Detection of potential MES obtained by automatic detection on the 2020 SWISSIMAGE mosaic has already been delivered to swisstopo (layer 2021_10_STDL_QC1 ). The method has proven its efficiency detecting MES. The numerical model trained with the object detector achieved a f1-score of 82% and detected about 1200 potential MES over Switzerland. In this project, we aim to continue this work and extend it to a second objective, that of observing MES evolution over time. The main challenge is to prove the algorithm reliability for detecting objects in a multi-year dataset images acquired with different sensors. The project workflow is synthesised in Figure 1. First, a deep learning algorithm is trained using a manually mapped MES dataset that serves as ground truth (GT). After evaluating the performance of the trained model, the selected one was used to perform inference detection for a given year dataset and area of interest (AoI). The results were filtered to discard irrelevant detection. The operation was repeated over several years. Finally, each potential MES detected was tracked over the years to observe its evolution. Figure 1: Workflow diagram for automatic MES detection. In this report, we first describe the data used, including the image description and the definition of AoI. Then we explain the model training, evaluation and object detection procedure. Next, we present the results of potential MES detection and the MES tracking strategy. Finally, we provide conclusion and perspectives. 2. Data \u00b6 2.1 Images and area of interest \u00b6 Automatic detection of potential MES over the years in Switzerland was performed with aerial orthophotos from the swisstopo product SWISSIMAGE Journey . Images are georeferenced RGB TIF tiles with a size of 256 x 256 pixels (1 km 2 ). Product Year Coordinate system Spatial resolution SWISSIMAGE 10 cm 2017 - current CH1903+/MN95 (EPSG:2056) 0.10 m ( \\(\\sigma\\) \\(\\pm\\) 0.15 m) - 0.25 m SWISSIMAGE 25 cm 2005 - 2016 MN03 (2005 - 2007) and MN95 (since 2008) 0.25 m ( \\(\\sigma\\) \\(\\pm\\) 0.25 m) - 0.50 m ( \\(\\sigma\\) \\(\\pm\\) 3.00 - 5.00 m) SWISSIMAGE 50 cm 1998 - 2004 MN03 0.50 m ( \\(\\sigma\\) \\(\\pm\\) 0.50 m) Table 1: SWISSIMAGE products characteristics. Several SWISSIMAGE products exist, produced from different instrumentation (Table 1). SWISSIMAGE mosaics are built and published yearly. The year of the mosaic corresponds to the last year of the dataset publication, and the most recent orthophotos datasets available are then used to complete the mosaic. For example the 2020 SWISSIMAGE mosaic is a combination of 2020, 2019 and 2018 images acquisition. The 1998 mosaic release corresponds to a year of transition from black and white images ( SWISSIMAGE HIST ) to RGB images. For this study, only RGB data from 1999 to 2021 were considered. Figure 2: Acquisition footprint of SWISSIMAGE aerial orthophotos for the years 2016 to 2021. The SWISSIMAGE Journey mosaic in the background is the 2020 release. Acquisition footprints of yearly acquired orthophotos were used as AoI to perform MES detection through time. Over the years, the footprints may spatially overlap (Fig. 2). Since 2017, the geometry of the acquisition footprints has been quasi-constant, dividing Switzerland into three more or less equal areas, ensuring that the orthophotos are updated every three years. For the years before 2017, the acquisition footprints were not systematic and do not guarantee a periodically update of the orthophotos. The acquisition footprint may also not be spatially contiguous. Figure 3: Illustration of the combination of SWISSIMAGE images and FSO images for the 2007 SWISSIMAGE mosaic. (a) Overview of the 2007 SWISSIMAGE mosaic. The red polygon corresponds to the provided SWISSIMAGE acquisition footprint for 2007. The orange polygon corresponds to the surface covered by the new SWISSIMAGE for 2007. The remaining area of the red polygon corresponds to the FSO image dataset acquired in 2007. The black box indicates the panel (b) location, and the white box indicates the panel (c) location. (b) Side-by-side comparison of image composition in 2006 and 2007 SWISSIMAGE mosaics. (c) Examples of detection polygons (white polygons) obtained by inference on the 2007 SWISSIMAGE dataset (red box) and FSO images 2007 (outlined by black box). SWISSIMAGE Journey mosaics of 2005, 2006, and 2007 present a particularity as it is composed not only of 25 cm resolution SWISSIMAGE but also of orthophotos acquired for the FSO. These are tiff RGB orthophotos with a spatial resolution of 50 cm px -1 (coordinate system: CH1903/LV03 (EPSG:21781)) and have been integrated into the SWISSIMAGE Journey products. However, these images were discarded (modification of the footprint shape) from our dataset because they were causing issues in the MES automatic detection producing odd segmented detection shapes (Fig. 3). This is probably due to the different stretching of pixel colour between datasets. It also has to be noted that there are currently missing images (about 88 tiles at zoom level 16) in the 2020 SWISSIMAGE dataset. 2.2 Image fetching \u00b6 Pre-rendered SWISSIMAGE tiles (256 x 256 px, 1 km 2 ) are downloaded using the Web Map Tile Service (WMTS) wmts.geo.admin.ch via an XYZ connector. Tiles are served on a cartesian coordinates grid using a Web Mercator Quad projection and a coordinate reference system EPGS 3857. Position of a tile on the grid is defined by x and y coordinates and the pixel resolution of the image is defined by z , its zoom level. Changing the zoom level affects the resolution by a factor of 2 (Fig. 4). For instance a zoom level of 17 corresponds to a resolution of 0.8 m px -1 and a zoom level of 16 to a resolution of 1.6 m px -1 . Figure 4: Examples of tiles geometry at zoom level 16 (z16, black polygons) and at zoom level 17 (z17, blue polygons). The number of tiles for each zoom level is indicated in square brackets. The tiles are selected for model training, i.e. only tiles intersecting swissTLM3D labels (tlm-hr-trn-topo, yellow polygons). Note that in the subsequent project carried out by Reichel and Hamel (2021) 7 , the tiling method adopted was slightly different from the one adopted for this project. Custom size and resolution tiles were built. A sensitivity analysis of these two parameters was conducted and led to the choice of tiles with a size of about 500 m and a pixel resolution of about 1 m (above, the performance was not significantly improved). 2.3 Ground truth \u00b6 The MES labels originate from the swiss Topographic Landscape Model 3D ( swissTLM3D ) produced by swisstopo . swissTLM3D is a large-scale topographic landscape model of Switzerland, including manually drawn and georeferenced vectors of objects of interest at a high resolution, including MES features. Domain experts from swisstopo have carried out extensive work to review the labeled MES and to synchronise them with the 2020 SWISSIMAGE mosaic to improve the quality of the labeled dataset. A total of 266 labels are available. The mapped MES reveal the diversity of MES characteristics, such as the presence or absence of buildings/infrastructures, trucks, water pounds, and vegetation (Fig. 5). Figure 5: Examples of MES mapped in swissTLM3D and synchronised to 2020 SWISSIMAGE mosaic. These labels are used as the ground truth (GT) i.e. the reference dataset indicating the presence of a MES in an image. The GT is used both as input to train the model to detect MES and to evaluate the model performance. 3. Automatic detection methodology \u00b6 3.1 Deep learning algorithm for object detection \u00b6 Training and inference detection of potential MES in SWISSIMAGE were performed with the object detector framework. This project is based on the open source detectron2 framework 8 implemented with PyTorch by the Facebook Artificial Intelligence Research group (FAIR). Instance segmentation (delineation of object) was performed with a Mask R-CNN deep learning algorithm 9 . It is based on a Recursive-Convolutional Neural Network (CNN) with a backbone pre-trained model ResNet-50 (50 layers deep residual network). Images were annotated with custom COCO object based on the labels (class 'Quarry'). The model is trained with this dataset to later perform inference detection on images. If the object is detected by the algorithm, a pixel mask is produced with a confidence score (0 to 1) attributed to the detection (Fig. 6). Figure 6: Example of detection mask. The pink rectangle corresponds to the bounding box of the object, the object is segmented by the pink polygons associated with the detection class ('Quarry') and a confidence score. The object detector framework permits to convert detection mask to georeferenced polygon that can be used in GIS softwares. The implementation of the Ramer-Douglas-Peucker ( RDP ) algorithm, allows the simplification of the derived polygons by discarding non-essential points based on a smoothing parameter. This allow to considerably reduces the amount of data to be stored and prevent potential memory saturation while deriving detection polygons on large areas as it is the case for this study. 3.2 Model training \u00b6 Orthophotos from the 2020 SWISSIMAGE mosaic, for which the GT has been defined, were chosen to proceed the model training. Tiles intersecting labels were selected and split randomly into three datasets: the training dataset (70%), the validation dataset (15%), and the test dataset (15%). Addition of empty tiles (no annotation) to confront the model to landscapes not containing the target object has been tested ( Appendix A.1 ) but did not provide significant improvement in the model performance to be adopted. Figure 7: Training curves obtained at zoom level 16 on the 2020 SWISSIMAGE mosaic. The curves were obtained for the trained model 'replicate 3'. (a) Learning rate in function of iteration. The step was defined every 500 iterations. The initial learning rate was 5.0 x 10 -3 with a weight and bias decay of 1.0 x 10 -4 . (b) The total loss is a function of iteration. Raw measurement (light red) and smoothed curve (0.6 factor, solid red) are superposed. (c) The validation loss curve is a function of iteration. Raw measurement (light red) and smoothed curve (0.6 factor, solid red) are superposed. The vertical dashed black lines indicate the iteration minimising the validation loss curve, i.e. 3000. Models were trained with two images per batch ( Appendix A.2 ), a learning rate of 5 x 10 -3 , and a learning rate decay of 1 x 10 -4 every 500 steps (Fig. 7 (a)). For the given model, parameters and a zoom level of 16 ( Section 3.3.3 ), the training is performed over 7000 iterations and lasts about 1 hour on a 16 GiB GPU (NVIDIA Tesla T4) machine compatible with CUDA . The total (train and validation loss) loss curve decreases until reaching a quasi-steady state around 6000 iterations (Fig. 7 (b)). The optimal detection model corresponds to the one minimising the validation loss curve. This minimum is reached between 2000 and 3000 iterations (Fig. 7 (c)). 3.3 Metrics \u00b6 The model performance and detection reliability were assessed by comparing the results to the GT. The detection performed by the model can be either (1) a True Positive (TP), i.e. the detection is real (spatially intersecting the GT) ; (2) a False Positive i.e. the detection is not real (not spatially intersecting the GT) or (3) a False Negative (FN) i.e. the labeled object is not detected by the algorithm (Fig. 8). Tagging the detection (Fig. 9(a)) allows to calculate several metrics (Fig. 9(b)) such as: Figure 8: Examples of different detection cases. Label is represented with a yellow polygon and detection with a red polygon. (a) True Positive (TP) detection intersecting the GT, (b) a potential True Positive (TP?) detection with no GT, (c) False Negative (FN) case with no detection while GT exists, (d) False Positive (FP) detection of object that is not a MES. the recall , translating the amount of TP detections predicted by the model: \\[recall = \\frac{TP}{(TP + FN)}\\] the precision , translating the number of well-predicted TP among all the detections: \\[precision = \\frac{TP}{(TP + FP)}\\] the f1-score , the harmonic average of the precision and the recall: \\[f1 = 2 \\times \\frac{recall \\times precision}{recall + precision}\\] Figure 9: Evaluation of the trained model performance obtained at zoom level 16 for the trained model 'replicate 3' (Table 2). (a) Number of TP (blue), FN (red), and FP (green) as a function of detection score threshold for the validation dataset. (b) Metrics value, precision (blue), recall (red), and f1-score (green) as a function of the detection score threshold for the validation dataset. The maximum f1-score value is 82%. 4. Automatic detection model analysis \u00b6 4.1. Model performance and replicability \u00b6 Trained models reached f1-scores of about 80% with a standard deviation of 2% (Table 2). The performances are similar to the model trained by Reichel and Hamel (2021) 7 . model precision recall f1 replicate 1 0.84 0.79 0.82 replicate 2 0.77 0.76 0.76 replicate 3 0.83 0.81 0.82 replicate 4 0.89 0.77 0.82 replicate 5 0.78 0.82 0.80 Table 2: Metrics value computed for the validation dataset for trained models replicates with the 2020 SWISSIMAGE mosaic at zoom level 16. A variability is expected as the deep learning algorithm displays some random behavior, but it is supposed to be negligible. However, the observed model variability is enough to affect final results that might slightly change by using different trained models with same input parameters (Fig. 10). Figure 10: Detection polygons obtained for the different trained model replicates (Table 2) highlighting results variability. The labels correspond to orange polygons. The number in the square bracket corresponds to the number of polygons. The inference detections have been performed on a subset of 2000 tiles for the 2020 SWISSIMAGE at zoom level 16. Detections have been filtered according to the parameters defined in Section 5.1. To reduce the variability of the trained models, the random seeds of both detectron2 and python have been fixed. Neither of these attempts have been successful, and the variability remains. The nondeterministic behavior of detectron2 has been recognised ( issue 1 , issue 2 ), but no suitable solution has been provided yet. Further investigation on the model performance and consistency should be performed in the future. To mitigate the results variability of model replicates, we could consider in the future to combine the results of several model replicates to remove FP while preserving the TP and potential TP detection. The choice and number of models used should be evaluated. This method is tedious as it requires inference detection from several models, which can be time-consuming and computationally intensive. 4.2 Sensitivity to the zoom level \u00b6 Image resolution is dependent on the zoom level ( Section 2.2 ). To select the most suitable zoom level for MES detection, we performed a sensitivity analysis on trained model performance. Increasing the zoom level increases the value of the metrics following a global linear trend (Fig. 11). Figure 11: Metrics values (precision, recall and f1) as function of zoom level for the validation dataset. The results of the replicates performed at each zoom level are included (Table A1). Models trained at a higher zoom level performed better. However, a higher zoom level implies smaller tile and thus, a larger number of tiles to fill the AoI. For a typical AoI, i.e up to a third of Switzerland, this can lead to a large number of tiles to be stored and processed, leading to potential RAM and/or disk space saturation. For 2019 AoI, 89'290 tiles are required at zoom level 16 while 354'867 tiles are required at zoom level 17, taking respectively 3 hours and 11 hours to process on a 30 GiB RAM machine with a 16 GiB GP. Visual comparison of inference detection reveals that there was no significant improvement in the object detection quality from zoom level 16 to zoom level 17. Both zoom level present a similar proportion of detections intersecting labels (82% and 79% for zoom level 16 and zoom level 17 respectively). On the other hand, the quality of object detection at zoom level 15 was depreciated. Indeed, detection scores were lower, with only tens of detection scores above 0.95 while it was about 400 at zoom level 16 and about 64% of detection intersecting labels. 4.3 Model choice \u00b6 Based on tests performed, we selected the 'replicate 3' model, obtained (Tables 2 and A1) at zoom level 16, to perform inference detection. Models trained at zoom level 16 (1.6 m px -1 pixel resolution) have shown satisfying results in accurately detecting MES contour and limiting the number of FP with high detection score (Fig. 11). It represents a good trade-off between results reliability (f1-score between 76% and 82% on the validation dataset) and computational resources. Then, among all the replicates performed at zoom level 16, we selected the trained model 'replicate 3' (Table 2) because it combines both the highest metrics values (for the validation dataset but also the train and test datasets), close precision and recall values and a rather low amount of low score detections. 5. Automatic detection of MES \u00b6 5.1 Detection post-processing \u00b6 Detection by inference was performed over AoIs with a threshold detection score of 0.3 (Fig. 12). The low score filtering results in a large amount of detections. Several detections may overlap, potentially segmenting a single object. In addition a detection might be split into multiple tiles. To improve the pertinence and the aesthetics of the raw detection polygons, a post-processing procedure was applied. First, a large proportion of FP occurred in mountainous areas (rock outcrops and snow, Fig. 12(a)). We assumed MES are not present (or at least sparse) above a given altitude. An elevation filtering was applied using a Switzerland Digital Elevation Model (about 25 m px -1 ) derived from the SRTM instrument ( USGS - SRTM ). The maximum elevation of the labeled MES is about 1100 m. Second, detection aggregation was applied: - polygons were clustered ( K-means ) according to their centroid position. The method involves setting a predefined number k of clusters. Manual tests performed by Reichel and Hamel (2021) 7 concluded to set k equal to the number of detection divided by three. The highest detection score was assigned to the clustered detection. This method preserves the final integrity of detection polygons by retaining detection that has potentially a low confidence score but belongs to a cluster with a higher confidence score improving the final segmentation of the detected object. The value of the threshold score must be kept relatively low ( i.e. 0.3) when performing the detection to prevent removing too many polygons that could potentially be part of the detected object. We acknowledge that determining the optimal number of clusters by clustering validation indices rather than manual adjustment would be more robust. In addition, exploring other clustering methods, such as DBSCAN , based on local density, can be considered in the future. - score filtering was applied. - spatially close polygons were assumed to belong to the same MES and are merged according to a distance threshold. The averaged score of the merged detection polygons was ultimately computed. Finally, we assumed that a MES covers a minimal area. Detection with an area smaller than a given threshold were filtered out. The minimum MES area in the GT is 2270 m 2 . Figure 12: MES detection filtering. (a) Overview of the automatic detection of MES obtained with 2020 SWISSIMAGE at zoom level 16. Transparent red polygons (with associated confidence score in white) correspond to the raw object detection output and the red line polygons (with associated confidence score in red) correspond to the final filtered detection. The black box outlines the location of the (b) and (c) panel zoom. Note the large number of detection in the mountains (right area of the image). (b) Zoom on several raw detections polygons of a single object with their respective confidence score. (c) Zoom on a filtered detection polygon of a single object with the resulting score. Sensitivity of detections to these filters was investigated (Table 3). The quantitative evaluation of filter combination relevance is tricky as potential MES presence is performed by inference, and the GT provided by swissTLM3D constitutes an incomplete portion of the MES in Switzerland (2020). As indication, we computed the number of spatial intersection between ground truth and detection obtained with the 2020 SWISSIMAGE mosaic. Filter combination number 3 was adopted, allowing to detect about 82% of the GT with a relatively limited amount of FP detection compared to filter combinations 1 and 2 (from visual inspection). filters combination score threshold elevation threshold (m) area threshold (m 2 ) distance threshold (m) number of detection label detection (%) 1 0.95 2000 1100 10 1745 85.1 2 0.95 2000 1200 10 1862 86.6 3 0.95 5000 1200 10 1347 82.1 4 0.96 2000 1100 10 1331 81.3 5 0.96 2000 1200 8 1445 78.7 6 0.96 5000 1200 10 1004 74.3 Table 3: Threshold values of filtering parameters and their respective number of detections and intersection proportion with swissTLM3D labels. The detections have been obtained for the 2020 SWISSIMAGE mosaic. We acknowledged that for the selected filter combination, the area threshold value is higher than the smallest area value of the GT polygons. However, reducing the area value increases significantly the presence of FP. Thirteen labels display an area below 5000 m 2 . 5.2 Inference detections \u00b6 The trained model was used to perform inference detection on SWISSIMAGE orthophotos from 1999 to 2021. The automatic detection model shows good capabilities to detect MES in different years orthophotos (Fig. 13), despite being trained on the 2020 SWISSIMAGE mosaic. The model also demonstrates capabilities to detect potential MES that have not been mapped yet but are strong candidates. However, the model misses some labeled MES or potential MES (FN, Fig. 8). However, when the model process FSO images, with different colour stretching, it failed to correctly detect potential MES (Fig. 3). It reveals that images must have characteristics close to the training dataset for optimal results with a deep learning model. Figure 13: Examples of object detection segmented by polygons in different year orthophotos. The yellow polygon for the year 2020 panel of object ID 3761 corresponds to the label. Other coloured polygons correspond to the algorithm detection. Then, we acknowledge that a significant amount of FP detection can still be observed in our filtered detection dataset (Figs. 8 and 14). The main sources of FP are the presence of large rock outcrops, mountainous areas without vegetation, snow, river sand beds, brownish-coloured fields, or construction areas. MES present a large variety of features (buildings, water pounds, trucks, vegetation) (Fig. 5) which can be a source of confusion for the algorithm but even sometimes for human eye. Therefore, the robustness of the GT is crucial for reliable detection. The algorithm's results should be taken carefully. Figure 14: Examples of FP detection. (a) Snow patches (2019) ; (b) River sand beds and gullies (2019); (c) Brownish field (2020); (d) vineyards (2005); (e) Airport tarmac (2020); (f) Construction site (2008). The detections produced by the algorithm are potential MES, but the final results must be reviewed by experts in the field to discard remaining FP detection and correct FN before any processing or interpretation. 6. Observation of MES evolution \u00b6 6.1 Object tracking strategy \u00b6 Switzerland is covered by RGB SWISSIMAGE product over more than 20 years (1999 to actual), allowing changes to be detected (Fig. 13). Figure 15: Strategy for MES tracking over time. ID assignment to detection. Spatially intersecting polygons share the same ID allowing the MES to be tracked in a multi-year dataset. We assumed that detection polygons that overlap from one year to another describe a single object (Fig. 15). Overlapping detections and unique detections (which do not overlap with polygons from other years) in the multi-year dataset were assigned a unique object identifier (ID). A new object ID in the timeline indicates: - the first occurrence of the object detected in the dataset of the first year available for the area. It does not mean that the object was not present before, - the creation of a potential new MES. The disappearance of an object ID indicates its potential refill. Therefore, the chronology of MES, creation, evolution and filling, can be constrained. 6.2 Evolution of MES over years \u00b6 Figures 13 and 16 illustrate the ability of the trained model to detect and track a single object in a multi-year dataset. The detection over the years appears reliable and consistent, although object detection may be absent from a year dataset ( e.g. due to shadows or colour changes in the surroundings). Remember that the image coverage of a given area is not renewed every year. Characteristics of the potential MES, such as surface evolution (extension or retreat), can be quantified. For example, the surfaces of object IDs 239 and 3861 have more than doubled in about 20 years. Tracking object ID along with image visualisation allows observation of the opening and the closing of potential MES, as object IDs 31, 44, and 229. Figure 16: Detection area (m 2 ) as a function of years for several object ID. Figure 13 provides the visualisation of the object IDs selected. Each point corresponds to an object ID occurrence in the corresponding year dataset. The presence of an object in several years dataset strengthens the likeliness of the detected object to be an actual MES. On the other hand, object detection of only one occurrence is more likely a FP detection. 7. Conclusion and perspectives \u00b6 The project demonstrated the ability to automatically, quickly (a matter of hours for one AoI), and reliably detect potential MES in orthophotos of Switzerland with an automatic detection algorithm (deep learning). The selected trained model achieved a f1-score of 82% on the validation dataset. The final detection polygons accurately delineate the potential MES. We can track single MES through multiple years, emphasising the robustness of the method to detect objects in multi-year datasets despite the detection model being trained on a single dataset (2020 SWISSIMAGE mosaic). However, image colour stretching different from that used to train the model can significantly affect the model's ability to provide reliable detection, as was the case with the FSO images. Although the performance of the trained model is satisfactory, FP and FN are present in the datasets. They are mainly due to confusion of the algorithm between MES and rock outcrops, river sandbeds or construction sites. A manual verification of the relevance of the detection by experts in the field is necessary before processing and interpreting the data. Revision of all the detections from 1999 to 2021 is a time-consuming effort but is necessary to guarantee detection reliability. Despite the required manual checks, the provided framework and detection results constitute a valuable contribution that can greatly assist the inventory and the observation of MES evolution in Switzerland. It provides state-wide detection in a matter of hours, which is a considerable time-saving compared with manual mapping. It also enables MES detection with a standardised method, independent of the information or method adopted by the cantons. Further model improvements could be consider, such as increasing the metrics by improving GT quality, improving model learning strategy, mitigating the model learning variability, or test supervised clustering methods to find relevant detection. This work can be used to compute statistics to study long-term MES in Switzerland and better management of resources and land use in the future. MES detection can be combined with other data, such as the geologic layer, to identify the mineral/rocks exploited and high-resolution DEM ( swissALTI3D ) to infer elevation changes and observe excavation or filling of MES 5 . So far only RGB SWISSIMAGE orthophotos from 1999 to 2021 were processed. Prior to 1999, black and white orthophotos exist but the model trained on RGB images could not be applied trustfully to black and white images. Image colourisation tests (with the help of deep learning algorithm[@farella_colour_2022]) were performed and provided encouraging detection results. This avenue needs to be explored. Finally, automatic detection of MES is rare 1 3 , and most studies perform manual mapping. Therefore, the framework could be the extended to other datasets and/or other countries to provide a valuable asset to the community. A global mapping of MES has been completed with over 21'000 polygons 1 and can be used as a GT database to train an automatic detection model. Code availability \u00b6 The codes are stored and available on the STDL's github repository: proj-dqry : mineral extraction site framework object-detector : object detector framework Acknowledgements \u00b6 This project was made possible thanks to a tight collaboration between the STDL team and swisstopo . In particular, the STDL team acknowledges key contribution from Thomas Galfetti ( swisstopo ). This project has been funded by \"Strategie Suisse pour la G\u00e9oinformation\". Appendix \u00b6 A.1 Influence of empty tiles addition to model performance \u00b6 By selecting tiles intersecting only labels, the detection model is mainly confronted with the presence of the targeted object to be detected. Addition of non-label-intersecting tiles, i.e. empty tiles, provides landscape diversity that might help to improve the object detection performance. In order to evaluate the influence of adding empty tiles to the dataset used for the model performance, empty tiles were chosen randomly (not intersecting labels) within Switzerland boundaries and added to the tile dataset used for the model training (Fig. A1). Empty tiles were added to (1) the whole dataset split as for the initial dataset (training: 70%, test: 15%, and validation: 15%) and (2) only to the training dataset. A visual inspection must be performed to prevent a potential unlabeled MES to be present in the image and disturbing the algorithm learning. Figure A1: View of tiles intersecting (black) labels (yellow) and randomly selected empty tiles (red) in Switzerland. This case correspond to the addition of 35% empty tiles. Figure A1 reveals that adding empty tiles to the dataset does not significantly influence the metrics values. The number of TP, FP, and FN do not show significant variation. However, when performing an inference detection test on a subset of tiles (2000) for an AOI, it appears that the number of raw detections (unfiltered) is reduced as the number of empty tiles increases. However, visual inspection of the final detection after applying filters does not show significant improvement compared to a model trained without adding empty tiles. Figure A1: Influence of the addition of empty tiles (relative to the number of tiles intersecting labels) on trained performance for zoom levels 16 and 17 with (a) the F1-score as a function of the percentage of added empty tiles and (b) the normalised (by the number of tiles sampled = 2000) number of detection as a function of added empty tiles. Empty tiles have been added to only the train dataset for the 5% and 30% cases and to all datasets for 9%, 35%, 70%, and 140% cases. A considered solution to improve the results could be to specifically select tiles for which FP occurred and include them in the training dataset as empty tiles. This way, the model could be trained with relevant confounding features such as snow patches, river sandbeds, or gullies not labeled as GT. A.2 Sensitivity of the model to the number of images per batch \u00b6 During the model learning phase, the trained model is updated after each batch of samples was processed. Adding more samples, i.e. in our case images, to the batch can influence the model learning capacity. We investigated the role of adding more images per batch for a dataset with and without adding a portion of empty tiles to the learning dataset. Adding more images per batch speeds up the model learning (Table A1), and the minimum of the loss curve is reached for a smaller number of iterations. Figure A2: Metrics (precision, recall and f1-score) evolution with the number of images per batch during the model training. Results have been obtained on a dataset without empty tiles addition (red) and with the addition of 23% of empty tiles to the training dataset. Figure A2 reveals that the metrics values remain in a range of constant values while adding extra images to the batch in all cases (with or without empty tiles). A potential effect of adding more images to the batch is the reduction of the metrics variability between replicates of trained models as the range of metrics values is smaller for 8 images per batch than 2 images per batch. However, this observation has to be taken carefully as fewer replicates have been performed with 8 images per batch than for 2 or 4 images per batch. Further investigation would provide stronger insights on this effect. A.3 Evaluation of trained models \u00b6 Table A1 sumup metrics value obtained for all the configuration tested for the project. zoom level model empty tiles (%) image per batch optimum iteration precision recall f1 15 replicate 1 0 2 1000 0.727 0.810 0.766 16 replicate 1 0 2 2000 0.842 0.793 0.817 16 replicate 2 0 2 2000 0.767 0.760 0.763 16 replicate 3 0 2 3000 0.831 0.810 0.820 16 replicate 4 0 2 2000 0.886 0.769 0.826 16 replicate 5 0 2 2000 0.780 0.818 0.798 16 replicate 6 0 2 3000 0.781 0.826 0.803 16 replicate 7 0 4 1000 0.748 0.860 0.800 16 replicate 8 0 4 1000 0.779 0.785 0.782 16 replicate 9 0 8 1500 0.800 0.793 0.797 16 replicate 10 0 4 1000 0.796 0.744 0.769 16 replicate 11 0 8 1000 0.802 0.769 0.785 16 ET-250_allDS_1 34.2 2 2000 0.723 0.770 0.746 16 ET-250_allDS_2 34.2 2 3000 0.748 0.803 0.775 16 ET-1000_allDS_1 73.8 2 6000 0.782 0.815 0.798 16 ET-1000_allDS_2 69.8 2 6000 0.786 0.767 0.776 16 ET-1000_allDS_3 70.9 2 6000 0.777 0.810 0.793 16 ET-1000_allDS_4 73.8 2 6000 0.768 0.807 0.787 16 ET-2000_allDS_1 143.2 2 6000 0.761 0.748 0.754 16 ET-80_trnDS_1 5.4 2 2000 0.814 0.793 0.803 16 ET-80_trnDS_2 5.4 2 2000 0.835 0.752 0.791 16 ET-80_trnDS_3 5.4 2 2000 0.764 0.802 0.782 16 ET-400_trnDS_1 29.5 2 6000 0.817 0.777 0.797 16 ET-400_trnDS_2 29.5 2 5000 0.848 0.785 0.815 16 ET-400_trnDS_3 29.5 2 4000 0.758 0.802 0.779 16 ET-400_trnDS_4 29.5 4 2000 0.798 0.818 0.808 16 ET-400_trnDS_5 29.5 4 1000 0.825 0.777 0.800 16 ET-1000_trnDS_1 0 2 4000 0.758 0.802 0.779 17 replicate 1 0 2 5000 0.819 0.853 0.835 17 replicate 1 0 2 5000 0.803 0.891 0.845 17 replicate 1 0 2 5000 0.872 0.813 0.841 17 ET-250_allDS_1 16.8 2 3000 0.801 0.794 0.797 17 ET-1000_allDS_1 72.2 2 7000 0.743 0.765 0.754 18 replicate 1 0 2 10000 0.864 0.855 0.859 Table A1: Metrics value computed for the validation dataset for all the trained models with the 2020 SWISSIMAGE Journey mosaic at zoom level 16. Victor Maus, Stefan Giljum, Jakob Gutschlhofer, Dieison M. Da Silva, Michael Probst, Sidnei L. B. Gass, Sebastian Luckeneder, Mirko Lieber, and Ian McCallum. A global-scale data set of mining areas. Scientific Data , 7(1):289, September 2020. URL: https://www.nature.com/articles/s41597-020-00624-w , doi:10.1038/s41597-020-00624-w . \u21a9 \u21a9 \u21a9 \u21a9 \u21a9 Vicen\u00e7 Carabassa, Pau Montero, Marc Crespo, Joan-Cristian Padr\u00f3, Xavier Pons, Jaume Balagu\u00e9, Llu\u00eds Brotons, and Josep Maria Alca\u00f1iz. Unmanned aerial system protocol for quarry restoration and mineral extraction monitoring. Journal of Environmental Management , 270:110717, September 2020. URL: https://linkinghub.elsevier.com/retrieve/pii/S0301479720306496 , doi:10.1016/j.jenvman.2020.110717 . \u21a9 \u21a9 \u21a9 \u21a9 Chunsheng Wang, Lili Chang, Lingran Zhao, and Ruiqing Niu. Automatic Identification and Dynamic Monitoring of Open-Pit Mines Based on Improved Mask R-CNN and Transfer Learning. Remote Sensing , 12(21):3474, January 2020. URL: https://www.mdpi.com/2072-4292/12/21/3474 , doi:10.3390/rs12213474 . \u21a9 \u21a9 \u21a9 \u21a9 Haoteng Zhao, Yong Ma, Fu Chen, Jianbo Liu, Liyuan Jiang, Wutao Yao, and Jin Yang. Monitoring Quarry Area with Landsat Long Time-Series for Socioeconomic Study. Remote Sensing , 10(4):517, April 2018. URL: https://www.mdpi.com/2072-4292/10/4/517 , doi:10.3390/rs10040517 . \u21a9 \u21a9 Valentin Tertius Bickel and Andrea Manconi. Decadal Surface Changes and Displacements in Switzerland. Journal of Geovisualization and Spatial Analysis , 6(2):24, December 2022. URL: https://link.springer.com/10.1007/s41651-022-00119-9 , doi:10.1007/s41651-022-00119-9 . \u21a9 \u21a9 George P. Petropoulos, Panagiotis Partsinevelos, and Zinovia Mitraka. Change detection of surface mining activity and reclamation based on a machine learning approach of multi-temporal Landsat TM imagery. Geocarto International , 28(4):323\u2013342, July 2013. URL: http://www.tandfonline.com/doi/abs/10.1080/10106049.2012.706648 , doi:10.1080/10106049.2012.706648 . \u21a9 Huriel Reichel and Nils Hamel. Automatic Detection of Quarries and the Lithology below them in Switzerland. 2022. URL: file:///C:/Users/Clemence/Documents/STDL/Projects/proj-quarries/01_Documentation/Bibliography/Automatic%20Detection%20of%20Quarries%20and%20the%20Lithology%20below%20them%20in%20Switzerland%20-%20Swiss%20Territorial%20Data%20Lab.htm . \u21a9 \u21a9 \u21a9 \u21a9 Yuxin Wu, Alexander Kirillov, Francisco Massa, Wan-Yen Lo, and Ross Girshick. Detectron2. 2019. URL: https://github.com/facebookresearch/detectron2 . \u21a9 Kaiming He, Georgia Gkioxari, Piotr Doll\u00e1r, and Ross Girshick. Mask R-CNN. January 2018. arXiv:1703.06870 [cs]. URL: http://arxiv.org/abs/1703.06870 , doi:10.48550/arXiv.1703.06870 . \u21a9","title":"Automatic detection and observation of mineral extraction sites in Switzerland"},{"location":"PROJ-DQRY-TM/#automatic-detection-and-observation-of-mineral-extraction-sites-in-switzerland","text":"Cl\u00e9mence Herny (Exolabs), Shanci Li (Uzufly), Alessandro Cerioni (\u00c9tat de Gen\u00e8ve), Roxane Pott (swisstopo) Proposed by swisstopo - PROJ-DQRY-TM October 2022 to February 2023 - Published on January 2024 Abstract : Studying the evolution of mineral extraction sites (MES) is of primary importance for assessing the availability of mineral resources, managing MES and evaluating the impact of mining activity on the environment. In Switzerland, MES are inventoried at local level by the cantons and at federal level by swisstopo. The latter performs manual vectorisation of MES boundaries. Unfortunately, although the data is of high quality, it is not regularly updated. To automate this tedious task and to better observe the evolution of MES, swisstopo has solicited the STDL to carry out an automatic detection of MES in Switzerland over the years. We performed instance segmentation using a deep learning method to automatically detect MES in RGB aerial images with a spatial resolution of 1.6 m px -1 . The detection model was trained with 266 labels and orthophotos from the SWISSIMAGE RGB mosaic published in 2020. The selected trained model achieved a f1-score of 82% on the validation dataset. The model was used to do detection by inference of potential MES in SWISSIMAGE RGB orthophotos from 1999 to 2021. The model shows good ability to detect potential MES with about 82% of labels detected for the 2020 SWISSIMAGE mosaic. The detections obtained with SWISSIMAGE orthophotos acquired over different years can be tracked to observe their temporal evolution. The framework developed can perform detection in an area of interest (about a third of Switzerland at the most) in just a few hours, which is a major advantage over manual mapping. We acknowledge that there are some missed and false detections in the final product, and the results need to be reviewed and validated by domain experts before being analysed and interpreted. The results can be used to perform statistics over time and update MES evolution in future image acquisitions.","title":"Automatic detection and observation of mineral extraction sites in Switzerland"},{"location":"PROJ-DQRY-TM/#1-introduction","text":"","title":"1. Introduction"},{"location":"PROJ-DQRY-TM/#11-context","text":"Mineral extraction constitutes a strategic activity worldwide, including in Switzerland. Demand for mineral resources has been growing significantly in recent decades 1 , mainly due to the rapid increase in the production of batteries and electronic chips, or buildings construction, for example. As a result, the exploitation of some resources, such as rare earth elements, lithium, or sand, is putting pressure on their availability. Being able to observe the development of mineral extraction sites (MES) is of primary importance to adapting mining strategy and anticipating demand and shortage. Mining has also strong environmental and societal impact 2 3 . It implies the extraction of rocks and minerals from water ponds, cliffs, and quarries. The surface affected, initially natural areas, can reach up to thousands of square kilometres 1 . The extraction of some minerals could lead to soil and water pollution and involves polluting truck transport. Economic and political interests of some resources might overwhelm land protection, and conflicts are gradually intensifying 2 . MES are dynamic features that can evolve according to singular patterns, especially if they are small, as is the case in Switzerland. A site can expand horizontally and vertically or be filled to recover the site 4 2 3 5 . Changes can happen quickly, in a couple of months. As a results, updating the MES inventory can be challenging. There is a significant demand for effective MES observation of development worldwide. Majority of MES mapping is performed manually by visual inspection of images 1 . Alternatively, recent improvements in the availability of high spatial and temporal resolution space/airborne imagery and computational methods have encouraged the development of automated image processing. Supervised classification of spectral images is an effective method but requires complex workflow 6 4 2 . More recently, few studies have implemented deep learning algorithms to train models to detect extraction sites in images and have shown high levels of accuracy 3 . In Switzerland, MES management is historically regulated on a canton-based level using GIS data, including information about the MES location, extent, and extracted materials among others. At the federal level, swisstopo and the Federal Office of Statistics (FSO) observe the development of MES. swisstopo has carried out a detailed manual delineation of MES based on SWISSIMAGE dataset over Switzerland. In the scope to fasten and improving the process of MES mapping in Switzerland, we developed a method for automating MES detection over the years. Ultimately, the goal is to keep the database up to date when new images are acquired. The results can be statistically process to better assess the MES evolution over time in Switzerland.","title":"1.1 Context"},{"location":"PROJ-DQRY-TM/#12-approach","text":"The STDL has developed a framework named object-detector to automatically detect objects in a georeferenced imagery dataset based on deep learning method. The framework can be adapted to detect MES (also referred as quarry in the project) in Switzerland. A project to automatically detect MES in Switzerland 7 has been carried out by the STDL in 2021 ( detector-interface framework). Detection of potential MES obtained by automatic detection on the 2020 SWISSIMAGE mosaic has already been delivered to swisstopo (layer 2021_10_STDL_QC1 ). The method has proven its efficiency detecting MES. The numerical model trained with the object detector achieved a f1-score of 82% and detected about 1200 potential MES over Switzerland. In this project, we aim to continue this work and extend it to a second objective, that of observing MES evolution over time. The main challenge is to prove the algorithm reliability for detecting objects in a multi-year dataset images acquired with different sensors. The project workflow is synthesised in Figure 1. First, a deep learning algorithm is trained using a manually mapped MES dataset that serves as ground truth (GT). After evaluating the performance of the trained model, the selected one was used to perform inference detection for a given year dataset and area of interest (AoI). The results were filtered to discard irrelevant detection. The operation was repeated over several years. Finally, each potential MES detected was tracked over the years to observe its evolution. Figure 1: Workflow diagram for automatic MES detection. In this report, we first describe the data used, including the image description and the definition of AoI. Then we explain the model training, evaluation and object detection procedure. Next, we present the results of potential MES detection and the MES tracking strategy. Finally, we provide conclusion and perspectives.","title":"1.2. Approach"},{"location":"PROJ-DQRY-TM/#2-data","text":"","title":"2. Data"},{"location":"PROJ-DQRY-TM/#21-images-and-area-of-interest","text":"Automatic detection of potential MES over the years in Switzerland was performed with aerial orthophotos from the swisstopo product SWISSIMAGE Journey . Images are georeferenced RGB TIF tiles with a size of 256 x 256 pixels (1 km 2 ). Product Year Coordinate system Spatial resolution SWISSIMAGE 10 cm 2017 - current CH1903+/MN95 (EPSG:2056) 0.10 m ( \\(\\sigma\\) \\(\\pm\\) 0.15 m) - 0.25 m SWISSIMAGE 25 cm 2005 - 2016 MN03 (2005 - 2007) and MN95 (since 2008) 0.25 m ( \\(\\sigma\\) \\(\\pm\\) 0.25 m) - 0.50 m ( \\(\\sigma\\) \\(\\pm\\) 3.00 - 5.00 m) SWISSIMAGE 50 cm 1998 - 2004 MN03 0.50 m ( \\(\\sigma\\) \\(\\pm\\) 0.50 m) Table 1: SWISSIMAGE products characteristics. Several SWISSIMAGE products exist, produced from different instrumentation (Table 1). SWISSIMAGE mosaics are built and published yearly. The year of the mosaic corresponds to the last year of the dataset publication, and the most recent orthophotos datasets available are then used to complete the mosaic. For example the 2020 SWISSIMAGE mosaic is a combination of 2020, 2019 and 2018 images acquisition. The 1998 mosaic release corresponds to a year of transition from black and white images ( SWISSIMAGE HIST ) to RGB images. For this study, only RGB data from 1999 to 2021 were considered. Figure 2: Acquisition footprint of SWISSIMAGE aerial orthophotos for the years 2016 to 2021. The SWISSIMAGE Journey mosaic in the background is the 2020 release. Acquisition footprints of yearly acquired orthophotos were used as AoI to perform MES detection through time. Over the years, the footprints may spatially overlap (Fig. 2). Since 2017, the geometry of the acquisition footprints has been quasi-constant, dividing Switzerland into three more or less equal areas, ensuring that the orthophotos are updated every three years. For the years before 2017, the acquisition footprints were not systematic and do not guarantee a periodically update of the orthophotos. The acquisition footprint may also not be spatially contiguous. Figure 3: Illustration of the combination of SWISSIMAGE images and FSO images for the 2007 SWISSIMAGE mosaic. (a) Overview of the 2007 SWISSIMAGE mosaic. The red polygon corresponds to the provided SWISSIMAGE acquisition footprint for 2007. The orange polygon corresponds to the surface covered by the new SWISSIMAGE for 2007. The remaining area of the red polygon corresponds to the FSO image dataset acquired in 2007. The black box indicates the panel (b) location, and the white box indicates the panel (c) location. (b) Side-by-side comparison of image composition in 2006 and 2007 SWISSIMAGE mosaics. (c) Examples of detection polygons (white polygons) obtained by inference on the 2007 SWISSIMAGE dataset (red box) and FSO images 2007 (outlined by black box). SWISSIMAGE Journey mosaics of 2005, 2006, and 2007 present a particularity as it is composed not only of 25 cm resolution SWISSIMAGE but also of orthophotos acquired for the FSO. These are tiff RGB orthophotos with a spatial resolution of 50 cm px -1 (coordinate system: CH1903/LV03 (EPSG:21781)) and have been integrated into the SWISSIMAGE Journey products. However, these images were discarded (modification of the footprint shape) from our dataset because they were causing issues in the MES automatic detection producing odd segmented detection shapes (Fig. 3). This is probably due to the different stretching of pixel colour between datasets. It also has to be noted that there are currently missing images (about 88 tiles at zoom level 16) in the 2020 SWISSIMAGE dataset.","title":"2.1 Images and area of interest"},{"location":"PROJ-DQRY-TM/#22-image-fetching","text":"Pre-rendered SWISSIMAGE tiles (256 x 256 px, 1 km 2 ) are downloaded using the Web Map Tile Service (WMTS) wmts.geo.admin.ch via an XYZ connector. Tiles are served on a cartesian coordinates grid using a Web Mercator Quad projection and a coordinate reference system EPGS 3857. Position of a tile on the grid is defined by x and y coordinates and the pixel resolution of the image is defined by z , its zoom level. Changing the zoom level affects the resolution by a factor of 2 (Fig. 4). For instance a zoom level of 17 corresponds to a resolution of 0.8 m px -1 and a zoom level of 16 to a resolution of 1.6 m px -1 . Figure 4: Examples of tiles geometry at zoom level 16 (z16, black polygons) and at zoom level 17 (z17, blue polygons). The number of tiles for each zoom level is indicated in square brackets. The tiles are selected for model training, i.e. only tiles intersecting swissTLM3D labels (tlm-hr-trn-topo, yellow polygons). Note that in the subsequent project carried out by Reichel and Hamel (2021) 7 , the tiling method adopted was slightly different from the one adopted for this project. Custom size and resolution tiles were built. A sensitivity analysis of these two parameters was conducted and led to the choice of tiles with a size of about 500 m and a pixel resolution of about 1 m (above, the performance was not significantly improved).","title":"2.2 Image fetching"},{"location":"PROJ-DQRY-TM/#23-ground-truth","text":"The MES labels originate from the swiss Topographic Landscape Model 3D ( swissTLM3D ) produced by swisstopo . swissTLM3D is a large-scale topographic landscape model of Switzerland, including manually drawn and georeferenced vectors of objects of interest at a high resolution, including MES features. Domain experts from swisstopo have carried out extensive work to review the labeled MES and to synchronise them with the 2020 SWISSIMAGE mosaic to improve the quality of the labeled dataset. A total of 266 labels are available. The mapped MES reveal the diversity of MES characteristics, such as the presence or absence of buildings/infrastructures, trucks, water pounds, and vegetation (Fig. 5). Figure 5: Examples of MES mapped in swissTLM3D and synchronised to 2020 SWISSIMAGE mosaic. These labels are used as the ground truth (GT) i.e. the reference dataset indicating the presence of a MES in an image. The GT is used both as input to train the model to detect MES and to evaluate the model performance.","title":"2.3 Ground truth"},{"location":"PROJ-DQRY-TM/#3-automatic-detection-methodology","text":"","title":"3. Automatic detection methodology"},{"location":"PROJ-DQRY-TM/#31-deep-learning-algorithm-for-object-detection","text":"Training and inference detection of potential MES in SWISSIMAGE were performed with the object detector framework. This project is based on the open source detectron2 framework 8 implemented with PyTorch by the Facebook Artificial Intelligence Research group (FAIR). Instance segmentation (delineation of object) was performed with a Mask R-CNN deep learning algorithm 9 . It is based on a Recursive-Convolutional Neural Network (CNN) with a backbone pre-trained model ResNet-50 (50 layers deep residual network). Images were annotated with custom COCO object based on the labels (class 'Quarry'). The model is trained with this dataset to later perform inference detection on images. If the object is detected by the algorithm, a pixel mask is produced with a confidence score (0 to 1) attributed to the detection (Fig. 6). Figure 6: Example of detection mask. The pink rectangle corresponds to the bounding box of the object, the object is segmented by the pink polygons associated with the detection class ('Quarry') and a confidence score. The object detector framework permits to convert detection mask to georeferenced polygon that can be used in GIS softwares. The implementation of the Ramer-Douglas-Peucker ( RDP ) algorithm, allows the simplification of the derived polygons by discarding non-essential points based on a smoothing parameter. This allow to considerably reduces the amount of data to be stored and prevent potential memory saturation while deriving detection polygons on large areas as it is the case for this study.","title":"3.1 Deep learning algorithm for object detection"},{"location":"PROJ-DQRY-TM/#32-model-training","text":"Orthophotos from the 2020 SWISSIMAGE mosaic, for which the GT has been defined, were chosen to proceed the model training. Tiles intersecting labels were selected and split randomly into three datasets: the training dataset (70%), the validation dataset (15%), and the test dataset (15%). Addition of empty tiles (no annotation) to confront the model to landscapes not containing the target object has been tested ( Appendix A.1 ) but did not provide significant improvement in the model performance to be adopted. Figure 7: Training curves obtained at zoom level 16 on the 2020 SWISSIMAGE mosaic. The curves were obtained for the trained model 'replicate 3'. (a) Learning rate in function of iteration. The step was defined every 500 iterations. The initial learning rate was 5.0 x 10 -3 with a weight and bias decay of 1.0 x 10 -4 . (b) The total loss is a function of iteration. Raw measurement (light red) and smoothed curve (0.6 factor, solid red) are superposed. (c) The validation loss curve is a function of iteration. Raw measurement (light red) and smoothed curve (0.6 factor, solid red) are superposed. The vertical dashed black lines indicate the iteration minimising the validation loss curve, i.e. 3000. Models were trained with two images per batch ( Appendix A.2 ), a learning rate of 5 x 10 -3 , and a learning rate decay of 1 x 10 -4 every 500 steps (Fig. 7 (a)). For the given model, parameters and a zoom level of 16 ( Section 3.3.3 ), the training is performed over 7000 iterations and lasts about 1 hour on a 16 GiB GPU (NVIDIA Tesla T4) machine compatible with CUDA . The total (train and validation loss) loss curve decreases until reaching a quasi-steady state around 6000 iterations (Fig. 7 (b)). The optimal detection model corresponds to the one minimising the validation loss curve. This minimum is reached between 2000 and 3000 iterations (Fig. 7 (c)).","title":"3.2 Model training"},{"location":"PROJ-DQRY-TM/#33-metrics","text":"The model performance and detection reliability were assessed by comparing the results to the GT. The detection performed by the model can be either (1) a True Positive (TP), i.e. the detection is real (spatially intersecting the GT) ; (2) a False Positive i.e. the detection is not real (not spatially intersecting the GT) or (3) a False Negative (FN) i.e. the labeled object is not detected by the algorithm (Fig. 8). Tagging the detection (Fig. 9(a)) allows to calculate several metrics (Fig. 9(b)) such as: Figure 8: Examples of different detection cases. Label is represented with a yellow polygon and detection with a red polygon. (a) True Positive (TP) detection intersecting the GT, (b) a potential True Positive (TP?) detection with no GT, (c) False Negative (FN) case with no detection while GT exists, (d) False Positive (FP) detection of object that is not a MES. the recall , translating the amount of TP detections predicted by the model: \\[recall = \\frac{TP}{(TP + FN)}\\] the precision , translating the number of well-predicted TP among all the detections: \\[precision = \\frac{TP}{(TP + FP)}\\] the f1-score , the harmonic average of the precision and the recall: \\[f1 = 2 \\times \\frac{recall \\times precision}{recall + precision}\\] Figure 9: Evaluation of the trained model performance obtained at zoom level 16 for the trained model 'replicate 3' (Table 2). (a) Number of TP (blue), FN (red), and FP (green) as a function of detection score threshold for the validation dataset. (b) Metrics value, precision (blue), recall (red), and f1-score (green) as a function of the detection score threshold for the validation dataset. The maximum f1-score value is 82%.","title":"3.3 Metrics"},{"location":"PROJ-DQRY-TM/#4-automatic-detection-model-analysis","text":"","title":"4. Automatic detection model analysis"},{"location":"PROJ-DQRY-TM/#41-model-performance-and-replicability","text":"Trained models reached f1-scores of about 80% with a standard deviation of 2% (Table 2). The performances are similar to the model trained by Reichel and Hamel (2021) 7 . model precision recall f1 replicate 1 0.84 0.79 0.82 replicate 2 0.77 0.76 0.76 replicate 3 0.83 0.81 0.82 replicate 4 0.89 0.77 0.82 replicate 5 0.78 0.82 0.80 Table 2: Metrics value computed for the validation dataset for trained models replicates with the 2020 SWISSIMAGE mosaic at zoom level 16. A variability is expected as the deep learning algorithm displays some random behavior, but it is supposed to be negligible. However, the observed model variability is enough to affect final results that might slightly change by using different trained models with same input parameters (Fig. 10). Figure 10: Detection polygons obtained for the different trained model replicates (Table 2) highlighting results variability. The labels correspond to orange polygons. The number in the square bracket corresponds to the number of polygons. The inference detections have been performed on a subset of 2000 tiles for the 2020 SWISSIMAGE at zoom level 16. Detections have been filtered according to the parameters defined in Section 5.1. To reduce the variability of the trained models, the random seeds of both detectron2 and python have been fixed. Neither of these attempts have been successful, and the variability remains. The nondeterministic behavior of detectron2 has been recognised ( issue 1 , issue 2 ), but no suitable solution has been provided yet. Further investigation on the model performance and consistency should be performed in the future. To mitigate the results variability of model replicates, we could consider in the future to combine the results of several model replicates to remove FP while preserving the TP and potential TP detection. The choice and number of models used should be evaluated. This method is tedious as it requires inference detection from several models, which can be time-consuming and computationally intensive.","title":"4.1. Model performance and replicability"},{"location":"PROJ-DQRY-TM/#42-sensitivity-to-the-zoom-level","text":"Image resolution is dependent on the zoom level ( Section 2.2 ). To select the most suitable zoom level for MES detection, we performed a sensitivity analysis on trained model performance. Increasing the zoom level increases the value of the metrics following a global linear trend (Fig. 11). Figure 11: Metrics values (precision, recall and f1) as function of zoom level for the validation dataset. The results of the replicates performed at each zoom level are included (Table A1). Models trained at a higher zoom level performed better. However, a higher zoom level implies smaller tile and thus, a larger number of tiles to fill the AoI. For a typical AoI, i.e up to a third of Switzerland, this can lead to a large number of tiles to be stored and processed, leading to potential RAM and/or disk space saturation. For 2019 AoI, 89'290 tiles are required at zoom level 16 while 354'867 tiles are required at zoom level 17, taking respectively 3 hours and 11 hours to process on a 30 GiB RAM machine with a 16 GiB GP. Visual comparison of inference detection reveals that there was no significant improvement in the object detection quality from zoom level 16 to zoom level 17. Both zoom level present a similar proportion of detections intersecting labels (82% and 79% for zoom level 16 and zoom level 17 respectively). On the other hand, the quality of object detection at zoom level 15 was depreciated. Indeed, detection scores were lower, with only tens of detection scores above 0.95 while it was about 400 at zoom level 16 and about 64% of detection intersecting labels.","title":"4.2 Sensitivity to the zoom level"},{"location":"PROJ-DQRY-TM/#43-model-choice","text":"Based on tests performed, we selected the 'replicate 3' model, obtained (Tables 2 and A1) at zoom level 16, to perform inference detection. Models trained at zoom level 16 (1.6 m px -1 pixel resolution) have shown satisfying results in accurately detecting MES contour and limiting the number of FP with high detection score (Fig. 11). It represents a good trade-off between results reliability (f1-score between 76% and 82% on the validation dataset) and computational resources. Then, among all the replicates performed at zoom level 16, we selected the trained model 'replicate 3' (Table 2) because it combines both the highest metrics values (for the validation dataset but also the train and test datasets), close precision and recall values and a rather low amount of low score detections.","title":"4.3 Model choice"},{"location":"PROJ-DQRY-TM/#5-automatic-detection-of-mes","text":"","title":"5. Automatic detection of MES"},{"location":"PROJ-DQRY-TM/#51-detection-post-processing","text":"Detection by inference was performed over AoIs with a threshold detection score of 0.3 (Fig. 12). The low score filtering results in a large amount of detections. Several detections may overlap, potentially segmenting a single object. In addition a detection might be split into multiple tiles. To improve the pertinence and the aesthetics of the raw detection polygons, a post-processing procedure was applied. First, a large proportion of FP occurred in mountainous areas (rock outcrops and snow, Fig. 12(a)). We assumed MES are not present (or at least sparse) above a given altitude. An elevation filtering was applied using a Switzerland Digital Elevation Model (about 25 m px -1 ) derived from the SRTM instrument ( USGS - SRTM ). The maximum elevation of the labeled MES is about 1100 m. Second, detection aggregation was applied: - polygons were clustered ( K-means ) according to their centroid position. The method involves setting a predefined number k of clusters. Manual tests performed by Reichel and Hamel (2021) 7 concluded to set k equal to the number of detection divided by three. The highest detection score was assigned to the clustered detection. This method preserves the final integrity of detection polygons by retaining detection that has potentially a low confidence score but belongs to a cluster with a higher confidence score improving the final segmentation of the detected object. The value of the threshold score must be kept relatively low ( i.e. 0.3) when performing the detection to prevent removing too many polygons that could potentially be part of the detected object. We acknowledge that determining the optimal number of clusters by clustering validation indices rather than manual adjustment would be more robust. In addition, exploring other clustering methods, such as DBSCAN , based on local density, can be considered in the future. - score filtering was applied. - spatially close polygons were assumed to belong to the same MES and are merged according to a distance threshold. The averaged score of the merged detection polygons was ultimately computed. Finally, we assumed that a MES covers a minimal area. Detection with an area smaller than a given threshold were filtered out. The minimum MES area in the GT is 2270 m 2 . Figure 12: MES detection filtering. (a) Overview of the automatic detection of MES obtained with 2020 SWISSIMAGE at zoom level 16. Transparent red polygons (with associated confidence score in white) correspond to the raw object detection output and the red line polygons (with associated confidence score in red) correspond to the final filtered detection. The black box outlines the location of the (b) and (c) panel zoom. Note the large number of detection in the mountains (right area of the image). (b) Zoom on several raw detections polygons of a single object with their respective confidence score. (c) Zoom on a filtered detection polygon of a single object with the resulting score. Sensitivity of detections to these filters was investigated (Table 3). The quantitative evaluation of filter combination relevance is tricky as potential MES presence is performed by inference, and the GT provided by swissTLM3D constitutes an incomplete portion of the MES in Switzerland (2020). As indication, we computed the number of spatial intersection between ground truth and detection obtained with the 2020 SWISSIMAGE mosaic. Filter combination number 3 was adopted, allowing to detect about 82% of the GT with a relatively limited amount of FP detection compared to filter combinations 1 and 2 (from visual inspection). filters combination score threshold elevation threshold (m) area threshold (m 2 ) distance threshold (m) number of detection label detection (%) 1 0.95 2000 1100 10 1745 85.1 2 0.95 2000 1200 10 1862 86.6 3 0.95 5000 1200 10 1347 82.1 4 0.96 2000 1100 10 1331 81.3 5 0.96 2000 1200 8 1445 78.7 6 0.96 5000 1200 10 1004 74.3 Table 3: Threshold values of filtering parameters and their respective number of detections and intersection proportion with swissTLM3D labels. The detections have been obtained for the 2020 SWISSIMAGE mosaic. We acknowledged that for the selected filter combination, the area threshold value is higher than the smallest area value of the GT polygons. However, reducing the area value increases significantly the presence of FP. Thirteen labels display an area below 5000 m 2 .","title":"5.1 Detection post-processing"},{"location":"PROJ-DQRY-TM/#52-inference-detections","text":"The trained model was used to perform inference detection on SWISSIMAGE orthophotos from 1999 to 2021. The automatic detection model shows good capabilities to detect MES in different years orthophotos (Fig. 13), despite being trained on the 2020 SWISSIMAGE mosaic. The model also demonstrates capabilities to detect potential MES that have not been mapped yet but are strong candidates. However, the model misses some labeled MES or potential MES (FN, Fig. 8). However, when the model process FSO images, with different colour stretching, it failed to correctly detect potential MES (Fig. 3). It reveals that images must have characteristics close to the training dataset for optimal results with a deep learning model. Figure 13: Examples of object detection segmented by polygons in different year orthophotos. The yellow polygon for the year 2020 panel of object ID 3761 corresponds to the label. Other coloured polygons correspond to the algorithm detection. Then, we acknowledge that a significant amount of FP detection can still be observed in our filtered detection dataset (Figs. 8 and 14). The main sources of FP are the presence of large rock outcrops, mountainous areas without vegetation, snow, river sand beds, brownish-coloured fields, or construction areas. MES present a large variety of features (buildings, water pounds, trucks, vegetation) (Fig. 5) which can be a source of confusion for the algorithm but even sometimes for human eye. Therefore, the robustness of the GT is crucial for reliable detection. The algorithm's results should be taken carefully. Figure 14: Examples of FP detection. (a) Snow patches (2019) ; (b) River sand beds and gullies (2019); (c) Brownish field (2020); (d) vineyards (2005); (e) Airport tarmac (2020); (f) Construction site (2008). The detections produced by the algorithm are potential MES, but the final results must be reviewed by experts in the field to discard remaining FP detection and correct FN before any processing or interpretation.","title":"5.2 Inference detections"},{"location":"PROJ-DQRY-TM/#6-observation-of-mes-evolution","text":"","title":"6. Observation of MES evolution"},{"location":"PROJ-DQRY-TM/#61-object-tracking-strategy","text":"Switzerland is covered by RGB SWISSIMAGE product over more than 20 years (1999 to actual), allowing changes to be detected (Fig. 13). Figure 15: Strategy for MES tracking over time. ID assignment to detection. Spatially intersecting polygons share the same ID allowing the MES to be tracked in a multi-year dataset. We assumed that detection polygons that overlap from one year to another describe a single object (Fig. 15). Overlapping detections and unique detections (which do not overlap with polygons from other years) in the multi-year dataset were assigned a unique object identifier (ID). A new object ID in the timeline indicates: - the first occurrence of the object detected in the dataset of the first year available for the area. It does not mean that the object was not present before, - the creation of a potential new MES. The disappearance of an object ID indicates its potential refill. Therefore, the chronology of MES, creation, evolution and filling, can be constrained.","title":"6.1 Object tracking strategy"},{"location":"PROJ-DQRY-TM/#62-evolution-of-mes-over-years","text":"Figures 13 and 16 illustrate the ability of the trained model to detect and track a single object in a multi-year dataset. The detection over the years appears reliable and consistent, although object detection may be absent from a year dataset ( e.g. due to shadows or colour changes in the surroundings). Remember that the image coverage of a given area is not renewed every year. Characteristics of the potential MES, such as surface evolution (extension or retreat), can be quantified. For example, the surfaces of object IDs 239 and 3861 have more than doubled in about 20 years. Tracking object ID along with image visualisation allows observation of the opening and the closing of potential MES, as object IDs 31, 44, and 229. Figure 16: Detection area (m 2 ) as a function of years for several object ID. Figure 13 provides the visualisation of the object IDs selected. Each point corresponds to an object ID occurrence in the corresponding year dataset. The presence of an object in several years dataset strengthens the likeliness of the detected object to be an actual MES. On the other hand, object detection of only one occurrence is more likely a FP detection.","title":"6.2 Evolution of MES over years"},{"location":"PROJ-DQRY-TM/#7-conclusion-and-perspectives","text":"The project demonstrated the ability to automatically, quickly (a matter of hours for one AoI), and reliably detect potential MES in orthophotos of Switzerland with an automatic detection algorithm (deep learning). The selected trained model achieved a f1-score of 82% on the validation dataset. The final detection polygons accurately delineate the potential MES. We can track single MES through multiple years, emphasising the robustness of the method to detect objects in multi-year datasets despite the detection model being trained on a single dataset (2020 SWISSIMAGE mosaic). However, image colour stretching different from that used to train the model can significantly affect the model's ability to provide reliable detection, as was the case with the FSO images. Although the performance of the trained model is satisfactory, FP and FN are present in the datasets. They are mainly due to confusion of the algorithm between MES and rock outcrops, river sandbeds or construction sites. A manual verification of the relevance of the detection by experts in the field is necessary before processing and interpreting the data. Revision of all the detections from 1999 to 2021 is a time-consuming effort but is necessary to guarantee detection reliability. Despite the required manual checks, the provided framework and detection results constitute a valuable contribution that can greatly assist the inventory and the observation of MES evolution in Switzerland. It provides state-wide detection in a matter of hours, which is a considerable time-saving compared with manual mapping. It also enables MES detection with a standardised method, independent of the information or method adopted by the cantons. Further model improvements could be consider, such as increasing the metrics by improving GT quality, improving model learning strategy, mitigating the model learning variability, or test supervised clustering methods to find relevant detection. This work can be used to compute statistics to study long-term MES in Switzerland and better management of resources and land use in the future. MES detection can be combined with other data, such as the geologic layer, to identify the mineral/rocks exploited and high-resolution DEM ( swissALTI3D ) to infer elevation changes and observe excavation or filling of MES 5 . So far only RGB SWISSIMAGE orthophotos from 1999 to 2021 were processed. Prior to 1999, black and white orthophotos exist but the model trained on RGB images could not be applied trustfully to black and white images. Image colourisation tests (with the help of deep learning algorithm[@farella_colour_2022]) were performed and provided encouraging detection results. This avenue needs to be explored. Finally, automatic detection of MES is rare 1 3 , and most studies perform manual mapping. Therefore, the framework could be the extended to other datasets and/or other countries to provide a valuable asset to the community. A global mapping of MES has been completed with over 21'000 polygons 1 and can be used as a GT database to train an automatic detection model.","title":"7. Conclusion and perspectives"},{"location":"PROJ-DQRY-TM/#code-availability","text":"The codes are stored and available on the STDL's github repository: proj-dqry : mineral extraction site framework object-detector : object detector framework","title":"Code availability"},{"location":"PROJ-DQRY-TM/#acknowledgements","text":"This project was made possible thanks to a tight collaboration between the STDL team and swisstopo . In particular, the STDL team acknowledges key contribution from Thomas Galfetti ( swisstopo ). This project has been funded by \"Strategie Suisse pour la G\u00e9oinformation\".","title":"Acknowledgements"},{"location":"PROJ-DQRY-TM/#appendix","text":"","title":"Appendix"},{"location":"PROJ-DQRY-TM/#a1-influence-of-empty-tiles-addition-to-model-performance","text":"By selecting tiles intersecting only labels, the detection model is mainly confronted with the presence of the targeted object to be detected. Addition of non-label-intersecting tiles, i.e. empty tiles, provides landscape diversity that might help to improve the object detection performance. In order to evaluate the influence of adding empty tiles to the dataset used for the model performance, empty tiles were chosen randomly (not intersecting labels) within Switzerland boundaries and added to the tile dataset used for the model training (Fig. A1). Empty tiles were added to (1) the whole dataset split as for the initial dataset (training: 70%, test: 15%, and validation: 15%) and (2) only to the training dataset. A visual inspection must be performed to prevent a potential unlabeled MES to be present in the image and disturbing the algorithm learning. Figure A1: View of tiles intersecting (black) labels (yellow) and randomly selected empty tiles (red) in Switzerland. This case correspond to the addition of 35% empty tiles. Figure A1 reveals that adding empty tiles to the dataset does not significantly influence the metrics values. The number of TP, FP, and FN do not show significant variation. However, when performing an inference detection test on a subset of tiles (2000) for an AOI, it appears that the number of raw detections (unfiltered) is reduced as the number of empty tiles increases. However, visual inspection of the final detection after applying filters does not show significant improvement compared to a model trained without adding empty tiles. Figure A1: Influence of the addition of empty tiles (relative to the number of tiles intersecting labels) on trained performance for zoom levels 16 and 17 with (a) the F1-score as a function of the percentage of added empty tiles and (b) the normalised (by the number of tiles sampled = 2000) number of detection as a function of added empty tiles. Empty tiles have been added to only the train dataset for the 5% and 30% cases and to all datasets for 9%, 35%, 70%, and 140% cases. A considered solution to improve the results could be to specifically select tiles for which FP occurred and include them in the training dataset as empty tiles. This way, the model could be trained with relevant confounding features such as snow patches, river sandbeds, or gullies not labeled as GT.","title":"A.1 Influence of empty tiles addition to model performance"},{"location":"PROJ-DQRY-TM/#a2-sensitivity-of-the-model-to-the-number-of-images-per-batch","text":"During the model learning phase, the trained model is updated after each batch of samples was processed. Adding more samples, i.e. in our case images, to the batch can influence the model learning capacity. We investigated the role of adding more images per batch for a dataset with and without adding a portion of empty tiles to the learning dataset. Adding more images per batch speeds up the model learning (Table A1), and the minimum of the loss curve is reached for a smaller number of iterations. Figure A2: Metrics (precision, recall and f1-score) evolution with the number of images per batch during the model training. Results have been obtained on a dataset without empty tiles addition (red) and with the addition of 23% of empty tiles to the training dataset. Figure A2 reveals that the metrics values remain in a range of constant values while adding extra images to the batch in all cases (with or without empty tiles). A potential effect of adding more images to the batch is the reduction of the metrics variability between replicates of trained models as the range of metrics values is smaller for 8 images per batch than 2 images per batch. However, this observation has to be taken carefully as fewer replicates have been performed with 8 images per batch than for 2 or 4 images per batch. Further investigation would provide stronger insights on this effect.","title":"A.2 Sensitivity of the model to the number of images per batch"},{"location":"PROJ-DQRY-TM/#a3-evaluation-of-trained-models","text":"Table A1 sumup metrics value obtained for all the configuration tested for the project. zoom level model empty tiles (%) image per batch optimum iteration precision recall f1 15 replicate 1 0 2 1000 0.727 0.810 0.766 16 replicate 1 0 2 2000 0.842 0.793 0.817 16 replicate 2 0 2 2000 0.767 0.760 0.763 16 replicate 3 0 2 3000 0.831 0.810 0.820 16 replicate 4 0 2 2000 0.886 0.769 0.826 16 replicate 5 0 2 2000 0.780 0.818 0.798 16 replicate 6 0 2 3000 0.781 0.826 0.803 16 replicate 7 0 4 1000 0.748 0.860 0.800 16 replicate 8 0 4 1000 0.779 0.785 0.782 16 replicate 9 0 8 1500 0.800 0.793 0.797 16 replicate 10 0 4 1000 0.796 0.744 0.769 16 replicate 11 0 8 1000 0.802 0.769 0.785 16 ET-250_allDS_1 34.2 2 2000 0.723 0.770 0.746 16 ET-250_allDS_2 34.2 2 3000 0.748 0.803 0.775 16 ET-1000_allDS_1 73.8 2 6000 0.782 0.815 0.798 16 ET-1000_allDS_2 69.8 2 6000 0.786 0.767 0.776 16 ET-1000_allDS_3 70.9 2 6000 0.777 0.810 0.793 16 ET-1000_allDS_4 73.8 2 6000 0.768 0.807 0.787 16 ET-2000_allDS_1 143.2 2 6000 0.761 0.748 0.754 16 ET-80_trnDS_1 5.4 2 2000 0.814 0.793 0.803 16 ET-80_trnDS_2 5.4 2 2000 0.835 0.752 0.791 16 ET-80_trnDS_3 5.4 2 2000 0.764 0.802 0.782 16 ET-400_trnDS_1 29.5 2 6000 0.817 0.777 0.797 16 ET-400_trnDS_2 29.5 2 5000 0.848 0.785 0.815 16 ET-400_trnDS_3 29.5 2 4000 0.758 0.802 0.779 16 ET-400_trnDS_4 29.5 4 2000 0.798 0.818 0.808 16 ET-400_trnDS_5 29.5 4 1000 0.825 0.777 0.800 16 ET-1000_trnDS_1 0 2 4000 0.758 0.802 0.779 17 replicate 1 0 2 5000 0.819 0.853 0.835 17 replicate 1 0 2 5000 0.803 0.891 0.845 17 replicate 1 0 2 5000 0.872 0.813 0.841 17 ET-250_allDS_1 16.8 2 3000 0.801 0.794 0.797 17 ET-1000_allDS_1 72.2 2 7000 0.743 0.765 0.754 18 replicate 1 0 2 10000 0.864 0.855 0.859 Table A1: Metrics value computed for the validation dataset for all the trained models with the 2020 SWISSIMAGE Journey mosaic at zoom level 16. Victor Maus, Stefan Giljum, Jakob Gutschlhofer, Dieison M. Da Silva, Michael Probst, Sidnei L. B. Gass, Sebastian Luckeneder, Mirko Lieber, and Ian McCallum. A global-scale data set of mining areas. Scientific Data , 7(1):289, September 2020. URL: https://www.nature.com/articles/s41597-020-00624-w , doi:10.1038/s41597-020-00624-w . \u21a9 \u21a9 \u21a9 \u21a9 \u21a9 Vicen\u00e7 Carabassa, Pau Montero, Marc Crespo, Joan-Cristian Padr\u00f3, Xavier Pons, Jaume Balagu\u00e9, Llu\u00eds Brotons, and Josep Maria Alca\u00f1iz. Unmanned aerial system protocol for quarry restoration and mineral extraction monitoring. Journal of Environmental Management , 270:110717, September 2020. URL: https://linkinghub.elsevier.com/retrieve/pii/S0301479720306496 , doi:10.1016/j.jenvman.2020.110717 . \u21a9 \u21a9 \u21a9 \u21a9 Chunsheng Wang, Lili Chang, Lingran Zhao, and Ruiqing Niu. Automatic Identification and Dynamic Monitoring of Open-Pit Mines Based on Improved Mask R-CNN and Transfer Learning. Remote Sensing , 12(21):3474, January 2020. URL: https://www.mdpi.com/2072-4292/12/21/3474 , doi:10.3390/rs12213474 . \u21a9 \u21a9 \u21a9 \u21a9 Haoteng Zhao, Yong Ma, Fu Chen, Jianbo Liu, Liyuan Jiang, Wutao Yao, and Jin Yang. Monitoring Quarry Area with Landsat Long Time-Series for Socioeconomic Study. Remote Sensing , 10(4):517, April 2018. URL: https://www.mdpi.com/2072-4292/10/4/517 , doi:10.3390/rs10040517 . \u21a9 \u21a9 Valentin Tertius Bickel and Andrea Manconi. Decadal Surface Changes and Displacements in Switzerland. Journal of Geovisualization and Spatial Analysis , 6(2):24, December 2022. URL: https://link.springer.com/10.1007/s41651-022-00119-9 , doi:10.1007/s41651-022-00119-9 . \u21a9 \u21a9 George P. Petropoulos, Panagiotis Partsinevelos, and Zinovia Mitraka. Change detection of surface mining activity and reclamation based on a machine learning approach of multi-temporal Landsat TM imagery. Geocarto International , 28(4):323\u2013342, July 2013. URL: http://www.tandfonline.com/doi/abs/10.1080/10106049.2012.706648 , doi:10.1080/10106049.2012.706648 . \u21a9 Huriel Reichel and Nils Hamel. Automatic Detection of Quarries and the Lithology below them in Switzerland. 2022. URL: file:///C:/Users/Clemence/Documents/STDL/Projects/proj-quarries/01_Documentation/Bibliography/Automatic%20Detection%20of%20Quarries%20and%20the%20Lithology%20below%20them%20in%20Switzerland%20-%20Swiss%20Territorial%20Data%20Lab.htm . \u21a9 \u21a9 \u21a9 \u21a9 Yuxin Wu, Alexander Kirillov, Francisco Massa, Wan-Yen Lo, and Ross Girshick. Detectron2. 2019. URL: https://github.com/facebookresearch/detectron2 . \u21a9 Kaiming He, Georgia Gkioxari, Piotr Doll\u00e1r, and Ross Girshick. Mask R-CNN. January 2018. arXiv:1703.06870 [cs]. URL: http://arxiv.org/abs/1703.06870 , doi:10.48550/arXiv.1703.06870 . \u21a9","title":"A.3 Evaluation of trained models"},{"location":"PROJ-DTRK/","text":"DIFFERENCE MODELS APPLIED ON LAND REGISTER \u00b6 Nils Hamel (UNIGE) - Huriel Reichel (swisstopo) Project scheduled in the STDL research roadmap - PROJ-DTRK September 2020 to November 2020 - Published on April 23, 2021 Abstract : Being able to track modifications in the evolution of geographical datasets is one important aspect in territory management, as a large amount of information can be extracted out of differences models. Differences detection can also be a tool used to assess the evolution of a geographical model through time. In this research project, we apply differences detection on INTERLIS models of the official Swiss land registers in order to emphasize and follow its evolution and to demonstrate that change in reference frames can be detected and assessed. Introduction \u00b6 Land register models are probably to most living of the geographical models as they are constantly updated to offer a rigorous and up-to-date view of the territory. The applied corrections are always the result of a complex process, involving different territory actors, until the decision is made to integrate them into the land register. In addition, land register models comes with an additional constraint linked to political decisions. Indeed, the land register models are the result of a political mission conducted under federal laws making these models of high importance and requiring constant care. We show in this research project how differences detection tool [1] of the STDL 4D framework can be used to emphasize and analyze these corrections along the time dimension. In addition to the constant updates of the models, changes in the reference frame can also lead to large-scale corrections of the land register models. These global corrections are then made even more complex by the federal laws that impose a high degree of correctness and accuracy. In the context of the introduction of the new reference frame DM.flex [2] for the Swiss land register, being able to assess the applied changes on the geographical model appear as an important aspect. Indeed, changing the reference frame for the land register models is a long and complex technical process that can be error prompt. We also show in this research project how the difference detection algorithm can be helpful to assess and verify the performed corrections. Research Project Specifications \u00b6 In this research project, the difference detection algorithm implemented in the STDL 4D framework is applied on INTERLIS data containing the official land register models of different Swiss Canton . As introduced, two main directions are considered for the difference detection algorithm : Demonstrating the ability to extract information in between land register models Demonstrating the ability of difference models to be used as an assessment tool Through the first direction, the difference detection algorithm is presented. Considering the difference models it allows computing, it is shown how such model are able to extract information in between the models in order to emphasize the ability to represent, and then, to verify the evolution of the land register models. The second direction focuses on demonstrating that difference models are a helpful representation of the large-scale corrections that can be applied to land register during reference frame modification and how they can be used as a tool to assess the modifications and to help to fulfil the complex task of the verification of the corrected models. Research Project Data \u00b6 For the first research direction, the land register models of the Thurgau Kanton are considered. They are selected in order to have a small temporal distance allowing to focus on a small amount of well-defined differences : Thurgau Kanton , 2020-10-13 , INTERLIS Thurgau Kanton , 2020-10-17 , INTERLIS For the second direction, which focus on more complex differences, the models of the Canton of Geneva land register are considered with a much larger temporal gap between them : Canton of Geneva , 2009-10 , INTERLIS Canton of Geneva , 2013-04 , INTERLIS Canton of Geneva , 2017-04 , INTERLIS Canton of Geneva , 2019-04 , INTERLIS Difference Models : A Temporal Derivative \u00b6 This first section focuses on short-term differences to show how difference models work and how they are able to represent the modifications extracted out of the two compared models. The following images give an illustration of the considered dataset, which are the land register models of Thurgau Kanton : Illustration of Thurgau Kanton INTERLIS models - Data : Kanton Thurgau The models are made of vector lines, well geo-referenced in the Swiss coordinates frame EPSG:2056 . The models are also made of different layers that are colored differently with the following correspondences : INTERLIS selected topics and tables colors - Official French and German designations These legends are used all along this research project. Considering two temporal versions of this geographical model, separated of a few days, one is able to extract difference models using the 4D framework algorithm. As an example, one can consider this very specific view of the land register, focusing on a few houses : Close view of the Thurgau INTERLIS model in 2020-10-13 (left) and 2020-10-17 (right) - Data : Kanton Thurgau It is clear that most of the close view is identical for the two models, except for a couple of houses that were added to the land register model between these two temporal versions. By applying the difference detection algorithm, one is able to obtain a difference model comparing the two previous models. The following image gives an illustration of the obtained difference models considering the most recent temporal version as reference : Difference model obtained comparing the two temporal versions - Data : Kanton Thrugau One can see how the difference algorithm is able to emphasize the differences and to represent them in a human-readable third model. The algorithm also displays the identical parts in dark gray to offer the context of the differences to the operator. Of course, in such close view, differences detection can appear as irrelevant, as one is clearly able to see that something changed on the selected example without any help. But difference models can be computed at any scale. For example, taking the example of the Amriswil city : View of Amriswil model in 2020-10-13 (left) and 2020-10-17 (right) - Data : Kanton Thurgau It becomes more complicated to track down the differences that can appear between the two temporal versions. By computing their difference model , one is able to access a third model that ease the analysis of the evolution at the scale of the city itself as illustrated on the following image : Difference model computed for the city of Amriswil - Data : Kanton Thrugau One can see how difference models can be used to track down modifications brought to the land register in a simple manner, while keeping the information of the unchanged elements between the two compared models. This demonstrates that information that exists between models can be extracted and represented for further users or automated processes. In addition, such difference models can be computed at any scale, considering small area up to the whole countries. Difference Models : An Assessment Tool \u00b6 On the previous section, the difference models are computed using two models only separated of a few days, containing only a small amount of clear and simple modifications. This section focuses on detecting differences on larger models, separated by several years. In this case, the land register of the Canton of Geneva is considered : Illustration of the Geneva land register in 2017-04 (left) and 2019-04 (right) - Data : Canton of Geneva One can see that at such a scale, taking into account that the Canton of Geneva is one of the smallest in Switzerland, having a vision and a clear understanding of the modifications made between these two models is difficult by considering the two models separately. It's precisely where differences models can be useful to understand and analyze the evolution of the land register, along both the space and time dimensions. Large-Scale Analysis \u00b6 A first large-scale evaluation can be made on the overall models. A difference model can be computed considering the land register of Geneva in 2019 and 2017 as illustrated on the following image : Difference model on Geneva land register between 2019-04 and 2017-04 - Data : Canton of Geneva Two observations can be already made by looking at the difference model . In the first place, one can see that the amount of modifications brought to the land register is large in only two years. A large portion of the land register were subject to modifications or corrections, the unchanged parts being mostly limited outside the populated area. In the second place, one can observe large portions where differences seem to be accumulating over this period of time. Looking at them more closely leads to the conclusion that these zones were actually completely modified, as all elements are highlighted by the difference detection algorithm. The following image gives a closer view of such an area of differences accumulation : Focus on Carouge area of the 2019-04 and 2017-04 difference model - Data : Canton of Geneva Despite the amount of modifications outside this specific zone is also high, it is clear that the pointed zone contains more of them. Looking at it more closely leads to the conclusion that everything changed. In order to understand these areas of differences accumulation, the the land register experts of the Canton of Geneva ( SITG ) were questioned. They provided an explanation for these specific areas. Between 2017 and 2019 , these areas were subjected to a global correction in order to release the tension between the old reference frame LV03 [3] and the current one LV95 [4]. These corrections were made using the FINELTRA algorithm to modify the elements of the land register of the order of a few centimeters. The land register of Geneva provided the following illustration summarizing these reference frame corrections made between 2017 and 2019 on the Geneva territory : Reference frame corrections performed between 2017 and 2019 - Data : SITG Comparing this map from the land register with the computed model allows seeing how differences detection can emphasize this type of corrections efficiently, as the corrected zones on this previous image corresponds to the difference accumulation areas on the computed difference model . Small-Scale Analysis \u00b6 One can also dive deep into the details of the difference models . As we saw on the large scale analysis, two types of areas can be seen on the 2019-04-2017-04 difference model of Geneva : regular evolution with an accumulation of corrections and areas on which global corrections were applied. The following images propose a close view of these two types of situation : Illustration of the two observed type of evolutions of the land register - Data : Canton of Geneva On the left image above, one can observe the regular evolution of the land register where modifications are brought to the model in order to follow the evolution of the territory. On the right image above, one can see a close view of an area subjected to a global correction (reference frame), leading to a difference model highlighting all the elements. Analyzing more closely the right image above lead the observer to conclude that not all the elements are actually highlighted by the difference detection algorithm. Indeed, some elements are rendered in gray on the difference model , indicating their lack of modification between the two compared times. The following image emphasizes the unchanged elements that can be observed : Unchanged elements in the land register after reference frame correction - Data : SITG These unchanged elements can be surprising as they're found in an area that was subject to a global reference frame correction. This shows how difference models can be helpful to track down these type of events in order to check whether these unchanged elements are expected or are the results of a discrepancy in the land register evolution. Other example can be found in this very same area of the Geneva city. The following images give an illustration of two other close view where the unchanged element can be seen despite the reference frame correction : Unchanged elements in the land register after reference frame correction - Data : SITG On the left image above, one can observe that the unchanged elements are the railway tracks within the commune of Carouge . This is an interesting observation, as railway tracks can be considered as specific elements that can be subjected to different legislations regarding the land register. But it is clear that railway tracks were not considered in the reference frame correction. On the right image above, one can see another example of unchanged elements that are more complicated to explain, as they're in the middle of modified other elements. This clearly demonstrate how difference models can be helpful for analyzing and assessing the evolution of the land register models. Such models are able to drive users or automated processes and lead them to focus on relevant aspects and to define the good question in the context of analyzing the evolution of the land register. Conclusion \u00b6 The presented difference models computed based on two temporal versions of the land register and using the 4D framework algorithm showed how differences can be emphasized for users and automated processes [1]. Difference models can be helpful to determine the amount and nature of changes that appear in the land register. Applying such an algorithm on land register is especially relevant as it is a highly living model, that evolves jointly with the territory it describes. Two main applications can be considered using difference models applied on the land register. In the first place, the difference models can be used to assess and analyze the regular evolution of the territory. Indeed, updating the land register is not a simple task. Such modifications involve a whole chain of decisions and verifications, from surveyors to the highest land register authority before to be integrated in the model. Being able to assess and analyze the modifications in the land register through difference models could be one interesting strengthening of the overall process. The second application of difference models could be as an assessment tool of global corrections applied to the land register or parts of it. These modifications are often linked to the reference frame and its evolution. Being able to assess the corrections through the difference models could add a helpful tool in order to verify that the elements of the land register where correctly processed. In this direction, difference models could be used during the introduction of the DM.flex reference frame for both analyzing its introduction and demonstrating that difference models can be an interesting point of view. Reproduction Resources \u00b6 To reproduce the presented experiments, the STDL 4D framework has to be used and can be found here : STDL 4D framework (eratosthene-suite), STDL You can follow the instructions on the README to both compile and use the framework. Unfortunately, the used data are not currently public. In both cases, the land register INTERLIS datasets were provided to the STDL directly. You can contact both Thurgau Kanton and SITG : INTERLIS land register, Thurgau Kanton INTERLIS land register, SITG (Geneva) to query the data. In order to extract and convert the data from the INTERLIS models, the following code is used : INTERLIS to UV3 (dalai-suite), STDL/EPFL where the README gives all the information needed. For the 3D geographical coordinates conversion and heights restoration, we used two STDL internal tools. You can contact the STDL to obtain the tools and support in this direction : ptolemee-suite : 3D coordinate conversion tool (EPSG:2056 to WGS84) height-from-geotiff : Restoring geographical heights using topographic GeoTIFF ( SRTM ) You can contact STDL for any question regarding the reproduction of the presented results. References \u00b6 [1] Automatic Detection of Changes in the Environment, N. Hamel, STDL 2020 [2] DM.flex reference frame [3] LV03 Reference frame [4] LV95 Reference frame","title":"DIFFERENCE MODELS APPLIED ON LAND REGISTER"},{"location":"PROJ-DTRK/#difference-models-applied-on-land-register","text":"Nils Hamel (UNIGE) - Huriel Reichel (swisstopo) Project scheduled in the STDL research roadmap - PROJ-DTRK September 2020 to November 2020 - Published on April 23, 2021 Abstract : Being able to track modifications in the evolution of geographical datasets is one important aspect in territory management, as a large amount of information can be extracted out of differences models. Differences detection can also be a tool used to assess the evolution of a geographical model through time. In this research project, we apply differences detection on INTERLIS models of the official Swiss land registers in order to emphasize and follow its evolution and to demonstrate that change in reference frames can be detected and assessed.","title":"DIFFERENCE MODELS APPLIED ON LAND REGISTER"},{"location":"PROJ-DTRK/#introduction","text":"Land register models are probably to most living of the geographical models as they are constantly updated to offer a rigorous and up-to-date view of the territory. The applied corrections are always the result of a complex process, involving different territory actors, until the decision is made to integrate them into the land register. In addition, land register models comes with an additional constraint linked to political decisions. Indeed, the land register models are the result of a political mission conducted under federal laws making these models of high importance and requiring constant care. We show in this research project how differences detection tool [1] of the STDL 4D framework can be used to emphasize and analyze these corrections along the time dimension. In addition to the constant updates of the models, changes in the reference frame can also lead to large-scale corrections of the land register models. These global corrections are then made even more complex by the federal laws that impose a high degree of correctness and accuracy. In the context of the introduction of the new reference frame DM.flex [2] for the Swiss land register, being able to assess the applied changes on the geographical model appear as an important aspect. Indeed, changing the reference frame for the land register models is a long and complex technical process that can be error prompt. We also show in this research project how the difference detection algorithm can be helpful to assess and verify the performed corrections.","title":"Introduction"},{"location":"PROJ-DTRK/#research-project-specifications","text":"In this research project, the difference detection algorithm implemented in the STDL 4D framework is applied on INTERLIS data containing the official land register models of different Swiss Canton . As introduced, two main directions are considered for the difference detection algorithm : Demonstrating the ability to extract information in between land register models Demonstrating the ability of difference models to be used as an assessment tool Through the first direction, the difference detection algorithm is presented. Considering the difference models it allows computing, it is shown how such model are able to extract information in between the models in order to emphasize the ability to represent, and then, to verify the evolution of the land register models. The second direction focuses on demonstrating that difference models are a helpful representation of the large-scale corrections that can be applied to land register during reference frame modification and how they can be used as a tool to assess the modifications and to help to fulfil the complex task of the verification of the corrected models.","title":"Research Project Specifications"},{"location":"PROJ-DTRK/#research-project-data","text":"For the first research direction, the land register models of the Thurgau Kanton are considered. They are selected in order to have a small temporal distance allowing to focus on a small amount of well-defined differences : Thurgau Kanton , 2020-10-13 , INTERLIS Thurgau Kanton , 2020-10-17 , INTERLIS For the second direction, which focus on more complex differences, the models of the Canton of Geneva land register are considered with a much larger temporal gap between them : Canton of Geneva , 2009-10 , INTERLIS Canton of Geneva , 2013-04 , INTERLIS Canton of Geneva , 2017-04 , INTERLIS Canton of Geneva , 2019-04 , INTERLIS","title":"Research Project Data"},{"location":"PROJ-DTRK/#difference-models-a-temporal-derivative","text":"This first section focuses on short-term differences to show how difference models work and how they are able to represent the modifications extracted out of the two compared models. The following images give an illustration of the considered dataset, which are the land register models of Thurgau Kanton : Illustration of Thurgau Kanton INTERLIS models - Data : Kanton Thurgau The models are made of vector lines, well geo-referenced in the Swiss coordinates frame EPSG:2056 . The models are also made of different layers that are colored differently with the following correspondences : INTERLIS selected topics and tables colors - Official French and German designations These legends are used all along this research project. Considering two temporal versions of this geographical model, separated of a few days, one is able to extract difference models using the 4D framework algorithm. As an example, one can consider this very specific view of the land register, focusing on a few houses : Close view of the Thurgau INTERLIS model in 2020-10-13 (left) and 2020-10-17 (right) - Data : Kanton Thurgau It is clear that most of the close view is identical for the two models, except for a couple of houses that were added to the land register model between these two temporal versions. By applying the difference detection algorithm, one is able to obtain a difference model comparing the two previous models. The following image gives an illustration of the obtained difference models considering the most recent temporal version as reference : Difference model obtained comparing the two temporal versions - Data : Kanton Thrugau One can see how the difference algorithm is able to emphasize the differences and to represent them in a human-readable third model. The algorithm also displays the identical parts in dark gray to offer the context of the differences to the operator. Of course, in such close view, differences detection can appear as irrelevant, as one is clearly able to see that something changed on the selected example without any help. But difference models can be computed at any scale. For example, taking the example of the Amriswil city : View of Amriswil model in 2020-10-13 (left) and 2020-10-17 (right) - Data : Kanton Thurgau It becomes more complicated to track down the differences that can appear between the two temporal versions. By computing their difference model , one is able to access a third model that ease the analysis of the evolution at the scale of the city itself as illustrated on the following image : Difference model computed for the city of Amriswil - Data : Kanton Thrugau One can see how difference models can be used to track down modifications brought to the land register in a simple manner, while keeping the information of the unchanged elements between the two compared models. This demonstrates that information that exists between models can be extracted and represented for further users or automated processes. In addition, such difference models can be computed at any scale, considering small area up to the whole countries.","title":"Difference Models : A Temporal Derivative"},{"location":"PROJ-DTRK/#difference-models-an-assessment-tool","text":"On the previous section, the difference models are computed using two models only separated of a few days, containing only a small amount of clear and simple modifications. This section focuses on detecting differences on larger models, separated by several years. In this case, the land register of the Canton of Geneva is considered : Illustration of the Geneva land register in 2017-04 (left) and 2019-04 (right) - Data : Canton of Geneva One can see that at such a scale, taking into account that the Canton of Geneva is one of the smallest in Switzerland, having a vision and a clear understanding of the modifications made between these two models is difficult by considering the two models separately. It's precisely where differences models can be useful to understand and analyze the evolution of the land register, along both the space and time dimensions.","title":"Difference Models : An Assessment Tool"},{"location":"PROJ-DTRK/#large-scale-analysis","text":"A first large-scale evaluation can be made on the overall models. A difference model can be computed considering the land register of Geneva in 2019 and 2017 as illustrated on the following image : Difference model on Geneva land register between 2019-04 and 2017-04 - Data : Canton of Geneva Two observations can be already made by looking at the difference model . In the first place, one can see that the amount of modifications brought to the land register is large in only two years. A large portion of the land register were subject to modifications or corrections, the unchanged parts being mostly limited outside the populated area. In the second place, one can observe large portions where differences seem to be accumulating over this period of time. Looking at them more closely leads to the conclusion that these zones were actually completely modified, as all elements are highlighted by the difference detection algorithm. The following image gives a closer view of such an area of differences accumulation : Focus on Carouge area of the 2019-04 and 2017-04 difference model - Data : Canton of Geneva Despite the amount of modifications outside this specific zone is also high, it is clear that the pointed zone contains more of them. Looking at it more closely leads to the conclusion that everything changed. In order to understand these areas of differences accumulation, the the land register experts of the Canton of Geneva ( SITG ) were questioned. They provided an explanation for these specific areas. Between 2017 and 2019 , these areas were subjected to a global correction in order to release the tension between the old reference frame LV03 [3] and the current one LV95 [4]. These corrections were made using the FINELTRA algorithm to modify the elements of the land register of the order of a few centimeters. The land register of Geneva provided the following illustration summarizing these reference frame corrections made between 2017 and 2019 on the Geneva territory : Reference frame corrections performed between 2017 and 2019 - Data : SITG Comparing this map from the land register with the computed model allows seeing how differences detection can emphasize this type of corrections efficiently, as the corrected zones on this previous image corresponds to the difference accumulation areas on the computed difference model .","title":"Large-Scale Analysis"},{"location":"PROJ-DTRK/#small-scale-analysis","text":"One can also dive deep into the details of the difference models . As we saw on the large scale analysis, two types of areas can be seen on the 2019-04-2017-04 difference model of Geneva : regular evolution with an accumulation of corrections and areas on which global corrections were applied. The following images propose a close view of these two types of situation : Illustration of the two observed type of evolutions of the land register - Data : Canton of Geneva On the left image above, one can observe the regular evolution of the land register where modifications are brought to the model in order to follow the evolution of the territory. On the right image above, one can see a close view of an area subjected to a global correction (reference frame), leading to a difference model highlighting all the elements. Analyzing more closely the right image above lead the observer to conclude that not all the elements are actually highlighted by the difference detection algorithm. Indeed, some elements are rendered in gray on the difference model , indicating their lack of modification between the two compared times. The following image emphasizes the unchanged elements that can be observed : Unchanged elements in the land register after reference frame correction - Data : SITG These unchanged elements can be surprising as they're found in an area that was subject to a global reference frame correction. This shows how difference models can be helpful to track down these type of events in order to check whether these unchanged elements are expected or are the results of a discrepancy in the land register evolution. Other example can be found in this very same area of the Geneva city. The following images give an illustration of two other close view where the unchanged element can be seen despite the reference frame correction : Unchanged elements in the land register after reference frame correction - Data : SITG On the left image above, one can observe that the unchanged elements are the railway tracks within the commune of Carouge . This is an interesting observation, as railway tracks can be considered as specific elements that can be subjected to different legislations regarding the land register. But it is clear that railway tracks were not considered in the reference frame correction. On the right image above, one can see another example of unchanged elements that are more complicated to explain, as they're in the middle of modified other elements. This clearly demonstrate how difference models can be helpful for analyzing and assessing the evolution of the land register models. Such models are able to drive users or automated processes and lead them to focus on relevant aspects and to define the good question in the context of analyzing the evolution of the land register.","title":"Small-Scale Analysis"},{"location":"PROJ-DTRK/#conclusion","text":"The presented difference models computed based on two temporal versions of the land register and using the 4D framework algorithm showed how differences can be emphasized for users and automated processes [1]. Difference models can be helpful to determine the amount and nature of changes that appear in the land register. Applying such an algorithm on land register is especially relevant as it is a highly living model, that evolves jointly with the territory it describes. Two main applications can be considered using difference models applied on the land register. In the first place, the difference models can be used to assess and analyze the regular evolution of the territory. Indeed, updating the land register is not a simple task. Such modifications involve a whole chain of decisions and verifications, from surveyors to the highest land register authority before to be integrated in the model. Being able to assess and analyze the modifications in the land register through difference models could be one interesting strengthening of the overall process. The second application of difference models could be as an assessment tool of global corrections applied to the land register or parts of it. These modifications are often linked to the reference frame and its evolution. Being able to assess the corrections through the difference models could add a helpful tool in order to verify that the elements of the land register where correctly processed. In this direction, difference models could be used during the introduction of the DM.flex reference frame for both analyzing its introduction and demonstrating that difference models can be an interesting point of view.","title":"Conclusion"},{"location":"PROJ-DTRK/#reproduction-resources","text":"To reproduce the presented experiments, the STDL 4D framework has to be used and can be found here : STDL 4D framework (eratosthene-suite), STDL You can follow the instructions on the README to both compile and use the framework. Unfortunately, the used data are not currently public. In both cases, the land register INTERLIS datasets were provided to the STDL directly. You can contact both Thurgau Kanton and SITG : INTERLIS land register, Thurgau Kanton INTERLIS land register, SITG (Geneva) to query the data. In order to extract and convert the data from the INTERLIS models, the following code is used : INTERLIS to UV3 (dalai-suite), STDL/EPFL where the README gives all the information needed. For the 3D geographical coordinates conversion and heights restoration, we used two STDL internal tools. You can contact the STDL to obtain the tools and support in this direction : ptolemee-suite : 3D coordinate conversion tool (EPSG:2056 to WGS84) height-from-geotiff : Restoring geographical heights using topographic GeoTIFF ( SRTM ) You can contact STDL for any question regarding the reproduction of the presented results.","title":"Reproduction Resources"},{"location":"PROJ-DTRK/#references","text":"[1] Automatic Detection of Changes in the Environment, N. Hamel, STDL 2020 [2] DM.flex reference frame [3] LV03 Reference frame [4] LV95 Reference frame","title":"References"},{"location":"PROJ-GEPOOL/","text":"Swimming Pool Detection from Aerial Images over the Canton of Geneva \u00b6 Alessandro Cerioni (Canton of Geneva) - Adrian Meyer (FHNW) Proposed by the Canton of Geneva - PROJ-GEPOOL September 2020 to January 2021 - Published on May 18, 2021 Abstract : Object detection is one of the computer vision tasks which can benefit from Deep Learning methods. The STDL team managed to leverage state-of-art methods and already existing open datasets to first build a swimming pool detector, then to use it to potentially detect unregistered swimming pools over the Canton of Geneva. Despite the success of our approach, we will argue that domain expertise still remains key to post-process detections in order to tell objects which are subject to registration from those which aren't. Pairing semi-automatic Deep Learning methods with domain expertise turns out to pave the way to novel workflows allowing administrations to keep cadastral information up to date. Introduction \u00b6 The Canton of Geneva manages a register of swimming pools, counting - in principle - all and only those swimming pools that are in-ground or, at least, permanently fixed to the ground. The swimming pool register is part of a far more general cadastre, including several other classes of objects (cf. this page ). Typically the swimming pool register is updated either by taking building/demolition permits into account, or by manually checking its multiple records (4000+ to date) against aerial images, which is quite a long and tedious task. Exploring the opportunity of leveraging Machine Learning to help domain experts in such an otherwise tedious tasks was one of the main motivations behind this study. As such, no prior requirements/expectations were set by the recipients. The study was autonomously conducted by the STDL team, using Open Source software and Open Data published by the Canton of Geneva. Domain experts were asked for feedback only at a later stage. In the following, details are provided regarding the various steps we followed. We refer the reader to this page for a thorough description of the generic STDL Object Detection Framework. Method \u00b6 Several steps are required to set the stage for object detection and eventually reach the goal of obtaining - ideally - even more than decent results. Despite the linear presentation that the reader will find here-below, multiple back-and-forths are actually required, especially through steps 2-4. 1. Data preparation \u00b6 As a very first step , one has to define the geographical region over which the study has to be conducted, the so-called \" Area of Interest \" (AoI). In the case of this specific application, the AoI was chosen and obtained as the geometric subtraction between the following two polygons: the unary union of all the polygons of the Canton of Geneva's cadastral parcels dataset, published as Open Data by the SITG , cf. PARCELLES DE LA MENSURATION ; the polygon corresponding to the Lake Geneva (\" lac L\u00e9man \" in French), included in the EMPRISE DU LAC LEMAN (Complet) open dataset, published by the SITG as well. The so-defined AoI covers both the known \"ground-truth\" labels and regions over which hypothetical unknown objects are expected to be detected. The second step consists in downloading aerial images from a remote server, following an established tiling strategy. We adopted the so-called \" Slippy Map \" tiling scheme. Aerial images were fetched from a raster web service hosted by the SITG and powered by ESRI ArcGIS Server. More precisely, the following dataset was used: ORTHOPHOTOS AGGLO 2018 . According to our configuration, this second step produces a folder including one GeoTIFF image per tile, each image having a size of 256x256 pixels. In terms of resolution - or better, in terms of \" Ground Sampling Distance \" (GSD) - the combination of 256x256 pixels images and zoom level 18 Slippy Map Tiles yields approximately a GSD of ~ 60 cm/pixel. The tests we performed at twice the resolution showed little gain in terms of predictive power, surely not enough to support the interest in engaging 4x more resources (storage, CPU/GPU, ...). The third step amounts to splitting the tiles covering the AoI (let's label them \"AoI tiles\") twice: first, tiles are partitioned into two subsets, according to whether they include ( GT tiles) or not ( oth tiles) ground-truth labels: \\(\\mbox{AoI tiles} = (\\mbox{GT tiles}) \\cup (\\mbox{oth tiles}),\\; \\mbox{with}\\; (\\mbox{GT tiles}) \\cap (\\mbox{oth tiles}) = \\emptyset\\) Then, ground-truth tiles are partitioned into three other subsets, namely the training ( trn ), validation ( val ) and test ( tst ) datasets: \\(\\mbox{GT tiles} = (\\mbox{trn tiles}) \\cup (\\mbox{val tiles}) \\cup (\\mbox{tst tiles})\\) with \\(A \\neq B \\Rightarrow A \\cap B = \\emptyset, \\quad \\forall A, B \\in \\{\\mbox{trn tiles}, \\mbox{val tiles}, \\mbox{tst tiles}, \\mbox{oth tiles}\\}\\) We opted for the 70%-15%-15% dataset splitting strategy. Slippy Map Tiles at zoom level 18 covering the Area of Interest, partitioned into several subsets: ground-truth (GT = trn + val + tst), other (oth). Zoom over a portion of the previous image. Concerning ground-truth labels, the final results of this study rely on a curated subset of the public dataset including polygons corresponding to the Canton of Geneva's registered swimming pools, cf. PISCINES . Indeed, some \"warming-up\" iterations of this whole process allowed us to semi-automatically identify tiles where the swimming pool register was inconsistent with aerial images, and viceversa. By manually inspecting the tiles displaying inconsistency, we discarded those tiles for which the swimming pool register seemed to be wrong (at least through the eyes of a Data Scientist; in a further iteration, this data curation step should be performed together with domain experts). While not having the ambition to return a \"100% ground-truth\" training dataset, this data curation step yielded a substantial gain in terms of \\(F_1\\) score (from ~82% to ~90%, to be more precise). 2. Model training \u00b6 A predictive model was trained, stemming from one of the pre-trained models provided by Detectron2 . In particular, the \"R50-FPN\" baseline was used (cf. this page ), which implements a Mask R-CNN architecture leveraging a ResNet-50 backbone along with a Feature Pyramid Network (FPN). We refer the reader e.g. to this blog article for further information about this kind of Deep Learning methods. Training a (Deep) Neural Network model means running an algorithm which iteratively adjusts the various parameters of a Neural Network (40+ million parameters in our case), in order to minimize the value of some \"loss function\". In addition to the model parameters (otherwise called \"weights\", too), multiple \"hyper-parameters\" exist, affecting the model and the way how the optimization is performed. In theory, one should automatize the hyper-parameters tuning , in order to eventually single out the best setting among all the possible ones. In practice, the hyper-parameters space is never fully explored; a minima , a systematic search should be performed, in order to find a \"sweet spot\" among a finite, discrete collection of settings. In our case, no systematic hyper-parameters tuning was actually performed. Instead, a few man hours were spent in order to manually tune the hyper-parameters, until a setting was found which the STDL team judged to be reasonably good (~90% \\(F_1\\) score on the test dataset, see details here-below). The optimal number of iterations was chosen so as to approximately minimize the loss on the validation dataset. 3. Prediction \u00b6 Each image resulting from the tiling of the AoI constitutes - let's say - the \"basic unit of computation\" of this analysis. Thus, the model optimized at the previous step was used to make predictions over: the oth images, meaning images covering no already known swimming pools; the trn , val and tst images, meaning images covering already known swimming pools. The combination of predictions 1 and 2 covers the entire AoI and allows us to discover potential new objects as well as to check whether some of the known objects are outdated, respectively. Image by image, the model produces one segmentation mask per detected object, accompanied by a score ranging from a custom minimum value (5% in our setting) to 100%. The higher the score, the most the model is confident about a given prediction. Sample detections of swimming pools, accompanied by scores. Note that multiple detections can concern the same object, if the latter extends over multiple tiles. Let us note that not only swimming pools exhibiting only \"obvious\" features (bluish color, rectangular shape, ...) were detected, but also: swimming pools covered by some tarp; empty swimming pools; etc. As a matter of fact, the training dataset was rich enough to also include samples of such somewhat tricky cases. 4. Prediction assessment \u00b6 As described here in more detail, in order to assess the reliability of the predictive model predictions have to be post-processed so as to switch from the image coordinates - ranging from (0, 0) to (255, 255) in our case, where 256x256 pixel images were used - to geographical coordinates. This amounts to applying an affine transformation to the various predictions, yielding a vector layer which we can compare with ground-truth ( GT ) data by means of spatial joins: objects which are detected and can also be found in GT data are referred to as \"true positives\" (TPs); objects which are detected but cannot be found in GT data are referred to as \"false positives\" (FPs); GT objects which are not detected are referred to as \"false negatives\" (FNs). Example of a true positive (TP), a false positive (FP) and a false negative (FN). Note that both the TP and the FP object are detected twice, as they extend over multiple tiles. The counting of TPs, FPs, FNs allow us to compute some standard metrics such as precision, recall and \\(F_1\\) score (cf. this Wikipedia page for further information). Actually, one count (hence one set of metrics) can be produced per choice of the minimum score that one is willing to accept. Choosing a threshold value (= thr ) means keeping all the predictions having a score >= thr and discarding the rest. Intuitively, a low threshold should yield a few false negatives; a high threshold should yield a few false positives. Such intuitions can be confirmed by the following diagram, which we obtained by sampling the values of thr by steps of 0.05 (= 5%), from 0.05 to 0.95. True positives (TPs), false negatives (FNs), and false positives (FPs) counted over the test dataset, as a function of the threshold on the score: for a given threshold, all and only the predictions exhibiting a bigger score are kept. Performance metrics computed over the test dataset as a function of the threshold on the score: for a given threshold, all and only the predictions exhibiting a bigger score are kept. The latter figure was obtained by evaluating the predictions of our best model over the test dataset. Inferior models exhibited a similar behavior, with a downward offset in terms of \\(F_1\\) score. In practice, upon iterating over multiple realizations (with different hyper-parameters, training data and so on) we aimed at maximizing the value of the \\(F_1\\) score on the validation dataset, and stopped when the \\(F_1\\) score went over the value of 90%. As the ground-truth data we used turned out not to be 100% accurate, the responsibility for mismatching predictions has to be shared between ground-truth data and the predictive model, at least in some cases. In a more ideal setting, ground-truth data would be 100% accurate and differences between a given metric (precision, recall, \\(F_1\\) score) and 100% should be imputed to the model. Domain experts feedback \u00b6 All the predictions having a score \\(\\geq\\) 5% obtained by our best model were exported to Shapefile and shared with the experts in charge of the cadastre of the Canton of Geneva, who carried out a thorough evaluation. By checking predictions against the swimming pool register as well as aerial images, it was empirically found that the threshold on the minimum score (= thr ) should be set as high as 97%, in order not to have too many false positives to deal with. In spite of such a high threshold, 562 potentially new objects were detected (over 4652 objects which were known when this study started), of which: 128 items are objects other than swimming pools (let's say an \"actual false positives\"); 211 items are swimming pools that are NOT subject to registration (temporary, above-ground, on top of a building, ...); 223 items are swimming pools that are subject to registration. This figures show that: on the one hand, the model performs quite well on the task it was trained for, in particular when an appropriate threshold is used; on the other hand, the meticulous review of results by domain experts remain essential. This said, automatic detections can surely be used to drive the domain experts' attention towards the areas which might require some. Examples of \"actual false positives\": a fountain (left) and a tunnel (right). Examples of detected swimming pools which are not subject to registration: placed on top of a building (left), inflatable hence temporary (right). Conclusion \u00b6 The analysis reported in this document confirms the opportunity of using state-of-the-art Deep Learning approaches to assist experts in some of their tasks, in this case that of keeping the cadastre up to date. Not only the opportunity was explored and actually confirmed, but valuable results were also produced, leading to the detection of previously unknown objects. At the same time, our study also shows how essential domain expertise still remains, despite the usage of such advanced methods. As a concluding remark, let us note that our predictive model may be further improved. In particular, it may be rendered less prone to false positives, for instance by: leveraging 3D data ( e.g. point clouds), in order to potentially remove temporary, above-ground swimming pools from the set of detected objects; injecting into the training dataset those predictions which were classified by domain experts as other objects or temporary swimming pools; leveraging some other datasets, already available through the SITG portal : buildings , miscellaneous objects , etc.","title":" Swimming Pool Detection from Aerial Images over the Canton of Geneva "},{"location":"PROJ-GEPOOL/#swimming-pool-detection-from-aerial-images-over-the-canton-of-geneva","text":"Alessandro Cerioni (Canton of Geneva) - Adrian Meyer (FHNW) Proposed by the Canton of Geneva - PROJ-GEPOOL September 2020 to January 2021 - Published on May 18, 2021 Abstract : Object detection is one of the computer vision tasks which can benefit from Deep Learning methods. The STDL team managed to leverage state-of-art methods and already existing open datasets to first build a swimming pool detector, then to use it to potentially detect unregistered swimming pools over the Canton of Geneva. Despite the success of our approach, we will argue that domain expertise still remains key to post-process detections in order to tell objects which are subject to registration from those which aren't. Pairing semi-automatic Deep Learning methods with domain expertise turns out to pave the way to novel workflows allowing administrations to keep cadastral information up to date.","title":" Swimming Pool Detection from Aerial Images over the Canton of Geneva "},{"location":"PROJ-GEPOOL/#introduction","text":"The Canton of Geneva manages a register of swimming pools, counting - in principle - all and only those swimming pools that are in-ground or, at least, permanently fixed to the ground. The swimming pool register is part of a far more general cadastre, including several other classes of objects (cf. this page ). Typically the swimming pool register is updated either by taking building/demolition permits into account, or by manually checking its multiple records (4000+ to date) against aerial images, which is quite a long and tedious task. Exploring the opportunity of leveraging Machine Learning to help domain experts in such an otherwise tedious tasks was one of the main motivations behind this study. As such, no prior requirements/expectations were set by the recipients. The study was autonomously conducted by the STDL team, using Open Source software and Open Data published by the Canton of Geneva. Domain experts were asked for feedback only at a later stage. In the following, details are provided regarding the various steps we followed. We refer the reader to this page for a thorough description of the generic STDL Object Detection Framework.","title":"Introduction"},{"location":"PROJ-GEPOOL/#method","text":"Several steps are required to set the stage for object detection and eventually reach the goal of obtaining - ideally - even more than decent results. Despite the linear presentation that the reader will find here-below, multiple back-and-forths are actually required, especially through steps 2-4.","title":"Method"},{"location":"PROJ-GEPOOL/#1-data-preparation","text":"As a very first step , one has to define the geographical region over which the study has to be conducted, the so-called \" Area of Interest \" (AoI). In the case of this specific application, the AoI was chosen and obtained as the geometric subtraction between the following two polygons: the unary union of all the polygons of the Canton of Geneva's cadastral parcels dataset, published as Open Data by the SITG , cf. PARCELLES DE LA MENSURATION ; the polygon corresponding to the Lake Geneva (\" lac L\u00e9man \" in French), included in the EMPRISE DU LAC LEMAN (Complet) open dataset, published by the SITG as well. The so-defined AoI covers both the known \"ground-truth\" labels and regions over which hypothetical unknown objects are expected to be detected. The second step consists in downloading aerial images from a remote server, following an established tiling strategy. We adopted the so-called \" Slippy Map \" tiling scheme. Aerial images were fetched from a raster web service hosted by the SITG and powered by ESRI ArcGIS Server. More precisely, the following dataset was used: ORTHOPHOTOS AGGLO 2018 . According to our configuration, this second step produces a folder including one GeoTIFF image per tile, each image having a size of 256x256 pixels. In terms of resolution - or better, in terms of \" Ground Sampling Distance \" (GSD) - the combination of 256x256 pixels images and zoom level 18 Slippy Map Tiles yields approximately a GSD of ~ 60 cm/pixel. The tests we performed at twice the resolution showed little gain in terms of predictive power, surely not enough to support the interest in engaging 4x more resources (storage, CPU/GPU, ...). The third step amounts to splitting the tiles covering the AoI (let's label them \"AoI tiles\") twice: first, tiles are partitioned into two subsets, according to whether they include ( GT tiles) or not ( oth tiles) ground-truth labels: \\(\\mbox{AoI tiles} = (\\mbox{GT tiles}) \\cup (\\mbox{oth tiles}),\\; \\mbox{with}\\; (\\mbox{GT tiles}) \\cap (\\mbox{oth tiles}) = \\emptyset\\) Then, ground-truth tiles are partitioned into three other subsets, namely the training ( trn ), validation ( val ) and test ( tst ) datasets: \\(\\mbox{GT tiles} = (\\mbox{trn tiles}) \\cup (\\mbox{val tiles}) \\cup (\\mbox{tst tiles})\\) with \\(A \\neq B \\Rightarrow A \\cap B = \\emptyset, \\quad \\forall A, B \\in \\{\\mbox{trn tiles}, \\mbox{val tiles}, \\mbox{tst tiles}, \\mbox{oth tiles}\\}\\) We opted for the 70%-15%-15% dataset splitting strategy. Slippy Map Tiles at zoom level 18 covering the Area of Interest, partitioned into several subsets: ground-truth (GT = trn + val + tst), other (oth). Zoom over a portion of the previous image. Concerning ground-truth labels, the final results of this study rely on a curated subset of the public dataset including polygons corresponding to the Canton of Geneva's registered swimming pools, cf. PISCINES . Indeed, some \"warming-up\" iterations of this whole process allowed us to semi-automatically identify tiles where the swimming pool register was inconsistent with aerial images, and viceversa. By manually inspecting the tiles displaying inconsistency, we discarded those tiles for which the swimming pool register seemed to be wrong (at least through the eyes of a Data Scientist; in a further iteration, this data curation step should be performed together with domain experts). While not having the ambition to return a \"100% ground-truth\" training dataset, this data curation step yielded a substantial gain in terms of \\(F_1\\) score (from ~82% to ~90%, to be more precise).","title":"1. Data preparation"},{"location":"PROJ-GEPOOL/#2-model-training","text":"A predictive model was trained, stemming from one of the pre-trained models provided by Detectron2 . In particular, the \"R50-FPN\" baseline was used (cf. this page ), which implements a Mask R-CNN architecture leveraging a ResNet-50 backbone along with a Feature Pyramid Network (FPN). We refer the reader e.g. to this blog article for further information about this kind of Deep Learning methods. Training a (Deep) Neural Network model means running an algorithm which iteratively adjusts the various parameters of a Neural Network (40+ million parameters in our case), in order to minimize the value of some \"loss function\". In addition to the model parameters (otherwise called \"weights\", too), multiple \"hyper-parameters\" exist, affecting the model and the way how the optimization is performed. In theory, one should automatize the hyper-parameters tuning , in order to eventually single out the best setting among all the possible ones. In practice, the hyper-parameters space is never fully explored; a minima , a systematic search should be performed, in order to find a \"sweet spot\" among a finite, discrete collection of settings. In our case, no systematic hyper-parameters tuning was actually performed. Instead, a few man hours were spent in order to manually tune the hyper-parameters, until a setting was found which the STDL team judged to be reasonably good (~90% \\(F_1\\) score on the test dataset, see details here-below). The optimal number of iterations was chosen so as to approximately minimize the loss on the validation dataset.","title":"2. Model training"},{"location":"PROJ-GEPOOL/#3-prediction","text":"Each image resulting from the tiling of the AoI constitutes - let's say - the \"basic unit of computation\" of this analysis. Thus, the model optimized at the previous step was used to make predictions over: the oth images, meaning images covering no already known swimming pools; the trn , val and tst images, meaning images covering already known swimming pools. The combination of predictions 1 and 2 covers the entire AoI and allows us to discover potential new objects as well as to check whether some of the known objects are outdated, respectively. Image by image, the model produces one segmentation mask per detected object, accompanied by a score ranging from a custom minimum value (5% in our setting) to 100%. The higher the score, the most the model is confident about a given prediction. Sample detections of swimming pools, accompanied by scores. Note that multiple detections can concern the same object, if the latter extends over multiple tiles. Let us note that not only swimming pools exhibiting only \"obvious\" features (bluish color, rectangular shape, ...) were detected, but also: swimming pools covered by some tarp; empty swimming pools; etc. As a matter of fact, the training dataset was rich enough to also include samples of such somewhat tricky cases.","title":"3. Prediction"},{"location":"PROJ-GEPOOL/#4-prediction-assessment","text":"As described here in more detail, in order to assess the reliability of the predictive model predictions have to be post-processed so as to switch from the image coordinates - ranging from (0, 0) to (255, 255) in our case, where 256x256 pixel images were used - to geographical coordinates. This amounts to applying an affine transformation to the various predictions, yielding a vector layer which we can compare with ground-truth ( GT ) data by means of spatial joins: objects which are detected and can also be found in GT data are referred to as \"true positives\" (TPs); objects which are detected but cannot be found in GT data are referred to as \"false positives\" (FPs); GT objects which are not detected are referred to as \"false negatives\" (FNs). Example of a true positive (TP), a false positive (FP) and a false negative (FN). Note that both the TP and the FP object are detected twice, as they extend over multiple tiles. The counting of TPs, FPs, FNs allow us to compute some standard metrics such as precision, recall and \\(F_1\\) score (cf. this Wikipedia page for further information). Actually, one count (hence one set of metrics) can be produced per choice of the minimum score that one is willing to accept. Choosing a threshold value (= thr ) means keeping all the predictions having a score >= thr and discarding the rest. Intuitively, a low threshold should yield a few false negatives; a high threshold should yield a few false positives. Such intuitions can be confirmed by the following diagram, which we obtained by sampling the values of thr by steps of 0.05 (= 5%), from 0.05 to 0.95. True positives (TPs), false negatives (FNs), and false positives (FPs) counted over the test dataset, as a function of the threshold on the score: for a given threshold, all and only the predictions exhibiting a bigger score are kept. Performance metrics computed over the test dataset as a function of the threshold on the score: for a given threshold, all and only the predictions exhibiting a bigger score are kept. The latter figure was obtained by evaluating the predictions of our best model over the test dataset. Inferior models exhibited a similar behavior, with a downward offset in terms of \\(F_1\\) score. In practice, upon iterating over multiple realizations (with different hyper-parameters, training data and so on) we aimed at maximizing the value of the \\(F_1\\) score on the validation dataset, and stopped when the \\(F_1\\) score went over the value of 90%. As the ground-truth data we used turned out not to be 100% accurate, the responsibility for mismatching predictions has to be shared between ground-truth data and the predictive model, at least in some cases. In a more ideal setting, ground-truth data would be 100% accurate and differences between a given metric (precision, recall, \\(F_1\\) score) and 100% should be imputed to the model.","title":"4. Prediction assessment"},{"location":"PROJ-GEPOOL/#domain-experts-feedback","text":"All the predictions having a score \\(\\geq\\) 5% obtained by our best model were exported to Shapefile and shared with the experts in charge of the cadastre of the Canton of Geneva, who carried out a thorough evaluation. By checking predictions against the swimming pool register as well as aerial images, it was empirically found that the threshold on the minimum score (= thr ) should be set as high as 97%, in order not to have too many false positives to deal with. In spite of such a high threshold, 562 potentially new objects were detected (over 4652 objects which were known when this study started), of which: 128 items are objects other than swimming pools (let's say an \"actual false positives\"); 211 items are swimming pools that are NOT subject to registration (temporary, above-ground, on top of a building, ...); 223 items are swimming pools that are subject to registration. This figures show that: on the one hand, the model performs quite well on the task it was trained for, in particular when an appropriate threshold is used; on the other hand, the meticulous review of results by domain experts remain essential. This said, automatic detections can surely be used to drive the domain experts' attention towards the areas which might require some. Examples of \"actual false positives\": a fountain (left) and a tunnel (right). Examples of detected swimming pools which are not subject to registration: placed on top of a building (left), inflatable hence temporary (right).","title":"Domain experts feedback"},{"location":"PROJ-GEPOOL/#conclusion","text":"The analysis reported in this document confirms the opportunity of using state-of-the-art Deep Learning approaches to assist experts in some of their tasks, in this case that of keeping the cadastre up to date. Not only the opportunity was explored and actually confirmed, but valuable results were also produced, leading to the detection of previously unknown objects. At the same time, our study also shows how essential domain expertise still remains, despite the usage of such advanced methods. As a concluding remark, let us note that our predictive model may be further improved. In particular, it may be rendered less prone to false positives, for instance by: leveraging 3D data ( e.g. point clouds), in order to potentially remove temporary, above-ground swimming pools from the set of detected objects; injecting into the training dataset those predictions which were classified by domain experts as other objects or temporary swimming pools; leveraging some other datasets, already available through the SITG portal : buildings , miscellaneous objects , etc.","title":"Conclusion"},{"location":"PROJ-HETRES/","text":"Dieback of beech trees: methodology for determining the health state of beech trees from airborne images and LiDAR point clouds \u00b6 Clotilde Marmy (ExoLabs) - Gwena\u00eblle Salamin (ExoLabs) - Alessandro Cerioni (Canton of Geneva) - Roxane Pott (swisstopo) Proposed by the Canton of Jura - PROJ-HETRES October 2022 to August 2023 - Published on November 13, 2023 All scripts are available on GitHub . Abstract : Beech trees are sensitive to drought and repeated episodes can cause dieback. This issue affects the Jura forests requiring the development of new tools for forest management. In this project, descriptors for the health state of beech trees were derived from LiDAR point clouds, airborne images and satellite images to train a random forest predicting the health state per tree in a study area (5 km\u00b2) in Ajoie. A map with three classes was produced: healthy, unhealthy, dead. Metrics computed on the test dataset revealed that the model trained with all the descriptors has an overall accuracy up to 0.79, as well as the model trained only with descriptors derived from airborne imagery. When all the descriptors are used, the yearly difference of NDVI between 2018 and 2019, the standard deviation of the blue band, the mean of the NIR band, the mean of the NDVI, the standard deviation of the canopy cover and the LiDAR reflectance appear to be important descriptors. 1. Introduction \u00b6 Since the drought episode of 2018, the canton of Jura and other cantons have noticed dieback of the beech trees in their forests 1 . In the canton of Jura, this problem mainly concerns the Ajoie region, where 1000 hectares of deciduous trees are affected 2 . This is of concern for the productivity and management of the forest, as well as for the security of walkers. In this context, the R\u00e9publique et Canton du Jura has contacted the Swiss Territorial Data Lab to develop a new monitoring solution based on data science, airborne images and LiDAR point clouds. The dieback symptoms are observable in the mortality of branches, the transparency of the tree crown and the leaf mass partition 3 . The vegetation health state influences the reflectance in images (airborne and satellite), which is often used as a monitoring tool, in particular under the form of vegetation indices: Normalized Difference Vegetation Index (NDVI), a combination of the near-infrared and red bands quantifying vegetation health; Vegetation Health Index (VHI), an index quantifying the decrease or increase of vegetation in comparison to a reference state. For instance, Brun et al. studied early-wilting in Central European forests with time series of the Normalized Difference Vegetation Index (NDVI) and estimate the surface concerned by early leaf-shedding 4 . Another technology used to monitor forests is light detection and ranging (LiDAR) as it penetrates the canopy and gives 3D information on trees and forest structures. Several forest and tree descriptors such as the canopy cover 5 or the standard deviation of crown return intensity 6 can be derived from the LiDAR point cloud to monitor vegetation health state. In 5 , the study was conducted at tree level, whereas in 6 stand level was studied. To work at tree level, it is necessary to segment individual trees in the LiDAR point cloud. On complex forests, like with a dense understory near tree stems, it is challenging to get correct segments without manual corrections. The aim of this project is to provide foresters with a map to help plan the felling of beech trees in the Ajoie's forests. To do so, we developed a combined method using LiDAR point clouds and airborne and satellite multispectral images to determine the health state of beech trees. 2. Study area \u00b6 The study was conducted in two areas of interest in the Ajoie region (Fig. 1.A); one near Mi\u00e9court (Fig. 1.B), the other one near Beurnev\u00e9sin (Fig. 1.C). Altogether they cover 5 km 2 , 1.4 % of the Canton of Jura's forests 7 . Mi\u00e9court sub-area is west-south and south oriented, whereas Beurnev\u00e9sin sub-area is rather east-south and south oriented. They are in the same altitude range (600-700 m) and are 2 km away from each other, thus near the same weather station. Figure 1: The study area is composed of two areas of interest. 3. Data \u00b6 The project makes use of different data types: LiDAR point cloud, airborne and satellite imagery, and ground truth data. Table 1 gives an overview of the data and their characteristics. Data have been acquired in late summer 2022 to have an actual and temporally correlated information on the health state of beech trees. Table 1: Overview of the data used in the project. Resolution Acquisition time Proprietary LiDAR 50-100 pts/m 2 08.2022 R\u00e9publique et Canton du Jura Airborne images 0.03 m 08.2022 R\u00e9publique et Canton du Jura Yearly variation of NDVI 10 m 06.2015-08.2022 Bern University of Applied Science (HAFL) and the Federal Office for Environment (BAFU) Weekly vegetation health index 10 m 06.2015-08.2022 ExoLabs Ground truth - (point data) 08.-10.2022 R\u00e9publique et Canton du Jura 3.1 LiDAR point cloud \u00b6 The LiDAR dataset was acquired on the 16th of August 2023 and its point density is 50-100 pts/m\u00b2. It is classified in the following classes: ground, low vegetation (2-10m), middle vegetation (10-20m) and high vegetation (20 m and above). It was delivered in the LAS format and had reflectance values 8 in the intensity storage field. 3.2 Airborne images \u00b6 The airborne images have a ground resolution of 3 cm and were acquired simultaneously to the LiDAR dataset. The camera captured the RGB bands, as well as the near infrared (NIR) one. The acquisition of images with a lot of overlap and oblique views allowed the production of a true orthoimage for a perfect match with the LiDAR point cloud and the data of the ground truth. 3.3 Satellite images \u00b6 The Sentinel-2 mission from the European Space Agency is passing every 6 days over Switzerland and allows free temporal monitoring at a 10 m resolution. The archives are available back to the beginning of beech tree dieback in 2018. 3.3.1 Yearly variation of NDVI \u00b6 The Bern University of Applied Science (HAFL) and the Federal Office for Environment (BAFU) have developed Web Services for vegetation monitoring derived from Sentinel-2 images. For this project, the yearly variation of NDVI 9 between two successive years is used. It measures the decrease in vegetation activity between August of one year (e.g. 2018) and June of the following year (e.g. 2019). The decrease is derived from rasters made of maximum values of the NDVI in June, July or August. The data are downloaded from the WCS service which delivers \"row\" indices: the NDVI values are not cut for a minimal threshold. 3.3.2 VHI \u00b6 The Vegetation Health Index (VHI) was generated by ETHZ, WSL and ExoLab within the SILVA project 10 which proposes several indices for forest monitoring. VHI from 2016 to 2022 is used. It is computed mainly out of Sentinel-2 images, but also out of images from other satellite missions, in order to have data to obtain a weekly index with no time gap. 3.4 Ground truth \u00b6 The ground truth was collected between August and October 2022 by foresters. They assessed the health of the beech trees based on four criteria 3 : mortality of branches; transparency of the tree crown; leaf mass partition; trunk condition and other health aspects. In addition, each tree was associated with its coordinates and pictures as illustrated in Figure 1 and Figure 2 respectively. The forester surveyed: 75 healthy, 77 unhealthy and 56 dead trees. Tree locations were first identified in the field with a GPS-enabled tablet on which the 2022 SWISSIMAGE mosaic was displayed. Afterwards, the tree locations were precisely adjusted on the trunk locations by visually locating the corresponding stems in the LiDAR point cloud with the help of the pictures taken in the field. The location and health status of a further 18 beech trees were added in July 2023. These 226 beeches - under which are 76 healthy, 77 affected and 73 dead trees - surveyed at the two dates are defined as the ground truth for this project. Figure 2: Examples of the three health states: left, a healthy tree with a dense green tree crown; center, an unhealthy tree with dead twigs and a scarce foliage; right, a dead tree completely dry. 4. Method \u00b6 The method developed is based on the processing of LiDAR point clouds and of airborne images . Ready-made vegetation indices derived from satellite imagery were also used. First, a segmentation of the trees in the LiDAR point cloud was carried out using the Digital-Forestry-Toolbox (DFT) 11 . Then, descriptors for the health state of the beech trees were derived from each dataset. Boxplots and corresponding t-test are computed to evaluate the ability of descriptors to differentiate the three health states. A t-test value below 0.01 indicates that there is a significant difference between the means of two classes. Finally, the descriptors were used jointly with the ground truth to train a random forest (RF) algorithm, before inferring for the study area. Figure 3: Overview of the methodology, which processes the data into health descriptors for beech trees, before training and evaluating a random forest. 4.1 LiDAR processing \u00b6 At the beginning of LiDAR processing, exploration of the data motivated the segmentation and descriptors computation. 4.1.2 Data exploration \u00b6 In order to get an understanding of the available information at the tree level, we manually segmented three healthy, five unhealthy and three dead trees. More unhealthy trees have been segmented to better represent dieback symptoms. Vertical slices of each tree were rotary extracted, providing visual information on the health state. 4.1.3 Segmentation \u00b6 To be able to describe the health state of each tree, segmentation of the forest was performed using the DFT. Parameters have been tuned to find an appropriate segmentation. Two strategies for peak isolation were tested on the canopy height model (CHM): Maxima smoothing: a height difference is set below which all local maxima are suppressed. Local maxima within search radius: the size of the dilation window for identification of maxima is dependent on the height. Each peak isolation method was tested on a range of parameters and on different cell resolutions for the CHM computation. The detailed plan of the simulation is given in Appendix 1 . The minimum tree height was set to 10 m. For computation time reasons, only 3 LiDAR tiles with 55 ground truth (GT) trees located on them were processed. To find the best segmentation, the locations of the GT trees were compared to the location of the segment peaks. GT trees with a segmented peak less than 4 m away were considered as True Positive (TP). The best segmentation was the one with the most TP. 4.1.4 Structural descriptors \u00b6 An alternative to the segmentation is to change of paradigm and perform the analyses at the stand level. Meng et al. 6 derived structural descriptors for acacia dieback at the stand level based on LiDAR point cloud. By adapting their method to the present case, the following descriptors were derived from the LiDAR point cloud using the LidR library from R 12 : Canopy maximal height. Scale and shape parameters of the Weibull density function fitted for the point distribution along the height. Coefficient of variation of leaf area density (cvLAD) describing the distribution of the vertical structure of photosynthetic tissue along the height. Vertical Complexity Index (VCI): Entropy measure of the vertical distribution of vegetation. Standard deviation of the canopy height model (sdCHM), reflects canopy height variations. Canopy cover (CC) and standard deviation (sdCC), reflects foliage density and coverage. Above ground biomass height (AGH), reflects the understory height until 10 m. Descriptors 1 to 6 are directly overtaken from Meng et al. All the descriptors were first computed for three grid resolutions: 10 m, 5 m and 2.5 m. In a second time, the DFT segments were considered as an adaptive grid around the trees, with the assumption that it is still more natural than a regular grid. Then, structural descriptors for vertical points distribution (descriptors 1 to 4) were computed on each segment, whereas descriptors for horizontal points distribution (descriptors 5 to 7) have been processed for 2.5 m grid. A weight was applied to the value of the latter descriptors according to the area of grid cells included in the footprint of the segments. Furthermore, LiDAR reflectance mean and standard deviation (sd) were computed for the segment crowns to differentiate them by their reflectance. 4.2 Image processing \u00b6 For the image processing, an initial step was to compute the normalized difference vegetation index (NDVI) for each raster image. The normalized difference vegetation index (NDVI) is an index commonly used for the estimation of the health state of vegetation 5 13 14 . \\[\\begin{align} \\ NDVI = {NIR-R \\over NIR+R} \\ \\end{align}\\] where NIR and R are the value of the pixel in the near-infrared and red band respectively. To uncover potential distinctive features between the classes, boxplots and principal component analysis were used on the images four bands (RGB-NIR) and the NDVI. Firstly, we tested if the brute pixel values allowed the distinction between classes at a pixel level. This method avoids the pit of the forest segmentation into trees. Secondly, we tested the same method, but with some low-pass filter to reduce the noise in the data. Thirdly, we tried to find distinct statistical features at the tree level. This approach allows decreasing the noise that can be present in high-resolution information. However, it necessitates having a reasonably good segmentation of the trees. Finally, color filtering and edge detection were tested in order to highlight and extract the linear structure of the branches. For each treatment, it is possible to do it with or without a mask on the tree height. As only trees between 20 m and 40 m tall are affected by dieback, a mask based on the Canopy Height Model (CHM) raster derived from the LiDAR point cloud was tested. Figure 4: Overview of different possible data treatments for the the statistical analysis. 4.2.1 Statistical tests on the original and filtered pixels \u00b6 The statistical tests were performed on the original and filtered pixels. Two low pass filters were tested: Gaussian with a sigma of 5; Bilinear downsampling with scale factors of 1/3, 1/5 and 1/17, corresponding to resolutions of 9, 15 and 50 cm. In the original and the filtered cases, the pixels for each GT tree were extracted from the images and sorted by class. Then, the corresponding NDVI is computed. Each pixel has 5 attributes corresponding to its value on the four bands (R, G, B, NIR) and its NDVI. First, the per-class boxplots of the attributes were executed to see if the distinction between classes was possible on one or several bands or on the NDVI. Then, the principal component analysis (PCA) was computed on the same values to see if their linear combination allowed the distinction of the classes. 4.2.2. Statistical tests at the tree level \u00b6 For the tests at the tree level, the GT trees were segmented by hand. For each tree, the statistics of the pixels were calculated over its polygon, on each band and for the NDVI. Then, the results were sorted by class. Each tree has five attributes per band or index corresponding to the statistics of its pixels: minimum (min), maximum (max), mean, median and standard deviation (std). Like with the pixels, the per-class boxplots of the attributes were executed to see if the distinction between classes was possible. Then, the PCA was computed. 4.2.3 Extraction of branches \u00b6 One of the beneficiaries noted that the branches are clearly visible on the RGB images. Therefore, it may be possible to isolate them with color filtering based on the RGB bands. We calibrated an RGB filter through trial and error to produce a binary mask indicating the location of the branches. A sieve filter was used to reduce the noise due to the lighter parts of the foliage. Then, a binary dilation was performed on the mask to highlight the results. Otherwise, they would be too thin to be visible at a 1:5'000 scale. A mask based on the CHM is integrated to the results to limit the influence of the ground. The branches have a characteristic linear structure. In addition, the branches of dead trees tend to be very light line on the dark forest ground and understory. Therefore, we thought that we may detect the dead branches thanks to edge detection. We used the canny edge detector and tested the python functions of the libraries openCV and skimage . 4.3 Satellite-based indices \u00b6 The yearly variation of NDVI and the VHI were used to take account of historical variations of NDVI from 2015 to 2022. For the VHI, the mean for each year is computed over the months considered for the yearly variation of NDVI. The pertinence of using these indices was explored: the values for each tree in the ground truth were extracted and observed in boxplots per health class in 2022 per year pair over the time span from 2015 to 2022. 4.4 Random Forest \u00b6 In R 12 , the caret and randomForest packages were used to train the random forest and make predictions. First, the ground truth was split into the training and the test datasets, with each class being split 70 % into the training set and 30 % into the test set. Health classes with not enough samples were completed with copies. Optimization of the RF was performed on the number of trees to develop and on the number of randomly sampled descriptors to test at each split. In addition, 5-fold cross-validation was used to ensure the use of different parts of the dataset. The search parameter space was from 100 to 1000 decision trees and from 4 to 10 descriptors as the default value is the square root of all descriptors, i.e. 7. RF was assessed using a custom metric, which is an adaptation of the false positive rate for the healthy class. It minimizes the amount of false healthy detections and of dead trees predicted as unhealthy (false unhealthy). It is called custom false positive rate (cFPR) in the text. It was preferred to have a model with more unhealthy predictions to control on the field, than missing unhealthy or dead trees. The cFPR goes from 0 (best) to 1 (worse). Table 2: Confusion matrix for the three health classes. Ground truth Healthy Unhealthy Dead Prediction Healthy A B C Unhealthy D E F Dead G H I According to the confusion matrix in Table 2, the cFPR is computed as follows: \\[\\begin{align} \\ cFPR = {(\ud835\udc35+\ud835\udc36+\ud835\udc39)\\over(\ud835\udc35+\ud835\udc36+\ud835\udc38+\ud835\udc39+\ud835\udc3b+\ud835\udc3c)}. \\ \\end{align}\\] In addition, the overall accuracy (OA), i.e. the ratio of correct predictions over all the predictions, and the sensitivity, which is, per class, the number of correct predictions divided by the number of samples from that class, are used. An ablation study was performed on descriptors to assess the contribution of the different data sources to the final performance. An \u201cimportant\u201d descriptor is having a strong influence on the increase in prediction errors in the case of random reallocation of the descriptor values in the training set. After the optimization, predictions for each DFT segments were computed using the best model according to the cFPR. The inferences were delivered as a thematic map with colors indicating the health state and hue indicating the fraction of decision trees in the RF having voted for the class (vote fraction). The purpose is to give a confidence information, with high vote fraction indicating robust predictions. Furthermore, the ground truth was evaluated for quantity and quality by two means: Removal of samples and its impact on the metric evaluation Splitting the training set into training subsets to evaluate on the original test set. Finally, after having developed the descriptors and the routine on high-quality data, we downgraded them to have resolutions similar to the ones of the swisstopo products (LiDAR: 20 pt/m 2 , orthoimage: 10 cm) and performed again the optimization and prediction steps. Indeed, the data acquisition was especially commissioned for this project and only covers the study area. If in the future the method should be extended, one would like to test if a lower resolution as the one of the standard national-wide product SWISSIMAGE could be sufficient. 5 Results and discussion \u00b6 In this section, the results obtained during the processing of each data source into descriptors are presented and discussed, followed by a section on the random forest results. 5.1 LiDAR processing \u00b6 For the LiDAR data, the reader will first discover the aspect of beech trees in the LiDAR point cloud according to their health state as studied in the data exploration. Then, the segmentation results and the obtained LiDAR-based descriptors will be presented. 5.1.2 Data exploration for 11 beech trees \u00b6 The vertical slices of 11 beech trees provided visual information on health state: branch shape, clearer horizontal and vertical point distribution. In Figure 5, one can appreciate the information shown by these vertical slices. The linear structure of the dead branches, the denser foliage of the healthy tree and the already smaller tree crown of the dead tree are well recognizable. Figure 5: Slices for three trees with different health state. Vertical slices of each tree were rotary extracted, providing visual information on the health state. Dead twigs and density of foliage are particularly distinctive. Some deep learning image classifier could treat LiDAR point cloud slices as artificial images and learn from them before classifying any arbitrary slice from the LiDAR point cloud. However, the subject is not adapted to transfer learning because 200 samples are not enough to train a model to classify three new classes, especially via images without resemblance to datasets used to pre-train deep learning models. 5.1.3 Segmentation \u00b6 Since the tree health classes were visually recognizable for the 11 trees, it was very interesting to individuate each tree in the LiDAR point cloud. After having searched for optimal parameters in the DFT, the best realization of each peak isolation method either slightly oversegmented or slightly undersegmented the forest. The forest has a complex structure with dominant and co-dominant trees, and with understory. A simple yet frequent example is the situation of a small pine growing in the shadow of a beech tree. It is difficult for an algorithm to differentiate between the points belonging to the pine and those belonging to the beech. Complex tree crowns (not spheric, with two maxima) especially lead to oversegmentation. As best segmentation, the smoothing of maxima on a 0.5 m resolution CHM was identified. Out of 55 GT trees, 52 were within a 4 m distance from the centroid of a segment. The total number of segments is 7347. This corresponds to 272 trees/ha. Report of a forest inventory in the Jura forest between 2003 and 2005 indicated a density of 286 trees/ha in high forest 7 . Since the ground truth is only made of point coordinates, it is difficult to assess quantitatively the correctness of the segments, i.e. the attribution of each point to the right segment. Therefore, the work at the tree level is only approximate. 5.1.4 Structural descriptors \u00b6 Nevertheless, the structural descriptors for each tree were computed from the segmented LiDAR point cloud. The t-test between health classes for each descriptor at each resolution (10 m, 5 m, 2.5 m and per-tree grid) are given in Appendices 2 , 3 , 4 and 5 . The number of significant descriptors per resolution is indicated to understand better the effect on the RF: at 10 m: 13 at 5 m: 17 at 2.5 m: 18 per tree: 15 The simulations at 5 m and at 2.5 m seemed a priori the most promising. In both constellations, t-tests indicated a significant different distribution for: maximal height, between the three health states, sdCHM, between the three health states, cvLAD, healthy trees against the others, mean reflectance, healthy trees against the others, VCI, healthy trees against unhealthy trees, canopy cover, healthy trees against dead trees, standard deviation of the reflectance, dead trees against the others, sdCC, dead trees against the others. The maximal height and the sdCHM appear to be the most suited descriptors to separate the three health states. The other descriptors are differentiating healthy trees from the others or dead trees from the others. From the 11 LiDAR-based descriptors, 8 are at least significant for the comparison between two classes. 5.2 Image processing \u00b6 Boxplots and PCA are given to illustrate the results of the image processing exploration. As the masking of pixels below and above the affected height made no difference in the interpretation of the results, they are presented here with the height mask. 5.2.1 Boxplots and PCA over the pixel values of the original images \u00b6 When the pixel values of the original images per health class are compared in boxplots (ex. Fig. 6), the sole brute value of the pixel is not enough to clearly distinguish between classes. Figure 6: Boxplots of the unfiltered pixel values on the different bands and the NDVI index by health class. The PCA in Figure 7 shows that it is not possible to distinguish the groups based on a linear combination of the brute pixel values of the band and NDVI. Figure 7: Distribution of the pixels in the space of the principal components based on the pixel values on the different branches and the NDVI. 5.2.2 Boxplots and PCA over the pixel values of the filtered images \u00b6 A better separation of the different classes is noticeable after the application of a Gaussian filter. The most promising band is the NIR one for a separation of the healthy and dead classes. On the NDVI, the distinction between those two classes should also be possible as illustrated in Figure 8. In all cases, there is no possible distinction between the healthy and unhealthy classes. The separation between the healthy and dead trees on the NIR band would be around 130 and the slight overlap on the NDVI band is between approx. 0.04 and approx. 0.07. Figure 8: Boxplots of the pixel values on the different bands and the NDVI by health class after a Gaussian filter with sigma=5. As for the brute pixels, the overlap between the different classes is still very present in the PCA (Fig. 9). Figure 9: Distribution of the pixels in the space of the principal components based on the pixel values on the different branches and the NDVI after a Gaussian filter with sigma=5. The boxplots produced on the resampled images (Figure 10) give similar results to the ones with the Gaussian filter. The healthy and dead classes are separated on the NIR band around 130. The unhealthy class stays similar to the healthy one. Figure 10: Boxplots of the pixel values on the different bands and the NDVI by health class after a downsampling filter with a factor 1/3. According to the PCA in Figure 11, it seems indeed not possible to distinguish between the classes only with the information presented in this section. Figure 11: Distribution of the pixels in the space of the principal components based on the pixel values on the different branches and the NDVI after a downsampling filter with a factor 1/3. When the factor for the resampling is decreased, i.e. when the resulting resolution increases, the separation on the NIR band becomes stronger. With a factor of 1/17, the healthy and dead classes on the NDVI are almost entirely separated around the value of 0.04. 5.2.3 Boxplots and PCA over the tree statistics \u00b6 As an example for the per-tree statistics, the boxplots and PCA for the blue band are presented in Figures 12 to 14. On the mean and on the standard deviation, healthy and dead classes are well differentiated on the blue band as visible on Figure 12. The same is observed on the mean, median, and minimum of the NDVI, as well as on the maximum, mean, and median of the NIR band. However, there is no possible differentiation on the red and green bands. Figure 12: Boxplots of the statistics values for each tree on the blue band by health class. In the PCA in Figure 13, the groups of the healthy and dead trees are quite well separated, mostly along the first component. Figure 13: Distribution of the trees in the space of the principal components based on their statistical values on the blue band. On Figure 14, the first principal component is influenced principally by the standard deviation of the blue band. The mean, the median and the max have an influence too. This is in accordance with the boxplots where the standard deviation values presented the largest gap between classes. Figure 14: Influence of the statistics for the blue band on the first and second principal components. The point clouds of the dead and healthy classes are also well separated on the PCA of the NIR band and of the NDVI. No separation is visible on the PCA of the green and red bands. 5.2.4 Extraction of branches \u00b6 Finally, the extraction of dead branches was performed. Use of an RGB filter \u00b6 The result of the RGB filter is displayed in Figure 15. It is important to include the binary CHM in the visualization. Otherwise, the ground can have a significant influence on certain zones and distract from the dead trees. Some interferences can still be seen among the coniferous trees that have a similar light color as dead trees. Figure 15: Results produced by the RGB filter for the detection and highlight of dead branches over a zone with coniferous, healthy deciduous and dead deciduous trees. The parts in grey are the zones masked by the filter on the height. Use of the canny edge detector \u00b6 Figure 16 presents the result for the blue band which was the most promising one. The dead branches are well captured. However, there is a lot of noise around them due to the high contrasts in some parts of the foliage. The result is not usable as is. Using a stricter filter decreased the noise, but it also decreased the captured pixels of the branches. In addition, using a sieve filter or trying to combine the results with the ones of the RGB filter did not improve the situation. Figure 16: Test of the canny edge detector from sklearn over a dead tree by using only the blue band. The parts in grey are the zones masked by the CHM filter on the height. The results for the other bands, RGB images or the NDVI were not usable either. 5.2.5 Discussion \u00b6 The results at the tree level are the most promising ones. They are integrated into the random forest. Choosing to work at the tree-level means that all the trees must be segmented with the DFT. This adds uncertainties to the results. As explained in the dedicated section , the DFT has a tendency of over/under-segmenting the results. The procedures at the pixel level, whether on filtered or unfiltered images, are abandoned. For the branch detection, the results were compared with some observations on the terrain by a forest expert. He assessed the result as incorrect in several parts of the forest. Therefore, the use of dead branch detection was not integrated in the random forest. In addition, the edge detection was maybe not the right choice for dead branches and maybe we should have taken an approach more focused on detection of straight lines or graphs. The chance of success of such methods are difficult to predict as there can be a lot of variations in the form of the dead branches. 5.3 Vegetation indices from satellite imagery \u00b6 The t-test used to evaluate the ability of satellite indices to differentiate between health states are given in Appendices 6 and 7 . In the following two subsections, solely the significant tested groups are mentioned for understanding the RF performance. 5.3.1 Yearly variation of NDVI \u00b6 t-test on the yearly variation of NDVI indicated significance between: all health states in 2018-2019: 2018 was an especially dry and hot year, whereas 2019 was in the seasonal normals. The recovery in 2019 may have differed according to the health classes. healthy and other trees in 2016-2017 and 2019-2020: maybe healthy trees are responding diversely to environmental factors than affected trees. healthy and dead trees in 2021-2022: this reflects a higher increase of NDVI for the dead trees. Is the understory benefitting from clearer forest structure? 5.3.2 Vegetation Healthy Index \u00b6 t-test on the VHI indicated significance between: dead and other trees in 2017 healthy and dead trees in 2018 healthy and other trees in 2019 unhealthy and other trees in 2021 dead and unhealthy trees in 2020 and 2022 Explanations similar to those for NDVI may partly explain the significance obtained. In any case,it is encouraging that the VHI helps to differentiate health classes thanks to different evolution through the years. 5.4 Random Forest \u00b6 The results of the RF that are presented and discussed are: (1) the optimization and ablation study, (2) the ground truth analysis, (3) the predictions for the AOI and (4) the performance with downgraded data. 5.4.1 Optimization and ablation study \u00b6 In Table 3, performance for VHI and yearly variation of NDVI (yvNDVI) descriptors using their value at the location of the GT trees are compared. VHI (cFPR = 0.24, OA = 0.63) performed better than the yearly variation of NDVI (cFPR = 0.39, OA = 0.5). Both groups of descriptors are mostly derived from satellite data with the same resolution (10 m). A conceptual difference is that the VHI is a deviation to a long-term reference value; whereas the yearly variation of NDVI reflects the change between two years. For the latter, values can be high or low independently of the actual health state. Example, a succession of two bad years will indicate few to no differences in NDVI. Table 3: RF performance with satellite-based descriptors. Descriptors cFPR OA VHI 0.24 0.63 yvNDVI 0.39 0.5 Nonetheless, only the yearly variation of NDVI is used hereafter as it is available free of charge. Regarding the LiDAR descriptors, the tested resolutions indicated that the 5 m resolution (cFPR = 0.2 and OA = 0.65) was performing the best for the cFPR, but that the per-tree descriptors had the higher OA (cFPR = 0.33, OA = 0.67). At 5 m resolution, fewer affected trees are missed, but there are more errors in the classification, so more control on the field would have to be done. The question of which grid resolution to use on the forest is a complex one, as the forest consists of trees of different sizes. Further, even if dieback affects some areas more severely than others, it's not a continuous phenomenon, and it is important to be able to clearly delimit each tree. However, a grid, as the 2.5 m one, can also hinder to capture the entirety of some trees and the performance may decrease (LiDAR, 2.5 m, OA=0.63). Table 4: RF performance with LiDAR-based descriptors at different resolutions. Descriptors cFPR OA LiDAR, 10 m 0.3 0.6 LiDAR, 5 m 0.2 0.65 LiDAR, 2.5 m 0.28 0.63 LiDAR, per tree 0.33 0.67 Then, the 5 m resolution descriptors are kept for the rest of the analysis according to the decision of reducing missed dying trees. The ablation study performed on the descriptor sources is summarized in Table 5.A and Table 5.B. The two tables reflect performance for two different partitions of the samples in training and test sets. Since the performance is varying form several percents, the performance is impacted by the repartition of the samples. Following those values, the best setups for each partition respectively are the full model (cFPR = 0.13, OA = 0.76) and the airborne-based model (cFPR = 0.11, OA = 0.79). One notices that all the health classes are not predicted with the same accuracy. The airborne-based model, as described in Section 5.2.3 , is less sensitive to the healthy class; whereas the satellite-based model and the LiDAR-based model is more polarized to healthy and dead classes, with low sensitivity performance in the unhealthy class. Table 5.A: Ablation study results, partition A of the dataset. Descriptor sources cFPR OA Sensitivity healthy Sensitivity unhealthy Sensitivity dead LiDAR 0.2 0.65 0.65 0.61 0.71 Airborne images 0.18 0.63 0.43 0.61 0.94 yvNDVI 0.4 0.49 0.78 0.26 0.41 LiDAR and yvNDVI 0.23 0.7 0.74 0.61 0.76 Airborne images and yvNDVI 0.15 0.73 0.65 0.7 0.88 LiDAR, airborne images and yvNDVI 0.13 0.76 0.65 0.74 0.94 Table 5.B: Ablation study results, partition B of the dataset. Descriptor sources cFPR OA Sensitivity healthy Sensitivity unhealthy Sensitivity dead LiDAR 0.19 0.71 0.76 0.5 0.88 Airborne images 0.11 0.79 0.62 0.8 1 yvdNDVI 0.38 0.62 0.81 0.4 0.65 LiDAR and yvNDVI 0.27 0.74 0.86 0.5 0.88 Airborne images and yvNDVI 0.14 0.78 0.62 0.8 0.94 LiDAR, airborne images and yvNDVI 0.14 0.79 0.71 0.7 1 Even if the performance varies according to the dataset partition, the important descriptors remain quite similar between the two partitions as displayed in Figure 17.A and Figure 17.B. The yearly difference of NDVI between 2018 and 2019 ( NDVI_diff_1918 ) is the most important descriptor; standard deviation on the blue band ( b_std ) and the mean on the NIR band and NDVI ( nir_mean and ndvi_mean ) are standing out in both cases; from the LiDAR, the standard deviation of canopy cover ( sdcc ) and of the LiDAR reflectance ( i_sd_seg ) are the most important descriptors. The order of magnitude explains the better performance on partition B with the airborne-based model: for instance, the b_std has the magnitude of 7.6 instead of 4.6 with Partition B. Figure 17.A: Important descriptors for the full model, dataset partition A. Figure 17.B: Important descriptors for the full model, dataset partition B. The most important descriptor of the full model resulted to be the yearly variation of NDVI between 2018 and 2019. The former was a year with a dry and hot summer which has stressed beech trees and probably participated to cause forest damages 1 . This corroborates the ability of our RF method to monitor the response of trees to extreme drought events. However, the 10 m resolution of the index and the different adaptability of individual beech trees to drought may make the relationship between current health status and the index weak. This can explain that the presence of this descriptor in the full model doesn't offer better performance than the airborne-based model to predict the health state. Both the mean on the NIR band and the standard deviation on the blue band play an important role. Statistical study in Section 5.2.3 indicated that the models might confuse healthy and unhealthy classes. On one hand, airborne imagery only sees the top of the crown and may miss useful information on hidden part. On the other hand, airborne imagery has a good ability to detect dead trees thanks to different reflectance values in NIR and blue bands. One argument that could explain the lower performance of the model based on LiDAR-based descriptors is the difficulty to find the right scale to perform the analysis as beech trees can show a wide range of crown diameters. 5.4.2 Ground truth analysis \u00b6 With progressive removal of sample individuals from the training set, impact of individual beech trees on the performance is further analyzed. The performance variation is shown in Figure 18. The performance is rather stable in the sense that the sensitivities stay in a range of values similar to the initial one up to 40 samples removed, but with each removal, a slight instability in the metrics is visible. The size of the peaks indicates variations of 1 prediction for the dead class, but up to 6 predictions for the unhealthy class and up to 7 for the healthy class. During the sample removal, some samples were always predicted correctly, whereas others were often misclassified leading to the peaks in Figure 18. With the large number of descriptors in the full model, there is no straightforward profile of outliers to identify. Figure 18: Evolution of the per-class sensitivity with removal of samples. In addition, the subsampling of the training set in Table 6 shows that the OA varies only by max. 3% according to the subset used. It indicated again that the amount of ground truth allows to reach a stable OA range, but the characteristics of the samples does not allow a stable OA value. The sensitivity for the dead classes is stable, whereas sensitivity for healthy and unhealthy class are varying. Table 6: Performance according to different random seed for the creation of the training subset. Training set subpartition cFPR OA Sensitivity healthy Sensitivity unhealthy Sensitivity dead Random seed = 2 0.13 0.76 0.61 0.83 0.88 Random seed = 22 0.15 0.78 0.70 0.78 0.88 Random seed = 222 0.18 0.75 0.65 0.74 0.88 Random seed = 2222 0.13 0.76 0.65 0.78 0.88 Random seed = 22222 0.10 0.78 0.65 0.83 0.88 5.4.3 Predictions \u00b6 The full model and the airborne-based-model were used to infer the health state of trees in the study area (Fig. 19). As indicated in Table 7, with the full model, 35.1 % of the segments were predicted as healthy, 53 % as unhealthy and 11.9 % as dead. With the airborne-based model, 42.6 % of the segments were predicted as healthy, 46.2 % as unhealthy and 11.2 % as dead. The two models agree on 74.3 % of the predictions. In the 25.6 % of disagreement, it is about 77.1% of disagreement between healthy and unhealthy predictions. Finally, 1.5% are critical disagreement (between healthy and dead classes). Table 7: Percentage of health in the AOI. Model Healthy [%] Unhealth [%] Dead [%] Full 35.1 53 11.9 Airborne-based 42.6 46.2 11.2 Control by forestry experts reported that the predictions mostly correspond to the field situation and that a weak vote fraction often corresponds to false predictions. They confirmed that the map is delivering useful information to help plan beech tree felling. The final model retained after excursion on the field is the full model. Figure 19: Extract of the predicted thematic health map. Green is for healthy, yellow for unhealthy, and red for dead trees. Hues indicate the RF fraction of votes. The predictions can be compared with the true orthophoto in the background. The polygons approximating the tree crowns correspond to the delimitation of segmented trees. 5.4.4 Downgraded data \u00b6 Finally, random forest models are trained and tested on downgraded data with the partition A of the ground truth for all descriptors and by descriptor sources. With this partition, RF have a better cFPR for the full model (0.08 instead of 0.13), the airborne-based model (0.08 instead of 0.21) and the LiDAR-based model (0.28 instead of 0.31). The OA is also better (full model: 0.84 instead of 0.76, airborne-based model: 0.77 instead of 0.63), except in the case of the LiDAR-based model (0.63 instead of 0.66). It indicated that the resolution of 10 cm in the aerial imagery does not weaken the model and can even improve it. For the LiDAR point cloud, a reduction by a factor 5 of the density has not changed much the performance. Table 7.A: Performance for RF trained and tested with the partition A of the dataset of downgraded data. Simulation cFPR OA Full 0.08 0.84 Airborne-based 0.08 0.77 LiDAR-based 0.28 0.63 Table 7.A: Performance for RF trained and tested with the partition A of the dataset for original data. Simulation cFPR OA Full 0.13 0.76 Airborne-based 0.21 0.63 LiDAR-based 0.31 0.66 When the important descriptors are compared between the original and downgraded model, one notices that the airborne descriptors gained in importance in the full model when data are downgraded. The downgraded model showed sufficient accuracy for the objective of the project. 6 Conclusion and outlook \u00b6 The study has demonstrated the ability of a random forest algorithm to learn from structural descriptors derived from LiDAR point clouds and from vegetation reflectance in airborne and satellite images to predict the health state of beech trees. Depending on the used datasets for training and test, the optimized full model including all descriptors reached an OA of 0.76 or of 0.79, with corresponding cFPR values of 0.13 and 0.14 respectively. These metrics are sufficient for the purpose of prioritizing beech tree felling. The produced map, with the predicted health state and the corresponding votes for the segments, delivers useful information for forest management. The cantonal foresters validated the outcomes of this proof-of-concept and explained how the location of affected beech trees as individuals or as groups are used to target high-priority areas. The full model highlighted the importance of the yearly variation of NDVI between a drought year (2018) and a normal year (2019). The airborne imagery showed good ability to predict dead trees, whereas confusion remained between healthy and unhealthy trees. The quality of the LiDAR point cloud segmentation may explain the limited performance of the LiDAR-based model. Finally, the model trained and tested on downgraded data gave an OA of 0.84 and a cFPR of 0.08. In this model, the airborne-based descriptors gained in importance. It was concluded that a 10 cm resolution may help the model by reducing the noise in the image. Outlooks for improving results include improving the ground truth representativeness of symptoms in the field and continuing research into descriptors for differentiating between healthy and unhealthy trees: For the image processing, suggestions are the integration of more statistics like the skewness and kurtosis of the reflectance as in Junttila et al. (2022) 15 . LiDAR-based descriptors had limited impact on the final results. To better valorize them for an application on beech trees, further research would be needed. Beside producing a cleaner segmentation and finding additional descriptors, it could consist in mixing the descriptors at the different resolutions and, with the help of the importance analysis, estimate at which resolution each descriptor brings the most information to the classification. The results showed the important contribution of vegetation indices derived from satellite imagery reflecting the drought year of 2018. If available, using historical image data of higher resolution to derive more descriptors could help improve individual tree health assessment. The possibility of further developments put aside, the challenge is now the extension of the methodology to a larger area. The simultaneity of the data is necessary to an accurate analysis. It has been shown that the representativeness of the ground truth has to be improved to obtain better and more stable results. Thus, for an extension to further areas, we recommend collecting additional ground truth measurements. The health state of the trees showed some autocorrelation that could have boosted our results and make them less representative of the whole forest. They should be more scattered in the forest. Furthermore, required data are a true orthophoto and a LiDAR point cloud for per-tree analysis. It should be possible to use an old LiDAR acquisition to produce a CHM and renounce to use LiDAR-based descriptors without degrading the performance of the model too much. 7 Appendixes \u00b6 7.1 Simulation plan for DFT parameter tuning \u00b6 Table 8: parameter tuning for DFT. CHM cell size [m] Maxima smoothing Local maxima within search radius 0.50 0.1 (3.09632 + 0.00895 * h^2)/2 0.3 (1.7425 * h^0.5566)/2 0.5 (1.2 + 0.16 * h)/2 1.00 0.1 (3.09632 + 0.00895 * h^2)/2 0.3 (1.7425 * h^0.5566)/2 0.5 (1.2 + 0.16 * h)/2 1.50 0.1 (3.09632 + 0.00895 * h^2)/2 0.3 (1.7425 * h^0.5566)/2 0.5 (1.2 + 0.16 * h)/2 2.00 0.1 (3.09632 + 0.00895 * h^2)/2 0.3 (1.7425 * h^0.5566)/2 0.5 (1.2 + 0.16 * h)/2 7.2 t-tests \u00b6 t-test were computed to evaluate the ability of descriptors to differentiate the three health states. A t-test value below 0.01 indicates that there is a significant difference between the means of two classes. 7.2.1 t-tests on LiDAR-based descriptors at 10 m \u00b6 Table 9: t-test on LiDAR-based descriptors at 10 m. Descriptors healthy vs. unhealthy healthy vs. dead unhealthy vs. dead maximal height 0.002 1.12E-11 3.23E-04 scale parameter 0.005 0.014 0.964 shape parameter 0.037 0.002 0.269 cvLAD 0.001 2.22E-04 0.353 VCI 0.426 0.094 0.358 mean reflectance 4.13E-05 0.002 0.164 sd of reflectance 0.612 3.33E-06 9.21E-05 canopy cover 0.009 0.069 0.340 sdCC 0.002 0.056 0.324 sdCHM 0.316 0.262 0.892 AGH 0.569 0.055 0.120 7.2.2 t-test on LiDAR-based descriptors at 5 m \u00b6 Table 10: t-test on LiDAR-based descriptors at 5 m. Descriptors healthy vs. unhealthy healthy vs. dead unhealthy vs. dead maximal height 0.001 4.67E-12 1.73E-04 scale parameter 0.072 0.831 0.204 shape parameter 0.142 0.654 0.361 cvLAD 9.14E-06 3.22E-05 0.667 VCI 0.006 0.104 0.485 mean reflectance 6.60E-05 2.10E-06 0.249 sd of reflectance 0.862 2.26E-08 9.24E-08 canopy cover 0.288 0.001 0.003 sdCC 1.42E-05 1.94E-11 0.001 sdCHM 0.004 1.94E-08 0.002 AGH 0.783 0.071 0.095 7.2.3 t-test on LiDAR-based descriptors at 2.5 m \u00b6 Table 11: t-test on LiDAR-based descriptors at 2.5 m. Descriptors healthy vs. unhealthy healthy vs. dead unhealthy vs. dead maximal height 3.76E-04 7.28E-11 4.80E-04 scale parameter 0.449 0.283 5.60E-01 shape parameter 0.229 0.087 0.462 cvLAD 3.59E-04 1.06E-07 0.012 VCI 0.004 1.99E-05 0.072 mean reflectance 3.15E-04 5.27E-07 0.068 sd of reflectance 0.498 1.10E-10 4.66E-11 canopy cover 0.431 0.004 0.019 sdCC 0.014 1.94E-13 6.94E-09 sdCHM 0.003 5.56E-07 0.006 AGH 0.910 0.132 0.132 7.2.4 t-test on LiDAR-based descriptors per tree \u00b6 Table 12: t-test on LiDAR-based descriptors per tree. Descriptors healthy vs. unhealthy healthy vs. dead unhealthy vs. dead maximal height 0.001 1.98E-11 2.61E-04 scale parameter 0.726 0.618 0.413 shape parameter 0.739 0.795 0.564 cvLAD 0.001 4.23E-04 0.526 VCI 0.145 0.312 0.763 mean reflectance 1.19E-04 0.001 0.949 sd of reflectance 0.674 3.70E-07 4.79E-07 canopy cover 0.431 0.005 0.023 sdCC 0.014 4.43E-13 1.10E-08 sdCHM 0.003 2.71E-07 0.004 AGH 0.910 0.090 0.087 7.2.5 t-tests on yearly variation of NDVI \u00b6 Table 13: t-test on yearly variation of NDVI. Descriptors healthy vs. unhealthy healthy vs. dead unhealthy vs. dead 2016 0.177 0.441 0.037 2017 0.079 2.20E-06 0.004 2018 0.093 1.57E-04 0.132 2019 0.003 0.001 0.816 2020 0.536 0.041 0.005 2021 0.002 0.894 0.003 2022 0.131 0.103 0.002 7.2.6 t-test on VHI \u00b6 Table 14: t-test on VHI. Descriptors healthy vs. unhealthy healthy vs. dead unhealthy vs. dead 2015-2016 0.402 0.572 0.767 2016-2017 0.005 0.002 0.885 2017-2018 0.769 0.329 0.505 2018-2019 2.64E-05 3.98E-14 0.001 2019-2020 7.86E-06 9.55E-05 0.427 2020-2021 0.028 0.790 0.018 2021-2022 0.218 0.001 0.080 8 Sources and references \u00b6 Indications on software and hardware requirements, as well as the code used to perform the project, are available on GitHub: https://github.com/swiss-territorial-data-lab/proj-hetres/tree/main. Other sources of information mentioned in this documentation are listed here: OFEV et al. (\u00e9d.). La canicule et la s\u00e9cheresse de l\u2019\u00e9t\u00e9 2018. Impacts sur l\u2019homme et l\u2019environnement. Technical Report 1909, Office f\u00e9d\u00e9ral de l\u2019environnement, Berne, 2019. \u21a9 \u21a9 Beno\u00eet Grandclement and Daniel Bachmann. 19h30 - En Suisse, la s\u00e9cheresse qui s\u00e9vit depuis plusieurs semaines frappe durement les arbres - Play RTS. February 2023. URL: https://www.rts.ch/play/tv/19h30/video/en-suisse-la-secheresse-qui-sevit-depuis-plusieurs-semaines-frappe-durement-les-arbres?urn=urn:rts:video:13829524 (visited on 2023-03-28). \u21a9 Xavier Gauquelin, editor. Guide de gestion des for\u00eats en crise sanitaire . Office National des For\u00eats, Institut pour le D\u00e9veloppement Forestier, Paris, 2010. ISBN 978-2-84207-344-2. \u21a9 \u21a9 Philipp Brun, Achilleas Psomas, Christian Ginzler, Wilfried Thuiller, Massimiliano Zappa, and Niklaus E. Zimmermann. Large-scale early-wilting response of Central European forests to the 2018 extreme drought. Global Change Biology , 26(12):7021\u20137035, 2020. _eprint: https://onlinelibrary.wiley.com/doi/pdf/10.1111/gcb.15360. URL: https://onlinelibrary.wiley.com/doi/abs/10.1111/gcb.15360 (visited on 2022-10-13), doi:10.1111/gcb.15360 . \u21a9 Run Yu, Youqing Luo, Quan Zhou, Xudong Zhang, Dewei Wu, and Lili Ren. A machine learning algorithm to detect pine wilt disease using UAV-based hyperspectral imagery and LiDAR data at the tree level. International Journal of Applied Earth Observation and Geoinformation , 101:102363, September 2021. URL: https://www.sciencedirect.com/science/article/pii/S0303243421000702 (visited on 2022-10-13), doi:10.1016/j.jag.2021.102363 . \u21a9 \u21a9 \u21a9 Pengyu Meng, Hong Wang, Shuhong Qin, Xiuneng Li, Zhenglin Song, Yicong Wang, Yi Yang, and Jay Gao. Health assessment of plantations based on LiDAR canopy spatial structure parameters. International Journal of Digital Earth , 15(1):712\u2013729, December 2022. URL: https://www.tandfonline.com/doi/full/10.1080/17538947.2022.2059114 (visited on 2022-12-07), doi:10.1080/17538947.2022.2059114 . \u21a9 \u21a9 \u21a9 Patrice Eschmann, Pascal Kohler, Vincent Brahier, and Jo\u00ebl Theubet. La for\u00eat jurassienne en chiffres, R\u00e9sultats et interpr\u00e9tation de l'inventaire forestier cantonal 2003 - 2005. Technical Report, R\u00e9publique et Canton du Jura, St-Ursanne, 2006. URL: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwjHuZyfhoSBAxU3hP0HHeBtC4sQFnoECDcQAQ&url=https%3A%2F%2Fwww.jura.ch%2FHtdocs%2FFiles%2FDepartements%2FDEE%2FENV%2FFOR%2FDocuments%2Fpdf%2Frapportinventfor0305.pdf%3Fdownload%3D1&usg=AOvVaw0yr9WOtxMyY-87avVMS9YM&opi=89978449However . \u21a9 \u21a9 Agnieska Ptak. (5) Amplitude vs Reflectance \\textbar LinkedIn. June 2020. URL: https://www.linkedin.com/pulse/amplitude-vs-reflectance-agnieszka-ptak/ (visited on 2023-08-11). \u21a9 BFH-HAFL and BAFU. Waldmonitoring.ch : wcs_ndvi_diff_2016_2015, wcs_ndvi_diff_2017_2016, wcs_ndvi_diff_2018_2017, wcs_ndvi_diff_2019_2018, wcs_ndvi_diff_2020_2019, wcs_ndvi_diff_2021_2020, wcs_ndvi_diff_2022_2021. URL: https://geoserver.karten-werk.ch/wfs?request=GetCapabilities . \u21a9 Reik Leiterer, Gillian Milani, Jan Dirk Wegner, and Christian Ginzler. ExoSilva - ein Multi\u00ad-Sensor\u00ad-Ansatz f\u00fcr ein r\u00e4umlich und zeitlich hochaufgel\u00f6stes Monitoring des Waldzustandes. In Neue Fernerkundungs\u00adtechnologien f\u00fcr die Umweltforschung und Praxis , 17\u201322. Swiss Federal Institute for Forest, Snow and Landscape Research, WSL, April 2023. URL: https://www.dora.lib4ri.ch/wsl/islandora/object/wsl%3A33057 (visited on 2023-11-13), doi:10.55419/wsl:33057 . \u21a9 Matthew Parkan. Mparkan/Digital-Forestry-Toolbox: Initial release. April 2018. URL: https://zenodo.org/record/1213013 (visited on 2023-08-11), doi:10.5281/ZENODO.1213013 . \u21a9 R Core Team. R: A Language and Environment for Statistical Computing. 2023. URL: https://www.R-project.org/ . \u21a9 \u21a9 Olga Brovkina, Emil Cienciala, Peter Surov\u00fd, and P\u0159emysl Janata. Unmanned aerial vehicles (UAV) for assessment of qualitative classification of Norway spruce in temperate forest stands. Geo-spatial Information Science , 21(1):12\u201320, January 2018. URL: https://www.tandfonline.com/doi/full/10.1080/10095020.2017.1416994 (visited on 2022-07-15), doi:10.1080/10095020.2017.1416994 . \u21a9 N.K. Gogoi, Bipul Deka, and L.C. Bora. Remote sensing and its use in detection and monitoring plant diseases: A review. Agricultural Reviews , December 2018. doi:10.18805/ag.R-1835 . \u21a9 Samuli Junttila, Roope N\u00e4si, Niko Koivum\u00e4ki, Mohammad Imangholiloo, Ninni Saarinen, Juha Raisio, Markus Holopainen, Hannu Hyypp\u00e4, Juha Hyypp\u00e4, P\u00e4ivi Lyytik\u00e4inen-Saarenmaa, Mikko Vastaranta, and Eija Honkavaara. Multispectral Imagery Provides Benefits for Mapping Spruce Tree Decline Due to Bark Beetle Infestation When Acquired Late in the Season. Remote Sensing , 14(4):909, February 2022. URL: https://www.mdpi.com/2072-4292/14/4/909 (visited on 2023-10-27), doi:10.3390/rs14040909 . \u21a9","title":"Dieback of beech trees: methodology for determining the health state of beech trees from airborne images and LiDAR point clouds"},{"location":"PROJ-HETRES/#dieback-of-beech-trees-methodology-for-determining-the-health-state-of-beech-trees-from-airborne-images-and-lidar-point-clouds","text":"Clotilde Marmy (ExoLabs) - Gwena\u00eblle Salamin (ExoLabs) - Alessandro Cerioni (Canton of Geneva) - Roxane Pott (swisstopo) Proposed by the Canton of Jura - PROJ-HETRES October 2022 to August 2023 - Published on November 13, 2023 All scripts are available on GitHub . Abstract : Beech trees are sensitive to drought and repeated episodes can cause dieback. This issue affects the Jura forests requiring the development of new tools for forest management. In this project, descriptors for the health state of beech trees were derived from LiDAR point clouds, airborne images and satellite images to train a random forest predicting the health state per tree in a study area (5 km\u00b2) in Ajoie. A map with three classes was produced: healthy, unhealthy, dead. Metrics computed on the test dataset revealed that the model trained with all the descriptors has an overall accuracy up to 0.79, as well as the model trained only with descriptors derived from airborne imagery. When all the descriptors are used, the yearly difference of NDVI between 2018 and 2019, the standard deviation of the blue band, the mean of the NIR band, the mean of the NDVI, the standard deviation of the canopy cover and the LiDAR reflectance appear to be important descriptors.","title":"Dieback of beech trees: methodology for determining the health state of beech trees from airborne images and LiDAR point clouds"},{"location":"PROJ-HETRES/#1-introduction","text":"Since the drought episode of 2018, the canton of Jura and other cantons have noticed dieback of the beech trees in their forests 1 . In the canton of Jura, this problem mainly concerns the Ajoie region, where 1000 hectares of deciduous trees are affected 2 . This is of concern for the productivity and management of the forest, as well as for the security of walkers. In this context, the R\u00e9publique et Canton du Jura has contacted the Swiss Territorial Data Lab to develop a new monitoring solution based on data science, airborne images and LiDAR point clouds. The dieback symptoms are observable in the mortality of branches, the transparency of the tree crown and the leaf mass partition 3 . The vegetation health state influences the reflectance in images (airborne and satellite), which is often used as a monitoring tool, in particular under the form of vegetation indices: Normalized Difference Vegetation Index (NDVI), a combination of the near-infrared and red bands quantifying vegetation health; Vegetation Health Index (VHI), an index quantifying the decrease or increase of vegetation in comparison to a reference state. For instance, Brun et al. studied early-wilting in Central European forests with time series of the Normalized Difference Vegetation Index (NDVI) and estimate the surface concerned by early leaf-shedding 4 . Another technology used to monitor forests is light detection and ranging (LiDAR) as it penetrates the canopy and gives 3D information on trees and forest structures. Several forest and tree descriptors such as the canopy cover 5 or the standard deviation of crown return intensity 6 can be derived from the LiDAR point cloud to monitor vegetation health state. In 5 , the study was conducted at tree level, whereas in 6 stand level was studied. To work at tree level, it is necessary to segment individual trees in the LiDAR point cloud. On complex forests, like with a dense understory near tree stems, it is challenging to get correct segments without manual corrections. The aim of this project is to provide foresters with a map to help plan the felling of beech trees in the Ajoie's forests. To do so, we developed a combined method using LiDAR point clouds and airborne and satellite multispectral images to determine the health state of beech trees.","title":"1. Introduction"},{"location":"PROJ-HETRES/#2-study-area","text":"The study was conducted in two areas of interest in the Ajoie region (Fig. 1.A); one near Mi\u00e9court (Fig. 1.B), the other one near Beurnev\u00e9sin (Fig. 1.C). Altogether they cover 5 km 2 , 1.4 % of the Canton of Jura's forests 7 . Mi\u00e9court sub-area is west-south and south oriented, whereas Beurnev\u00e9sin sub-area is rather east-south and south oriented. They are in the same altitude range (600-700 m) and are 2 km away from each other, thus near the same weather station. Figure 1: The study area is composed of two areas of interest.","title":"2. Study area"},{"location":"PROJ-HETRES/#3-data","text":"The project makes use of different data types: LiDAR point cloud, airborne and satellite imagery, and ground truth data. Table 1 gives an overview of the data and their characteristics. Data have been acquired in late summer 2022 to have an actual and temporally correlated information on the health state of beech trees. Table 1: Overview of the data used in the project. Resolution Acquisition time Proprietary LiDAR 50-100 pts/m 2 08.2022 R\u00e9publique et Canton du Jura Airborne images 0.03 m 08.2022 R\u00e9publique et Canton du Jura Yearly variation of NDVI 10 m 06.2015-08.2022 Bern University of Applied Science (HAFL) and the Federal Office for Environment (BAFU) Weekly vegetation health index 10 m 06.2015-08.2022 ExoLabs Ground truth - (point data) 08.-10.2022 R\u00e9publique et Canton du Jura","title":"3. Data"},{"location":"PROJ-HETRES/#31-lidar-point-cloud","text":"The LiDAR dataset was acquired on the 16th of August 2023 and its point density is 50-100 pts/m\u00b2. It is classified in the following classes: ground, low vegetation (2-10m), middle vegetation (10-20m) and high vegetation (20 m and above). It was delivered in the LAS format and had reflectance values 8 in the intensity storage field.","title":"3.1 LiDAR point cloud"},{"location":"PROJ-HETRES/#32-airborne-images","text":"The airborne images have a ground resolution of 3 cm and were acquired simultaneously to the LiDAR dataset. The camera captured the RGB bands, as well as the near infrared (NIR) one. The acquisition of images with a lot of overlap and oblique views allowed the production of a true orthoimage for a perfect match with the LiDAR point cloud and the data of the ground truth.","title":"3.2 Airborne images"},{"location":"PROJ-HETRES/#33-satellite-images","text":"The Sentinel-2 mission from the European Space Agency is passing every 6 days over Switzerland and allows free temporal monitoring at a 10 m resolution. The archives are available back to the beginning of beech tree dieback in 2018.","title":"3.3 Satellite images"},{"location":"PROJ-HETRES/#34-ground-truth","text":"The ground truth was collected between August and October 2022 by foresters. They assessed the health of the beech trees based on four criteria 3 : mortality of branches; transparency of the tree crown; leaf mass partition; trunk condition and other health aspects. In addition, each tree was associated with its coordinates and pictures as illustrated in Figure 1 and Figure 2 respectively. The forester surveyed: 75 healthy, 77 unhealthy and 56 dead trees. Tree locations were first identified in the field with a GPS-enabled tablet on which the 2022 SWISSIMAGE mosaic was displayed. Afterwards, the tree locations were precisely adjusted on the trunk locations by visually locating the corresponding stems in the LiDAR point cloud with the help of the pictures taken in the field. The location and health status of a further 18 beech trees were added in July 2023. These 226 beeches - under which are 76 healthy, 77 affected and 73 dead trees - surveyed at the two dates are defined as the ground truth for this project. Figure 2: Examples of the three health states: left, a healthy tree with a dense green tree crown; center, an unhealthy tree with dead twigs and a scarce foliage; right, a dead tree completely dry.","title":"3.4 Ground truth"},{"location":"PROJ-HETRES/#4-method","text":"The method developed is based on the processing of LiDAR point clouds and of airborne images . Ready-made vegetation indices derived from satellite imagery were also used. First, a segmentation of the trees in the LiDAR point cloud was carried out using the Digital-Forestry-Toolbox (DFT) 11 . Then, descriptors for the health state of the beech trees were derived from each dataset. Boxplots and corresponding t-test are computed to evaluate the ability of descriptors to differentiate the three health states. A t-test value below 0.01 indicates that there is a significant difference between the means of two classes. Finally, the descriptors were used jointly with the ground truth to train a random forest (RF) algorithm, before inferring for the study area. Figure 3: Overview of the methodology, which processes the data into health descriptors for beech trees, before training and evaluating a random forest.","title":"4. Method"},{"location":"PROJ-HETRES/#41-lidar-processing","text":"At the beginning of LiDAR processing, exploration of the data motivated the segmentation and descriptors computation.","title":"4.1 LiDAR processing"},{"location":"PROJ-HETRES/#42-image-processing","text":"For the image processing, an initial step was to compute the normalized difference vegetation index (NDVI) for each raster image. The normalized difference vegetation index (NDVI) is an index commonly used for the estimation of the health state of vegetation 5 13 14 . \\[\\begin{align} \\ NDVI = {NIR-R \\over NIR+R} \\ \\end{align}\\] where NIR and R are the value of the pixel in the near-infrared and red band respectively. To uncover potential distinctive features between the classes, boxplots and principal component analysis were used on the images four bands (RGB-NIR) and the NDVI. Firstly, we tested if the brute pixel values allowed the distinction between classes at a pixel level. This method avoids the pit of the forest segmentation into trees. Secondly, we tested the same method, but with some low-pass filter to reduce the noise in the data. Thirdly, we tried to find distinct statistical features at the tree level. This approach allows decreasing the noise that can be present in high-resolution information. However, it necessitates having a reasonably good segmentation of the trees. Finally, color filtering and edge detection were tested in order to highlight and extract the linear structure of the branches. For each treatment, it is possible to do it with or without a mask on the tree height. As only trees between 20 m and 40 m tall are affected by dieback, a mask based on the Canopy Height Model (CHM) raster derived from the LiDAR point cloud was tested. Figure 4: Overview of different possible data treatments for the the statistical analysis.","title":"4.2 Image processing"},{"location":"PROJ-HETRES/#43-satellite-based-indices","text":"The yearly variation of NDVI and the VHI were used to take account of historical variations of NDVI from 2015 to 2022. For the VHI, the mean for each year is computed over the months considered for the yearly variation of NDVI. The pertinence of using these indices was explored: the values for each tree in the ground truth were extracted and observed in boxplots per health class in 2022 per year pair over the time span from 2015 to 2022.","title":"4.3 Satellite-based indices"},{"location":"PROJ-HETRES/#44-random-forest","text":"In R 12 , the caret and randomForest packages were used to train the random forest and make predictions. First, the ground truth was split into the training and the test datasets, with each class being split 70 % into the training set and 30 % into the test set. Health classes with not enough samples were completed with copies. Optimization of the RF was performed on the number of trees to develop and on the number of randomly sampled descriptors to test at each split. In addition, 5-fold cross-validation was used to ensure the use of different parts of the dataset. The search parameter space was from 100 to 1000 decision trees and from 4 to 10 descriptors as the default value is the square root of all descriptors, i.e. 7. RF was assessed using a custom metric, which is an adaptation of the false positive rate for the healthy class. It minimizes the amount of false healthy detections and of dead trees predicted as unhealthy (false unhealthy). It is called custom false positive rate (cFPR) in the text. It was preferred to have a model with more unhealthy predictions to control on the field, than missing unhealthy or dead trees. The cFPR goes from 0 (best) to 1 (worse). Table 2: Confusion matrix for the three health classes. Ground truth Healthy Unhealthy Dead Prediction Healthy A B C Unhealthy D E F Dead G H I According to the confusion matrix in Table 2, the cFPR is computed as follows: \\[\\begin{align} \\ cFPR = {(\ud835\udc35+\ud835\udc36+\ud835\udc39)\\over(\ud835\udc35+\ud835\udc36+\ud835\udc38+\ud835\udc39+\ud835\udc3b+\ud835\udc3c)}. \\ \\end{align}\\] In addition, the overall accuracy (OA), i.e. the ratio of correct predictions over all the predictions, and the sensitivity, which is, per class, the number of correct predictions divided by the number of samples from that class, are used. An ablation study was performed on descriptors to assess the contribution of the different data sources to the final performance. An \u201cimportant\u201d descriptor is having a strong influence on the increase in prediction errors in the case of random reallocation of the descriptor values in the training set. After the optimization, predictions for each DFT segments were computed using the best model according to the cFPR. The inferences were delivered as a thematic map with colors indicating the health state and hue indicating the fraction of decision trees in the RF having voted for the class (vote fraction). The purpose is to give a confidence information, with high vote fraction indicating robust predictions. Furthermore, the ground truth was evaluated for quantity and quality by two means: Removal of samples and its impact on the metric evaluation Splitting the training set into training subsets to evaluate on the original test set. Finally, after having developed the descriptors and the routine on high-quality data, we downgraded them to have resolutions similar to the ones of the swisstopo products (LiDAR: 20 pt/m 2 , orthoimage: 10 cm) and performed again the optimization and prediction steps. Indeed, the data acquisition was especially commissioned for this project and only covers the study area. If in the future the method should be extended, one would like to test if a lower resolution as the one of the standard national-wide product SWISSIMAGE could be sufficient.","title":"4.4 Random Forest"},{"location":"PROJ-HETRES/#5-results-and-discussion","text":"In this section, the results obtained during the processing of each data source into descriptors are presented and discussed, followed by a section on the random forest results.","title":"5 Results and discussion"},{"location":"PROJ-HETRES/#51-lidar-processing","text":"For the LiDAR data, the reader will first discover the aspect of beech trees in the LiDAR point cloud according to their health state as studied in the data exploration. Then, the segmentation results and the obtained LiDAR-based descriptors will be presented.","title":"5.1 LiDAR processing"},{"location":"PROJ-HETRES/#52-image-processing","text":"Boxplots and PCA are given to illustrate the results of the image processing exploration. As the masking of pixels below and above the affected height made no difference in the interpretation of the results, they are presented here with the height mask.","title":"5.2 Image processing"},{"location":"PROJ-HETRES/#53-vegetation-indices-from-satellite-imagery","text":"The t-test used to evaluate the ability of satellite indices to differentiate between health states are given in Appendices 6 and 7 . In the following two subsections, solely the significant tested groups are mentioned for understanding the RF performance.","title":"5.3 Vegetation indices from satellite imagery"},{"location":"PROJ-HETRES/#54-random-forest","text":"The results of the RF that are presented and discussed are: (1) the optimization and ablation study, (2) the ground truth analysis, (3) the predictions for the AOI and (4) the performance with downgraded data.","title":"5.4 Random Forest"},{"location":"PROJ-HETRES/#6-conclusion-and-outlook","text":"The study has demonstrated the ability of a random forest algorithm to learn from structural descriptors derived from LiDAR point clouds and from vegetation reflectance in airborne and satellite images to predict the health state of beech trees. Depending on the used datasets for training and test, the optimized full model including all descriptors reached an OA of 0.76 or of 0.79, with corresponding cFPR values of 0.13 and 0.14 respectively. These metrics are sufficient for the purpose of prioritizing beech tree felling. The produced map, with the predicted health state and the corresponding votes for the segments, delivers useful information for forest management. The cantonal foresters validated the outcomes of this proof-of-concept and explained how the location of affected beech trees as individuals or as groups are used to target high-priority areas. The full model highlighted the importance of the yearly variation of NDVI between a drought year (2018) and a normal year (2019). The airborne imagery showed good ability to predict dead trees, whereas confusion remained between healthy and unhealthy trees. The quality of the LiDAR point cloud segmentation may explain the limited performance of the LiDAR-based model. Finally, the model trained and tested on downgraded data gave an OA of 0.84 and a cFPR of 0.08. In this model, the airborne-based descriptors gained in importance. It was concluded that a 10 cm resolution may help the model by reducing the noise in the image. Outlooks for improving results include improving the ground truth representativeness of symptoms in the field and continuing research into descriptors for differentiating between healthy and unhealthy trees: For the image processing, suggestions are the integration of more statistics like the skewness and kurtosis of the reflectance as in Junttila et al. (2022) 15 . LiDAR-based descriptors had limited impact on the final results. To better valorize them for an application on beech trees, further research would be needed. Beside producing a cleaner segmentation and finding additional descriptors, it could consist in mixing the descriptors at the different resolutions and, with the help of the importance analysis, estimate at which resolution each descriptor brings the most information to the classification. The results showed the important contribution of vegetation indices derived from satellite imagery reflecting the drought year of 2018. If available, using historical image data of higher resolution to derive more descriptors could help improve individual tree health assessment. The possibility of further developments put aside, the challenge is now the extension of the methodology to a larger area. The simultaneity of the data is necessary to an accurate analysis. It has been shown that the representativeness of the ground truth has to be improved to obtain better and more stable results. Thus, for an extension to further areas, we recommend collecting additional ground truth measurements. The health state of the trees showed some autocorrelation that could have boosted our results and make them less representative of the whole forest. They should be more scattered in the forest. Furthermore, required data are a true orthophoto and a LiDAR point cloud for per-tree analysis. It should be possible to use an old LiDAR acquisition to produce a CHM and renounce to use LiDAR-based descriptors without degrading the performance of the model too much.","title":"6 Conclusion and outlook"},{"location":"PROJ-HETRES/#7-appendixes","text":"","title":"7 Appendixes"},{"location":"PROJ-HETRES/#71-simulation-plan-for-dft-parameter-tuning","text":"Table 8: parameter tuning for DFT. CHM cell size [m] Maxima smoothing Local maxima within search radius 0.50 0.1 (3.09632 + 0.00895 * h^2)/2 0.3 (1.7425 * h^0.5566)/2 0.5 (1.2 + 0.16 * h)/2 1.00 0.1 (3.09632 + 0.00895 * h^2)/2 0.3 (1.7425 * h^0.5566)/2 0.5 (1.2 + 0.16 * h)/2 1.50 0.1 (3.09632 + 0.00895 * h^2)/2 0.3 (1.7425 * h^0.5566)/2 0.5 (1.2 + 0.16 * h)/2 2.00 0.1 (3.09632 + 0.00895 * h^2)/2 0.3 (1.7425 * h^0.5566)/2 0.5 (1.2 + 0.16 * h)/2","title":"7.1 Simulation plan for DFT parameter tuning"},{"location":"PROJ-HETRES/#72-t-tests","text":"t-test were computed to evaluate the ability of descriptors to differentiate the three health states. A t-test value below 0.01 indicates that there is a significant difference between the means of two classes.","title":"7.2 t-tests"},{"location":"PROJ-HETRES/#8-sources-and-references","text":"Indications on software and hardware requirements, as well as the code used to perform the project, are available on GitHub: https://github.com/swiss-territorial-data-lab/proj-hetres/tree/main. Other sources of information mentioned in this documentation are listed here: OFEV et al. (\u00e9d.). La canicule et la s\u00e9cheresse de l\u2019\u00e9t\u00e9 2018. Impacts sur l\u2019homme et l\u2019environnement. Technical Report 1909, Office f\u00e9d\u00e9ral de l\u2019environnement, Berne, 2019. \u21a9 \u21a9 Beno\u00eet Grandclement and Daniel Bachmann. 19h30 - En Suisse, la s\u00e9cheresse qui s\u00e9vit depuis plusieurs semaines frappe durement les arbres - Play RTS. February 2023. URL: https://www.rts.ch/play/tv/19h30/video/en-suisse-la-secheresse-qui-sevit-depuis-plusieurs-semaines-frappe-durement-les-arbres?urn=urn:rts:video:13829524 (visited on 2023-03-28). \u21a9 Xavier Gauquelin, editor. Guide de gestion des for\u00eats en crise sanitaire . Office National des For\u00eats, Institut pour le D\u00e9veloppement Forestier, Paris, 2010. ISBN 978-2-84207-344-2. \u21a9 \u21a9 Philipp Brun, Achilleas Psomas, Christian Ginzler, Wilfried Thuiller, Massimiliano Zappa, and Niklaus E. Zimmermann. Large-scale early-wilting response of Central European forests to the 2018 extreme drought. Global Change Biology , 26(12):7021\u20137035, 2020. _eprint: https://onlinelibrary.wiley.com/doi/pdf/10.1111/gcb.15360. URL: https://onlinelibrary.wiley.com/doi/abs/10.1111/gcb.15360 (visited on 2022-10-13), doi:10.1111/gcb.15360 . \u21a9 Run Yu, Youqing Luo, Quan Zhou, Xudong Zhang, Dewei Wu, and Lili Ren. A machine learning algorithm to detect pine wilt disease using UAV-based hyperspectral imagery and LiDAR data at the tree level. International Journal of Applied Earth Observation and Geoinformation , 101:102363, September 2021. URL: https://www.sciencedirect.com/science/article/pii/S0303243421000702 (visited on 2022-10-13), doi:10.1016/j.jag.2021.102363 . \u21a9 \u21a9 \u21a9 Pengyu Meng, Hong Wang, Shuhong Qin, Xiuneng Li, Zhenglin Song, Yicong Wang, Yi Yang, and Jay Gao. Health assessment of plantations based on LiDAR canopy spatial structure parameters. International Journal of Digital Earth , 15(1):712\u2013729, December 2022. URL: https://www.tandfonline.com/doi/full/10.1080/17538947.2022.2059114 (visited on 2022-12-07), doi:10.1080/17538947.2022.2059114 . \u21a9 \u21a9 \u21a9 Patrice Eschmann, Pascal Kohler, Vincent Brahier, and Jo\u00ebl Theubet. La for\u00eat jurassienne en chiffres, R\u00e9sultats et interpr\u00e9tation de l'inventaire forestier cantonal 2003 - 2005. Technical Report, R\u00e9publique et Canton du Jura, St-Ursanne, 2006. URL: https://www.google.com/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwjHuZyfhoSBAxU3hP0HHeBtC4sQFnoECDcQAQ&url=https%3A%2F%2Fwww.jura.ch%2FHtdocs%2FFiles%2FDepartements%2FDEE%2FENV%2FFOR%2FDocuments%2Fpdf%2Frapportinventfor0305.pdf%3Fdownload%3D1&usg=AOvVaw0yr9WOtxMyY-87avVMS9YM&opi=89978449However . \u21a9 \u21a9 Agnieska Ptak. (5) Amplitude vs Reflectance \\textbar LinkedIn. June 2020. URL: https://www.linkedin.com/pulse/amplitude-vs-reflectance-agnieszka-ptak/ (visited on 2023-08-11). \u21a9 BFH-HAFL and BAFU. Waldmonitoring.ch : wcs_ndvi_diff_2016_2015, wcs_ndvi_diff_2017_2016, wcs_ndvi_diff_2018_2017, wcs_ndvi_diff_2019_2018, wcs_ndvi_diff_2020_2019, wcs_ndvi_diff_2021_2020, wcs_ndvi_diff_2022_2021. URL: https://geoserver.karten-werk.ch/wfs?request=GetCapabilities . \u21a9 Reik Leiterer, Gillian Milani, Jan Dirk Wegner, and Christian Ginzler. ExoSilva - ein Multi\u00ad-Sensor\u00ad-Ansatz f\u00fcr ein r\u00e4umlich und zeitlich hochaufgel\u00f6stes Monitoring des Waldzustandes. In Neue Fernerkundungs\u00adtechnologien f\u00fcr die Umweltforschung und Praxis , 17\u201322. Swiss Federal Institute for Forest, Snow and Landscape Research, WSL, April 2023. URL: https://www.dora.lib4ri.ch/wsl/islandora/object/wsl%3A33057 (visited on 2023-11-13), doi:10.55419/wsl:33057 . \u21a9 Matthew Parkan. Mparkan/Digital-Forestry-Toolbox: Initial release. April 2018. URL: https://zenodo.org/record/1213013 (visited on 2023-08-11), doi:10.5281/ZENODO.1213013 . \u21a9 R Core Team. R: A Language and Environment for Statistical Computing. 2023. URL: https://www.R-project.org/ . \u21a9 \u21a9 Olga Brovkina, Emil Cienciala, Peter Surov\u00fd, and P\u0159emysl Janata. Unmanned aerial vehicles (UAV) for assessment of qualitative classification of Norway spruce in temperate forest stands. Geo-spatial Information Science , 21(1):12\u201320, January 2018. URL: https://www.tandfonline.com/doi/full/10.1080/10095020.2017.1416994 (visited on 2022-07-15), doi:10.1080/10095020.2017.1416994 . \u21a9 N.K. Gogoi, Bipul Deka, and L.C. Bora. Remote sensing and its use in detection and monitoring plant diseases: A review. Agricultural Reviews , December 2018. doi:10.18805/ag.R-1835 . \u21a9 Samuli Junttila, Roope N\u00e4si, Niko Koivum\u00e4ki, Mohammad Imangholiloo, Ninni Saarinen, Juha Raisio, Markus Holopainen, Hannu Hyypp\u00e4, Juha Hyypp\u00e4, P\u00e4ivi Lyytik\u00e4inen-Saarenmaa, Mikko Vastaranta, and Eija Honkavaara. Multispectral Imagery Provides Benefits for Mapping Spruce Tree Decline Due to Bark Beetle Infestation When Acquired Late in the Season. Remote Sensing , 14(4):909, February 2022. URL: https://www.mdpi.com/2072-4292/14/4/909 (visited on 2023-10-27), doi:10.3390/rs14040909 . \u21a9","title":"8 Sources and references"},{"location":"PROJ-LANDSTATS/","text":"Using spatio-temporal neighbor data information to detect changes in land use and land cover \u00b6 Shanci Li (Uzufly) - Alessandro Cerioni (Canton of Geneva) - Clotilde Marmy (ExoLabs) - Roxane Pott (swisstopo) Proposed by the Swiss Federal Statistical Office - PROJ-LANDSTATS September 2022 to March 2023 - Published on April 2023 All scripts are available on GitHub . Abstract : From 2020 on, the Swiss Federal Statistical Office started to update the land use/cover statistics over Switzerland for the fifth time. To help and lessen the heavy workload of the interpretation process, partially or fully automated approaches are being considered. The goal of this project was to evaluate the role of spatio-temporal neighbors in predicting class changes between two periods for each survey sample point. The methodolgy focused on change detection, by finding as many unchanged tiles as possible and miss as few changed tiles as possible. Logistic regression was used to assess the contribution of spatial and temporal neighbors to the change detection. While time deactivation and less-neighbors have a 0.2% decrease on the balanced accuracy, the space deactivation causes 1% decrease. Furthermore, XGBoost, random forest (RF), fully convolutional network (FCN) and recurrent convolutional neural network (RCNN) performance are compared by the means of a custom metric, established with the help of the interpretation team. For the spatial-temporal module, FCN outperforms all the models with a value of 0.259 for the custom metric, whereas the logistic regression indicates a custom metrics of 0.249. Then, FCN and RF are tested to combine the best performing model with the model trained by OFS on image data only. When using temporal-spatial neighors and image data as inputs, the final integration module achieves 0.438 in custom metric, against 0.374 when only the the image data is used. It was conclude that temporal-spatial neighbors showed that they could light the process of tile interpretation. 1. Introduction \u00b6 The introduction presents the background and the objectives of the projects, but also introduces the input data and its specific features. 1.1 Background \u00b6 Since 1979, the Swiss Federal Statistical Office (FSO) provides detailed and accurate information on the state and evolution of the land use and the land cover in Switzerland. It is a crucial tool for long-term spatial observation. With these statistics, it is possible to determine whether and to what extent changes in land cover and land use are consistent with the goals of Swiss spatial development policies ( FSO ). Figure 1: Visualization of the land cover and land use classification. Every few years, the FSO carries out a survey on aerial or satellite images all over Switzerland. A grid with sample points spaced 100 meters apart overlays the images, providing 4.1 million sample points on which the statistics are based. The classification of the hectare tile is assigned on the center dot, as shown in Figure 1. Currently, a time series of four surveys is accessible, based on aerial images captured in the following years: 1979\u20131985 (1st survey, 1985) 1992\u20131997 (2nd survey, 1997) 2004\u20132009 (3rd survey, 2009) 2013\u20132018 (4th survey, 2018) The first two surveys of the land statistics in 1979 and 1992 were made by visual interpretation of aerial analogue photos using stereoscopes. Since the 2004 survey, the methodology was deeply renewed, in particular through the use of digital aerial photographs, which are observed stereoscopically on workstations using specific photogrammetry software . A new nomenclature (2004 NOAS04) has also been introduced in 2004 which systematically distinguishes 46 land use categories and 27 land cover categories. A numerical label from this catalogue is assigned to each point by a team of trained interpreters. The 1979 and 1992 surveys have been revised according to the nomenclature NOAS04, so that all readings (1979, 1992, 2004, 2013) are comparable. On this page you will find the geodata of the Land Use Statistics at the hectare level since 1979, as well as documentation on the data and the methodology used to produce these data. Detailed information on basic categories and principal domains can be found in Appendix 1 . 1.2 Objectives \u00b6 It is known that manual interpretation work is time-consuming and expensive. However, in a feasibility study , the machine learning technique showed great potential capacity to help speed up the interpretation, especially with deep learning algorithms. According to the study, 50% of the estimated interpretation workload could be saved. Therefore, FSO is currently carrying out a project to assess the relevance of learning and mastering the use of artificial intelligence (AI) technologies to automate (even partially) the interpretation of aerial images for change detection and classification. The project is called Area Statistics Deep Learning (ADELE). FSO had already developed tools for change detection and multi-class classification using the image data. However, the current workflow does not exploit the spatial and temporal dependencies between different points in the surveys. The aim of this project is therefore to evaluate the potential of spatial-temporal neighbors in predicting whether or not points in the land statistics will change class. The methodolgy will be focused on change detection, by finding as many unchanged tiles as possible (automatized capacity) and miss as few changed tiles as possible. The detailed objectives of this project are to: explore the internal transformation patterns of tile classification from a data analytics perspective build a prototype that performs change detection for tiles in the next survey help the domain experts to integrate the prototype within the OFS workflow 1.3 Input data \u00b6 The raw data delivered by the domain experts is a table with 4'163'496 records containing the interpretation results of both land cover and land use from survey 1 to survey 4. An example record is shown in Table 1 and gives following information: RELI: 8-digit number composed by the EAST hectare number concatenated with the NORTH hectare number EAST: EAST coordinates (EPSG:2056) NORTH: NORTH coordinates (EPSG:2056) LUJ: Land Use label for survey J LCJ: Land Cover label for survey J training: value 0 or 1. A value of 1 means that the point can be included in the training or validation set Table 1: Example record of raw data delivered by the domain experts. RELI EAST NORTH LU4* LC4 LU3 LC3 LU2 LC2 LU1 LC1 training 74222228 2742200 1222800 242 21 242 21 242 21 242 21 0 75392541 2753900 1254100 301 41 301 41 301 41 301 41 0 73712628 2737100 1262800 223 46 223 46 223 46 223 46 0 * The shortened LC1/LU1 to LC4/LU4 will be used to simplify the notation of Land Cover/Use of survey 1 to survey 4 in the following documentation. For machine learning, training data quality has strong influence on model performance. With the training label, domain experts from FSO selected data points that are more reliable and representative. These 348'474 tiles and their neighbors composed the training and testing dataset for machine learning methodology. 2. Exploratory data analysis \u00b6 As suggested by domain experts, exploratory data analysis (EDA) is of significance to understand the data statistics and find the potential internal patterns of class transformation. The EDA is implemented from three different perspectives: distribution, quantity and probability. With the combination of the three, we can find that there do exist certain trends in the transformation of both land cover and land use classes. For the land cover, main findings are: distribution: most surface of Switzerland is covered by vegetation or forest, bare land and water areas take up a considerable portion as well, artificial areas take up a small portion of the land cover probability: transformation between some classes had never happened during the past four decades, all classes of land cover are most likely to keep their status rather than to change quantity: there are some clear patterns in quantitative changes Open Forest goes to Closed Forest Brush Meadows go to Shrubs Garden Plants go to Grass and Herb Vegetation Shrubs go to Closed Forest Cluster of Tree goes to Grass and Herb Vegetation For the land use, main findings are: distribution: agricultural and forest areas are the main land uses, unused area also stands out from others classes. probability: transformation between some classes had never happened during the past four decades; on the contrary, construction site, non-exploited urban areas and forest areas tend to change to other classes rather than keep unchanged quantity: the most transformations happened inside the superclasses of Arable and Grassland and of Forest not Agricultural . Readers particularly interested by the change detection methods can directly go to Section 3 ; otherwise, readers are welcomed to read the illustrated and detailed EDA given hereafter. 2.1 Distribution statistics \u00b6 Figure 2: Land cover distribution plot. Figure 3: Land use distribution plot. First, a glance at the overall distribution of land cover and land use is shown in Figure 2 and 3. The X-axis is the label of each class while the Y-axis is the number of tiles in the Log scale. The records of the four surveys are plotted in different colors chronologically. By observation, some trends can be found across the four surveys. Artificial areas only take up a small portion of the land cover (labels between 10 to 20), while most surface of Switzerland is covered by vegetation or forest (20 - 50). Bare land (50 - 60) and water areas (60 - 70) take up a considerable portion as well. For land use, it is obvious that the agricultural (200 - 250) and forest (300 - 310) areas are the main components while the unused area (421) also stands out from others. Most classes kept the same tendency during the past 40 years. There are 11 out of 27 land cover classes and 32 out of 46 land use classes which are continuously increasing or decreasing all the time. Especially for land use, compared with 10 classes rising with time, 22 classes dropping, which indicates that there is some transformation patterns that caused the leakage from some classes to those 10 classes. We will dive into these patterns in the following sections. 2.2 Quantity statistics \u00b6 The data are explored in a quantitative way by three means: visualization of transformations between 2 surveys visualization of sequential transformation over time identifying patterns and most occured transformations in different periods. 2.2.1 Transformation visualization \u00b6 Figure 4: Land cover transformation from 1985 to 2018. The analysis of the transformation patterns in quantitative perspective has been implemented in the interactive visualization in Figure 4. The nodes of the same color belong to a common superclass (principle domain). The size of the node represents the number of tiles for the class and the width of the link reflects the number of transformations in log scale. When hanging over your mouse on these elements, detailed information such as the class label code and the number of transformations will be shown. Clicking the legend will enable you to select the superclasses in which the transformation should be analyzed. Pre-processing had been done for the transformation data. To simplify the graph and stand out the major transformations, links with the number of transformations less than 0.1% of the total were removed from the graph. The filter avoids too many trivial links (580) connecting nearly all the nodes, leaving significant links (112) only. The process filtered 6.5% of the transformations in land cover and 11.5% in land use, which is acceptable considering it is a quantitative analysis focusing on the major transformation. 2.2.2 Sequential transformation visualization \u00b6 Figure 5: Land cover sequential transformation. In addition to the transformation between the 2 surveys, the sequential transformation over time had also been visualized. Here, a similar filter is implemented as well to simplify the result and only tiles that had changed during the 4 surveys are visualized. In Figure 5, the box of a class in column 1985 (survey 1) is composed of different colors while the box of a class in column 2018 (survey 4) only has one color. This is caused by the color of the link showing a kind of sequential transformation. The different colors of a class in the first column show the end status (classification) of the tiles in survey 4. There are some clear patterns we can find in the graph. For example, the red lines point out four diamond patterns in the graph. The diamond pattern with the edges in the same color illustrates the continuous trend that one class of tiles is transferred to the other class. In this figure, it is obvious that the Tree Clusters are degraded to the Grass and Herb , while Grass and Herb are transferred to the Consolidated Surfaces , showing the expansion of urban areas and the destruction to the natural environment. 2.2.3 Quantity statistics analysis \u00b6 Comparing the visualization of different periods, a constant pattern has been spotted in both land cover and land use. For example in land cover, the most transformation happened between the superclass of Tree Vegetation and Brush Vegetation . Also, a visible bi-direction transformation between Grass and Herb Vegetation and Clusters of Trees is witnessed. Greenhouses, wetlands and reedy marshes hardly have edges linked to them all over time, which illustrates that either they have a limited area or they hardly change. A similar property can also be captured in land use classes. The most transformation happened inside the superclass of Arable and Grassland and Forest not Agricultural . Also, a visible transformation from Unused to Forest is highlighted by others. Combining the findings above, it is clear that the transformation related to the Forest and Vegetation is the main part of the story. The forest shrinks or expands over time, changing to shrubs and getting back later. The Arable and Grassland keeps changing based on the need for agriculture or animal husbandry during the survey year. Different kinds of forests interconvert with each other which is a rational natural phenomenon. 2.3 Probability matrix \u00b6 The above analysis demonstrates the occurrence of transformation with quantitative statistics. However, the number of tiles for different classes is not a uniform distribution as shown in the distribution analysis. The largest class is thousands of times more than the smallest one. Sometimes, the quantity of a transformation is trivial compared with the majority, but it is caused by the small amount of tiles for the class. Even if the negligible class would not have a significant impact on the performance of change detection, it is of great importance to reveal the internal transformation pattern of the land statistics and support the multi-class classification task. Therefore, the probability analysis is designed as below: The probability analysis for land cover/use contains 3 parts: The probability matrix presents the probability of transformation from the source class (Y-axis) to the destination class (X-axis). The value of the probability is illustrated by the depth of the color in the log scale. The distribution of the probability that a class does not change, which is a more detailed visualization of the diagonal value of the probability matrix. The distribution of the maximum probability that a class changes to another certain class. This is a deeper inspection to look for a fixed transformation pattern that exists between two classes. The probability is calculated by the status change between the beginning survey and the end survey stated in the figure title. For example Figure 6 is calculated by the transformation between survey 1 and survey 4, without taking into account possible intermediate changes in survey 2 and 3. 2.3.1 Land cover analysis \u00b6 Figure 6: Land cover probability matrix from LC1 to LC4. The first information that the matrix provides is the blank blocks with zero probability of conversion. This discloses that transformation between some classes had never happened during the past four decades. Besides, all the diagonal blocks are with distinct color depth, illustrating that all classes of land cover are most likely to keep their status rather than to change. Another evident features of this matrix are the columns with destination classes Grass and Herb Vegetation (21) and Closed Forest (41) . There are a few classes such as Shrubs (31) , Fruit Tree (33) , Garden Plants (35) and Open Forest (44) which have a noticeable trend to convert to these two classes, which is partially consistent with the quantity analysis while revealing some new findings. Figure 7: Land cover transformation probability without change. When it comes to the refined visualization of the diagonal blocks, it is clear that half of the classes have more than an 80% probability of not transforming, while the minimum one only has about 35%. This is caused by the accumulation of the 4 surveys together which lasts 40 years. For a single decade, as the first 3 sub-graphs of Figure 23 in the Appendix A2.1 , the majority are over 90% probability and the minimum rises to 55%. Figure 8: Maximum transformation probability to a certain class when land cover changes. For those transformed tiles, the maximum probability of converting into another class is shown in Figure 8. This graph together with the matrix in Figure 6 can point out the internal transformation pattern. The top 5 possible transformations between the first survey and the forth survey are: 1. 38% Open Forest (44) --> Closed Forest (41) 2. 36% Brush Meadows (32) --> Shrubs (31) 3. 34% Garden Plants (35) --> Grass and Herb Vegetation (21) 4. 29% Shrubs (31) --> Closed Forest (41) 5. 26% Cluster of Tree (47) --> Grass and Herb Vegetation (21) In this case, the accumulation takes effect as well. For a single decade, the maximum probability decreases to 25%, but the general distribution of the probability is consistent between the four surveys according to Figure 24 in the Appendix A2.1 . 2.3.2 Land use analysis \u00b6 Figure 9: Land use probability matrix from LU1 to LU4. The land use probability matrix has different features compared with the land cover probability matrix. Although most diagonal blocks are with the deepest color depth, there are two areas highlighted by the red line presenting different statistics. The upper area is related to Construction sites (146) and Unexploited Urban areas (147) . These two classes tend to change to other classes rather than keep unchanged, which is reasonable since the construction time of buildings or infrastructures hardly exceeds 10 years. This is confirmed by the left side of the red-edged rectangular block, which has a deeper color depth. This illustrates that construction and unexploited areas ended in the Settlement and Urban Areas (superclass of 100 - 170). The lower red area account for the pattern concerning the Forest Areas (301 -304) . The Afforestation (302) , Lumbering areas (303) and Damaged Forest (304) would thrive and recover between the surveys, and finally become Forest (301) again. Figure 10: Land use transformation probability without change. Figure 10 further validates the assumptions. With most classes with a high probability of not changing, there are two deep valleys for classes 144 to 147 and 302 to 304, which are exactly the results of the stories mentioned above. Figure 11: Maximum transformation probability to a certain class when land use changes. Figure 11 tells the difference in the diversity of transformation destination. The construction and unexploited areas would turn into all kinds of urban areas, with more than 95% changed and the maximum probability to a fixed class is less than 35%. While the Afforestation , Lumbering areas and Damaged Forest returned to Forest with a probability of more than 90%, the transformation pattern within these four classes is fairly fixed. The distribution statistics, the quantity statistics and the probability matrices have shown to validate and complement each other during the exploratory analysis of the data. 3. Methods \u00b6 The developed method should be integrated in the OFS framework for change detection and classification of land use and land cover illustrated in Figure 12. The interesting parts for this project are highlighted in orange and will be presented in the following. Figure 12: Planned structure in FSO framework for final prediction. Figure 12 shows on the left the input data type in the OFS framework. The current project work on the LC/LU neighbors introduced in Section 1.3 . The main objective of the project - to detect change by means of these neighbors - is the temporal-spatial module in Figure 12. As proposed by the feasibility study, FSO had implement studies on change detection and multi-class classification on swisstopo aerial images time series to accelerate the efficiency of the interpretation work. The predicted LC and LU probabilities and information obtained by deep learning are defined as the image-level module. In a second stage of the project, the best model for combining the temporal-spatial and the image-level module outputs is explored to evaluate the gain in performance after integration of the spatial-temporal module in the OFS framework. This is the so-called integration module. The rest of the input data will not be part of the performance evaluation. 3.1 Temporal-spatial module \u00b6 Figure 13: Time and space structure of a tile and its neighbors. The input data to the temporal-spatial module will be the historical interpretation results of the tile to predict and its 8 neighbors. The first three surveys are used as inputs to train the models while the forth survey serves as the ground truth of the prediction. This utilizes both the time and space information in the dataset like depicted in Figure 13. During the preprocessing, the tiles with missing neighbors were discarded from the dataset to keep the data format consistent, which is insignificant (about 400 out of 348'868). The determination of change is influenced by both land cover and land use. When there is a disparity between the classifications in the fourth survey and the third one for a specific tile, it is identified as altered (positive) in change detection. The joint prediction of land cover and land use is based on the assumption that a correlation may exist between them. If the land cover of a tile undergoes a change, it is probable that its land use will also change. Moreover, the tile is assigned numerical labels. Nevertheless, the model does not desire a numerical association between classes, even when they belong to the same superclass and are closely related. To address this, we employ one-hot encoding, which transforms a single land cover column into 26 columns, with all values set to '0' except for one column marked as '1' to indicate the class. Despite increasing the model's complexity with almost two thousand input columns, this is a necessary trade-off to eliminate the risk of numerical misinterpretation. 3.2 Change detection \u00b6 Usually, spatial change detection is a remote sensing application performed on aerial or satellite images for multiclass change detection. However, in this project, a table of point records is used for binary classification into changed and not changed classes. Different traditional and new deep learning approach have been explored to perform this task. The motivations to use them are given hereinafter. An extended version of this section with detailed introduction to the machine learning models is available in Appendix A3 . Three traditional classification models, logistic regression (LR) , XGBoost and random forest (RF) , are tested. The three models represent the most popular approaches in the field - the linear, boosting, and bagging models. In this project, logistic regression is well adapted because it can explain the relationship between one dependent binary variable and one or more nominal, ordinal, interval or ratio-level independent variables. Concerning XGBoost, it has the advantage that weaker classifiers are introduced sequentially to focus on the areas where the current model is struggling, while misclassified observations would receive extra weight during training. Finally, in random forest, higher accuracy may be obtained and overfitting still avoided through the larger number of trees and the sampling process. Beyond these traditional popular approaches, another two deep learning algorithms are explored as well: fully connected network and convolutional recurrent neural network . Different from the traditional machine learning algorithms, deep learning does not require manual feature extraction or engineering. Deep neural networks capture the desired feature with back-propagation optimization process. Besides, these deep neural networks have some special design for temporal or spatial inputs, because it is assumed that the internal pattern of the dataset would match with the network structure and the model will have better performance. 3.2.1 Focal loss \u00b6 Deep neural networks need differentiable loss function for optimization training. For this project with imbalanced classification task, the local loss was chosen rather than the traditional (binary) cross entropy loss . \\[\\begin{align} \\\\ FL(p_t) = -{\\alpha}(1-p_t)^{\\gamma} \\ log(p_t) \\\\ \\end{align}\\] where \\(p_t\\) is the probability of predicting the correct class, \\(\\alpha\\) is a balance factor between positive and negative classes, and \\(\\gamma\\) is a modulation factor that controls how much weight is given to examples hard to classify. Focal loss is a type of loss function that aims to solve the problem of class imbalance in tasks like classification. Focal loss modifies the cross entropy loss by adding a factor that reduces the loss for easy examples and increases the loss for examples hard to classify. This way, focal loss focuses more on learning from misclassified examples. Compared with other loss functions such as cross entropy, binary cross entropy and dice loss, some advantages of focal loss are: it can reduce the dominance of well-classified examples and prevent them from overwhelming the gradient it can adaptively adjust the weight of each example based on its difficulty level it can improve the accuracy and recall of rare classes by adjusting \\(\\alpha\\) to give more weight to them \\(\\alpha\\) should be chosen based on the class frequency. A common choice is to set \\(\\alpha_t\\) is 1 minus the frequency of class t. This way, rare classes get more weight than frequent classes. \\(\\gamma\\) should be chosen based on how much you want to focus on hard samples. A larger gamma means more focus on hard samples, while a smaller gamma means less focus. The original paper suggested that a gamma equal to 2 is an effective value for most cases. 3.2.2 Fully connected network (FCN) \u00b6 Fully connected network (FCN) in deep learning is a type of neural network that consists of a series of fully connected layers. The major advantage of fully connected networks for this project is that they are structure agnostic. That is, no special assumptions need to be made about the input (for example, that the input consists of images or videos). A disadvantage of FCN is that it can be very computationally expensive and prone to overfitting due to the large number of parameters involved. Another disadvantage is that it does not exploit any spatial or temporal structure in the input data, which can lead to poor performance for some tasks. For implementation, the FCN employ 4 hidden layers (2048, 2048, 1024, 512 neurons respectively) besides the input and output layer. Relu activation function are chosen before the output layer while sigmoid function is applied at the end to scale the result to probability representation. 3.2.3 Convolutional recurrent neural network (ConvRNN) \u00b6 Convolutional recurrent neural network (ConvRNN) is a type of neural network that combines convolutional neural networks (CNNs) and recurrent neural networks (RNNs). CNNs are good at extracting spatial features from images, while RNNs are good at capturing temporal features from sequences. ConvRNNs can be used for tasks that require both spatial and temporal features as it is meant to be achieved in this project. Furthermore, the historical data of the land cover and land use can be translated to some synthetic images. The synthetic images use channels to represent sequence of surveys and the pixel value represents ground truth label. Thus, the spatial relationship of the neighbour tiles could be extracted from the data structure with the CNN. Figure 14: Convolutional Recurrent Neural Network Pipeline. In this project, we explored ConvRNN with structure shown in Figure 14. The sequence of surveys are treated as sequence of input \\(x^t\\) . With the recurrent structure and hidden states \\(h^t\\) to transmit information, the temporal information could be extracted. Different from the traditional RNN, the function \\(f\\) in hidden layers of the recurrent structure use convolutional operation instead of matrix computation and an additional CNN module is applied to the sequence output to detect the spatial information. 3.3 Performance metric \u00b6 Once the different machine learning models are trained for the respective module, comparison has to be made on the test set to evaluate their performance. This will be performed with the help of metrics. 3.3.1 Traditional metrics \u00b6 As discovered in the distribution analysis , the dataset is strongly unbalanced. Some class is thousands of others. This is of importance to change detection. Moreover, among 348'474 tiles in the dataset, only 58'737 (16.86%) tiles have changed. If the overall accuracy is chosen as the performance metric, the biased distribution would make the model tend to predict everything unchanged. In that case, the accuracy of the model can achieve 83.1%, which is a quite high value achieved without any effort. Therefore, avoiding the problem during the model training and selecting the suitable metric that can represent the desired performance are the initial steps. The constant model is defined as a model which predicts the third survey interpretation values as the prediction of the forth survey. In simple words, the constant model predicts that everything does not change. By this definition, we can calculate all kinds of metrics for other change detection models and compare them to the constant model metrics to indentify models with better performance. For change detection with the constant model, the performance is as below: Figure 15: Confusion matrix of constant distribution as prediction: TP=True Positive, TN=True Negative, FP=False Positive, FN=False Negative. Table 2: Metrics evaluation for constant model. Models Accuracy Balanced Accuracy Precision (PPV/NPV) Recall (TPR/TNR) F1-score Constant 0.831 0.500 Positive Negative 0.000 0.831 0.000 1.000 0.000 0.907 Definition of abbreviations: For positive case: Precision = TP / (TP + FP) Recall = TP / (TP + FN) (Positive predictive value, PPV) (True positive rate, TPR) For negative case: Precision = TN / (TN + FN) Recall = TN / (TN + FP) (Negative predictive value, NPV) (True negative rate, TNR) Detailed metrics definition can be found here The aim of the change detection is to predict the tiles of high confidence that do not change, so that the interpretation from the last survey can be used directly. However, the negative-case-related metrics above and the accuracy are not suitable for the present task because of the imbalance nature of the problem. Indeed, they indicate a high performance for the constant model, which we know is not depicting the reality, because of the large amount of unchanged tiles. After the test, the balanced accuracy which is the mean of the true positive rate and the true negative rate is considered a suitable metric for change detection. 3.3.2 Specific weighted metric for change detection \u00b6 In theory, true negative rate is equivalent to 1 minus false positive rate. Optimizing balanced accuracy typically results in minimizing the false positive rate. However, our primary objective is to reduce false negative instances (i.e., changed cases labeled as unchanged), while maximizing the true positive rate and true negative rate. False positives are of lesser concern, as they will be manually identified in subsequent steps. Consequently, balanced accuracy does not adequately reflect the project's primary objective. With the help of FSO interpretation team, an additionnal, specific metric targeting on the objective has been designed to measure the model performance. Reminding the Exploratory Data Analysis , some transformation patterns have been found and applied in this metric as well. Figure 16: Workflow with multiple input to define a weighted metric. As depicted in Figure 16, the FSO interpretation team designed two filters to derive a custom metric. The first filter combines inputs from all the possible modules (in this case, the image-level and temporal-spatial modules). The input modules give the probability of change detection or multi-class classification prediction with confidence. As prediction from modules might be different, the first filter will set the final prediction of a tile as positive if any input module gives a positive prediction. Here the threshold to define positive is a significant hyperparameter to finetune. The Weights Matrix defined by the human experts is the core of the entire metric. Based on professional experience and observation of EDA, the experts assigned different weights to all possible transformations. These weights demonstrate the importance of the transformation to the overall statistics. Besides, part of the labels is defined as Small Classes , which means that these classes are negligible or we do not consider them in this study. The second filter removes all the transformations related to the small classes and apply the weights matrix to all the remained tiles. Finally, the weighted metric is calculated as below: \\[\\begin{align} Automatized \\ Tiles &= {\\#Predicted \\ Negatives} \\\\ \\\\ Automatized \\ Capacity &= {{\\#Automatized \\ Tiles} \\over {\\#Negatives \\ (ground \\ truth)}} \\\\ \\\\ Missed \\ Weighted \\ Changed \\ Ratio &= {{\\sum \\{Missed \\ Change \\times Weight\\}} \\over {\\sum \\{All \\ Change \\times Weight\\}}} \\\\ \\\\ Weighted \\ Metric &= Automatized \\ Capacity \\times (0.1 - Missed \\ Weighted \\ Changed \\ Ratio) \\ / \\ 0.1 \\end{align}\\] From now on, we will still calculate metrics like balanced accuracy and recall for reference and analysis; however, the Weighted Metric is the decisive metric for model selection. 3.4 Training and testing plan \u00b6 Introduced in Section 1.3 , the 348'474 tiles with temporal-spatial information are selected for training. The 80%-20% split is applied to the selected tiles to create the train set and the test set respectively. Adam optimizer and multi-step learning rate scheduler are deployed for better convergence. For the temporal-spatial module, metrics for ablation study on the descriptors and descriptor importance are first computed. The descriptor importance is taken from XGBoost simulations. The ablation study is performed with the logistic regression and consists of training the model with: 8 neighbors and time activated, \"baseline\" 4 neighbors (northern, western, southern, eastern neighbors) no spatial-neighbors, \"space deactivate\" no temporal-neighbors, \"time deactivate\" Then, the baseline configuration is used to trained the traditional algorithms and the deep learning ones. Metrics are compared and the best performing models are kept for the integration module. Finally, the performance of several configurations are compared for the integration module. direct outputs of the image-level module direct outputs of the best performing temporal-spatial module outputs of the best performing temporal-spatial module, followed by RF training for the integration module. outputs of the best performing temporal-spatial module, followed by FCN training for the integration module. The extra information gain from the temporal-spatial module will be studied by comparison with image-level performance only. The image-level data contain multi-class classification prediction and its confidence. We can calculate the change probability according to the probability of each class. Therefore, the weighted metric can also be applied at the image-level only. Then, the RF and FCN are tested for the integration module which combines various types of information sources. 4. Experiments \u00b6 The Experiments section covers the results obtained when performing the planned simulations for the temporal-spatial module and the integration module. 4.1 Temporal-spatial module \u00b6 4.1.1 Feature engineering (time and space deactivation) \u00b6 In the temporal-spatial module, the studied models take advantages of both the space (the neighbors) and the time (different surveys) information as introduced in Section 3.1 . Ablation study is performed here to acknowledge the feature importance and which information really matters in the model. Table 3: Model metrics for ablation plan. Logistic Regression Best threshold Accuracy Balanced Accuracy Precision (PPV/NPV) Recall (TPR/TNR) F1-score Time deactivate 0.515 0.704 0.718 Positive Negative 0.330 0.930 0.740 0.696 0.457 0.796 Space deactivate 0.505 0.684 0.711 Positive Negative 0.316 0.930 0.752 0.670 0.445 0.779 4 neighbors 0.525 0.707 0.718 Positive Negative 0.332 0.929 0.734 0.701 0.458 0.799 Baseline* 0.525 0.711 0.720 Positive Negative 0.337 0.928 0.734 0.706 0.462 0.802 *Baseline: 8 neighbors with time and space activated Table 3 reveals the performance change when time or space information is totally or partially (4-neighbors instead of 8-neighbors) deactivated. While time deactivation and less-neighbors hardly have an influence on the balanced accuracy (only 0.2% decrease), the one for space deactivation decreased by about 1%. The result demonstrates that space information is more vital to the algorithm than time information, even though both have a minor impact. Figure 17: Feature importance analysis comparasion of 4 (left) and 8 (right) neighbors. Figure 18: Feature importance analysis comparasion of time (left) and space (right) deactivation. Figure 17 and 18 give the feature importance analysis from the XGBoost model. The sum of feature importance from variables all related to the tile itself and its neighbors are plotted in the charts. The 4-neighbor and 8-neighbor have similar capacities but the importance of neighbors for the latter is much more than for the former. This is caused by the number of variables. With more neighbors, the number of variables related to the neighbor increases and the sum of the feature importance grows as well. The feature importance illustrates the weight assigned to the input variables. From Figure 17, it is obvious that the variable related to the tile itself from past surveys is the most critical. Furthermore, the more recent, the more important. The neighbor on the east and west (neighbors 3 and 4) are more significant than others and even more than the land use of the tile in the first survey. In conclusion, the feature importance is not evenly distributed. However, the ablation study shows that the model with all the features as input achieved the best performance. 4.1.2 Baseline models with probability or tree models \u00b6 Utilizing the time and space information from the neighbors, three baseline methods with probability or tree model are fine-tuned. The logistic regression outperforms the other two, achieving 72.0% balanced accuracy. As result, more than 41'000 tiles are correctly predicted as unchanged while only about 3'000 changed tiles are missed as they are the false negatives. Detailed metrics of each method are listed in Table 4. Table 4: Performance metrics for traditional machine learning simulation of spatial-temporal model. Models Accuracy Balanced Accuracy Precision (PPV/NPV) Recall (TPR/TNR) F1-score Logistic Regression 0.711 0.720 Positive Negative 0.337 0.928 0.734 0.706 0.462 0.802 Random Forest 0.847 0.715 Positive Negative 0.775 0.849 0.134 0.992 0.229 0.915 XGBoost 0.837 0.715 Positive Negative 0.533 0.869 0.297 0.947 0.381 0.906 Constant 0.830 0.500 Positive Negative 0.000 0.830 0.000 1.000 0.000 0.907 21: Metric changes with different threshold for logistic regression. Besides the optimal performance with balanced accuracy, logistic regression can manually adjust its ability by changing the decision threshold as its output is the probability to change instead of prediction only. For example, we can trade off between the true positive rate and the negative predictive value. As shown in Figure 19, if we decrease the threshold probability, the precision of the negative case (NPV) will increase while the true negative rate goes down. This means more tiles need manual checks; however, fewer changed tiles are missed. Considering both the performance and the characteristics, Logistic Regression is selected as the baseline model. 4.1.3 Neural networks: FCN and ConvRNN \u00b6 FCN and ConvRNN work differently: FCN does not have special structure designed for temporal-spatial data while ConvRNN has specific designation for time and space information respectively. To study these two extreme situations, we explored their performance and compared with the logistic regression which is the best of the baseline models. Table 5: Performance metrics for deep machine learning simulation of spatial-temporal model Models Weighted Metric Raw Metric Balanced Accuracy Recall Missed Changes Missed Changes Ratio Missed Weighted Changes Missed Weighted Changes Ratio Automatized Points Automatized Capacity LR (Macro)* 0.237 0.197 0.655 0.954 349 0.046 18995 0.035 14516 0.364 LR (BA)* 0.249 0.207 0.656 0.957 326 0.043 17028 0.031 14478 0.363 FCN 0.259 0.21 0.656 0.958 322 0.042 15563 0.029 14490 0.363 ConvRNN 0.176 0.133 0.606 0.949 388 0.051 19026 0.035 10838 0.272 Constant -10.717 -10.72 0.500 0.000 7607 1.000 542455 1.00 47491 1.191 *Macro: the model is trained with Macro F1-score ; BA: the model is trained with Balanced Accuracy. As a result of its implementation (see Section 3.2.2 ), FCN outperforms all the models with a value of 0.259 for the weighted metric, slightly above the logistic regression with 0.249. ConvRNN does not perform well even if we have increased the size of hidden states to 1024. Following deliberation, we posit that the absence of one-hot encoding during the generation of synthetic images may be the cause, given that an increased number of channels could substantially explodes computational expenses. Since the ground truth label is directly applied to pixel values, the model may attempt to discern numerical relationships among distinct pixel values that, in reality, do not exist. This warrants further investigation in subsequent phases of our research. 4.2 Integration module \u00b6 Table 5 compares the performance of FCN or image-level only to several configurations for the integration module. Table 5: Performance metrics for the integration model in combination with a spatial-temporal model. Model Weighted Metric Raw Metric Balanced Accuracy Recall Missed Changes Missed Changes Ratio Missed Weighted Changes Missed Weighted Changes Ratio Automatized Points Automatized Capacity FCN 0.259 0.210 0.656 0.958 322 0.042 15563 0.029 14490 0.363 image-level 0.374 0.305 0.737 0.958 323 0.042 15735 0.029 20895 0.524 LR + RF 0.434 0.372 0.752 0.969 241 0.031 10810 0.020 21567 0.541 FCN + RF 0.438 0.373 0.757 0.968 250 0.032 11277 0.021 22010 0.552 FCN + FCN 0.438 0.376 0.750 0.970 229 0.030 9902 0.018 21312 0.534 LR + FCN 0.423 0.354 0.745 0.967 255 0.033 10993 0.020 21074 0.528 The study demonstrates that the image-level contains more information related to change detection compared with temporal-spatial neighbors ( FCN row in the Table 5). However, performance improvement from the temporal-spatial module when combined with image-level data, achieving 0.438 in weighted metric in the end ( FCN+RF and FCN+FCN ). Regarding the composition of different models for the two modules, FCN is proved to be the best one for the temporal-spatial module, while RF and FCN have similar performance in the integration module. The choice of integration module could be influenced by the data format of other potential modules. This will be further studied by the FSO team. 5. Conclusion and outlook \u00b6 This project studied the potential of historical and spatial neighbor data in change detection task for the fifth interpretation process of the areal statistic of FSO. For the evaluation of this specific project, a weighted metric was defined by the FSO team. The temporal-spatial information was proved not to be as powerful as image-level information which directly detects change within visual data. However, an efficient prototype was built with 6% performance improvement in weighted metric combining the temporal-spatial module and the image-level module. It is validated that integration of modules with different source information can help to enhance the final capacity of the entire workflow. The next research step of the project would be to modify the current implementation of ConvRNN. If the numerical relationship is removed from the synthetic image data, ConvRNN should have similar performance as FCN theoretically. Also, CNN is worth trying to validate whether the temporal pattern matters in this dataset. Besides, by changing the size of the synthetic images, we can figure out how does the number of neighbour tiles impact the model performance. Appendix \u00b6 A1. Classes of land cover and land use \u00b6 Figure 20: Land Cover classification labels. Figure 21: Land Use classification labels. A2. Probability analysis of different periods \u00b6 A2.1 Land cover \u00b6 Figure 22: Land cover probability matrix. Figure 23: Land cover transformation probability without change. Figure 24: Maximum transformation probability to a certain class when land cover changes. A2.2 Land use \u00b6 Figure 25: Land use probability matrix. Figure 26: Land use transformation probability without change. Figure 27: Maximum transformation probability to a certain class when land use changes. A3 Alternative version of Section 3.2 \u00b6 A3.1 Logistic regression \u00b6 Logistic regression is a kind of Generalized Linear Model . It is the appropriate regression analysis to conduct when the dependent variable is dichotomous (binary). Like all regression analyses, logistic regression is a predictive analysis in this project. Logistic regression is used to describe data and to explain the relationship between one dependent binary variable and one or more nominal, ordinal, interval or ratio-level independent variables. A3.2 XGBoost & random forest \u00b6 Figure 28: Comparison of boosting and bagging models. XGBoost and Random Forest both originate from the tree model, while one is the sequential variant and the other is the parallel variant. Extreme Gradient Boosting (XGBoost) is a distributed, scalable gradient-boosted decision tree (GBDT) machine learning algorithm. Gradient boosting is a flexible method used for regression, multi-class classification, and other tasks since it is compatible with all kinds of loss functions. It recasts boosting as a numerical optimization problem with the goal of reducing the loss function of the model by adding weak classifiers while employing gradient descent. Later, a first-order iterative approach, gradient descent, is used to find the local optimal of its differentiable function. Weaker classifiers are introduced sequentially to focus on the areas where the current model is struggling while misclassified observations would receive extra weight during training. Random Forest is a bagging technique that contains a number of decision trees generated from the dataset. Instead of relying solely on one decision tree, it takes the average of a number of trees to improve the predictive accuracy. For each tree, the input feature is a different sampled subset from all the features, making the model more robust and avoiding overfitting. Then, these trees are trained with a bootstrapping-sampled subset of the dataset respectively. Finally, the random forest takes the prediction from each tree and based on the majority votes makes the final decision. Higher accuracy is obtained and overfitting is avoided through the larger number of trees and the sampling process. A3.3 Focal loss \u00b6 The next two methods are Deep Neural Networks which need differentiable loss function for optimization training. Here we first tell the difference between the loss function and evaluation metric. The choice of loss function and evaluation metric depends on the task and data. The loss function should be chosen based on whether it is suitable for the model architecture and output type, while the evaluation metric should be relevant for the problem domain and application objectives. The loss function and the evaluation metric are two different concepts in deep learning. The loss function is used to optimize the model parameters during training, while the evaluation metric is used to measure the performance of the model on a test set. The loss function and the evaluation metric may not be the same. For example, Here we use focal loss to train a classification model, but use balanced accuracy or specific defined metric to evaluate its performance. The reason for this is that some evaluation metrics may not be differentiable or easy to optimize, or they may not match with the objective of the model. For this project with imbalanced classification task, we think the Focal Loss is a better choice than the traditional (binary) Cross Entropy Loss. \\[\\begin{align} \\\\ FL(p_t) = -{\\alpha}(1-p_t)^{\\gamma} \\ log(p_t) \\\\ \\end{align}\\] where p_t is the probability of predicting the correct class, \\(\\alpha\\) is a balance factor between positive and negative classes, and \\(\\gamma\\) is a modulation factor that controls how much weight is given to examples hard to classify. Focal loss is a type of loss function that aims to solve the problem of class imbalance in tasks like classification. Focal loss modifies the cross entropy loss by adding a factor that reduces the loss for easy examples and increases the loss for examples hard to classify. This way, focal loss focuses more on learning from misclassified examples. Compared with other loss functions such as cross entropy, binary cross entropy and dice loss, some advantages of focal loss are: It can reduce the dominance of well-classified examples and prevent them from overwhelming the gradient. It can adaptively adjust the weight of each example based on its difficulty level. It can improve the accuracy and recall of rare classes by adjusting \\(\\alpha\\) to give more weight to them. \\(\\alpha\\) should be chosen based on the class frequency. A common choice is to set \\(\\alpha_t\\) = 1 - frequency of class t. This way, rare classes get more weight than frequent classes. \\(\\gamma\\) should be chosen based on how much you want to focus on hard samples. A larger gamma means more focus on hard samples, while a smaller gamma means less focus. The original paper suggested gamma = 2 as an effective value for most cases. A3.4 Fully connected network (FCN) \u00b6 Figure 29: Network structure of FCN. The fully connected network (FCN) in deep learning is a type of neural network that consists of a series of fully connected layers. A fully connected layer is a function from \\(\\mathbb{R}_m\\) to \\(\\mathbb{R}_n\\) that maps each input dimension to each output dimension. The FCN can learn complex patterns and features from data using backpropagation algorithm. The major advantage of fully connected networks is that they are \u201cstructure agnostic.\u201d That is, no special assumptions need to be made about the input (for example, that the input consists of images or videos). Fully connected networks are used for thousands of applications, such as image recognition, natural language processing, and recommender systems. A disadvantage of FCN is that it can be very computationally expensive and prone to overfitting due to the large number of parameters involved. Another disadvantage is that it does not exploit any spatial or temporal structure in the input data, which can lead to poor performance for some tasks. A possible alternative to fully connected network is convolutional neural network (CNN), which uses convolutional layers that apply filters to local regions of the input data, reducing the number of parameters and capturing spatial features. A3.5 Convolutional neural network (CNN) \u00b6 CNN stands for convolutional neural network, which is a type of deep learning neural network designed for processing structured arrays of data such as images. CNNs are very good at detecting patterns in the input data, such as lines, shapes, colors, or even faces and objects. CNNs use a special technique called convolution, which is a mathematical operation that applies a filter (also called a kernel) to each part of the input data and produces an output called a feature map. Convolution helps to extract features from the input data and reduce its dimensionality. CNNs usually have multiple layers of convolution, followed by other types of layers such as pooling (which reduces the size of the feature maps), activation (which adds non-linearity to the network), dropout (which prevents overfitting), and fully connected (which performs classification or regression tasks). CNNs can be trained using backpropagation and gradient descent algorithms. CNNs are widely used in computer vision and have become the state of the art for many visual applications such as image classification, object detection, face recognition, semantic segmentation, etc. They have also been applied to other domains such as natural language processing for text analysis. Figure 30: Workflow of Convolutional Neural Network. In this project, the historical data of the land cover and land use can be translated to some synthetic images. The synthetic images use channels to represent sequence of surveys and the pixel value represents ground truth label. Thus, the spatial relationship of the neighbour tiles could be extracted from the data structure with the CNN. A3.6 Convolutional recurrent neural network (ConvRNN) \u00b6 A convolutional recurrent neural network (ConvRNN) is a type of neural network that combines convolutional neural networks (CNNs) and recurrent neural networks (RNNs). CNNs are good at extracting spatial features from images, while RNNs are good at capturing temporal features from sequences. ConvRNNs can be used for tasks that require both spatial and temporal features, such as image captioning and speech recognition. A ConvRNN consists of two main parts: a CNN part and an RNN part. The CNN part takes an input image or signal and applies convolutional filters to extract features. The RNN part takes these features as a sequence and processes them with recurrent units that have memory. The output of the RNN part can be a single vector or a sequence of vectors, depending on the task. A ConvRNN can learn both spatial and temporal patterns from data that have both dimensions, such as audio signals or video frames. For example, a ConvRNN can detect multiple sound events from an audio signal by extracting frequency features with CNNs and capturing temporal dependencies with RNNs. Figure 31: Convolutional Recurrent Neural Network Pipeline. In this project, we explored ConvRNN with structure shown in Figure 31. The sequence of surveys are treated as sequence of input \\(x^t\\) . With the recurrent structure and hidden states \\(h^t\\) to transmit information, the temporal information could be extracted. Different from the traditional Recurrent Neural Network, the function \\(f\\) in hidden layers of the recurrent structure use Convolutional operation instead of matrix computation and an additional CNN module is applied to the sequence output to detect the spatial information.","title":"Using spatio-temporal neighbor data information to detect changes in land use and land cover"},{"location":"PROJ-LANDSTATS/#using-spatio-temporal-neighbor-data-information-to-detect-changes-in-land-use-and-land-cover","text":"Shanci Li (Uzufly) - Alessandro Cerioni (Canton of Geneva) - Clotilde Marmy (ExoLabs) - Roxane Pott (swisstopo) Proposed by the Swiss Federal Statistical Office - PROJ-LANDSTATS September 2022 to March 2023 - Published on April 2023 All scripts are available on GitHub . Abstract : From 2020 on, the Swiss Federal Statistical Office started to update the land use/cover statistics over Switzerland for the fifth time. To help and lessen the heavy workload of the interpretation process, partially or fully automated approaches are being considered. The goal of this project was to evaluate the role of spatio-temporal neighbors in predicting class changes between two periods for each survey sample point. The methodolgy focused on change detection, by finding as many unchanged tiles as possible and miss as few changed tiles as possible. Logistic regression was used to assess the contribution of spatial and temporal neighbors to the change detection. While time deactivation and less-neighbors have a 0.2% decrease on the balanced accuracy, the space deactivation causes 1% decrease. Furthermore, XGBoost, random forest (RF), fully convolutional network (FCN) and recurrent convolutional neural network (RCNN) performance are compared by the means of a custom metric, established with the help of the interpretation team. For the spatial-temporal module, FCN outperforms all the models with a value of 0.259 for the custom metric, whereas the logistic regression indicates a custom metrics of 0.249. Then, FCN and RF are tested to combine the best performing model with the model trained by OFS on image data only. When using temporal-spatial neighors and image data as inputs, the final integration module achieves 0.438 in custom metric, against 0.374 when only the the image data is used. It was conclude that temporal-spatial neighbors showed that they could light the process of tile interpretation.","title":"Using spatio-temporal neighbor data information to detect changes in land use and land cover"},{"location":"PROJ-LANDSTATS/#1-introduction","text":"The introduction presents the background and the objectives of the projects, but also introduces the input data and its specific features.","title":"1. Introduction"},{"location":"PROJ-LANDSTATS/#11-background","text":"Since 1979, the Swiss Federal Statistical Office (FSO) provides detailed and accurate information on the state and evolution of the land use and the land cover in Switzerland. It is a crucial tool for long-term spatial observation. With these statistics, it is possible to determine whether and to what extent changes in land cover and land use are consistent with the goals of Swiss spatial development policies ( FSO ). Figure 1: Visualization of the land cover and land use classification. Every few years, the FSO carries out a survey on aerial or satellite images all over Switzerland. A grid with sample points spaced 100 meters apart overlays the images, providing 4.1 million sample points on which the statistics are based. The classification of the hectare tile is assigned on the center dot, as shown in Figure 1. Currently, a time series of four surveys is accessible, based on aerial images captured in the following years: 1979\u20131985 (1st survey, 1985) 1992\u20131997 (2nd survey, 1997) 2004\u20132009 (3rd survey, 2009) 2013\u20132018 (4th survey, 2018) The first two surveys of the land statistics in 1979 and 1992 were made by visual interpretation of aerial analogue photos using stereoscopes. Since the 2004 survey, the methodology was deeply renewed, in particular through the use of digital aerial photographs, which are observed stereoscopically on workstations using specific photogrammetry software . A new nomenclature (2004 NOAS04) has also been introduced in 2004 which systematically distinguishes 46 land use categories and 27 land cover categories. A numerical label from this catalogue is assigned to each point by a team of trained interpreters. The 1979 and 1992 surveys have been revised according to the nomenclature NOAS04, so that all readings (1979, 1992, 2004, 2013) are comparable. On this page you will find the geodata of the Land Use Statistics at the hectare level since 1979, as well as documentation on the data and the methodology used to produce these data. Detailed information on basic categories and principal domains can be found in Appendix 1 .","title":"1.1 Background"},{"location":"PROJ-LANDSTATS/#12-objectives","text":"It is known that manual interpretation work is time-consuming and expensive. However, in a feasibility study , the machine learning technique showed great potential capacity to help speed up the interpretation, especially with deep learning algorithms. According to the study, 50% of the estimated interpretation workload could be saved. Therefore, FSO is currently carrying out a project to assess the relevance of learning and mastering the use of artificial intelligence (AI) technologies to automate (even partially) the interpretation of aerial images for change detection and classification. The project is called Area Statistics Deep Learning (ADELE). FSO had already developed tools for change detection and multi-class classification using the image data. However, the current workflow does not exploit the spatial and temporal dependencies between different points in the surveys. The aim of this project is therefore to evaluate the potential of spatial-temporal neighbors in predicting whether or not points in the land statistics will change class. The methodolgy will be focused on change detection, by finding as many unchanged tiles as possible (automatized capacity) and miss as few changed tiles as possible. The detailed objectives of this project are to: explore the internal transformation patterns of tile classification from a data analytics perspective build a prototype that performs change detection for tiles in the next survey help the domain experts to integrate the prototype within the OFS workflow","title":"1.2 Objectives"},{"location":"PROJ-LANDSTATS/#13-input-data","text":"The raw data delivered by the domain experts is a table with 4'163'496 records containing the interpretation results of both land cover and land use from survey 1 to survey 4. An example record is shown in Table 1 and gives following information: RELI: 8-digit number composed by the EAST hectare number concatenated with the NORTH hectare number EAST: EAST coordinates (EPSG:2056) NORTH: NORTH coordinates (EPSG:2056) LUJ: Land Use label for survey J LCJ: Land Cover label for survey J training: value 0 or 1. A value of 1 means that the point can be included in the training or validation set Table 1: Example record of raw data delivered by the domain experts. RELI EAST NORTH LU4* LC4 LU3 LC3 LU2 LC2 LU1 LC1 training 74222228 2742200 1222800 242 21 242 21 242 21 242 21 0 75392541 2753900 1254100 301 41 301 41 301 41 301 41 0 73712628 2737100 1262800 223 46 223 46 223 46 223 46 0 * The shortened LC1/LU1 to LC4/LU4 will be used to simplify the notation of Land Cover/Use of survey 1 to survey 4 in the following documentation. For machine learning, training data quality has strong influence on model performance. With the training label, domain experts from FSO selected data points that are more reliable and representative. These 348'474 tiles and their neighbors composed the training and testing dataset for machine learning methodology.","title":"1.3 Input data"},{"location":"PROJ-LANDSTATS/#2-exploratory-data-analysis","text":"As suggested by domain experts, exploratory data analysis (EDA) is of significance to understand the data statistics and find the potential internal patterns of class transformation. The EDA is implemented from three different perspectives: distribution, quantity and probability. With the combination of the three, we can find that there do exist certain trends in the transformation of both land cover and land use classes. For the land cover, main findings are: distribution: most surface of Switzerland is covered by vegetation or forest, bare land and water areas take up a considerable portion as well, artificial areas take up a small portion of the land cover probability: transformation between some classes had never happened during the past four decades, all classes of land cover are most likely to keep their status rather than to change quantity: there are some clear patterns in quantitative changes Open Forest goes to Closed Forest Brush Meadows go to Shrubs Garden Plants go to Grass and Herb Vegetation Shrubs go to Closed Forest Cluster of Tree goes to Grass and Herb Vegetation For the land use, main findings are: distribution: agricultural and forest areas are the main land uses, unused area also stands out from others classes. probability: transformation between some classes had never happened during the past four decades; on the contrary, construction site, non-exploited urban areas and forest areas tend to change to other classes rather than keep unchanged quantity: the most transformations happened inside the superclasses of Arable and Grassland and of Forest not Agricultural . Readers particularly interested by the change detection methods can directly go to Section 3 ; otherwise, readers are welcomed to read the illustrated and detailed EDA given hereafter.","title":"2. Exploratory data analysis"},{"location":"PROJ-LANDSTATS/#21-distribution-statistics","text":"Figure 2: Land cover distribution plot. Figure 3: Land use distribution plot. First, a glance at the overall distribution of land cover and land use is shown in Figure 2 and 3. The X-axis is the label of each class while the Y-axis is the number of tiles in the Log scale. The records of the four surveys are plotted in different colors chronologically. By observation, some trends can be found across the four surveys. Artificial areas only take up a small portion of the land cover (labels between 10 to 20), while most surface of Switzerland is covered by vegetation or forest (20 - 50). Bare land (50 - 60) and water areas (60 - 70) take up a considerable portion as well. For land use, it is obvious that the agricultural (200 - 250) and forest (300 - 310) areas are the main components while the unused area (421) also stands out from others. Most classes kept the same tendency during the past 40 years. There are 11 out of 27 land cover classes and 32 out of 46 land use classes which are continuously increasing or decreasing all the time. Especially for land use, compared with 10 classes rising with time, 22 classes dropping, which indicates that there is some transformation patterns that caused the leakage from some classes to those 10 classes. We will dive into these patterns in the following sections.","title":"2.1 Distribution statistics"},{"location":"PROJ-LANDSTATS/#22-quantity-statistics","text":"The data are explored in a quantitative way by three means: visualization of transformations between 2 surveys visualization of sequential transformation over time identifying patterns and most occured transformations in different periods.","title":"2.2 Quantity statistics"},{"location":"PROJ-LANDSTATS/#23-probability-matrix","text":"The above analysis demonstrates the occurrence of transformation with quantitative statistics. However, the number of tiles for different classes is not a uniform distribution as shown in the distribution analysis. The largest class is thousands of times more than the smallest one. Sometimes, the quantity of a transformation is trivial compared with the majority, but it is caused by the small amount of tiles for the class. Even if the negligible class would not have a significant impact on the performance of change detection, it is of great importance to reveal the internal transformation pattern of the land statistics and support the multi-class classification task. Therefore, the probability analysis is designed as below: The probability analysis for land cover/use contains 3 parts: The probability matrix presents the probability of transformation from the source class (Y-axis) to the destination class (X-axis). The value of the probability is illustrated by the depth of the color in the log scale. The distribution of the probability that a class does not change, which is a more detailed visualization of the diagonal value of the probability matrix. The distribution of the maximum probability that a class changes to another certain class. This is a deeper inspection to look for a fixed transformation pattern that exists between two classes. The probability is calculated by the status change between the beginning survey and the end survey stated in the figure title. For example Figure 6 is calculated by the transformation between survey 1 and survey 4, without taking into account possible intermediate changes in survey 2 and 3.","title":"2.3 Probability matrix"},{"location":"PROJ-LANDSTATS/#3-methods","text":"The developed method should be integrated in the OFS framework for change detection and classification of land use and land cover illustrated in Figure 12. The interesting parts for this project are highlighted in orange and will be presented in the following. Figure 12: Planned structure in FSO framework for final prediction. Figure 12 shows on the left the input data type in the OFS framework. The current project work on the LC/LU neighbors introduced in Section 1.3 . The main objective of the project - to detect change by means of these neighbors - is the temporal-spatial module in Figure 12. As proposed by the feasibility study, FSO had implement studies on change detection and multi-class classification on swisstopo aerial images time series to accelerate the efficiency of the interpretation work. The predicted LC and LU probabilities and information obtained by deep learning are defined as the image-level module. In a second stage of the project, the best model for combining the temporal-spatial and the image-level module outputs is explored to evaluate the gain in performance after integration of the spatial-temporal module in the OFS framework. This is the so-called integration module. The rest of the input data will not be part of the performance evaluation.","title":"3. Methods"},{"location":"PROJ-LANDSTATS/#31-temporal-spatial-module","text":"Figure 13: Time and space structure of a tile and its neighbors. The input data to the temporal-spatial module will be the historical interpretation results of the tile to predict and its 8 neighbors. The first three surveys are used as inputs to train the models while the forth survey serves as the ground truth of the prediction. This utilizes both the time and space information in the dataset like depicted in Figure 13. During the preprocessing, the tiles with missing neighbors were discarded from the dataset to keep the data format consistent, which is insignificant (about 400 out of 348'868). The determination of change is influenced by both land cover and land use. When there is a disparity between the classifications in the fourth survey and the third one for a specific tile, it is identified as altered (positive) in change detection. The joint prediction of land cover and land use is based on the assumption that a correlation may exist between them. If the land cover of a tile undergoes a change, it is probable that its land use will also change. Moreover, the tile is assigned numerical labels. Nevertheless, the model does not desire a numerical association between classes, even when they belong to the same superclass and are closely related. To address this, we employ one-hot encoding, which transforms a single land cover column into 26 columns, with all values set to '0' except for one column marked as '1' to indicate the class. Despite increasing the model's complexity with almost two thousand input columns, this is a necessary trade-off to eliminate the risk of numerical misinterpretation.","title":"3.1 Temporal-spatial module"},{"location":"PROJ-LANDSTATS/#32-change-detection","text":"Usually, spatial change detection is a remote sensing application performed on aerial or satellite images for multiclass change detection. However, in this project, a table of point records is used for binary classification into changed and not changed classes. Different traditional and new deep learning approach have been explored to perform this task. The motivations to use them are given hereinafter. An extended version of this section with detailed introduction to the machine learning models is available in Appendix A3 . Three traditional classification models, logistic regression (LR) , XGBoost and random forest (RF) , are tested. The three models represent the most popular approaches in the field - the linear, boosting, and bagging models. In this project, logistic regression is well adapted because it can explain the relationship between one dependent binary variable and one or more nominal, ordinal, interval or ratio-level independent variables. Concerning XGBoost, it has the advantage that weaker classifiers are introduced sequentially to focus on the areas where the current model is struggling, while misclassified observations would receive extra weight during training. Finally, in random forest, higher accuracy may be obtained and overfitting still avoided through the larger number of trees and the sampling process. Beyond these traditional popular approaches, another two deep learning algorithms are explored as well: fully connected network and convolutional recurrent neural network . Different from the traditional machine learning algorithms, deep learning does not require manual feature extraction or engineering. Deep neural networks capture the desired feature with back-propagation optimization process. Besides, these deep neural networks have some special design for temporal or spatial inputs, because it is assumed that the internal pattern of the dataset would match with the network structure and the model will have better performance.","title":"3.2 Change detection"},{"location":"PROJ-LANDSTATS/#33-performance-metric","text":"Once the different machine learning models are trained for the respective module, comparison has to be made on the test set to evaluate their performance. This will be performed with the help of metrics.","title":"3.3 Performance metric"},{"location":"PROJ-LANDSTATS/#34-training-and-testing-plan","text":"Introduced in Section 1.3 , the 348'474 tiles with temporal-spatial information are selected for training. The 80%-20% split is applied to the selected tiles to create the train set and the test set respectively. Adam optimizer and multi-step learning rate scheduler are deployed for better convergence. For the temporal-spatial module, metrics for ablation study on the descriptors and descriptor importance are first computed. The descriptor importance is taken from XGBoost simulations. The ablation study is performed with the logistic regression and consists of training the model with: 8 neighbors and time activated, \"baseline\" 4 neighbors (northern, western, southern, eastern neighbors) no spatial-neighbors, \"space deactivate\" no temporal-neighbors, \"time deactivate\" Then, the baseline configuration is used to trained the traditional algorithms and the deep learning ones. Metrics are compared and the best performing models are kept for the integration module. Finally, the performance of several configurations are compared for the integration module. direct outputs of the image-level module direct outputs of the best performing temporal-spatial module outputs of the best performing temporal-spatial module, followed by RF training for the integration module. outputs of the best performing temporal-spatial module, followed by FCN training for the integration module. The extra information gain from the temporal-spatial module will be studied by comparison with image-level performance only. The image-level data contain multi-class classification prediction and its confidence. We can calculate the change probability according to the probability of each class. Therefore, the weighted metric can also be applied at the image-level only. Then, the RF and FCN are tested for the integration module which combines various types of information sources.","title":"3.4 Training and testing plan"},{"location":"PROJ-LANDSTATS/#4-experiments","text":"The Experiments section covers the results obtained when performing the planned simulations for the temporal-spatial module and the integration module.","title":"4. Experiments"},{"location":"PROJ-LANDSTATS/#41-temporal-spatial-module","text":"","title":"4.1 Temporal-spatial module"},{"location":"PROJ-LANDSTATS/#42-integration-module","text":"Table 5 compares the performance of FCN or image-level only to several configurations for the integration module. Table 5: Performance metrics for the integration model in combination with a spatial-temporal model. Model Weighted Metric Raw Metric Balanced Accuracy Recall Missed Changes Missed Changes Ratio Missed Weighted Changes Missed Weighted Changes Ratio Automatized Points Automatized Capacity FCN 0.259 0.210 0.656 0.958 322 0.042 15563 0.029 14490 0.363 image-level 0.374 0.305 0.737 0.958 323 0.042 15735 0.029 20895 0.524 LR + RF 0.434 0.372 0.752 0.969 241 0.031 10810 0.020 21567 0.541 FCN + RF 0.438 0.373 0.757 0.968 250 0.032 11277 0.021 22010 0.552 FCN + FCN 0.438 0.376 0.750 0.970 229 0.030 9902 0.018 21312 0.534 LR + FCN 0.423 0.354 0.745 0.967 255 0.033 10993 0.020 21074 0.528 The study demonstrates that the image-level contains more information related to change detection compared with temporal-spatial neighbors ( FCN row in the Table 5). However, performance improvement from the temporal-spatial module when combined with image-level data, achieving 0.438 in weighted metric in the end ( FCN+RF and FCN+FCN ). Regarding the composition of different models for the two modules, FCN is proved to be the best one for the temporal-spatial module, while RF and FCN have similar performance in the integration module. The choice of integration module could be influenced by the data format of other potential modules. This will be further studied by the FSO team.","title":"4.2 Integration module"},{"location":"PROJ-LANDSTATS/#5-conclusion-and-outlook","text":"This project studied the potential of historical and spatial neighbor data in change detection task for the fifth interpretation process of the areal statistic of FSO. For the evaluation of this specific project, a weighted metric was defined by the FSO team. The temporal-spatial information was proved not to be as powerful as image-level information which directly detects change within visual data. However, an efficient prototype was built with 6% performance improvement in weighted metric combining the temporal-spatial module and the image-level module. It is validated that integration of modules with different source information can help to enhance the final capacity of the entire workflow. The next research step of the project would be to modify the current implementation of ConvRNN. If the numerical relationship is removed from the synthetic image data, ConvRNN should have similar performance as FCN theoretically. Also, CNN is worth trying to validate whether the temporal pattern matters in this dataset. Besides, by changing the size of the synthetic images, we can figure out how does the number of neighbour tiles impact the model performance.","title":"5. Conclusion and outlook"},{"location":"PROJ-LANDSTATS/#appendix","text":"","title":"Appendix"},{"location":"PROJ-LANDSTATS/#a1-classes-of-land-cover-and-land-use","text":"Figure 20: Land Cover classification labels. Figure 21: Land Use classification labels.","title":"A1. Classes of land cover and land use"},{"location":"PROJ-LANDSTATS/#a2-probability-analysis-of-different-periods","text":"","title":"A2. Probability analysis of different periods"},{"location":"PROJ-LANDSTATS/#a3-alternative-version-of-section-32","text":"","title":"A3 Alternative version of Section 3.2"},{"location":"PROJ-REGBL/","text":"COMPLETION OF THE FEDERAL REGISTER OF BUILDINGS AND DWELLINGS \u00b6 Nils Hamel (UNIGE) - Huriel Reichel (swisstopo) Proposed by the Federal Statistical Office - TASK-REGBL December 2020 to February 2021 - Published on March 2, 2021 Abstract : The Swiss Federal Statistical Office is in charge of the national Register of Buildings and Dwellings (RBD) which keeps track of every existing building in Switzerland. Currently, the register is being completed with buildings in addition to regular dwellings to offer a reliable and official source of information. The completion of the register introduced issues due to missing information and their difficulty to be collected. The construction year of the buildings is one missing information for a large amount of register entries. The Statistical Office mandated the STDL to investigate on the possibility to use the Swiss National Maps to extract this missing information using an automated process. A research was conducted in this direction with the development of a proof-of-concept and a reliable methodology to assess the obtained results. Introduction \u00b6 The Swiss Federal Statistical Office [1] is responsible of maintaining the Federal Register of Buildings and Dwellings ( RBD ) in which a collection of information about buildings and homes are stored. Currently, a completion operation of the register is being conducted to include to it any type of construction on the Swiss territory. Such completion operation comes with many challenges including the gathering of the information related to the construction being currently integrated to the register. In this set of information are the construction years of the buildings. Such information is important to efficiently characterise each Swiss building and to allow the Statistical Office to provide a reliable register to all actors relying on it. The construction year of buildings turns out to be complicated to gather, as adding new buildings to the register already impose an important workload even for the simple information. In addition, in many cases, the construction year of the building is missing or can not be easily collected to update the register. The Statistical Office mandated the STDL to perform researches on the possibility to automatically gather the construction year by analysing the swisstopo [3] National Maps [4]. Indeed, the Swiss national maps are known for their excellency, their availability on any geographical area, and for their temporal cover. The national maps are made with a rigorous and well controlled methodology from the 1950s and therefore they can be used as a reliable source of information to determine the buildings' construction year. The STDL was then responsible for performing the researches and developing a proof-of-concept to provide all the information needed to the Statistical Office for them to take the right decision on considering national maps as a reliable way of assigning a construction year for the buildings lacking information. Research Project Specifications \u00b6 Extracting the construction date out of the national maps is a real challenge, as the national maps are a heavy dataset, they are not easy to be considered as a whole. In addition, the Statistical Office needs the demonstration that it can be done in a reliable way and within a reasonable amount of time to limit the cost of such process. They are also subjected to strict tolerances on the efficiency of the construction years extraction through an automated process. The goal of at least 80 % of overall success was then provided as a constraint to the STDL . As a result, the research specifications for the STDL were: Gathering and understanding the data related to the problem Developing a proof-of-concept demonstrating the possibility to extract the construction years from the national maps Assessing the results with a reliable metric to allow demonstrating the quality and reliability of the obtained construction years Research Data & Selected Areas \u00b6 In this research project, two datasets were considered: the building register itself and the national maps. As both datasets are heavy and complex, considering them entirely for such a research project would have been too complicated and unnecessary. It was then decided to focus on four areas selected for their representativeness of Swiss landscape: Basel (BS): Urban area Bern (BE): Urban and peri-urban area Biasca (TI): Rural and mountainous Caslano (TI): Peri-urban and rural The following images give a geographical illustration of the selected areas through their most recent map: Illustration of the selected areas: Basel (2015), Bern (2010), Biasca (2012) and Caslano (2009) Data: swisstopo Basel was selected as it was one example of an area on which the building register was already well filled in terms of construction years. The four regions are 6km by 6km squared areas which allows up to twenty thousand buildings to be considered on a single one. Federal Register of Buildings and Dwellings \u00b6 The register of buildings is a formal database composed with entries, each of them representing a specific building. Each entry comes with a set of information related to the building they describe. In this project, a sub-set of these informations was considered: Federal identifier of the building (EGID) The position of the building, expressed in the EPGS:2056 (GKODE, GKODN) The building construction year, when available (GBAUJ) The surface of the building, when available, expressed in square metres (GAREA) In addition, tests were conducted by considering the position of the entries of each building. In turned out rapidly that they were not useful in this research project as they were missing on a large fraction on the register and only providing a redundant information according to the position of the buildings. The following table gives a summary of the availability of the construction year in the register according to the selected areas: Area Buildings Available years Missing fraction Basel 17\u2019088 16\u2019584 3% Bern 21\u2019251 4\u2019499 79% Biasca 3\u2019774 1\u2019346 64% Caslano 5\u2019252 2\u2019452 53% One can see that the amount of missing construction year can be large depending on the considered area. National Maps \u00b6 On the side of the national maps, the dataset is more complex. In addition to the large number of available maps, variations of them can also be considered. Indeed, maps are made for different purposes and come with variations in their symbology to emphasise elements on which they focus. Moreover, for modern years, sets of vector data can also be considered in parallel to maps. Vector data are interesting as they allow to directly access the desired information, that is the footprint of the building without any processing required. The drawback of the vector data is their temporal coverage which is limited to the last ten to twenty years. The following images give an illustration of the aspect of the available maps and vector datasets considering the example of the Bern area. Starting with the traditional maps : Available map variations: KOMB, KGRS and KREL - Data: swisstopo and the more specific and vector ones: Available map variations: SITU, GEB and DKM25-GEB (vector) - Data: swisstopo In addition to the number of available variations and data types, they all come with their specific temporal coverage. In the case of this research project, we tried to go back in time as much as possible, simplifying the choice for the older maps. The question still remains for more modern times. As we are mostly interesting in buildings, the availability of already extracted building layers, that can be either raster or vector data, is highly interesting. But the problem of data selection is complex in our case. Indeed, no matter the choice, on the older times, the only available maps have to be considered. In addition to building footprint access, the question of the continuity of the data as to be considered with care. More than building footprints, we are interested in the continuity of these footprints, in order to be able to safely assume the cycle of life of the tracker buildings. This consideration led us to discover variation in methodologies depending on the considered set of data. Indeed, buildings are not shaped in the same way on traditional maps than they are in layer focusing on them. It follows that variation of the symbology, so do the shape of the building, appears between traditional maps and building layers (raster and vector). These variations can lead to shocks going from a map to the one preceding it in time. This can break the continuity of the building footprints along time, making them much more difficult to track safely. This is the reason we choose to focus on the KOMB variation of the maps. These maps are very stable and covers the largest temporal ranges. The methodology was kept very similar along the years, making this dataset much more reliable to work with when the time dimension is considered. Only considering the KOMB variation of the maps also allows to ensure that all source data is treated the same in the processing pipeline, easing the assessment of the results. In addition, the KOMB maps are dense in information and come with colorimetry of their symbology. This opens the possibility to more easily extract the information we need in this project, that are the building footprints. One exception was made concerning the KOMB maps: in their very latest version, the methodology changed, causing the symbology to be different with the older KOMB maps. In their latest version, texts are much more numerous and tend to cover a large amount of the buildings, making them invisible . For this reason, their latest version was dropped, slightly reducing the temporal coverage on the 2015-2020 period. Selecting the KOMB variation allowed us to obtain the following temporal coverage for the four selected areas: Area Oldest map Latest map Mean separation Basel 1955 2015 5.5 Years Bern 1954 2010 5.6 Years Biasca 1970 2012 6.0 Years Caslano 1953 2009 6.2 Years One can see that a large portion of the 20th century can be covered using the maps with a very good resolution of around five to six years between the maps. Research Approaches \u00b6 In this research project, the main focus was put on the national maps to extract the construction year of buildings as the maps are sources on which we can rely and assess the results. The only drawback of the maps is their limited temporal coverage, as they only start to be available in the 1950s . This is the reason why another experimental approach was also added to address the cases of building being built before the 1950s . This secondary approach focused on a statistical methodology to verify to which extent it could be possible to assign a construction date even in the case no maps are available. National Maps : This main approach focuses on the national maps from which the construction year of a building is deduced from a temporal analysis of the maps. Each building is tracked until it disappears or change its shape on a given map allowing to deduce that the construction of the building was made in the gap separating the map and its successor one. Statistical Analysis : This method is based on the principle of spatial dependence and furthermore on concentric zones of urban development. This is technically an interpolator which deduces construction years based first on different searching radii for difference variances, second by splitting the data in quantiles and, finally, by a gaussian mixture model unsupervised learning technique to gather the final predictions. The statistical analysis allows then to consider buildings that were detected on all maps, meaning their construction is older than the oldest available map, to assign them an estimation of their construction year, knowing they had to be older than the oldest map. Research Approach: National Maps \u00b6 In order to detect construction year of buildings, we need to be able to track them down on the maps across the temporal coverage. The RBD is providing the reference list of the building, each coming with a federal identifier ( EGID ) and a position. This position can then be used to track down the building on maps for its appearance or morphological change. As the maps are already selected, as the research areas, this research approach can be summarised in the following way: Translating maps into binary images containing only building Extracting the RBD buildings related to the analysed area Detection procedure of the buildings on the maps Detection of the morphological variation of the buildings Assessment of the obtained results The four first points are related to the development of the proof-of-concept. The last one concern a very sensitive and complicated question relative to the considered problem: how to analyse and assess the obtained results. This question was to most difficult question in this research, and finding a clear and reliable answer is mandatory before to develop anything. For this reason, it is considered in the first place. Reliability of the Data \u00b6 Assessing the results is essentially having a strong reference allowing to compare both in order to obtain a reliable characterisation of the success rate in the deduction of the construction years. This question leads to the discovery that this problem is much more complex that and can appear in the first place. Indeed, we were warned by the Statistical Office that the RBD , considering the construction years it already gives, can be unreliable on some of its portions. This can be explained by the fact that collecting such information is a long and complicated administrative process. As an example, the following image gives an illustration of a building tracked on each of the available selected maps: Temporal track of a selected building On this illustration, one can see two things: the RBD announce a construction year in 1985 ; the maps are clearly indicating something different, locating its construction year between 1963 and 1969 . So both datasets are contradicting each other. In order to solve the contradiction, we manually searched for historical aerial images. The following images illustrate what was found: Aerial view of the building situation: 1963, 1967 and 1987 - Data: swisstopo One can clearly see that the maps seem to give the correct answer concerning the construction date of this specific building, the RBD being contradicted by two other sources. This illustrates the fact that the RBD can not be directly considered as a reliable reference to assess the results. The same question applies for the maps. Even if it is believed that they are highly reliable, one has to be careful with such consideration. Indeed, looking at the following example: Temporal track of a selected building In this case, the RBD gives 1986 as the construction date of the pointed building. The maps are giving a construction year between 1994 and 2000 . Again, the two datasets are contradicting each other. The same procedure was conducted to solve the contradiction: Aerial view of the building situation: 1970, 1986 and 1988 - Data: swisstopo Looking at the aerial images, it seems that the tracked building was there in 1988 . One can see that the map in 1994 continue to represent the four old buildings instead on the new one. It's only in 2000 that the maps are correctly representing the new building. This shows that despite maps are a reliable source of geo-information, they can also be subjected to delay in their symbology. The maps also come with the problem of the consistency of the building footprint symbology. Looking at the following example: Temporal track of a selected building one can see that the maps seem to indicate a strange evolution of the situation: a first building appears in 1987 and it is destroyed and replaced by a larger one in 1993 . Then, this new large building seems to have been destroyed right after its construction to be replaced by a new one in 1998 . Considering aerial images of the building situation: Aerial image view of the building situation: 1981, 1987 and 1993 - Data: swisstopo one can clearly see that a first building was constructed and completed by an extension between 1987 and 1993 . This shows an illustration where the symbology of the building footprints can be subjected to variation than can be de-synchronised regarding the true situation. Metric \u00b6 In such context, neither the RBD or the national maps can be formally considered as a reference. It follows that we are left without a solution to assess our results, and more problematically, without any metric able to guide the developments of the proof-of-concept in the right direction. To solve the situation, one hypothesis is made in this research project. Taking into account both the RBD and the national maps, one can observe that both are built using methodologies that are very different. On one hand, the RBD is built out of a complex administrative process, gathering the required information in a step by step process, going from communes to cantons , and finally to the Statistical Office . On the other hand, the national maps are built using regular aerial image campaigns conducted over the whole Switzerland. The process of establishing maps is quite old and can then be considered as well controlled and stable. Both datasets are then made with methodologies that can be considered as fully independent from each other. This led us to the formulation of our hypothesis: Hypothesis : As the RBD and national maps are the results of independent methodologies, an error in one dataset is very unlikely to compensate an error in the other. In other words, if the RBD and the national maps agree on the construction year of a building, this information can be considered as a reliable reference, as it would be very unlikely to have two errors leading to such agreement. One should remain careful with this hypothesis, despite it sounds reasonable. It would be very difficult to assess it as requiring to gather complex confirmation data that would have to be independent of the RBD , the national maps and the aerial images (as maps are based on them). This assumption is the only one made in this research project. Accepting this assumption leads us to the possibility to establish a formal reference that can be used as a metric to assess the results and to guide the development of the proof-of-concept. But such reference has to be made with care, as the problem remains complex. To illustrate this complexity, the following figure gives a set representation of our problem: Set representation of the RBD completion problem The two rectangles represent the set of buildings for a considered area. On the left, one can see the building set from the RBD point of view. The grey area shows the building without the information of their construction year. Its complementary set is split in two sub-sets that are the buildings having a construction year that is absolutely correct and absolutely incorrect (the limit between both is subject to a bit of interpretation, as the construction year is not a strong concept). If a reference can be extracted, it should be in the green sub-set. The problem is that we have no way of knowing which building are in which sub-set. So the national maps were considered to define another sub-set: the synchronous sub-set where both RBD and national maps agree. To build the metric, the RBD sub-set of buildings coming with the information of the construction year is randomly sub-sampled to extract a representative sub-set: the potentials . This sub-set of potentials is then manually analysed to separate the building on which both datasets agree and to reject the other. At the end of the process, the metric sub-set is obtained and should remain representative. On the right of the set representation is the view of the buildings set through the national maps. One can see that the same sub-set appears but it replaces the construction years by the representation of the building on the maps. The grey part is then representing the building that are not represented on the maps because of their size or because they can be hidden by the symbology for example. The difference is that the maps do not give access to the construction years directly, but they are read from the maps through our developed detector. The detector having a success rate, it cuts the whole set of sub-sets in half, which is exactly what we need for out metric. If the metric sub-set remains representative, the success rate of the detector evaluated on it should generalise to the whole represented buildings. This set representation demonstrates that the problem is very complex and has to be handled with care. Considering only the six most important sub-set and considering construction year are extracted by the detector from the maps, it means that up to 72 specific case can apply on each building randomly selected. To perform the manual selection, a random selection of potential buildings was made on the RBD set of buildings coming with a construction year. The following table summarises the selection and manual validation: Area Potentials Metric Basel 450 EGIDs 209 EGIDs Bern 450 EGIDs 180 EGIDs Biasca 336 EGIDs 209 EGIDs Caslano 450 EGIDs 272 EGIDs The previous table gives the result of the second manual validation. Indeed, two manual validation sessions were made, with several weeks in-between, to check the validation process and how it evolved with the increase of the view of the problem. Three main critics can then be addressed to the metric: the first one is that establishing validation criterion is not simple as the number of cases in which buildings can fall is very high. Understanding the problem takes time and requires to see a lot of these cases. It then follows that the second validation session was more stable and rigorous than the first one. The second critic that can be made on our metric is the selection bias. As the process is made by a human, it is affected by its way of applying the criterion and more specifically on by its severity on their application. Considering the whole potentials sub-set, one can conclude that a few buildings could be rejected and validated depending on the person doing the selection. The last critic concerns specific cases for which the asynchronous criterion to reject them is weak. Indeed, for some buildings, the situation is very unclear in the way the RBD and the maps give information that can not be understood. This is the case for example when the building is not represented on the map. This can be the position in the RBD or the lack of information on the maps that lead to such an unclear situation. These cases are then rejected, but without being fully sure of the asynchronous aspect regarding the maps and the RBD . Methodology \u00b6 With a reliable metric, results can be assessed and the development of the proof-of-concept can be properly guided. As mentioned above, the proof-of-concept can be split in four major steps that are the processing of the maps, the extraction of the RBD buildings, detection of the building on the maps and detection in morphological changes. National Maps Processing \u00b6 In order to perform the detection of building on the maps, a reliable methodology is required. Indeed, one could perform the detection directly on the source maps but this would lead to a complicated process. Indeed, maps are mostly the result of the digitisation of paper maps creating a large number of artefacts on the digital images. This would lead to an unreliable way of detecting building as a complicated decision process would have to be implemented each time a RBD position is checked on each map. A map processing step was then introduced in the first place allowing to translate the color digitised images into reliable binary images on which building detection can be made safely and easily. The goal of this process is then to create a binary version of each map with black pixels indicating the building presence. A method of extracting buildings on maps was then designed. Considering the following example of a map cropped according to a defined geographical area ( Basel ): Example of a considered map: Basel in 2005 and closer view - Data: swisstopo The first step of the map processing methodology is to correct and standardise the exposure of the digitised maps. Indeed, as maps mostly result of a digitisation process, they are subjected to exposure variation due to the digitisation process. A simple standardisation is then applied. The next step consists in black pixel extraction. Each pixel of the input map is tested to determine whether or not it can be considered as black using specific thresholds. As the building are drawn in black, extracting black pixels is a first way of separating the buildings from the rest of the symbology. The following result is obtained: Result of the black extraction process As one can see on the result of the black extraction process, the buildings are still highly connected to other symbological elements and to each others in some cases. Having the building footprints well separated and well defined is an important point for subsequent processes responsible of construction years deduction. To achieve it, two steps are added. The first one uses a variation of the Conway game of life [5] to implement a morphological operator able to disconnect pixel groups. The following image gives the results of this separation process along with the previous black extraction result on which it is based: Result of the morphological operator (right) compare to the previous black extraction (left) As the morphological operator provides the desired result, it also shrinks the footprint of the elements. It allows to eliminate a lot of structures that are not buildings, but it also reduces the footprint of the buildings themselves, which can increase the amount of work to perform by the subsequent processes to properly detect a building. To solve this issue and to obtain building footprints that are as close as possible to the original map, a controlled re-growing step is added. It uses a region threshold and the black extraction result to re-grow the buildings without going any further of their original definition. The following images give a view of the final result along with the original map: Final result of the building footprints extraction (right) compared to the original map As the Conway morphological operator is not able to get rid of all the non-building elements, such as large and bold texts, the re-growing final step also thickening them along with the building footprints. Nevertheless, the obtained binary image is able to keep most of the building footprint intact while eliminating most of the other element of the map as illustrated on the following image: Extracted building footprints, in pink, superimposed on the Bern map The obtained binary images are then used for both detection of building and detection of morphological changes as the building are easy to access and to analyse on such representation. Building Extraction from RBD \u00b6 In the case of limited geographical areas as in this research project, extracting the relevant buildings from the RBD was straightforward. Indeed, the RBD is a simple DSV database that is very easy to understand and to process. The four areas were packed into a single DSV file and the relevant building were selected through a very simple geographical filtering. Each area being defined by a simple geographical square, selecting the buildings was only a question of checking if their position was in the square or not. Building Detection Process \u00b6 Based on the computed binary images, each area can be temporally covered with maps on which building can be detected. Thanks to the processed maps, this detection is made easily, as it was reduced to detect black pixels in a small area around the position of the building provided in the RBD . For each building in the RBD , its detection on each temporal version of the map is made to create a presence table of the building. Such table is simply a Boolean value indicating whether a building was there or not according to the position provided in the RBD . The following images give an illustration of the building detection process on a given temporal version of a selected map: Detection overlay superimposed on its original map (left) and on its binary counterpart (right) One can see that for each building and for each temporal version of the map, the decision of a building presence can be made. At the end of this process, each building is associated to a list of presence at each year corresponding to an available map. Morphological Change Detection \u00b6 Detecting the presence of a building on each temporal version of the map is a first step but is not enough to determine whether or not it is the desired building. Indeed, a building can be replaced by another along the time dimension without creating a discontinuity in the presence timeline. This would lead to misinterpret the presence of building with another one, leading the construction year to be deduced too far in time. This can be illustrated by the following example: Example of building being replaced by another one without introducing a gap in the presence table In case the detection of the presence of the building is not enough to correctly deduce a construction year, a morphological criterion is added. Many different methodologies have been tried in this project, going from signature to various quantities deduce out of the footprint of the building. The most simple and most reliable way was to focus on the pixel count of the building footprint, which corresponds to its surface in geographical terms. A morphological change is considered as the surface of the building footprint changes up to a given threshold along the building presence timeline. In such a case, the presence timeline is broken at the position of the morphological change, interpreting it in the same way as a formal appearance of a building. Introducing such criteria allowed to significantly improve our results, especially in the case of urban centers. Indeed, in modern cities, large number of new buildings were built just after a previous building was being destroyed due to the lack of spaces left for new constructions. Results \u00b6 The developed proof-of-concept is applied on the four selected areas to deduce construction year for each building appearing in the RBD . With the defined metric, it is possible to assess the result in a reliable manner. Nevertheless, assessing the results with clear representations is not straightforward. In this research project, two representations were chosen: Histogram of the success rate : For this representation, the building of the metric are assigned to temporal bins of ten years in size and the success rate of the construction year is computed for each bins. Distance and pseudo-distance distribution : As the previous representation only gives access to a binary view of the results, a distance representation is added to understand to which extent mistakes are made on the deduction of a construction year. For buildings detected between two maps, the temporal middle is assumed as the guessed construction year, allowing to compute a formal distance with its reference. In case a building is detected before or beyond the map range, a pseudo-distance of zero is assigned in case the result is correct according to the reference. Otherwise, the deduced year (that is necessarily between two maps) is compared to its reference extremal map date to obtain an error pseudo-distance. In addition to the manually defined metric, the full RBD metric is also considered. As the construction years provided in the RBD have to be considered with care, as part of them are incorrect, comparing the results obtained the full RBD metric and the metric we manually defined opens the important question of the synchronisation between the maps and the RBD , viewed from the construction perspective. Results: Basel Area \u00b6 The following figures give the Basel area result using the histogram representation. The left plot uses the full RBD metric while the right one uses the manually validated one: Histogram of the success rate - Ten years bins One can see one obvious element that is the result provided by the full RBD metric (left) and the manually validated metric (right) are different. This is a clear sign that the RBD and the maps are de-synchronised on a large fraction of the building set of Basel . The other element that can be seen on the right plot is that the deduction of the construction year are more challenging where maps are available. Indeed on the temporal range covered by the maps (vertical white lines), the results drops from the overall results to 50-60 % on some of the histogram bins. The following figures show the distance and pseudo-distance distribution of the error made on the deduced construction year according to the chosen metric: Distance (red and blue) and pseudo-distance (red) of the error on the construction years The same differences as previously observed between the two metrics can also be seen here. Another important observation is that the distribution seems mostly symmetrical. This indicates that no clear deduction bias can be observed in the results provided by the proof-of-concept. Results: Bern Area \u00b6 The following figures give the histogram view of the results obtained on the Bern area: Histogram of the success rate - Ten years bins One can observe that the results are similar to the result of Basel whilst being a bit better. In addition, one can clearly see that the difference between the full RBD metric and the manually validated metric huge here. This is probably the sign that the RBD is mostly incorrect in the case of Bern . The following figures show the distance distributions for the case of Bern : Distance (red and blue) and pseudo-distance (red) of the error on the construction years Again, the distribution of the error on the deduced construction year is symmetrical in the case of Bern . Results: Biasca Area \u00b6 The following figures give the histogram view of the success rate for the case of Biasca : Histogram of the success rate - Ten years bins In this case, the results are much better according to the manually validated metric. This can be explained by the fact that Biasca is a rural/mountainous area in which growing of the urban areas are much simpler as buildings once built tend to remain unchanged, limiting the difficulty to deduce a reliable construction year. The following figures show the distance distribution for Biasca : Distance (red and blue) and pseudo-distance (red) of the error on the construction years This confirms the results seen on the histogram figure and shows that the results are very good on such areas. Results: Caslano Area \u00b6 Finally, the following figures show the histogram view of the success rate of the proof-of-concept on the case of Caslano : Histogram of the success rate - Ten years bins The same consideration applies as for the Biasca case. The results are very good as part of the Caslano area can be considered as rural or at least peri-urban. The results are a bit less good than in the Biasca case, drawing the picture that urban centres are more difficult to infer than rural areas. The following figures show the error distribution for Caslano : Distance (red and blue) and pseudo-distance (red) of the error on the construction years Results: Synthesis \u00b6 In order to synthesise the previous results, that were a bit dense due to the consideration of two representations and two metrics, the following summary is given: Basel : 78.0% of sucess rate and 80.4% of building correctly placed within \u00b15.5 years Bern : 84.4% of sucess rate and 85.0% of building correctly placed within \u00b15.6 years Biasca : 93.5% of sucess rate and 93.9% of building correctly placed within \u00b16.0 years Caslano : 90.8% of sucess rate and 91.2% of building correctly placed within \u00b16.2 years These results only consider the manually validated metric for all of the four areas. By weighting each area with their amount of buildings, one can deduce the following numbers: Switzerland : 83.9% of success rate and 84.7% of building correctly place within \u00b15.8 years These last numbers can be considered as a reasonable extrapolation of the proof-of-concept performance on the overall Switzerland. Conclusion \u00b6 As a main conclusion to the national maps approach, one can consider the results as good. It was possible to develop a proof-of-concept and to apply it on selected and representative areas of Switzerland. In this approach, it turns out that developing the proof-of-concept was the easy part. Indeed, finding a metric and demonstrating its representativeness and reliability was much more complicated. Indeed, as the two datasets can not be considered as fully reliable in the first place, a strategy had to be defined in order to be able to demonstrate that the chosen metric was able to assess our result in the way expected by the Statistical Office . In addition, the metric only required one additional hypothesis on top of the two datasets. This hypothesis, consisting in assuming that the synchronous sub-set was a quasi-sub-set of the absolutely correct construction years , can be assumed to be reasonable. Nevertheless it is important to emphasise that it was necessary to make it, leading us to remains critic and careful whilst reading the results given by our metric. The developed proof-of-concept was developed in C++ , leading to an efficient code able to be used for the whole processing of Switzerland without the necessity to deeply modify it. Research Approach: Statistical \u00b6 As the availability of the topographic/national maps does not reach the integrity of all building's year of construction in the registry, an add-on was developed to infer this information, whenever there was this need for extrapolation. Usually, the maps availability reaches the 1950s, whilst in some cities the minimum year of construction can be in the order of the 12th century, e.g. The core of this statistical model is based on the Concentric Zones Model (Park and Burgess, 1925)[6] extended to the idea of the growth of the city from the a centre (Central Business District - CBD) to all inner areas. The concept behind this statistical approach can be seen below using the example of a crop of Basel city: Illustration of the Burgess concentric zone model Although it is well known the limits of this model, which are strongly described in other famous urban models such as from Hoyt (1939)[7] and Harris and Ullman (1945)[8]. In general those critics refer to the simplicity of the model, which is considered and compensated for this application, especially by the fact that the main prediction target are older buildings that are assumed to follow the concentric zones pattern, differently than newer ones (Duncan et al., 1962)[9]. Commonly this is the pattern seen in many cities, hence older buildings were built in these circular patterns to some point in time when reconstructions and reforms are almost randomly placed in spatial and temporal terms. Moreover processes like gentrification are shown to be dispersed and quite recent (R\u00e9rat et al, 2010)[10]. In summary, a first predictor is built on the basis that data present a spatial dependence, as in many geostatistical models (Kanevski and Maignan, 2004[11]; Diggle and Ribeiro, 2007[12]; Montero and Mateu, 2015[13]). This way we are assuming that closer buildings are more related to distant buildings (Tobler, 1970[14]) in terms of year of construction and ergo the time dimension is being interpolated based on the principles of spatial models. We are here also demonstrating how those two dimensions interact. After that concentric zones are embedded through the use of quantiles, which values will be using in a probabilistic unsupervised learning technique. Finally, the predicted years are computed from the clusters generated. Metric \u00b6 Similar to the detection situation, generating a validation dataset was an especially challenging task. First of all, the dates in the RBD database could not be trusted in their integrity and the topographic maps used did not reach this time frame. In order to ascertain the construction year in the database, aerial images from swisstopo (Swiss Federal Office of Topography) were consulted and this way buildings were manually selected to compound a validation dataset. References extraction from aerial images manual analysis One of the problems related to this approach was the fact that a gap between the surveys necessary for the images exists. This way it is not able to state with precision the construction date. These gaps between surveys were approximately in the range of 5 years, although in Basel , for some areas, it reached 20 years. An example of this methodology to create a trustworthy validation set can be seen below. In the left-hand side one can see the year of the first image survey (up) and the year registered in the RBD (down) and in the right-hand side, one can see the year of the next image survey in the same temporal resolution. Methodology \u00b6 First of all, a prior searching radius is defined as half of the largest distance (between random variables). For every prediction location, the variance between all points in the prior searching radius will be used to create a posterior searching radius. This way, the higher the variance, the smaller the searching radius, as we tend to trust data less. This is mainly based on the principle of spatial dependence used in many geostatistical interpolators. The exception to this rule is for variances that are higher than 2 x the mean distance between points. In this case, the searching radius increases again in order to avoid clusters of very old houses that during tests caused underestimation. The figure below demonstrates the logic being the creation of searching radii. Searching radii computation process being d the distance between points, \u03bc the mean and s\u00b2 the variance of random variable values within the prior searching radius. It is important to mention that in case of very large number of missing data, if the searching radius does not find enough information, the posterior mean will be the same as the prior mean, possibly causing over/underestimation in those areas. This first procedure is used to fill the gaps in the entry database so clustering can be computed. The next step is then splitting the data in 10 quantiles, what could give the idea of concentric growth zones, inspired, in Burgess Model (1925)[7]. Every point in the database will then assume the value of its quantile. It is also possible to ignore this step and pass to clustering directly, what can be useful in two situations, if a more general purpose is intended or if the concentric zones pattern is not observed in the study area. As default, this step is used, which will be followed by an unsupervised learning technique. A gaussian mixture model, which does not only segments data into clusters, but indicates the probability of each point belonging to every cluster is then performed. The number of components computed is a linear function to the total number of points being used, including the ones that previously had gaps. The function to find the number of components is the following: being np the number of components/clusters, and nc the total number of points used. The number of clusters shall usually be very large compared to a standard clustering exercise. To avoid this, this value is being divided by ten, but the number of clusters will never be smaller than five. An example of clustering performed by the embedded gaussian mixture model can be seen below: Example of clustering process on the Basel area Hence the matrix of probabilities of every point belonging to each cluster (\u03bb - what can be considered a matrix of weights) is multiplied by the mean of each cluster ( 1 x nc matrix mc ), forming the A matrix: or in matrices: Finally, the predictions can then be made using the sum of each row in the A matrix. It is important to state that the same crops (study areas) were used for this test. Although Caslano was not used in this case, as it possesses too few houses with a construction date below the oldest map available. Using the metric above explained a hold out cross-validation was performed, this way a group of points was only used for validation and not for training. After that, the RMSE (Root Mean Squared Error) was calculated using the difference between the date in the RBD database and the predicted one. This RMSE was also extrapolated to the whole Switzerland, so one could have a notion of what the overall error could be, using the following equation (for the expected error): where E is the error and n the number of buildings in each region. In addition to the RMSE , the 95th percentile was computed for every study area and using all combined as well. Hence, one could discuss the spread and predictability of errors. Results \u00b6 The first case analysed was Basel , where the final RMSE was 9.78 years. The density plot below demonstrates the distribution of errors in Basel , considering the difference between the year of construction in the RBD database and the predicted one. Distribution of error on construction year extrapolation Among the evaluated cases, Basel presented a strong visible spatial dependence, and it was also the case which the largest estimated proportion of houses with construction years older than (1955) the oldest map ( 11336 or approximately 66 % of buildings). Based on the validation dataset only, there was an overall trend of underestimation and the 95th percentile reached was 20 years, showing a not so spread and flat distribution of errors. Bern was the second case evaluated, and it demonstrated to be an atypical case. This starts from the fact that a big portion of the dates seemed incongruent with reality, based on the aerial images observed and as seen in the previous detection approach. Not only that, but almost 80 % of the buildings in Bern had missing data to what refers to the year of construction. This is especially complicated as the statistical method here presented is in essence an interpolator (intYEARpolator). Basically, as in any inference problem, data that is known is used to fill unknown data, therefore a reasonable split among known and unknown inputs is expected, as well as a considerable confidence on data. In the other hand, an estimated number of 1079 (approximately 27 % of the buildings) buildings was probably older than the oldest map available (1954) in Bern crop. Therefore, in one way liability was lower in this case, but the number of prediction points was smaller too. The following figure displays the density of errors in Bern, where an RMSE of 20.64 years was computed. Distribution of error on construction year extrapolation There was an overall trend for overestimation, though there was still enough lack of spread in errors, especially if one considers the 95th percentile of 42 . Finally, the crop on Biasca was evaluated. The computed RMSE was of 13.13 years, which is closer to the Basel case and the 95th percentile was 17 years, this way presenting the least spread error distribution. In Biasca an estimated 1007 ( 32 %) buildings were found, which is not much more than the proportion in Bern, but Biasca older topographic map used was from 1970, making of it an especially interesting case. The density plot below demonstrates the concentrated error case of Biasca : Distribution of error on construction year extrapolation Once the RMSE was computed for the three regions, it was extrapolated to the whole Switzerland by making consideration the size of each dataset: Extrapolation of the error distribution on the whole Switzerland The expected extrapolated error calculated was 15.6 years and the 95th percentile was then 31 years. Conclusion \u00b6 This add-on allows extrapolating the predictions to beyond the range of the topographical maps. Its predictions are limited, but the accuracy reached can be considered reasonable, once there is a considerable lack of information in this prediction range. Nor the dates in the RBD , nor the topographic maps can be fully trusted, ergo 15.6 years of error for the older buildings is acceptable, especially by considering the relative lack of spread in errors distribution. If a suggestion for improvement were to be given, a method for smoothing the intYEARpolator predictions could be interesting. This would possibly shift the distribution of the error into closer to a gaussian with mean zero. The dangerous found when searching for such an approach is that the year of construction of buildings does not seem to present a smooth surface, despite the spatial dependence. Hence, if this were to be considered, a balance between smoothing and variability would need to found. We also demonstrated a completely different perspective on how the spatial and temporal dimensions can be joined as the random variable predicted through spatial methodology was actually time. Therefore a strong demonstration of the importance of time in spatially related models and approaches was also given. The code for the intYEARpolator was developed in Python and it runs smoothly even with this quite big proportion of data. The singular case it can be quite time-demanding is in the case of high proportion of prediction points (missing values). It should also be reproducible to the whole Switzerland with no need for modification. A conditional argument is the use of concentric zones, that can be excluded in case of a total different pattern of processing time. Reproduction Resources \u00b6 The source code of the proof-of-concept for national maps can be found here : National maps approach proof-of-concept (regbl-poc), STDL The README provides all the information needed to compile and use the proof-of-concept. The presented results and plots can be computed using the following tools suite : National maps approach results and plots (regbl-poc-analysis), STDL with again the README giving the instructions. The proof-of-concept source code for the statistical approach can be found here : Statistical approach proof-of-concept (regbl-poc-intyearpolator), STDL with its README giving the procedure to follow. The data needed to reproduce the national maps approach are not publicly available. For the national maps, a temporal series of the 1:25'000 maps of the same location are needed. They can be asked to swisstopp : GeoTIFF National Maps 1:25'000 rasters temporal sequence, swisstopo With the maps, you can follow the instruction for cutting and preparing them on the proof-of-concept README . The RBD data, used for both approaches, are not publicly available either. You can query them using the request form on the website of the Federal Statistical Office : DSV RBD data request form , Federal Statistical Office Both proof-of-concepts READMEs provide the required information to use these data. References \u00b6 [1] Federal Statistical Office [2] Federal Register of Buildings and Dwellings [3] Federal Office of Topography [4] National Maps (1:25'000) [5] Conway, J. (1970), The game of life. Scientific American, vol. 223, no 4, p. 4. [6] Park, R. E.; Burgess, E. W. (1925). \"The Growth of the City: An Introduction to a Research Project\". The City (PDF). University of Chicago Press. pp. 47\u201362. ISBN 9780226148199. [7] Hoyt, H. (1939), The structure and growth of residential neighborhoods in American cities (Washington, DC). [8] Harris, C. D., and Ullman, E. L. (1945), \u2018The Nature of Cities\u2019, Annals of the American Academy of Political and Social Science, 242/Nov.: 7\u201317. [9] Duncan, B., Sabagh, G., & Van Arsdol,, M. D. (1962). Patterns of City Growth. American Journal of Sociology, 67(4), 418\u2013429. doi:10.1086/223165 [10] R\u00e9rat, P., S\u00f6derstr\u00f6m, O., Piguet, E., & Besson, R. (2010). From urban wastelands to new\u2010build gentrification: The case of Swiss cities. Population, Space and Place, 16(5), 429-442. [11] Kanevski, M., & Maignan, M. (2004). Analysis and modelling of spatial environmental data (Vol. 6501). EPFL press. [12] Diggle, P. J. Ribeiro Jr., P. J. (2007). Model-based Geostatistics. Springer Series in Statistics. [13] Montero, J. M., & Mateu, J. (2015). Spatial and spatio-temporal geostatistical modeling and kriging (Vol. 998). John Wiley & Sons. [14] Tobler, W. R. (1970). A computer movie simulating urban growth in the Detroit region. Economic geography, 46(sup1), 234-240.","title":"COMPLETION OF THE FEDERAL REGISTER OF BUILDINGS AND DWELLINGS"},{"location":"PROJ-REGBL/#completion-of-the-federal-register-of-buildings-and-dwellings","text":"Nils Hamel (UNIGE) - Huriel Reichel (swisstopo) Proposed by the Federal Statistical Office - TASK-REGBL December 2020 to February 2021 - Published on March 2, 2021 Abstract : The Swiss Federal Statistical Office is in charge of the national Register of Buildings and Dwellings (RBD) which keeps track of every existing building in Switzerland. Currently, the register is being completed with buildings in addition to regular dwellings to offer a reliable and official source of information. The completion of the register introduced issues due to missing information and their difficulty to be collected. The construction year of the buildings is one missing information for a large amount of register entries. The Statistical Office mandated the STDL to investigate on the possibility to use the Swiss National Maps to extract this missing information using an automated process. A research was conducted in this direction with the development of a proof-of-concept and a reliable methodology to assess the obtained results.","title":"COMPLETION OF THE FEDERAL REGISTER OF BUILDINGS AND DWELLINGS"},{"location":"PROJ-REGBL/#introduction","text":"The Swiss Federal Statistical Office [1] is responsible of maintaining the Federal Register of Buildings and Dwellings ( RBD ) in which a collection of information about buildings and homes are stored. Currently, a completion operation of the register is being conducted to include to it any type of construction on the Swiss territory. Such completion operation comes with many challenges including the gathering of the information related to the construction being currently integrated to the register. In this set of information are the construction years of the buildings. Such information is important to efficiently characterise each Swiss building and to allow the Statistical Office to provide a reliable register to all actors relying on it. The construction year of buildings turns out to be complicated to gather, as adding new buildings to the register already impose an important workload even for the simple information. In addition, in many cases, the construction year of the building is missing or can not be easily collected to update the register. The Statistical Office mandated the STDL to perform researches on the possibility to automatically gather the construction year by analysing the swisstopo [3] National Maps [4]. Indeed, the Swiss national maps are known for their excellency, their availability on any geographical area, and for their temporal cover. The national maps are made with a rigorous and well controlled methodology from the 1950s and therefore they can be used as a reliable source of information to determine the buildings' construction year. The STDL was then responsible for performing the researches and developing a proof-of-concept to provide all the information needed to the Statistical Office for them to take the right decision on considering national maps as a reliable way of assigning a construction year for the buildings lacking information.","title":"Introduction"},{"location":"PROJ-REGBL/#research-project-specifications","text":"Extracting the construction date out of the national maps is a real challenge, as the national maps are a heavy dataset, they are not easy to be considered as a whole. In addition, the Statistical Office needs the demonstration that it can be done in a reliable way and within a reasonable amount of time to limit the cost of such process. They are also subjected to strict tolerances on the efficiency of the construction years extraction through an automated process. The goal of at least 80 % of overall success was then provided as a constraint to the STDL . As a result, the research specifications for the STDL were: Gathering and understanding the data related to the problem Developing a proof-of-concept demonstrating the possibility to extract the construction years from the national maps Assessing the results with a reliable metric to allow demonstrating the quality and reliability of the obtained construction years","title":"Research Project Specifications"},{"location":"PROJ-REGBL/#research-data-selected-areas","text":"In this research project, two datasets were considered: the building register itself and the national maps. As both datasets are heavy and complex, considering them entirely for such a research project would have been too complicated and unnecessary. It was then decided to focus on four areas selected for their representativeness of Swiss landscape: Basel (BS): Urban area Bern (BE): Urban and peri-urban area Biasca (TI): Rural and mountainous Caslano (TI): Peri-urban and rural The following images give a geographical illustration of the selected areas through their most recent map: Illustration of the selected areas: Basel (2015), Bern (2010), Biasca (2012) and Caslano (2009) Data: swisstopo Basel was selected as it was one example of an area on which the building register was already well filled in terms of construction years. The four regions are 6km by 6km squared areas which allows up to twenty thousand buildings to be considered on a single one.","title":"Research Data & Selected Areas"},{"location":"PROJ-REGBL/#federal-register-of-buildings-and-dwellings","text":"The register of buildings is a formal database composed with entries, each of them representing a specific building. Each entry comes with a set of information related to the building they describe. In this project, a sub-set of these informations was considered: Federal identifier of the building (EGID) The position of the building, expressed in the EPGS:2056 (GKODE, GKODN) The building construction year, when available (GBAUJ) The surface of the building, when available, expressed in square metres (GAREA) In addition, tests were conducted by considering the position of the entries of each building. In turned out rapidly that they were not useful in this research project as they were missing on a large fraction on the register and only providing a redundant information according to the position of the buildings. The following table gives a summary of the availability of the construction year in the register according to the selected areas: Area Buildings Available years Missing fraction Basel 17\u2019088 16\u2019584 3% Bern 21\u2019251 4\u2019499 79% Biasca 3\u2019774 1\u2019346 64% Caslano 5\u2019252 2\u2019452 53% One can see that the amount of missing construction year can be large depending on the considered area.","title":"Federal Register of Buildings and Dwellings"},{"location":"PROJ-REGBL/#national-maps","text":"On the side of the national maps, the dataset is more complex. In addition to the large number of available maps, variations of them can also be considered. Indeed, maps are made for different purposes and come with variations in their symbology to emphasise elements on which they focus. Moreover, for modern years, sets of vector data can also be considered in parallel to maps. Vector data are interesting as they allow to directly access the desired information, that is the footprint of the building without any processing required. The drawback of the vector data is their temporal coverage which is limited to the last ten to twenty years. The following images give an illustration of the aspect of the available maps and vector datasets considering the example of the Bern area. Starting with the traditional maps : Available map variations: KOMB, KGRS and KREL - Data: swisstopo and the more specific and vector ones: Available map variations: SITU, GEB and DKM25-GEB (vector) - Data: swisstopo In addition to the number of available variations and data types, they all come with their specific temporal coverage. In the case of this research project, we tried to go back in time as much as possible, simplifying the choice for the older maps. The question still remains for more modern times. As we are mostly interesting in buildings, the availability of already extracted building layers, that can be either raster or vector data, is highly interesting. But the problem of data selection is complex in our case. Indeed, no matter the choice, on the older times, the only available maps have to be considered. In addition to building footprint access, the question of the continuity of the data as to be considered with care. More than building footprints, we are interested in the continuity of these footprints, in order to be able to safely assume the cycle of life of the tracker buildings. This consideration led us to discover variation in methodologies depending on the considered set of data. Indeed, buildings are not shaped in the same way on traditional maps than they are in layer focusing on them. It follows that variation of the symbology, so do the shape of the building, appears between traditional maps and building layers (raster and vector). These variations can lead to shocks going from a map to the one preceding it in time. This can break the continuity of the building footprints along time, making them much more difficult to track safely. This is the reason we choose to focus on the KOMB variation of the maps. These maps are very stable and covers the largest temporal ranges. The methodology was kept very similar along the years, making this dataset much more reliable to work with when the time dimension is considered. Only considering the KOMB variation of the maps also allows to ensure that all source data is treated the same in the processing pipeline, easing the assessment of the results. In addition, the KOMB maps are dense in information and come with colorimetry of their symbology. This opens the possibility to more easily extract the information we need in this project, that are the building footprints. One exception was made concerning the KOMB maps: in their very latest version, the methodology changed, causing the symbology to be different with the older KOMB maps. In their latest version, texts are much more numerous and tend to cover a large amount of the buildings, making them invisible . For this reason, their latest version was dropped, slightly reducing the temporal coverage on the 2015-2020 period. Selecting the KOMB variation allowed us to obtain the following temporal coverage for the four selected areas: Area Oldest map Latest map Mean separation Basel 1955 2015 5.5 Years Bern 1954 2010 5.6 Years Biasca 1970 2012 6.0 Years Caslano 1953 2009 6.2 Years One can see that a large portion of the 20th century can be covered using the maps with a very good resolution of around five to six years between the maps.","title":"National Maps"},{"location":"PROJ-REGBL/#research-approaches","text":"In this research project, the main focus was put on the national maps to extract the construction year of buildings as the maps are sources on which we can rely and assess the results. The only drawback of the maps is their limited temporal coverage, as they only start to be available in the 1950s . This is the reason why another experimental approach was also added to address the cases of building being built before the 1950s . This secondary approach focused on a statistical methodology to verify to which extent it could be possible to assign a construction date even in the case no maps are available. National Maps : This main approach focuses on the national maps from which the construction year of a building is deduced from a temporal analysis of the maps. Each building is tracked until it disappears or change its shape on a given map allowing to deduce that the construction of the building was made in the gap separating the map and its successor one. Statistical Analysis : This method is based on the principle of spatial dependence and furthermore on concentric zones of urban development. This is technically an interpolator which deduces construction years based first on different searching radii for difference variances, second by splitting the data in quantiles and, finally, by a gaussian mixture model unsupervised learning technique to gather the final predictions. The statistical analysis allows then to consider buildings that were detected on all maps, meaning their construction is older than the oldest available map, to assign them an estimation of their construction year, knowing they had to be older than the oldest map.","title":"Research Approaches"},{"location":"PROJ-REGBL/#research-approach-national-maps","text":"In order to detect construction year of buildings, we need to be able to track them down on the maps across the temporal coverage. The RBD is providing the reference list of the building, each coming with a federal identifier ( EGID ) and a position. This position can then be used to track down the building on maps for its appearance or morphological change. As the maps are already selected, as the research areas, this research approach can be summarised in the following way: Translating maps into binary images containing only building Extracting the RBD buildings related to the analysed area Detection procedure of the buildings on the maps Detection of the morphological variation of the buildings Assessment of the obtained results The four first points are related to the development of the proof-of-concept. The last one concern a very sensitive and complicated question relative to the considered problem: how to analyse and assess the obtained results. This question was to most difficult question in this research, and finding a clear and reliable answer is mandatory before to develop anything. For this reason, it is considered in the first place.","title":"Research Approach: National Maps"},{"location":"PROJ-REGBL/#reliability-of-the-data","text":"Assessing the results is essentially having a strong reference allowing to compare both in order to obtain a reliable characterisation of the success rate in the deduction of the construction years. This question leads to the discovery that this problem is much more complex that and can appear in the first place. Indeed, we were warned by the Statistical Office that the RBD , considering the construction years it already gives, can be unreliable on some of its portions. This can be explained by the fact that collecting such information is a long and complicated administrative process. As an example, the following image gives an illustration of a building tracked on each of the available selected maps: Temporal track of a selected building On this illustration, one can see two things: the RBD announce a construction year in 1985 ; the maps are clearly indicating something different, locating its construction year between 1963 and 1969 . So both datasets are contradicting each other. In order to solve the contradiction, we manually searched for historical aerial images. The following images illustrate what was found: Aerial view of the building situation: 1963, 1967 and 1987 - Data: swisstopo One can clearly see that the maps seem to give the correct answer concerning the construction date of this specific building, the RBD being contradicted by two other sources. This illustrates the fact that the RBD can not be directly considered as a reliable reference to assess the results. The same question applies for the maps. Even if it is believed that they are highly reliable, one has to be careful with such consideration. Indeed, looking at the following example: Temporal track of a selected building In this case, the RBD gives 1986 as the construction date of the pointed building. The maps are giving a construction year between 1994 and 2000 . Again, the two datasets are contradicting each other. The same procedure was conducted to solve the contradiction: Aerial view of the building situation: 1970, 1986 and 1988 - Data: swisstopo Looking at the aerial images, it seems that the tracked building was there in 1988 . One can see that the map in 1994 continue to represent the four old buildings instead on the new one. It's only in 2000 that the maps are correctly representing the new building. This shows that despite maps are a reliable source of geo-information, they can also be subjected to delay in their symbology. The maps also come with the problem of the consistency of the building footprint symbology. Looking at the following example: Temporal track of a selected building one can see that the maps seem to indicate a strange evolution of the situation: a first building appears in 1987 and it is destroyed and replaced by a larger one in 1993 . Then, this new large building seems to have been destroyed right after its construction to be replaced by a new one in 1998 . Considering aerial images of the building situation: Aerial image view of the building situation: 1981, 1987 and 1993 - Data: swisstopo one can clearly see that a first building was constructed and completed by an extension between 1987 and 1993 . This shows an illustration where the symbology of the building footprints can be subjected to variation than can be de-synchronised regarding the true situation.","title":"Reliability of the Data"},{"location":"PROJ-REGBL/#metric","text":"In such context, neither the RBD or the national maps can be formally considered as a reference. It follows that we are left without a solution to assess our results, and more problematically, without any metric able to guide the developments of the proof-of-concept in the right direction. To solve the situation, one hypothesis is made in this research project. Taking into account both the RBD and the national maps, one can observe that both are built using methodologies that are very different. On one hand, the RBD is built out of a complex administrative process, gathering the required information in a step by step process, going from communes to cantons , and finally to the Statistical Office . On the other hand, the national maps are built using regular aerial image campaigns conducted over the whole Switzerland. The process of establishing maps is quite old and can then be considered as well controlled and stable. Both datasets are then made with methodologies that can be considered as fully independent from each other. This led us to the formulation of our hypothesis: Hypothesis : As the RBD and national maps are the results of independent methodologies, an error in one dataset is very unlikely to compensate an error in the other. In other words, if the RBD and the national maps agree on the construction year of a building, this information can be considered as a reliable reference, as it would be very unlikely to have two errors leading to such agreement. One should remain careful with this hypothesis, despite it sounds reasonable. It would be very difficult to assess it as requiring to gather complex confirmation data that would have to be independent of the RBD , the national maps and the aerial images (as maps are based on them). This assumption is the only one made in this research project. Accepting this assumption leads us to the possibility to establish a formal reference that can be used as a metric to assess the results and to guide the development of the proof-of-concept. But such reference has to be made with care, as the problem remains complex. To illustrate this complexity, the following figure gives a set representation of our problem: Set representation of the RBD completion problem The two rectangles represent the set of buildings for a considered area. On the left, one can see the building set from the RBD point of view. The grey area shows the building without the information of their construction year. Its complementary set is split in two sub-sets that are the buildings having a construction year that is absolutely correct and absolutely incorrect (the limit between both is subject to a bit of interpretation, as the construction year is not a strong concept). If a reference can be extracted, it should be in the green sub-set. The problem is that we have no way of knowing which building are in which sub-set. So the national maps were considered to define another sub-set: the synchronous sub-set where both RBD and national maps agree. To build the metric, the RBD sub-set of buildings coming with the information of the construction year is randomly sub-sampled to extract a representative sub-set: the potentials . This sub-set of potentials is then manually analysed to separate the building on which both datasets agree and to reject the other. At the end of the process, the metric sub-set is obtained and should remain representative. On the right of the set representation is the view of the buildings set through the national maps. One can see that the same sub-set appears but it replaces the construction years by the representation of the building on the maps. The grey part is then representing the building that are not represented on the maps because of their size or because they can be hidden by the symbology for example. The difference is that the maps do not give access to the construction years directly, but they are read from the maps through our developed detector. The detector having a success rate, it cuts the whole set of sub-sets in half, which is exactly what we need for out metric. If the metric sub-set remains representative, the success rate of the detector evaluated on it should generalise to the whole represented buildings. This set representation demonstrates that the problem is very complex and has to be handled with care. Considering only the six most important sub-set and considering construction year are extracted by the detector from the maps, it means that up to 72 specific case can apply on each building randomly selected. To perform the manual selection, a random selection of potential buildings was made on the RBD set of buildings coming with a construction year. The following table summarises the selection and manual validation: Area Potentials Metric Basel 450 EGIDs 209 EGIDs Bern 450 EGIDs 180 EGIDs Biasca 336 EGIDs 209 EGIDs Caslano 450 EGIDs 272 EGIDs The previous table gives the result of the second manual validation. Indeed, two manual validation sessions were made, with several weeks in-between, to check the validation process and how it evolved with the increase of the view of the problem. Three main critics can then be addressed to the metric: the first one is that establishing validation criterion is not simple as the number of cases in which buildings can fall is very high. Understanding the problem takes time and requires to see a lot of these cases. It then follows that the second validation session was more stable and rigorous than the first one. The second critic that can be made on our metric is the selection bias. As the process is made by a human, it is affected by its way of applying the criterion and more specifically on by its severity on their application. Considering the whole potentials sub-set, one can conclude that a few buildings could be rejected and validated depending on the person doing the selection. The last critic concerns specific cases for which the asynchronous criterion to reject them is weak. Indeed, for some buildings, the situation is very unclear in the way the RBD and the maps give information that can not be understood. This is the case for example when the building is not represented on the map. This can be the position in the RBD or the lack of information on the maps that lead to such an unclear situation. These cases are then rejected, but without being fully sure of the asynchronous aspect regarding the maps and the RBD .","title":"Metric"},{"location":"PROJ-REGBL/#methodology","text":"With a reliable metric, results can be assessed and the development of the proof-of-concept can be properly guided. As mentioned above, the proof-of-concept can be split in four major steps that are the processing of the maps, the extraction of the RBD buildings, detection of the building on the maps and detection in morphological changes.","title":"Methodology"},{"location":"PROJ-REGBL/#results","text":"The developed proof-of-concept is applied on the four selected areas to deduce construction year for each building appearing in the RBD . With the defined metric, it is possible to assess the result in a reliable manner. Nevertheless, assessing the results with clear representations is not straightforward. In this research project, two representations were chosen: Histogram of the success rate : For this representation, the building of the metric are assigned to temporal bins of ten years in size and the success rate of the construction year is computed for each bins. Distance and pseudo-distance distribution : As the previous representation only gives access to a binary view of the results, a distance representation is added to understand to which extent mistakes are made on the deduction of a construction year. For buildings detected between two maps, the temporal middle is assumed as the guessed construction year, allowing to compute a formal distance with its reference. In case a building is detected before or beyond the map range, a pseudo-distance of zero is assigned in case the result is correct according to the reference. Otherwise, the deduced year (that is necessarily between two maps) is compared to its reference extremal map date to obtain an error pseudo-distance. In addition to the manually defined metric, the full RBD metric is also considered. As the construction years provided in the RBD have to be considered with care, as part of them are incorrect, comparing the results obtained the full RBD metric and the metric we manually defined opens the important question of the synchronisation between the maps and the RBD , viewed from the construction perspective.","title":"Results"},{"location":"PROJ-REGBL/#conclusion","text":"As a main conclusion to the national maps approach, one can consider the results as good. It was possible to develop a proof-of-concept and to apply it on selected and representative areas of Switzerland. In this approach, it turns out that developing the proof-of-concept was the easy part. Indeed, finding a metric and demonstrating its representativeness and reliability was much more complicated. Indeed, as the two datasets can not be considered as fully reliable in the first place, a strategy had to be defined in order to be able to demonstrate that the chosen metric was able to assess our result in the way expected by the Statistical Office . In addition, the metric only required one additional hypothesis on top of the two datasets. This hypothesis, consisting in assuming that the synchronous sub-set was a quasi-sub-set of the absolutely correct construction years , can be assumed to be reasonable. Nevertheless it is important to emphasise that it was necessary to make it, leading us to remains critic and careful whilst reading the results given by our metric. The developed proof-of-concept was developed in C++ , leading to an efficient code able to be used for the whole processing of Switzerland without the necessity to deeply modify it.","title":"Conclusion"},{"location":"PROJ-REGBL/#research-approach-statistical","text":"As the availability of the topographic/national maps does not reach the integrity of all building's year of construction in the registry, an add-on was developed to infer this information, whenever there was this need for extrapolation. Usually, the maps availability reaches the 1950s, whilst in some cities the minimum year of construction can be in the order of the 12th century, e.g. The core of this statistical model is based on the Concentric Zones Model (Park and Burgess, 1925)[6] extended to the idea of the growth of the city from the a centre (Central Business District - CBD) to all inner areas. The concept behind this statistical approach can be seen below using the example of a crop of Basel city: Illustration of the Burgess concentric zone model Although it is well known the limits of this model, which are strongly described in other famous urban models such as from Hoyt (1939)[7] and Harris and Ullman (1945)[8]. In general those critics refer to the simplicity of the model, which is considered and compensated for this application, especially by the fact that the main prediction target are older buildings that are assumed to follow the concentric zones pattern, differently than newer ones (Duncan et al., 1962)[9]. Commonly this is the pattern seen in many cities, hence older buildings were built in these circular patterns to some point in time when reconstructions and reforms are almost randomly placed in spatial and temporal terms. Moreover processes like gentrification are shown to be dispersed and quite recent (R\u00e9rat et al, 2010)[10]. In summary, a first predictor is built on the basis that data present a spatial dependence, as in many geostatistical models (Kanevski and Maignan, 2004[11]; Diggle and Ribeiro, 2007[12]; Montero and Mateu, 2015[13]). This way we are assuming that closer buildings are more related to distant buildings (Tobler, 1970[14]) in terms of year of construction and ergo the time dimension is being interpolated based on the principles of spatial models. We are here also demonstrating how those two dimensions interact. After that concentric zones are embedded through the use of quantiles, which values will be using in a probabilistic unsupervised learning technique. Finally, the predicted years are computed from the clusters generated.","title":"Research Approach: Statistical"},{"location":"PROJ-REGBL/#metric_1","text":"Similar to the detection situation, generating a validation dataset was an especially challenging task. First of all, the dates in the RBD database could not be trusted in their integrity and the topographic maps used did not reach this time frame. In order to ascertain the construction year in the database, aerial images from swisstopo (Swiss Federal Office of Topography) were consulted and this way buildings were manually selected to compound a validation dataset. References extraction from aerial images manual analysis One of the problems related to this approach was the fact that a gap between the surveys necessary for the images exists. This way it is not able to state with precision the construction date. These gaps between surveys were approximately in the range of 5 years, although in Basel , for some areas, it reached 20 years. An example of this methodology to create a trustworthy validation set can be seen below. In the left-hand side one can see the year of the first image survey (up) and the year registered in the RBD (down) and in the right-hand side, one can see the year of the next image survey in the same temporal resolution.","title":"Metric"},{"location":"PROJ-REGBL/#methodology_1","text":"First of all, a prior searching radius is defined as half of the largest distance (between random variables). For every prediction location, the variance between all points in the prior searching radius will be used to create a posterior searching radius. This way, the higher the variance, the smaller the searching radius, as we tend to trust data less. This is mainly based on the principle of spatial dependence used in many geostatistical interpolators. The exception to this rule is for variances that are higher than 2 x the mean distance between points. In this case, the searching radius increases again in order to avoid clusters of very old houses that during tests caused underestimation. The figure below demonstrates the logic being the creation of searching radii. Searching radii computation process being d the distance between points, \u03bc the mean and s\u00b2 the variance of random variable values within the prior searching radius. It is important to mention that in case of very large number of missing data, if the searching radius does not find enough information, the posterior mean will be the same as the prior mean, possibly causing over/underestimation in those areas. This first procedure is used to fill the gaps in the entry database so clustering can be computed. The next step is then splitting the data in 10 quantiles, what could give the idea of concentric growth zones, inspired, in Burgess Model (1925)[7]. Every point in the database will then assume the value of its quantile. It is also possible to ignore this step and pass to clustering directly, what can be useful in two situations, if a more general purpose is intended or if the concentric zones pattern is not observed in the study area. As default, this step is used, which will be followed by an unsupervised learning technique. A gaussian mixture model, which does not only segments data into clusters, but indicates the probability of each point belonging to every cluster is then performed. The number of components computed is a linear function to the total number of points being used, including the ones that previously had gaps. The function to find the number of components is the following: being np the number of components/clusters, and nc the total number of points used. The number of clusters shall usually be very large compared to a standard clustering exercise. To avoid this, this value is being divided by ten, but the number of clusters will never be smaller than five. An example of clustering performed by the embedded gaussian mixture model can be seen below: Example of clustering process on the Basel area Hence the matrix of probabilities of every point belonging to each cluster (\u03bb - what can be considered a matrix of weights) is multiplied by the mean of each cluster ( 1 x nc matrix mc ), forming the A matrix: or in matrices: Finally, the predictions can then be made using the sum of each row in the A matrix. It is important to state that the same crops (study areas) were used for this test. Although Caslano was not used in this case, as it possesses too few houses with a construction date below the oldest map available. Using the metric above explained a hold out cross-validation was performed, this way a group of points was only used for validation and not for training. After that, the RMSE (Root Mean Squared Error) was calculated using the difference between the date in the RBD database and the predicted one. This RMSE was also extrapolated to the whole Switzerland, so one could have a notion of what the overall error could be, using the following equation (for the expected error): where E is the error and n the number of buildings in each region. In addition to the RMSE , the 95th percentile was computed for every study area and using all combined as well. Hence, one could discuss the spread and predictability of errors.","title":"Methodology"},{"location":"PROJ-REGBL/#results_1","text":"The first case analysed was Basel , where the final RMSE was 9.78 years. The density plot below demonstrates the distribution of errors in Basel , considering the difference between the year of construction in the RBD database and the predicted one. Distribution of error on construction year extrapolation Among the evaluated cases, Basel presented a strong visible spatial dependence, and it was also the case which the largest estimated proportion of houses with construction years older than (1955) the oldest map ( 11336 or approximately 66 % of buildings). Based on the validation dataset only, there was an overall trend of underestimation and the 95th percentile reached was 20 years, showing a not so spread and flat distribution of errors. Bern was the second case evaluated, and it demonstrated to be an atypical case. This starts from the fact that a big portion of the dates seemed incongruent with reality, based on the aerial images observed and as seen in the previous detection approach. Not only that, but almost 80 % of the buildings in Bern had missing data to what refers to the year of construction. This is especially complicated as the statistical method here presented is in essence an interpolator (intYEARpolator). Basically, as in any inference problem, data that is known is used to fill unknown data, therefore a reasonable split among known and unknown inputs is expected, as well as a considerable confidence on data. In the other hand, an estimated number of 1079 (approximately 27 % of the buildings) buildings was probably older than the oldest map available (1954) in Bern crop. Therefore, in one way liability was lower in this case, but the number of prediction points was smaller too. The following figure displays the density of errors in Bern, where an RMSE of 20.64 years was computed. Distribution of error on construction year extrapolation There was an overall trend for overestimation, though there was still enough lack of spread in errors, especially if one considers the 95th percentile of 42 . Finally, the crop on Biasca was evaluated. The computed RMSE was of 13.13 years, which is closer to the Basel case and the 95th percentile was 17 years, this way presenting the least spread error distribution. In Biasca an estimated 1007 ( 32 %) buildings were found, which is not much more than the proportion in Bern, but Biasca older topographic map used was from 1970, making of it an especially interesting case. The density plot below demonstrates the concentrated error case of Biasca : Distribution of error on construction year extrapolation Once the RMSE was computed for the three regions, it was extrapolated to the whole Switzerland by making consideration the size of each dataset: Extrapolation of the error distribution on the whole Switzerland The expected extrapolated error calculated was 15.6 years and the 95th percentile was then 31 years.","title":"Results"},{"location":"PROJ-REGBL/#conclusion_1","text":"This add-on allows extrapolating the predictions to beyond the range of the topographical maps. Its predictions are limited, but the accuracy reached can be considered reasonable, once there is a considerable lack of information in this prediction range. Nor the dates in the RBD , nor the topographic maps can be fully trusted, ergo 15.6 years of error for the older buildings is acceptable, especially by considering the relative lack of spread in errors distribution. If a suggestion for improvement were to be given, a method for smoothing the intYEARpolator predictions could be interesting. This would possibly shift the distribution of the error into closer to a gaussian with mean zero. The dangerous found when searching for such an approach is that the year of construction of buildings does not seem to present a smooth surface, despite the spatial dependence. Hence, if this were to be considered, a balance between smoothing and variability would need to found. We also demonstrated a completely different perspective on how the spatial and temporal dimensions can be joined as the random variable predicted through spatial methodology was actually time. Therefore a strong demonstration of the importance of time in spatially related models and approaches was also given. The code for the intYEARpolator was developed in Python and it runs smoothly even with this quite big proportion of data. The singular case it can be quite time-demanding is in the case of high proportion of prediction points (missing values). It should also be reproducible to the whole Switzerland with no need for modification. A conditional argument is the use of concentric zones, that can be excluded in case of a total different pattern of processing time.","title":"Conclusion"},{"location":"PROJ-REGBL/#reproduction-resources","text":"The source code of the proof-of-concept for national maps can be found here : National maps approach proof-of-concept (regbl-poc), STDL The README provides all the information needed to compile and use the proof-of-concept. The presented results and plots can be computed using the following tools suite : National maps approach results and plots (regbl-poc-analysis), STDL with again the README giving the instructions. The proof-of-concept source code for the statistical approach can be found here : Statistical approach proof-of-concept (regbl-poc-intyearpolator), STDL with its README giving the procedure to follow. The data needed to reproduce the national maps approach are not publicly available. For the national maps, a temporal series of the 1:25'000 maps of the same location are needed. They can be asked to swisstopp : GeoTIFF National Maps 1:25'000 rasters temporal sequence, swisstopo With the maps, you can follow the instruction for cutting and preparing them on the proof-of-concept README . The RBD data, used for both approaches, are not publicly available either. You can query them using the request form on the website of the Federal Statistical Office : DSV RBD data request form , Federal Statistical Office Both proof-of-concepts READMEs provide the required information to use these data.","title":"Reproduction Resources"},{"location":"PROJ-REGBL/#references","text":"[1] Federal Statistical Office [2] Federal Register of Buildings and Dwellings [3] Federal Office of Topography [4] National Maps (1:25'000) [5] Conway, J. (1970), The game of life. Scientific American, vol. 223, no 4, p. 4. [6] Park, R. E.; Burgess, E. W. (1925). \"The Growth of the City: An Introduction to a Research Project\". The City (PDF). University of Chicago Press. pp. 47\u201362. ISBN 9780226148199. [7] Hoyt, H. (1939), The structure and growth of residential neighborhoods in American cities (Washington, DC). [8] Harris, C. D., and Ullman, E. L. (1945), \u2018The Nature of Cities\u2019, Annals of the American Academy of Political and Social Science, 242/Nov.: 7\u201317. [9] Duncan, B., Sabagh, G., & Van Arsdol,, M. D. (1962). Patterns of City Growth. American Journal of Sociology, 67(4), 418\u2013429. doi:10.1086/223165 [10] R\u00e9rat, P., S\u00f6derstr\u00f6m, O., Piguet, E., & Besson, R. (2010). From urban wastelands to new\u2010build gentrification: The case of Swiss cities. Population, Space and Place, 16(5), 429-442. [11] Kanevski, M., & Maignan, M. (2004). Analysis and modelling of spatial environmental data (Vol. 6501). EPFL press. [12] Diggle, P. J. Ribeiro Jr., P. J. (2007). Model-based Geostatistics. Springer Series in Statistics. [13] Montero, J. M., & Mateu, J. (2015). Spatial and spatio-temporal geostatistical modeling and kriging (Vol. 998). John Wiley & Sons. [14] Tobler, W. R. (1970). A computer movie simulating urban growth in the Detroit region. Economic geography, 46(sup1), 234-240.","title":"References"},{"location":"PROJ-ROADSURF/","text":"Classification of road surfaces \u00b6 Gwena\u00eblle Salamin (swisstopo), Cl\u00e9mence Herny (Exolabs), Roxane Pott (swisstopo), Alessandro Cerioni (\u00c9tat de Gen\u00e8ve) Proposed by the Federal Office of Topography swisstopo - PROJ-ROADSURF August 2022 to March 2023 - Published on August 28, 2023 All scripts are available on GitHub: https://github.com/swiss-territorial-data-lab/proj-roadsurf Abstract : The Swiss road network extends over 83\u2019274 km. Information about the type of road surface is useful not only for the Swiss Federal Roads Office and engineering companies, but also for cyclists and hikers. Currently, the data creation and update is entirely done manually at the Swiss Federal Office of Topography. This is a time-consuming and methodical task, potentially suitable to automation by data science methods. The goal of this project is classifying Swiss roads according to their surface type, natural or artificial. We first searched for statistical differences between these two classes, in order to then perform supervised classification based on machine-learning methods. As we could not find any discriminant feature, we used deep learning methods. In terms of balanced F1 score, we obtained a global score of 0.74 over the training, validation and test area, 0.56 over the inference-only area. 1. Introduction \u00b6 The Swiss road network extends over 83'274 km 1 . Not only cyclists and hikers can be interested in knowing whether a given road section is covered by a natural or an artificial surface, but also the Swiss Federal Roads Office, which is in charge of road maintenance, and engineering companies. This information is found within the swissTLM3D 2 dataset, the large-scale topographic model of Switzerland produced by the Federal Office of Topography (swisstopo). Keeping the swissTLM3D dataset up to date is a time-consuming work that has to be done methodically. Operators draw and georeference new elements and fill in their attributes based on the visual interpretation of stereoscopic aerial images. The update of existing elements also follows this manual approach. Data science can help by autmatizing this time-consuming and systematic tasks. So far, the majority of data science studies on the identification of the road surface type, in particular those based on artificial intelligence, have been conducted in the context of improving the driving and security of autonomous vehicles 3 4 5 6 . These works rely on images shot by cameras mounted at the front of the moving vehicle itself. To our knowledge, only one study, carried out by Mansourmoghaddam et al. (2022) 7 , proposed a method based on object-based classification from aerial imagery, which could successfully tell artificial roads from natural ones. Another possible approach is to use spectral indices, as done by Zhao & Zhu (2022) 8 working on the distinction between artificial surfaces and bare land. However, their method is not specifically designed for road surfaces. The goal of this project was to determine whether the road cover is artificial or natural with the development of data science tools. For this first test, only the roads of the class \"3m Strasse\" are considered. Figure 1: Overview of the workflow for this project. As the location of roads was known, we faced a problem of supervised classification. Two approaches were tested to address it: machine learning (ML) and deep learning (DL). Both approaches used the same input data, aerial images and vector road location. 2. Data \u00b6 As input data, this project used two datasets produced by the Federal Office of Topography: swissTLM3D and SWISSIMAGE RS. We worked with data for the year 2018, for which the images and ground truth, i.e. the manually vectorized and classified roads, are available for the area of interest (AOI). Coordinates are expressed in the EPSG:2056 reference system. 2.1. Area of interest \u00b6 Figure 2: Delimitation of the area of interest with the tile numbers of the 1:25'000 Swiss national map. The area of interest (AOI) defined for this study was represented by the tiles 1168, 1188, 1208 and 1228 of the Swiss national map at a scale of 1:25'000. This zone covers an area of 840 km 2 and was chosen because of its representativeness of the Swiss territory. 2.2. swissTLM3D \u00b6 The swissTLM3D 2 dataset is a large-scale topographic model of Switzerland. It contains geospatial data necessary o the national map, such as roads, buildings and land cover. Periodical updates rely on the manual work of specialized operators. They interpret stereoscopic images and fill in attributes with the help of some additional information, like cadastral surveys and terrestrial images. The specification of aerial imagery is similar to the SWISSIMAGE RS product. The road layer contains lines with the identifier, the structure (none, bridge, tunnel, etc.), the object type (highways, 8m roads, 1 m paths, etc.) and the surface type as attributes. The two possible classes of the surface type are defined in the metadata: artificial (German: Hart) and natural (Natur). The artificial class contains surfaces of hard artificial materials like asphalt, concrete or slabs. The natural class contains roads with a surface of natural materials like gravel or dirt, and untreated surfaces. In this project, it was decided to test the classification for the type \"3m Strasse\" (3 m roads). This class encompasses roads that are between 2.81 m and 4.20 m wide. Within this subset, 6486 roads have an artificial surface and 289 a natural one. The dataset is heavily unbalanced toward the artificial roads. In addition, the swissTLM3D dataset was used to identify the forests. Indeed, they prevent us from observing roads from aerial images; hence those roads cannot be used in our study. As no layer in the swissTLM3D is specifically devoted to forested areas, they were deduced from the land cover classes. A filter was applied to only keep forests (\"Wald\") and open forests (\"Wald offen\"). Over the AOI, all the roads in quarries have a natural surface. We used our own layer from the project on the detection of mineral extraction sites to know their location. However, it is possible to use the information on the area of use from the swissTLM3D dataset which has a class on gravel quarries and one on stone quarries. 2.3. SWISSIMAGE RS \u00b6 The product SWISSIMAGE RS 9 contains aerial images of Switzerland composed by four bands: near-infrared (NIR), red (R), green (G) and blue (B). The ground resolution equals 0.10 m over the area of interest, except in some high altitude regions or regions with complex topography, where a resolution of 0.25 m is deemed sufficient. The standard deviation is +/- 0.15 m (1 sigma) for a ground resolution of 0.10 m and +/- 0.25 m (1 sigma) for a ground resolution of 0.25 m, +/- 3-5 m (1 sigma). The dataset is composed of a collection of 16-bit encoded GeoTIFF orthorectified images. The overlap between images varies, but stays always present. 3. Preprocessing \u00b6 Both the swissTLM3D and SWISSIMAGE RS dataset were processed to be suitable for the algorithms we wanted to develop. This was achieved with two procedures: the generation of the road domain and the creation of a raster mosaic. 3.1. Generation of the Road Domain \u00b6 The swissTLM3D contains a vector layer representing every road section as a 3D line with some attached attributes. As a first test, the beneficiaries requested us to perform the analysis only on roads of the type \"3m Strasse\", i.e the roads wider than 2.81 m and thinner than 4.20 m. The engineered structures were excluded based on the attribute \"KUNSTBAUTE\". Only bridges and road sections without structures were kept. Data preparation differs slightly between the two performed analyses, machine and deep learning. Results for both approaches are shown here below. Figure 3: Resulting labels (left) from the initial TLM lines (right) in the case of the machine learning. Figure 4: Resulting labels (left) from the initial TLM lines (right) in the case of deep learning. For the machine learning analysis, only the 3m roads were kept (figure 3). For the deep learning analysis, we judged safer to keep all the visible roads (figure 4). Therefore, the neighboring roads were also considered. We made the hypothesis that we would obtain better results by training the model on all the visible roads, rather than on the 3m ones only. Still, the focus on \"3m Strasse\" class was enforced through the selection of raster tiles: only those tiles containing the specific class were used as input data. Road geometries, originally linear, were transformed into polygons by adding a buffer with a flat cap style. This procedure generated unwanted overlapping areas in the neighborhood of the intersection points between contiguous road sections. Such artifacts were handled differently depending on the road types: in the case of roads with different widths, the zone of the overlap inherited the class of the widest road section among the intersecting ones. in the case of roads with the same width, in the case of the machine learning analysis, overlapping parts were discarded; in the case of the deep learning analysis, it was supposed that leaving the overlapping parts would produce more understandable labels for the algorithm than suppressing the overlap. Once that the polygons were generated, sections hidden by a forest canopy were excluded. A buffer of 2 m was also added around forests as the canopy was often seen to be extending beyond the forest delimitation as recorded in the swissTLM3D dataset. We considered adding some information about the altitude of the length of the roads to the labels. Natural and artificial roads share pretty much the same distribution in terms of altitude. For the length, the longest roads all had an artificial surface. However, the experts could not tell us if it was the case for all Switzerland or a coincidence on our AOI. For the deep learning analysis, we tried to improve the overlap between labels and images by taking cadastral data into account. A larger buffer was used on the lines for the TLM. Then, only the parts of the buffer intersecting the road surfaces from cadastral surveying were kept. As described in the deep learning analysis section , we tested the labels straight out of the TLM and the ones augmented by the cadastral surveying. We also tried to merge the labels by width type or by surface type. After the pre-processing step described here above, for the machine learning analysis, 2'781 road sections were obtained, including 110 natural ones; for the deep learning analysis, 12'208 road sections were obtained, including 3078 natural ones. Let us remind that there were many more roads labeled in the second case as we considered all the visible roads. Especially for natural roads, the vast majority did not belong to the class of interest, but rather to the \"1m Weg\" and \"2m Weg\" classes. 3.2. Raster Mosaic Generation \u00b6 As said in the description of SWISSIMAGE RS , a large overlap between images is present in the dataset. To remove this overlap, a mosaic was created. Instead of merging all the images into one, we decided to set up a XYZ raster tile service, allowing us to work at different resolutions. The first step consists in reprojecting images in the EPSG:3857 projection, compliant with standard tile map services . Then, to save memory and disk space, images were converted from 16 to 8 bits. Besides, normalization was performed to optimize the usage of the available dynamic range. Finally, images were exported to the Cloud-Optimized GeoTIFF (COG) format. COG files can then be loaded by the TiTiler application, an Open Source dynamic tile server application 10 . The MosaicJSON specification was used to store image metadata 11 . Zoom levels were bound between 17 and 20, corresponding to resolutions between 1.20 m and 0.15 m. 4. Machine Learning Analysis \u00b6 4.1. Methodology \u00b6 Before delving into machine learning, we performed some exploratory data analysis, aiming at checking whether already existing features were discriminant enough to tell natural roads from artificial ones. Additional predictive features were also generated, based on ratios between pixel values in different bands (G/R, B/R, NIR/R, G/B, G/NIR, B/NIR); one spectral index; per-band statistics (mean, median, minimum, maximum, standard deviation). The machine learning analysis was performed only on the two middle tiles of the AOI. The most promising spectral index we found in the literature is the Artificial Surface Index (ASI) defined by Zhao & Zhu (2022) 12 . Unfortunately, the computation of the ASI requires the shortwave infrared (SWIR) band which is not available in the SWISSIMAGE RS data. The SWIR band can be available in satellite imagery (e.g.: Landsat 8, Sentinel 2), yet spatial resolution (20-30 m/px) is not enough for the problem at hand. Instead, the VgNIR-BI index 13 could be computed in our case, since it combines the green and NIR bands: \\[\\begin{align} \\ \\mbox{VgNIR-BI} = {\\rho_{green} - \\rho_{NIR} \\over \\rho_{green} + \\rho_{NIR}} \\ \\end{align}\\] where \u03c1 stands for the atmospherically corrected surface reflectance values of the band. In our case, no atmospheric correction was applied, because we dealt with aerial imagery instead of satellite imagery. Boxplots were generated to visualize the distribution of the aforementioned predictive features. Principal component analysis (PCA) were performed, too. The group of values passed to the PCA were the following: - pixel values: Each pixel displays 11 attributes corresponding to (1) its values on the different bands (R, G, B, NIR), (2) the ratio between bands (G/R, B/R, NIR/R, G/B, G/NIR, B/NIR), and (3) the VgNIR-BI spectral index 13 . - summary statistics: Each road has 5 attributes for each band: the mean, the median, the minimum (min), the maximum (max), and the standard deviation (std). Let us note that: these two analyses were carried out on a curated selection of input data, which was ought to maximize the separation between natural and artificial roads. The road sections were filtered by pixel number and margin of error on their mean to avoid small or crowded road sections. Were the results promising, the analysis would have been carried out on the entire dataset. We confirmed that results were not biased by performing each analysis on the entire dataset and a balanced subset. We also confirmed that results were stable with respect to the chosen zoom level. 4.2. Results \u00b6 In order not to make the presentation too cumbersome, here we only show results produced at zoom level 18, on the entire dataset, and considering road sections corresponding to the following criteria: covering at least 10 pixels; enjoying a margin of error (MOE) on the mean below 12.5, computed with a coefficient level of 0.95. Figure 5: Boxplots of the statistical distribution of pixel values on each band for each surface type. Each graph represents a band and each boxplot a surface type. We can see on the figure 5 that both the median and the upper quartile are systematically higher for natural than for artificial roads across all the bands, meaning the natural roads have brighter parts. Unfortunately, we have that pixel value statistics do not allow a sharp distinction between the two classes, as the lower quartile are very close. Figure 6: Boxplots of the pixel distribution on the VgNIR-BI index and the ratios between bands. Each graph represents a ratio or the index and each boxplot a surface type. Figure 6bis: Boxplots of the pixel distribution on the ratios between bands. Each graph represents a ratio and each boxplot a surface type. The ratios between bands and the VgNIR-BI present similar values for the artificial and natural roads, allowing no distinction between the classes. Figure 7: Boxplots of the distribution for the road summary statistics on the blue band. Each graph represents a statistic and each boxplot a type of road surface. Boxplots produced with the summary statistics computed per band and per road section lead to similar conclusions. Natural roads tend to be lighter than artificial ones. However, the difference is not strong enough to affect the lower quartiles and allow a sharp distinction between classes. Figure 8: PCA of the pixels based on their value on each band. Figure 9: PCA of the roads based on their statistics on the blue band. The figures 8 and 9 present respectively the results of the PCA on the pixel values and on the statistics over road sections. Once more, we have to acknowledge that, unfortunately, artificial and natural roads cannot be separated. 4.3. Discussion \u00b6 Although boxplots reveal that some natural roads can be brighter than artificial roads, statistical indicators overlap in such a way that no sharp distinction between the two classes can be drawn. The PCA confirms such an unfortunate finding. Those results are not surprising. As a matter of fact, natural roads which are found in the \"3m Strasse\" type are mainly made by gravel or similar materials which, color-wise, make them very similar to artificial roads. 5. Deep Learning Analysis \u00b6 5.1. Methodology \u00b6 To perform the detection and classification of roads, the object detector (OD) framework developed by the STDL 14 was used. It is described in details in the dedicated page . The two central parts of the AOI constitute the training zone, i.e. the zone for the training, validation and test datasets. The two exterior parts constitute the inference-only zone, i.e. for the \"other\" dataset, to test the trained model on an entirely new zone. To assess the predictions, a script was written, final_metrics.py instead of using the one directly from the STDL's OD. We decided to take advantage that: 1. Predictions are not exclusive between classes. Every road section was detected several times with predictions of different class overlapping. 2. The delimitation of the roads are already known. Therefore, rather than choosing one correct prediction, we aggregated the predictions in a natural and an artificial index over each label. Those indices were defined as follows: \\[\\begin{align} \\ \\mbox{index}_{class} = \\frac{\\sum_{i=1}^{n} (A_{\\%,i} \\cdot \\mbox{score}_{class,i})}{\\sum_{i=1}^{n} A_{\\%,i}} \\ \\end{align}\\] where n is the number of predictions belonging to the class, \\(A_{\\%, i}\\) is the percentage of overlapping area between the label and the prediction, \\(\\mbox{score}_{class,i}\\) is its confidence score. \\[\\begin{align} \\ \\text{final class} = \\begin{cases} \\mbox{artificial} \\quad \\mbox{ if } \\quad \\mbox{index}_{artificial} \\gt \\mbox{index}_{natural}\\\\ \\mbox{natural} \\quad \\mbox{ if } \\quad \\mbox{index}_{artificial} \\lt \\mbox{index}_{natural} \\\\ \\mbox{undetected} \\quad \\text{ if } \\quad \\mbox{index}_{artificial} = 0 \\; \\text{ and } \\; \\mbox{index}_{natural} = 0 \\\\ \\mbox{undetermined} \\quad \\text{ if } \\quad \\mbox{index}_{artificial} = \\mbox{index}_{natural} \\; \\text{ and }\\; \\mbox{index}_{artificial} \\neq 0\\\\ \\end{cases} \\ \\end{align}\\] The largest index indicates the right class as better predictions are supporting it. Once every road has an attributed class, the result was evaluated in terms of recall, precision and balanced F1 score. \\[\\begin{align} \\ P_{class} = \\frac{TP_{class}}{TP_{class}+FP_{class}} \\text{ and } P = \\frac{P_{natural} + P_{artificial}}{2} \\ \\end{align}\\] \\[\\begin{align} \\ R_{class} = \\frac{TP_{class}}{TP_{class}+FN_{class}} \\text{ and } R = \\frac{R_{natural} + R_{artificial}}{2} \\ \\end{align}\\] \\[\\begin{align} \\ F1\\text{ }score = \\frac{2PR}{P + R} \\ \\end{align}\\] where \\(FN_{class}\\) is the number of roads that are not detected or wrongly assigned to the other class, \\(FP_{class}\\) is the number of roads from the other class wrongly attributed to the considered class, \\(P_{class}\\) is the precision, i.e. the percentage of correct roads in the detected class, \\(R_{class}\\) is the recall, i.e. the percentage of correctly found and classified roads from a class, \\(TP_{class}\\) is the number of roads correctly found in the class. The predictions are not necessarily all taken into account. They are filtered based on their confidence score. Thresholds were tested over the balanced F1 score of the validation dataset. The current dataset exhibits a very strong class imbalance. Therefore, we decided to use balanced metrics, giving the same weight to both classes. The balanced F1 score was chosen as the determining criterion between the different tested models. As it gives equal weight to both classes, the quality of the classification for the natural road was well taken into consideration. However, we have to keep in mind that we gave great importance to this class compared to its number of individuals. A great risk exists that the model would be biased toward artificial roads, because of the imbalance between classes. Therefore, we decided on a baseline model (BLM) where all the roads in the training zone are classified as artificial. Its metrics are the following: Artificial Natural Global Precision 0.97 0 0.49 Recall 1 0 0.5 F1 score 0.98 0 0.49 Table 1: Metrics for the BLM with all the roads classified as artificial The trained models should improve the global F1 score of 0.49 to be considered as an improvement. Finally, we wanted to know if the artificial and natural index could constitute a confidence score for their respective classes. The reliability diagram has been plotted to visualize the accuracy of the classification at different levels of those indices. Figure 10: Listing of the various tests carried out. To achieve the best possible results, several input parameters and files for the model training were tested. 1. We tried to improve the quality of the labels by integrating data from cadastral surveying and by merging the roads based on their cover, on their type, or not at all. 2. We trained the model with different zoom level images, from 17 to 20. 3. The influence of different band combinations on the model performance was investigated: true colors (RGB) and false colors (NirRG). For each test, the best configuration was chosen based on the global balanced F1 score. This method supposes that the best choice for one parameter did not depend on the others. 5.2. Results \u00b6 When testing different procedures to create the labels, using only the TLM and excluding the data from the cadastral survey gave the best metrics. Besides, cutting the label corresponding to the road sections and not merging them by road type or surface gave better metrics. Increasing the zoom level improved the balanced F1 score. Using the bands RGB and RG with NIR gave very similar results and an equal F1 score. Therefore, the best model is based on labels deduced from the TLM and using the RGB bands at a zoom level 20. Artificial Natural Global Precision 0.99 0.74 0.87 Recall 0.97 0.74 0.86 F1 score (1) 0.98 0.74 0.86 F1 score for the BLM (2) 0.98 0 0.49 Improvement: (1)-(2) 0 0.74 0.32 Table 2: metrics for the best model over the training, test and validation area. The F1 score for the natural roads and the global one outperformed the BLM. The per-class F1 scores has been judged as satisfying by the beneficiaries. Artificial Natural Global Precision 0.98 0.22 0.60 Recall 0.95 0.26 0.61 F1 score (1) 0.96 0.24 0.60 F1 score for the BLM (2) 0.98 0 0.49 Improvement: (1)-(2) -0.02 0.24 0.11 Table 3: metrics for the best model over the inference-only area. Those metrics are worse than the ones obtained over the training area. The global F1 score is still higher than for the BLM. However, the natural F1 score is not high enough. Figure 11: Absolute and relative repartition of the roads in the inference-only zone. 93.2% of the roads are correctly classified, 4.2% are in the wrong class and 2.6% are undetected or undetermined. Nearly half of the natural roads are either undetected or in the wrong class, but as they represent a tiny proportion of the dataset, they impact little the accuracy. In the training zone, only 2% of the roads are in the wrong class and 1.7% are undetected or undetermined. Figure 12: Reliability curves for the training and the inference-only zone. The artificial index can be used as confidence score for the artificial roads. The natural index can be used as confidence score for the natural ones. Indeed, the accuracy of the results for each class increases with their value. 5.3. Discussion \u00b6 The F1 score obtained is 0.86 over the area to train and validate the model and 0.60 over the rest of the AOI. The difference is essentially due to the decrease in the F1 score of the natural roads, passing from 0.74 to 0.24. The first intuition is that we were facing a case of overfitting. However, the validation loss was controlled in order to stop the training on time and avoid this problem. Another possibility would be that the two zones differ significantly and that a model trained on one cannot apply on the other. Hence, we also split the tiles randomly between the training and the inference-only zone. The gap between the balanced F1 score of the training and inference-only zone passed from 0.25 to 0.19 with the same hyper-parameters. The high recall for artificial roads indicates that the model properly detects them. However, once the artificial recall is high, the high artificial precision is in this case necessarily due. As the roads have a known location, the false positives not due to a class confusion are eliminated from our assessment. Then, only the roads classified in the wrong class can affect precision. As there are not a lot of natural roads, even if they were all wrongly classified as artificial like in the BLM, the precision would still remain well at 0.97. In the current case, the precision of the trained model is 0.01 higher than the one of the BLM. The drop in the natural F1 score is due to all the roads predicted in the wrong class. As they are only a few natural roads, errors of the model affect them more heavily. The part of the misclassified road increased by 44% between the training and the inference-only zone. Meanwhile, the part of undetermined roads only increased by 1% The F1 score could maybe be further improved by focusing more strictly on the 3m roads. Indeed, we considered it would be safer to teach the algorithm to differentiate only between surfaces and not between road types, which are defined by width. Therefore, the tiles were selected because they intersected 3m roads, but then all the roads on the tiles were transformed into labels. Because of the rarity of 3m natural roads, most of the natural roads seen by the algorithm are 2m roads and those often have a surface with grass, where the 3m natural roads have a surface made only of gravel or dirt. Over the training zone, 110 natural roads are 3m ones and 1183 ones are 2 m and 1 m paths. Maybe, labelling only the 3m roads would give better results than labelling all the visible roads. We did not tune the hyperparameter used by the deep learning model once we found a satisfying enough combination. In addition, as the algorithm is based on detectron2, not everything can easily be tuned. Using an entirely new framework and tuning the loss weights would allow better handling the class imbalance. A new framework could also allow integrating an attention mask and take advantage of the known road location like recommended by Epel (2018) 15 . Using a new framework could also allow to use images with 4 bands and integrating the NIR. However, we decided here to first try the tools we already had in our team. We can say that there is a bias in the model encouraging it to predict artificial roads. However, it is still better than the BLM. Therefore, this model is adapted for its purpose. 5.3.1. Elements specific to the application on the SwissTLM3D product \u00b6 All these findings seem negative, which is why it is appropriate to recall the significant imbalance between the classes. If we look at the percentages, 93.2% of the dataset is correctly classified over the inference-only zone. This could represent a significant gain of time compared to an operator who would do the classification manually. Indeed, once the model trained, the procedure documented here only needs 20 minutes to classify the roads of the AOI. Besides, the artificial and natural indices allow us to find most of the misclassified roads and limit the time needed for a visual verification. In addition, the information of the road surface type is already available for the whole Switzerland. When using the algorithm to update the swissTLM3D dataset, it would be possible to perform change detection between the previous and new surface type. Then, those changes could be visually verified. 6. Conclusion \u00b6 Keeping the swissTLM3D dataset up to date is a time consuming and methodical task. This project aimed at finding a method to automatize the determination of the road surface type (artificial vs. natural). We focused on roads belonging to the \"3m Strasse\" class and discovered that statistics stemming from pixel values are not enough discriminating to tell artificial roads from natural ones. Therefore, we decided not to attempt any supervised classification based on machine learning. Instead, deep learning methods are performed. With 93% of the roads classified correctly, this method gave better results in regard to the global F1 score than a baseline model classifying all the roads as artificial. However, the model classifies 4.2% of the roads in the wrong class and has difficulties performing new zones. To ensure the quality of the swissTLM3D product, we advise to first perform a classification with the algorithm, then to check roads with a low class index or a change in surface type compared to the previous version years. It could represent a huge time saver for the operators who currently classify and check a second time all the roads. Despite our investigations, we could not find the cause of the gap between the metrics for the training and the inference-only zone. Further investigation is needed. The next step for this project would be to extend the algorithm to paths of 1 to 2 m wide. The natural roads of 3 m are mostly made of gravel, which strongly resembles asphalt, while natural paths are mostly made of dirt and can grow grass. Therefore, when mixing the two road width classes in one model, the natural roads of 3 m could be too difficult to distinguish from artificial roads and end up neglected. 7. References \u00b6 Office f\u00e9d\u00e9ral de la statistique. Longueur des routes en 2020 | Office f\u00e9d\u00e9ral de la statistique. https://www.bfs.admin.ch/news/fr/2020-0273, November 2020. \u21a9 swisstopo. swissTLM3D. https://www.swisstopo.admin.ch/de/geodata/landscape/tlm3d.html. \u21a9 \u21a9 Lushan Cheng, Xu Zhang, and Jie Shen. Road surface condition classification using deep learning. Journal of Visual Communication and Image Representation , 64:102638, October 2019. doi:10.1016/j.jvcir.2019.102638 . \u21a9 Susi Marianingsih, Fitri Utaminingrum, and Fitra Abdurrachman Bachtiar. Road Surface Types Classification Using Combination of K-Nearest Neighbor and Na\u00efve Bayes Based on GLCM. International Journal of Advanced Software Computer Application , 11(2):15\u201327, 2019. \u21a9 Marcus Nolte, Nikita Kister, and Markus Maurer. Assessment of Deep Convolutional Neural Networks for Road Surface Classification. In 2018 21st International Conference on Intelligent Transportation Systems (ITSC) , 381\u2013386. Maui, HI, November 2018. IEEE. doi:10.1109/ITSC.2018.8569396 . \u21a9 Viktor Slavkovikj, Steven Verstockt, Wesley De Neve, Sofie Van Hoecke, and Rik Van De Walle. Image-Based Road Type Classification. In 2014 22nd International Conference on Pattern Recognition , 2359\u20132364. Stockholm, August 2014. IEEE. doi:10.1109/ICPR.2014.409 . \u21a9 Mohammad Mansourmoghaddam, Hamid Reza Ghafarian Malamiri, Fahime Arabi Aliabad, Mehdi Fallah Tafti, Mohamadreza Haghani, and Saeed Shojaei. The Separation of the Unpaved Roads and Prioritization of Paving These Roads Using UAV Images. Air, Soil and Water Research , 15:117862212210862, January 2022. doi:10.1177/11786221221086285 . \u21a9 Hailing Zhou, Hui Kong, Lei Wei, Douglas Creighton, and Saeid Nahavandi. On Detecting Road Regions in a Single UAV Image. IEEE Transactions on Intelligent Transportation Systems , 18(7):1713\u20131722, July 2017. doi:10.1109/TITS.2016.2622280 . \u21a9 swisstopo. SWISSIMAGE RS. https://www.swisstopo.admin.ch/fr/geodata/images/ortho/swissimage-rs.html. \u21a9 TiTiler. https://developmentseed.org/titiler/. \u21a9 Vincent Sarago, Sean Harkins, and Drew Bollinger. Developmentseed / mosaicjson-spec. https://github.com/developmentseed/mosaicjson-spec, 2021. \u21a9 Yongquan Zhao and Zhe Zhu. ASI: An artificial surface Index for Landsat 8 imagery. International Journal of Applied Earth Observation and Geoinformation , 107:102703, March 2022. doi:10.1016/j.jag.2022.102703 . \u21a9 Ronald C. Estoque and Yuji Murayama. Classification and change detection of built-up lands from Landsat-7 ETM+ and Landsat-8 OLI/TIRS imageries: A comparative assessment of various spectral indices. Ecological Indicators , 56:205\u2013217, September 2015. doi:10.1016/j.ecolind.2015.03.037 . \u21a9 \u21a9 Swiss Territorial Data Lab. Object detector. February 2023. URL: https://github.com/swiss-territorial-data-lab/object-detector . \u21a9 Sagi Eppel. Classifying a specific image region using convolutional nets with an ROI mask as input. December 2018. arXiv:1812.00291 . \u21a9","title":"Classification of road surfaces"},{"location":"PROJ-ROADSURF/#classification-of-road-surfaces","text":"Gwena\u00eblle Salamin (swisstopo), Cl\u00e9mence Herny (Exolabs), Roxane Pott (swisstopo), Alessandro Cerioni (\u00c9tat de Gen\u00e8ve) Proposed by the Federal Office of Topography swisstopo - PROJ-ROADSURF August 2022 to March 2023 - Published on August 28, 2023 All scripts are available on GitHub: https://github.com/swiss-territorial-data-lab/proj-roadsurf Abstract : The Swiss road network extends over 83\u2019274 km. Information about the type of road surface is useful not only for the Swiss Federal Roads Office and engineering companies, but also for cyclists and hikers. Currently, the data creation and update is entirely done manually at the Swiss Federal Office of Topography. This is a time-consuming and methodical task, potentially suitable to automation by data science methods. The goal of this project is classifying Swiss roads according to their surface type, natural or artificial. We first searched for statistical differences between these two classes, in order to then perform supervised classification based on machine-learning methods. As we could not find any discriminant feature, we used deep learning methods. In terms of balanced F1 score, we obtained a global score of 0.74 over the training, validation and test area, 0.56 over the inference-only area.","title":"Classification of road surfaces"},{"location":"PROJ-ROADSURF/#1-introduction","text":"The Swiss road network extends over 83'274 km 1 . Not only cyclists and hikers can be interested in knowing whether a given road section is covered by a natural or an artificial surface, but also the Swiss Federal Roads Office, which is in charge of road maintenance, and engineering companies. This information is found within the swissTLM3D 2 dataset, the large-scale topographic model of Switzerland produced by the Federal Office of Topography (swisstopo). Keeping the swissTLM3D dataset up to date is a time-consuming work that has to be done methodically. Operators draw and georeference new elements and fill in their attributes based on the visual interpretation of stereoscopic aerial images. The update of existing elements also follows this manual approach. Data science can help by autmatizing this time-consuming and systematic tasks. So far, the majority of data science studies on the identification of the road surface type, in particular those based on artificial intelligence, have been conducted in the context of improving the driving and security of autonomous vehicles 3 4 5 6 . These works rely on images shot by cameras mounted at the front of the moving vehicle itself. To our knowledge, only one study, carried out by Mansourmoghaddam et al. (2022) 7 , proposed a method based on object-based classification from aerial imagery, which could successfully tell artificial roads from natural ones. Another possible approach is to use spectral indices, as done by Zhao & Zhu (2022) 8 working on the distinction between artificial surfaces and bare land. However, their method is not specifically designed for road surfaces. The goal of this project was to determine whether the road cover is artificial or natural with the development of data science tools. For this first test, only the roads of the class \"3m Strasse\" are considered. Figure 1: Overview of the workflow for this project. As the location of roads was known, we faced a problem of supervised classification. Two approaches were tested to address it: machine learning (ML) and deep learning (DL). Both approaches used the same input data, aerial images and vector road location.","title":"1. Introduction"},{"location":"PROJ-ROADSURF/#2-data","text":"As input data, this project used two datasets produced by the Federal Office of Topography: swissTLM3D and SWISSIMAGE RS. We worked with data for the year 2018, for which the images and ground truth, i.e. the manually vectorized and classified roads, are available for the area of interest (AOI). Coordinates are expressed in the EPSG:2056 reference system.","title":"2. Data"},{"location":"PROJ-ROADSURF/#21-area-of-interest","text":"Figure 2: Delimitation of the area of interest with the tile numbers of the 1:25'000 Swiss national map. The area of interest (AOI) defined for this study was represented by the tiles 1168, 1188, 1208 and 1228 of the Swiss national map at a scale of 1:25'000. This zone covers an area of 840 km 2 and was chosen because of its representativeness of the Swiss territory.","title":"2.1. Area of interest"},{"location":"PROJ-ROADSURF/#22-swisstlm3d","text":"The swissTLM3D 2 dataset is a large-scale topographic model of Switzerland. It contains geospatial data necessary o the national map, such as roads, buildings and land cover. Periodical updates rely on the manual work of specialized operators. They interpret stereoscopic images and fill in attributes with the help of some additional information, like cadastral surveys and terrestrial images. The specification of aerial imagery is similar to the SWISSIMAGE RS product. The road layer contains lines with the identifier, the structure (none, bridge, tunnel, etc.), the object type (highways, 8m roads, 1 m paths, etc.) and the surface type as attributes. The two possible classes of the surface type are defined in the metadata: artificial (German: Hart) and natural (Natur). The artificial class contains surfaces of hard artificial materials like asphalt, concrete or slabs. The natural class contains roads with a surface of natural materials like gravel or dirt, and untreated surfaces. In this project, it was decided to test the classification for the type \"3m Strasse\" (3 m roads). This class encompasses roads that are between 2.81 m and 4.20 m wide. Within this subset, 6486 roads have an artificial surface and 289 a natural one. The dataset is heavily unbalanced toward the artificial roads. In addition, the swissTLM3D dataset was used to identify the forests. Indeed, they prevent us from observing roads from aerial images; hence those roads cannot be used in our study. As no layer in the swissTLM3D is specifically devoted to forested areas, they were deduced from the land cover classes. A filter was applied to only keep forests (\"Wald\") and open forests (\"Wald offen\"). Over the AOI, all the roads in quarries have a natural surface. We used our own layer from the project on the detection of mineral extraction sites to know their location. However, it is possible to use the information on the area of use from the swissTLM3D dataset which has a class on gravel quarries and one on stone quarries.","title":"2.2. swissTLM3D"},{"location":"PROJ-ROADSURF/#23-swissimage-rs","text":"The product SWISSIMAGE RS 9 contains aerial images of Switzerland composed by four bands: near-infrared (NIR), red (R), green (G) and blue (B). The ground resolution equals 0.10 m over the area of interest, except in some high altitude regions or regions with complex topography, where a resolution of 0.25 m is deemed sufficient. The standard deviation is +/- 0.15 m (1 sigma) for a ground resolution of 0.10 m and +/- 0.25 m (1 sigma) for a ground resolution of 0.25 m, +/- 3-5 m (1 sigma). The dataset is composed of a collection of 16-bit encoded GeoTIFF orthorectified images. The overlap between images varies, but stays always present.","title":"2.3. SWISSIMAGE RS"},{"location":"PROJ-ROADSURF/#3-preprocessing","text":"Both the swissTLM3D and SWISSIMAGE RS dataset were processed to be suitable for the algorithms we wanted to develop. This was achieved with two procedures: the generation of the road domain and the creation of a raster mosaic.","title":"3. Preprocessing"},{"location":"PROJ-ROADSURF/#31-generation-of-the-road-domain","text":"The swissTLM3D contains a vector layer representing every road section as a 3D line with some attached attributes. As a first test, the beneficiaries requested us to perform the analysis only on roads of the type \"3m Strasse\", i.e the roads wider than 2.81 m and thinner than 4.20 m. The engineered structures were excluded based on the attribute \"KUNSTBAUTE\". Only bridges and road sections without structures were kept. Data preparation differs slightly between the two performed analyses, machine and deep learning. Results for both approaches are shown here below. Figure 3: Resulting labels (left) from the initial TLM lines (right) in the case of the machine learning. Figure 4: Resulting labels (left) from the initial TLM lines (right) in the case of deep learning. For the machine learning analysis, only the 3m roads were kept (figure 3). For the deep learning analysis, we judged safer to keep all the visible roads (figure 4). Therefore, the neighboring roads were also considered. We made the hypothesis that we would obtain better results by training the model on all the visible roads, rather than on the 3m ones only. Still, the focus on \"3m Strasse\" class was enforced through the selection of raster tiles: only those tiles containing the specific class were used as input data. Road geometries, originally linear, were transformed into polygons by adding a buffer with a flat cap style. This procedure generated unwanted overlapping areas in the neighborhood of the intersection points between contiguous road sections. Such artifacts were handled differently depending on the road types: in the case of roads with different widths, the zone of the overlap inherited the class of the widest road section among the intersecting ones. in the case of roads with the same width, in the case of the machine learning analysis, overlapping parts were discarded; in the case of the deep learning analysis, it was supposed that leaving the overlapping parts would produce more understandable labels for the algorithm than suppressing the overlap. Once that the polygons were generated, sections hidden by a forest canopy were excluded. A buffer of 2 m was also added around forests as the canopy was often seen to be extending beyond the forest delimitation as recorded in the swissTLM3D dataset. We considered adding some information about the altitude of the length of the roads to the labels. Natural and artificial roads share pretty much the same distribution in terms of altitude. For the length, the longest roads all had an artificial surface. However, the experts could not tell us if it was the case for all Switzerland or a coincidence on our AOI. For the deep learning analysis, we tried to improve the overlap between labels and images by taking cadastral data into account. A larger buffer was used on the lines for the TLM. Then, only the parts of the buffer intersecting the road surfaces from cadastral surveying were kept. As described in the deep learning analysis section , we tested the labels straight out of the TLM and the ones augmented by the cadastral surveying. We also tried to merge the labels by width type or by surface type. After the pre-processing step described here above, for the machine learning analysis, 2'781 road sections were obtained, including 110 natural ones; for the deep learning analysis, 12'208 road sections were obtained, including 3078 natural ones. Let us remind that there were many more roads labeled in the second case as we considered all the visible roads. Especially for natural roads, the vast majority did not belong to the class of interest, but rather to the \"1m Weg\" and \"2m Weg\" classes.","title":"3.1. Generation of the Road Domain"},{"location":"PROJ-ROADSURF/#32-raster-mosaic-generation","text":"As said in the description of SWISSIMAGE RS , a large overlap between images is present in the dataset. To remove this overlap, a mosaic was created. Instead of merging all the images into one, we decided to set up a XYZ raster tile service, allowing us to work at different resolutions. The first step consists in reprojecting images in the EPSG:3857 projection, compliant with standard tile map services . Then, to save memory and disk space, images were converted from 16 to 8 bits. Besides, normalization was performed to optimize the usage of the available dynamic range. Finally, images were exported to the Cloud-Optimized GeoTIFF (COG) format. COG files can then be loaded by the TiTiler application, an Open Source dynamic tile server application 10 . The MosaicJSON specification was used to store image metadata 11 . Zoom levels were bound between 17 and 20, corresponding to resolutions between 1.20 m and 0.15 m.","title":"3.2. Raster Mosaic Generation"},{"location":"PROJ-ROADSURF/#4-machine-learning-analysis","text":"","title":"4. Machine Learning Analysis"},{"location":"PROJ-ROADSURF/#41-methodology","text":"Before delving into machine learning, we performed some exploratory data analysis, aiming at checking whether already existing features were discriminant enough to tell natural roads from artificial ones. Additional predictive features were also generated, based on ratios between pixel values in different bands (G/R, B/R, NIR/R, G/B, G/NIR, B/NIR); one spectral index; per-band statistics (mean, median, minimum, maximum, standard deviation). The machine learning analysis was performed only on the two middle tiles of the AOI. The most promising spectral index we found in the literature is the Artificial Surface Index (ASI) defined by Zhao & Zhu (2022) 12 . Unfortunately, the computation of the ASI requires the shortwave infrared (SWIR) band which is not available in the SWISSIMAGE RS data. The SWIR band can be available in satellite imagery (e.g.: Landsat 8, Sentinel 2), yet spatial resolution (20-30 m/px) is not enough for the problem at hand. Instead, the VgNIR-BI index 13 could be computed in our case, since it combines the green and NIR bands: \\[\\begin{align} \\ \\mbox{VgNIR-BI} = {\\rho_{green} - \\rho_{NIR} \\over \\rho_{green} + \\rho_{NIR}} \\ \\end{align}\\] where \u03c1 stands for the atmospherically corrected surface reflectance values of the band. In our case, no atmospheric correction was applied, because we dealt with aerial imagery instead of satellite imagery. Boxplots were generated to visualize the distribution of the aforementioned predictive features. Principal component analysis (PCA) were performed, too. The group of values passed to the PCA were the following: - pixel values: Each pixel displays 11 attributes corresponding to (1) its values on the different bands (R, G, B, NIR), (2) the ratio between bands (G/R, B/R, NIR/R, G/B, G/NIR, B/NIR), and (3) the VgNIR-BI spectral index 13 . - summary statistics: Each road has 5 attributes for each band: the mean, the median, the minimum (min), the maximum (max), and the standard deviation (std). Let us note that: these two analyses were carried out on a curated selection of input data, which was ought to maximize the separation between natural and artificial roads. The road sections were filtered by pixel number and margin of error on their mean to avoid small or crowded road sections. Were the results promising, the analysis would have been carried out on the entire dataset. We confirmed that results were not biased by performing each analysis on the entire dataset and a balanced subset. We also confirmed that results were stable with respect to the chosen zoom level.","title":"4.1. Methodology"},{"location":"PROJ-ROADSURF/#42-results","text":"In order not to make the presentation too cumbersome, here we only show results produced at zoom level 18, on the entire dataset, and considering road sections corresponding to the following criteria: covering at least 10 pixels; enjoying a margin of error (MOE) on the mean below 12.5, computed with a coefficient level of 0.95. Figure 5: Boxplots of the statistical distribution of pixel values on each band for each surface type. Each graph represents a band and each boxplot a surface type. We can see on the figure 5 that both the median and the upper quartile are systematically higher for natural than for artificial roads across all the bands, meaning the natural roads have brighter parts. Unfortunately, we have that pixel value statistics do not allow a sharp distinction between the two classes, as the lower quartile are very close. Figure 6: Boxplots of the pixel distribution on the VgNIR-BI index and the ratios between bands. Each graph represents a ratio or the index and each boxplot a surface type. Figure 6bis: Boxplots of the pixel distribution on the ratios between bands. Each graph represents a ratio and each boxplot a surface type. The ratios between bands and the VgNIR-BI present similar values for the artificial and natural roads, allowing no distinction between the classes. Figure 7: Boxplots of the distribution for the road summary statistics on the blue band. Each graph represents a statistic and each boxplot a type of road surface. Boxplots produced with the summary statistics computed per band and per road section lead to similar conclusions. Natural roads tend to be lighter than artificial ones. However, the difference is not strong enough to affect the lower quartiles and allow a sharp distinction between classes. Figure 8: PCA of the pixels based on their value on each band. Figure 9: PCA of the roads based on their statistics on the blue band. The figures 8 and 9 present respectively the results of the PCA on the pixel values and on the statistics over road sections. Once more, we have to acknowledge that, unfortunately, artificial and natural roads cannot be separated.","title":"4.2. Results"},{"location":"PROJ-ROADSURF/#43-discussion","text":"Although boxplots reveal that some natural roads can be brighter than artificial roads, statistical indicators overlap in such a way that no sharp distinction between the two classes can be drawn. The PCA confirms such an unfortunate finding. Those results are not surprising. As a matter of fact, natural roads which are found in the \"3m Strasse\" type are mainly made by gravel or similar materials which, color-wise, make them very similar to artificial roads.","title":"4.3. Discussion"},{"location":"PROJ-ROADSURF/#5-deep-learning-analysis","text":"","title":"5. Deep Learning Analysis"},{"location":"PROJ-ROADSURF/#51-methodology","text":"To perform the detection and classification of roads, the object detector (OD) framework developed by the STDL 14 was used. It is described in details in the dedicated page . The two central parts of the AOI constitute the training zone, i.e. the zone for the training, validation and test datasets. The two exterior parts constitute the inference-only zone, i.e. for the \"other\" dataset, to test the trained model on an entirely new zone. To assess the predictions, a script was written, final_metrics.py instead of using the one directly from the STDL's OD. We decided to take advantage that: 1. Predictions are not exclusive between classes. Every road section was detected several times with predictions of different class overlapping. 2. The delimitation of the roads are already known. Therefore, rather than choosing one correct prediction, we aggregated the predictions in a natural and an artificial index over each label. Those indices were defined as follows: \\[\\begin{align} \\ \\mbox{index}_{class} = \\frac{\\sum_{i=1}^{n} (A_{\\%,i} \\cdot \\mbox{score}_{class,i})}{\\sum_{i=1}^{n} A_{\\%,i}} \\ \\end{align}\\] where n is the number of predictions belonging to the class, \\(A_{\\%, i}\\) is the percentage of overlapping area between the label and the prediction, \\(\\mbox{score}_{class,i}\\) is its confidence score. \\[\\begin{align} \\ \\text{final class} = \\begin{cases} \\mbox{artificial} \\quad \\mbox{ if } \\quad \\mbox{index}_{artificial} \\gt \\mbox{index}_{natural}\\\\ \\mbox{natural} \\quad \\mbox{ if } \\quad \\mbox{index}_{artificial} \\lt \\mbox{index}_{natural} \\\\ \\mbox{undetected} \\quad \\text{ if } \\quad \\mbox{index}_{artificial} = 0 \\; \\text{ and } \\; \\mbox{index}_{natural} = 0 \\\\ \\mbox{undetermined} \\quad \\text{ if } \\quad \\mbox{index}_{artificial} = \\mbox{index}_{natural} \\; \\text{ and }\\; \\mbox{index}_{artificial} \\neq 0\\\\ \\end{cases} \\ \\end{align}\\] The largest index indicates the right class as better predictions are supporting it. Once every road has an attributed class, the result was evaluated in terms of recall, precision and balanced F1 score. \\[\\begin{align} \\ P_{class} = \\frac{TP_{class}}{TP_{class}+FP_{class}} \\text{ and } P = \\frac{P_{natural} + P_{artificial}}{2} \\ \\end{align}\\] \\[\\begin{align} \\ R_{class} = \\frac{TP_{class}}{TP_{class}+FN_{class}} \\text{ and } R = \\frac{R_{natural} + R_{artificial}}{2} \\ \\end{align}\\] \\[\\begin{align} \\ F1\\text{ }score = \\frac{2PR}{P + R} \\ \\end{align}\\] where \\(FN_{class}\\) is the number of roads that are not detected or wrongly assigned to the other class, \\(FP_{class}\\) is the number of roads from the other class wrongly attributed to the considered class, \\(P_{class}\\) is the precision, i.e. the percentage of correct roads in the detected class, \\(R_{class}\\) is the recall, i.e. the percentage of correctly found and classified roads from a class, \\(TP_{class}\\) is the number of roads correctly found in the class. The predictions are not necessarily all taken into account. They are filtered based on their confidence score. Thresholds were tested over the balanced F1 score of the validation dataset. The current dataset exhibits a very strong class imbalance. Therefore, we decided to use balanced metrics, giving the same weight to both classes. The balanced F1 score was chosen as the determining criterion between the different tested models. As it gives equal weight to both classes, the quality of the classification for the natural road was well taken into consideration. However, we have to keep in mind that we gave great importance to this class compared to its number of individuals. A great risk exists that the model would be biased toward artificial roads, because of the imbalance between classes. Therefore, we decided on a baseline model (BLM) where all the roads in the training zone are classified as artificial. Its metrics are the following: Artificial Natural Global Precision 0.97 0 0.49 Recall 1 0 0.5 F1 score 0.98 0 0.49 Table 1: Metrics for the BLM with all the roads classified as artificial The trained models should improve the global F1 score of 0.49 to be considered as an improvement. Finally, we wanted to know if the artificial and natural index could constitute a confidence score for their respective classes. The reliability diagram has been plotted to visualize the accuracy of the classification at different levels of those indices. Figure 10: Listing of the various tests carried out. To achieve the best possible results, several input parameters and files for the model training were tested. 1. We tried to improve the quality of the labels by integrating data from cadastral surveying and by merging the roads based on their cover, on their type, or not at all. 2. We trained the model with different zoom level images, from 17 to 20. 3. The influence of different band combinations on the model performance was investigated: true colors (RGB) and false colors (NirRG). For each test, the best configuration was chosen based on the global balanced F1 score. This method supposes that the best choice for one parameter did not depend on the others.","title":"5.1. Methodology"},{"location":"PROJ-ROADSURF/#52-results","text":"When testing different procedures to create the labels, using only the TLM and excluding the data from the cadastral survey gave the best metrics. Besides, cutting the label corresponding to the road sections and not merging them by road type or surface gave better metrics. Increasing the zoom level improved the balanced F1 score. Using the bands RGB and RG with NIR gave very similar results and an equal F1 score. Therefore, the best model is based on labels deduced from the TLM and using the RGB bands at a zoom level 20. Artificial Natural Global Precision 0.99 0.74 0.87 Recall 0.97 0.74 0.86 F1 score (1) 0.98 0.74 0.86 F1 score for the BLM (2) 0.98 0 0.49 Improvement: (1)-(2) 0 0.74 0.32 Table 2: metrics for the best model over the training, test and validation area. The F1 score for the natural roads and the global one outperformed the BLM. The per-class F1 scores has been judged as satisfying by the beneficiaries. Artificial Natural Global Precision 0.98 0.22 0.60 Recall 0.95 0.26 0.61 F1 score (1) 0.96 0.24 0.60 F1 score for the BLM (2) 0.98 0 0.49 Improvement: (1)-(2) -0.02 0.24 0.11 Table 3: metrics for the best model over the inference-only area. Those metrics are worse than the ones obtained over the training area. The global F1 score is still higher than for the BLM. However, the natural F1 score is not high enough. Figure 11: Absolute and relative repartition of the roads in the inference-only zone. 93.2% of the roads are correctly classified, 4.2% are in the wrong class and 2.6% are undetected or undetermined. Nearly half of the natural roads are either undetected or in the wrong class, but as they represent a tiny proportion of the dataset, they impact little the accuracy. In the training zone, only 2% of the roads are in the wrong class and 1.7% are undetected or undetermined. Figure 12: Reliability curves for the training and the inference-only zone. The artificial index can be used as confidence score for the artificial roads. The natural index can be used as confidence score for the natural ones. Indeed, the accuracy of the results for each class increases with their value.","title":"5.2. Results"},{"location":"PROJ-ROADSURF/#53-discussion","text":"The F1 score obtained is 0.86 over the area to train and validate the model and 0.60 over the rest of the AOI. The difference is essentially due to the decrease in the F1 score of the natural roads, passing from 0.74 to 0.24. The first intuition is that we were facing a case of overfitting. However, the validation loss was controlled in order to stop the training on time and avoid this problem. Another possibility would be that the two zones differ significantly and that a model trained on one cannot apply on the other. Hence, we also split the tiles randomly between the training and the inference-only zone. The gap between the balanced F1 score of the training and inference-only zone passed from 0.25 to 0.19 with the same hyper-parameters. The high recall for artificial roads indicates that the model properly detects them. However, once the artificial recall is high, the high artificial precision is in this case necessarily due. As the roads have a known location, the false positives not due to a class confusion are eliminated from our assessment. Then, only the roads classified in the wrong class can affect precision. As there are not a lot of natural roads, even if they were all wrongly classified as artificial like in the BLM, the precision would still remain well at 0.97. In the current case, the precision of the trained model is 0.01 higher than the one of the BLM. The drop in the natural F1 score is due to all the roads predicted in the wrong class. As they are only a few natural roads, errors of the model affect them more heavily. The part of the misclassified road increased by 44% between the training and the inference-only zone. Meanwhile, the part of undetermined roads only increased by 1% The F1 score could maybe be further improved by focusing more strictly on the 3m roads. Indeed, we considered it would be safer to teach the algorithm to differentiate only between surfaces and not between road types, which are defined by width. Therefore, the tiles were selected because they intersected 3m roads, but then all the roads on the tiles were transformed into labels. Because of the rarity of 3m natural roads, most of the natural roads seen by the algorithm are 2m roads and those often have a surface with grass, where the 3m natural roads have a surface made only of gravel or dirt. Over the training zone, 110 natural roads are 3m ones and 1183 ones are 2 m and 1 m paths. Maybe, labelling only the 3m roads would give better results than labelling all the visible roads. We did not tune the hyperparameter used by the deep learning model once we found a satisfying enough combination. In addition, as the algorithm is based on detectron2, not everything can easily be tuned. Using an entirely new framework and tuning the loss weights would allow better handling the class imbalance. A new framework could also allow integrating an attention mask and take advantage of the known road location like recommended by Epel (2018) 15 . Using a new framework could also allow to use images with 4 bands and integrating the NIR. However, we decided here to first try the tools we already had in our team. We can say that there is a bias in the model encouraging it to predict artificial roads. However, it is still better than the BLM. Therefore, this model is adapted for its purpose.","title":"5.3. Discussion"},{"location":"PROJ-ROADSURF/#6-conclusion","text":"Keeping the swissTLM3D dataset up to date is a time consuming and methodical task. This project aimed at finding a method to automatize the determination of the road surface type (artificial vs. natural). We focused on roads belonging to the \"3m Strasse\" class and discovered that statistics stemming from pixel values are not enough discriminating to tell artificial roads from natural ones. Therefore, we decided not to attempt any supervised classification based on machine learning. Instead, deep learning methods are performed. With 93% of the roads classified correctly, this method gave better results in regard to the global F1 score than a baseline model classifying all the roads as artificial. However, the model classifies 4.2% of the roads in the wrong class and has difficulties performing new zones. To ensure the quality of the swissTLM3D product, we advise to first perform a classification with the algorithm, then to check roads with a low class index or a change in surface type compared to the previous version years. It could represent a huge time saver for the operators who currently classify and check a second time all the roads. Despite our investigations, we could not find the cause of the gap between the metrics for the training and the inference-only zone. Further investigation is needed. The next step for this project would be to extend the algorithm to paths of 1 to 2 m wide. The natural roads of 3 m are mostly made of gravel, which strongly resembles asphalt, while natural paths are mostly made of dirt and can grow grass. Therefore, when mixing the two road width classes in one model, the natural roads of 3 m could be too difficult to distinguish from artificial roads and end up neglected.","title":"6. Conclusion"},{"location":"PROJ-ROADSURF/#7-references","text":"Office f\u00e9d\u00e9ral de la statistique. Longueur des routes en 2020 | Office f\u00e9d\u00e9ral de la statistique. https://www.bfs.admin.ch/news/fr/2020-0273, November 2020. \u21a9 swisstopo. swissTLM3D. https://www.swisstopo.admin.ch/de/geodata/landscape/tlm3d.html. \u21a9 \u21a9 Lushan Cheng, Xu Zhang, and Jie Shen. Road surface condition classification using deep learning. Journal of Visual Communication and Image Representation , 64:102638, October 2019. doi:10.1016/j.jvcir.2019.102638 . \u21a9 Susi Marianingsih, Fitri Utaminingrum, and Fitra Abdurrachman Bachtiar. Road Surface Types Classification Using Combination of K-Nearest Neighbor and Na\u00efve Bayes Based on GLCM. International Journal of Advanced Software Computer Application , 11(2):15\u201327, 2019. \u21a9 Marcus Nolte, Nikita Kister, and Markus Maurer. Assessment of Deep Convolutional Neural Networks for Road Surface Classification. In 2018 21st International Conference on Intelligent Transportation Systems (ITSC) , 381\u2013386. Maui, HI, November 2018. IEEE. doi:10.1109/ITSC.2018.8569396 . \u21a9 Viktor Slavkovikj, Steven Verstockt, Wesley De Neve, Sofie Van Hoecke, and Rik Van De Walle. Image-Based Road Type Classification. In 2014 22nd International Conference on Pattern Recognition , 2359\u20132364. Stockholm, August 2014. IEEE. doi:10.1109/ICPR.2014.409 . \u21a9 Mohammad Mansourmoghaddam, Hamid Reza Ghafarian Malamiri, Fahime Arabi Aliabad, Mehdi Fallah Tafti, Mohamadreza Haghani, and Saeed Shojaei. The Separation of the Unpaved Roads and Prioritization of Paving These Roads Using UAV Images. Air, Soil and Water Research , 15:117862212210862, January 2022. doi:10.1177/11786221221086285 . \u21a9 Hailing Zhou, Hui Kong, Lei Wei, Douglas Creighton, and Saeid Nahavandi. On Detecting Road Regions in a Single UAV Image. IEEE Transactions on Intelligent Transportation Systems , 18(7):1713\u20131722, July 2017. doi:10.1109/TITS.2016.2622280 . \u21a9 swisstopo. SWISSIMAGE RS. https://www.swisstopo.admin.ch/fr/geodata/images/ortho/swissimage-rs.html. \u21a9 TiTiler. https://developmentseed.org/titiler/. \u21a9 Vincent Sarago, Sean Harkins, and Drew Bollinger. Developmentseed / mosaicjson-spec. https://github.com/developmentseed/mosaicjson-spec, 2021. \u21a9 Yongquan Zhao and Zhe Zhu. ASI: An artificial surface Index for Landsat 8 imagery. International Journal of Applied Earth Observation and Geoinformation , 107:102703, March 2022. doi:10.1016/j.jag.2022.102703 . \u21a9 Ronald C. Estoque and Yuji Murayama. Classification and change detection of built-up lands from Landsat-7 ETM+ and Landsat-8 OLI/TIRS imageries: A comparative assessment of various spectral indices. Ecological Indicators , 56:205\u2013217, September 2015. doi:10.1016/j.ecolind.2015.03.037 . \u21a9 \u21a9 Swiss Territorial Data Lab. Object detector. February 2023. URL: https://github.com/swiss-territorial-data-lab/object-detector . \u21a9 Sagi Eppel. Classifying a specific image region using convolutional nets with an ROI mask as input. December 2018. arXiv:1812.00291 . \u21a9","title":"7. References"},{"location":"PROJ-TGLN/","text":"Updating the \u00abCultivable Area\u00bb Layer of the Agricultural Office, Canton of Thurgau \u00b6 Adrian Meyer (FHNW) Contributions to Background & Agricultural Law: Pascal Salath\u00e9 (FHNW) Proposed by the Canton of Thurgau - PROJ-TGOBJ March 2021 to June 2021 - Published on July 7, 2021 Abstract : The Cultivable agricultural area layer (\"LN, Landwirtschaftliche Nutzfl\u00e4che\") is a GIS vector product maintained by the cantonal agricultural offices and serves as the key calculation index for the receipt of direct subsidy contributions to farms. The canton of Thurgau requested a spatial vector layer indicating locations and area consumption extent of the largest silage bale deposits intersecting with the known LN area, since areas used for silage bale storage are not eligible for subsidies. Having detections of such objects readily available greatly reduces the workload of the responsible official by directing the monitoring process to the relevant hotspots. Ultimately public economical damage can be prevented which would result from the payout of unjustified subsidy contributions. 1 Introduction \u00b6 1.1 Background \u00b6 Switzerland's direct payment system is the basis for sustainable, market-oriented agriculture. The federal government supports local farms in the form of various types of contributions and enables farming families to claim an adequate income. (cf. Art. 104 BV) In the years 2014-2017 a new agricultural policy system was introduced in Switzerland. With specialized direct payment subsidies named \u00abLandscape Quality Contributions\u00bb (\u00abLQ\u00bb, Landschaftsqualit\u00e4tsbeitr\u00e4ge in German, Contributions \u00e0 la qualit\u00e9 du paysage in French) farms and agricultural businesses can be awarded for complying with measures that aim at increasing biodiversity and maintaining extensively cultivated open grasslands. Subsidies are calculated by area and the agricultural offices of the respective cantonal administration have to constantly monitor the landscape status as well as the compliance of the business operations in order to approve the requested amounts. Only certain land usage profiles are eligible for subsidies payment. According to Art. 104 \u00a71 BV, the agricultural sector, for its part, has to make a substantial decisive contribution to: Secure the supply of the population with goods and aliments. Preserve of the natural foundations of life and maintain the cultural landscape. Allow decentralized settlement throughout the territorial area. In order to be able to claim direct payments, farms are subject to various conditions. The Cultivable agricultural area layer (\u00abLN\u00bb, from German Landwirtschaftliche Nutzfl\u00e4che) is a GIS product maintained by the cantonal agricultural offices and serves as the key calculation index for the receipt of contributions. (cf. Art. 35 DZV). The registration and adjustment of the LN is part of the periodic update (\u00abPNF\u00bb, Periodische Nachf\u00fchrung) within the framework of the official cadastral survey (\u00abAV\u00bb, Amtliche Vermessung) and is usually carried out every 6 years (Gamma 2021). Its correct determination is of immense importance, because if the LN area derived from the cadastral survey data deviates from the actual conditions on site, incorrect contribution amounts may be paid out (swisstopo/BLW/BUWAL 2000). Farm areas that are not eligible for contributions, in particular areas that are not usable for effective agriculture such as farmyards or storage areas (e.g. for silage hay bales), are constantly changing due to the high degree of mechanization in agriculture and often fall within the perimeter of the LN. The tracking of these areas with conventional surveying such as repeated field visits or the visual interpretation of current aerial imagery proves to be very time-consuming and costly. Possible alternative approaches are searched for in the context of this use case project. Artificial neural networks based on Deep Learning (DL) have been used for automated detection and classification of image features for quite some time. Reliable detection from aerial imagery using applications of DL would enable cost-effective detection of uneligible areas and provide added value to agricultural offices in all cantons. The Swiss Territorial Data Lab (STDL) is a project of co-creation and a space of experimentation which aims to solve concrete problems of public administrations by using data science applied to geodata. These characteristics make it the perfect environment to conduct this project. Research in the agricultural domain was already lead by project's partners at Fachhochschule Nordwestschweiz (FHNW) using machine learning. Furthermore, students are regularly involved in these projects, for example to automatically define the agricultural cultivation boundaries in collaboration with the Canton of Thurgau. 1.2 Silage Bales \u00b6 Photo of wrapped and stacked silage hay bales (Source Wikimedia). One of several features of interest specifically excluded from the subsidized cultivable LN area are silage hay bales. These bales are processed and compacted fermenting grass cuttings wrapped in plastic foil. They often roughly measure 1 - 2 cubic meters in volume and are weighed in at around 900kg. They are mainly used as animal food during winter when no fresh hay is available. Farmers are encouraged to compactly (\u00abdiscretely\u00bb) stack them in regular piles at few locations rather than keeping them in scattered collections consuming large areas. The agricultural office can assess the silage bale stack locations and sizes in order to approve the application for subsidies, since areas where silage bales are stored do not count into the cultivable LN area. Farmers can specify those areas where they must not receive contributions for in a specialized webGIS system by digitizing them manually with the attribute \u00abcode 898\u00bb. For validation purposes specialists are manually evaluating aerial imagery and conduct field visits. The process of aerial imagery evaluation is arduous and monotonous and could therefore greatly profit from automatization. The agricultural office of the Canton of Thurgau (LWA) requested a spatial vector layer indicating locations and area consumption extent of the largest silage bale deposits intersecting with the known LN area. The delivered dataset should be compatible with their webGIS workflow and should be made available with new aquisitions of aerial imaging campaigns. Having such detections readily available would reduce the workload of the responsible official by directing the monitoring to the relevant hotspots. Ultimately public economical damage can be prevented which would result from the payout of unjustified subsidy contributions. This project therefore aims at the development of an efficient silage bale detection algorithm which offers a highly accurate performance and can be quickly deployed over imaged areas as large as the complete canton of Thurgau (approx. 992 km\u00b2). 2 Method \u00b6 2.1 Overview \u00b6 Sileage bale stacks are clearly visible on the newest 2019 layer of the 10cm Swissimage orthophoto provided by Swisstopo. A few hundred of these stacks were manually digitized as vector polygons with QGIS in a semi-automatic approach. Following the structure of the STDL Object Detection Framework, an Area of Interest (AoI) was defined (most of the cantonal area of Thurgau) and tiled into smaller quadratic images (tiles). Those tiles containing an intersecting overlap with an annotation were subsequently fed to a neural object detection network for training in a process known as Transfer Learning. A random portion of the dataset was kept aside from the training process in order to allow an unbiased evaluation of the detector performance. Multiple iterations were performed in order to find out near-optimal input parameters such as tile size, zoom level, or network- and training-specific variables termed \u00abhyperparameters\u00bb. All detector models were evaluated for their prediction perforwmance on the reserved test dataset. The best model was chosen by means of its optimal overall performance. This model was used in turn to perform a prediction operation (\u00abInference\u00bb) on all tiles comprising the AoI \u2013 thereby detecting silage hay bale stacks over the whole canton of Thurgau. Postprocessing included filtering the resulting polygons by a high confidence score threshold provided by the detector for each detection in order to reduce the risk of false positive results (misidentification of an object as a silage bale stack). Subsequently adjacent polygons on seperate tiles were merged by standard vector operations. A spatial intersection with the known LN layer was performed to identify the specific areas occupied by silage stacks which should not receive contributions but potentially did in last years rolling payout. Only stacks covering more than 50m2 of LN area are considered \u00abrelevant\u00bb for the final delivery which translates to the equivalent of max. 10 CHF subsidy payment difference. For completeness, all LN-intersecting polygons of detections covering at least 20m2 are included in the finaly delivery. Filtering can be undertaken easily on the end user side by sorting the features with along a precalculated area column. 2.2 Aerial Imagery \u00b6 The prototypical implementation uses the publically available Swissimage dataset. It was last flown for Thurgau in spring 2019 and offers a maximum spatial resolution of 10cm GSD (Ground Sampling Distance) at 3 year intervals. As the direct subsidies are paid out yearly the periodicity of Swissimage in theory is insufficient for annual use. In this case the high quality imagery on the one hand can serve as a proof of concept though. On the other hand the cantons have the option to order own flight campaigns to increase the periodicity of available aerial imagery if sufficient need can shown from several relevant administrative stakeholders. For our approach aerial images need to be downloaded as small quadratic subsamples of the orthomosaic called \u00abtiles\u00bb to be used in the Deep Learning process. The used tiling grid system follows the slippy map standard with an edge length of 256 pixels and a zoom level system which is derived from a quadaratic division on a mercator-projected world map (whole world equals zoom level = 0). A zoom level = 18 in this system would roughly equal to a ground sampling distance (GSD) of 60 cm. 2.3 Labels / Annotations \u00b6 As no conducive vector dataset for silage bale locations exists in Thurgau or other sources known at this point, the annotations for this use case had to be created manually by the data scientists at STDL. A specific labeling strategy to obtain such a dataset was therefore implemented. Using Swissimage 10cm as a WMS bound basemap in QGIS, a few rural areas throughout the canton of Thurgau were selected and initially approximately 200 stacks of silage bales were manually digitized as polygons. Clearly disjunct stacks were digitized as two separate polygons. For partially visible stacks only visible parts were included. Loose collection of bales were connected into one common polygon if the distances between the single bales were not exceeding the diameter of a single bale. Ground imprints where silage bales were previously stored were not included. Also shadows on the ground were not part of the polygon. Plastic membrane rests were not included unless they seemed to cover additional bales. Most bales were of circular shape with an approximate diameter of 1.2 \u2013 1.5 m, but also smaller rectangular ones were common. Colours ranged from mostly white or green tinted over still common dark green or grey to also more exotic variants such as pink, light blue and yellow (the latter three are related to a specific cancer awareness program). Image: Example of the annotation rules. With these initial 200 annotations a preliminary detector was trained on a relatively high zoom level (18, 60cm GSD, tiling grid at about 150m) and predictions were generated over the whole cantonal area (See section \u00abTraining\u00bb for details). Subsequently, the 300 highest scoring new predictions (all above 99.5%) were checked visually in QGIS, precisely corrected and then transferred into the training dataset. Image: Example of label annotations manually drawn (left and top), as well as semiautomatically generated (right) \u2013 the pixel structure of the detector is visible in the label. All tiles containing labels were checked visually again at full zoom and missing labels were created manually. The resulting annotation dataset consists of approximately 700 silage bale stacks. Image: Positions of the Silage Bale Labels (red) within the borders of Thurgau. 2.4 Training \u00b6 Training of the model was performed with the STDL Object Detection Framework. The technology is based on a Mask RCNN architecture implemented with the High-Level API Detectron2 and the Deep Learning framework Pytorch. Parallelisation is achieved with CUDA-enabled GPUs on the High-Performance Computing cluster at the FHNW server facility in Muttenz. The Mask RCNN Backbone is formed by a ResNet-50 implementation and is accompanied by a Feature Pyramid Network (FPN). This combination of code elements results in a neural network leveraging more than 40 Mio. parameters. The dataset consists of RGB images and feature regions represented by pixel masks superimposing the imagery in the shape of the silage bale stack vectors. Training is performed iteratively by presenting subsets of the tiled dataset to modify \u00abedge weights\u00bb in the network graph. Progress is measured step by step by statistically minimizing the loss functions. Only tiles containing masks (labels) can be trained. Two smaller subsets of all label containing tiles are reserved from the training set (TRN), so a total of 70% of the trainable tiles are presented to the network for loss minimization. The validation set (VAL, 15%) and the test set (TST, 15%) also contain labels but are statistically independent from the TRN set. The VAL set is used to perform recurrent evaluation during training. Training can be stopped if the loss function on the validation set has reached a minimum since after that point further training would push the model into an overfitting scenario. The TST set serves as an unbiased reserve to evaluate the detector performance on previously \u00abunseen\u00bb, but labelled data. Tiles not containing a label yet were classified into a separate class called \u00abother\u00bb (OTH). This dataset was only used for generating predictions. Image: Dataset Split \u2013 Grey tiles are only used in prediction (OTH); they do not contain any labels during training. The colourful tiles contain labels, but are scattered relatively sparsely. Green tiles are used for training the model weights (TRN); orange tiles validate the learning progress during training to avoid overfitting (VAL) and blue tiles are reserved for unbiased post-training evaluation (TST). Multiple training runs were performed not only to optimize the network-specific variables called \u00abhyper-parameters\u00bb (such as batch size, learning rate or momentum), but also to test which zoom level (spatial resolution) would yield the best results. 2.5 Prediction and Assessment \u00b6 For the TRN, VAL and TST subset, confusion matrix counts and classification metrics calculations can be performed since they offer a comparison with the digitized \u00abground truth\u00bb. For all subsets (including the rest of the canton as OTH), predictions are generated as vectors covering those areas of a tile that the detector algorithm identifies as target objects and therefore attributes a confidence score. In case of the label containing tiles, the overlap between the predictions and the labels can be checked. Is an overlap found between a label and a prediction this detection is considered a \u00abTrue Positive\u00bb (TP). If the detector missed a label entirely this label can be considered as \u00abFalse Negative\u00bb (FN). Did the detector predict a silage bale stack that was not present in the labelled data it is considered \u00abFalse Positive\u00bb (FP). On the unlabelled OTH tiles, all detections are by definition therefore considered FP. The counting of TPs, FPs and FNs on the TST subset allows the calculation of standard metrics such as precision (user accuracy), recall (producer accuracy) and F1 score (a common overall performance metric calculated as the harmonic mean of precision and recall). The counts, as well as the metrics can be plotted as function of the minimum confidence score threshold (THR) which can be set to an acceptable percentage for a certain detection task. A low threshold should generally yield fewer FN errors, while a high threshold should yield fewer FP detections. The best performing model by means of maximum F1 score was used to perform a prediction run over the entire cantonal surface area. 2.6 Post-Processing \u00b6 In order to obtain a consistent result dataset, detections need to be postprocessed. Firstly, the confidence score threshold operation is applied. Here, a comparatively high threshold can be used for this operation. \u00abMissing\u00bb the detection of a silage bale stack (FN) is not as costly for the analysis of the resulting dataset at the agricultural office as analyzing large numbers of FP detections would be. Also missing single individual silage bales is much less problematic than missing whole large stacks. These larger stacks are typically attributed with high confidence scores though and are therefore less likely to be missed. In some cases, silage bale stacks cross the tiling grid and are therefore detected on multiple images. This results in edge artifacts along the tile boundaries intersecting detections that should be unified. For this resaon adjacent detection polygons need to merged into a single polygon. This is achieved by first buffering all detections with a 1.5m radius (about the diameter of a single bale). Then all touching polygons are dissolved into a single feature. Afterwards, negative buffering with -1.5m radius is applied to restore the original boundary. This process also leads to an edge smoothing by planing the pixel step derived vector boundary into curves. Image: Example of adjacent detection polygons that need to be unified (buffer dissolved). Curve polygons contain a high number of vertex points, which is why a simplification operation can be performed afterwards. The intersection with the LN layer required a preparation of that dataset. First, the perimeters of all LN polygons in Thurgau, stemming from the cadastre, were intersected with the layer \"LN difference\". Areas which contained the attribute \"No LN\" in the difference layer were therefore removed, areas with the attribute \"LN\" or \"To be checked\" were kept or if necessary (if not yet available) added to the LN dataset. Areas excluded by farmers from the subsidy themself (so-called \"layer code 898\") were removed from the LN polygons. The silage bale detections were now intersected (clipped) with all remaining LN areas such that only those portions of the detections remained that were present within the LN perimeter. For all these leftover detection polygons, the area is calculated and added as an attribute to the polygon. With a threshold operation all silo bale stacks with an area below 20 m2 are filtered out of the dataset in order to provide only economically relevant detections. 3 Results \u00b6 3.1 Metrics and Evaluation \u00b6 Figure: Performance of serveral detectors depending on zoom level (ground sampling distance) as measured by their maximum F1-Score. The model trained with tiles at zoom level = 19 (every pixel approx. 30cm GSD) showed the highest performance with a maximum F1 Score of 92.3%. Increasing the resolution even further by using 15 cm/px GSD did not result in a gain in overall detection performance while drastically increasing storage needs and computational load. Figure: Confusion matrix counts on the TST dataset in dependency of the minimum confidence score threshold. The detector model is performing very well on the independent TST dataset detecting the largest portion of silage bale stacks at any given confidence threshold. The number of FP reaches very low counts towards the higher end of the threshold percentage. Figure: Performance metrics on the TST dataset as a function of the minimum confidence score threshold. Precision, Recall and F1 Score all remain on very performant values throughout the threshold range. The F1 Score plateaus above 90% performance between 5% and 93% essentially allowing to choose any given threshold value to adapt the model performance to the end user needs. For delivery of the dataset a detector was subsequently used at a threshold of 96%. At this value 809 silage bale stacks were rediscovered in the TRN, TST and VAL subset. Just 10 FP detections were found in these subsets. 97 silage bale stacks were not rediscovered (FN). Hence, the model precision (user accuracy) was set at approx. 99% and the recall (hit rate, producer accuracy) was set at approx. 89%. The applied model detected a total of 2\u2019473 additional silage bale stacks over the rest of the canton of Thurgau (FP on OTH). 3.2 Examples \u00b6 Image: Raw detections (yellow) of silage bale stacks displaying very high confidence scores. Image: Raw detections (yellow) and postprocessed detections (red) \u2013 the area occupied by these silage bale stacks does not interesect with the Cultivable land (LN, green hatched). Direct subsidies are correctly paid out in this case. 3.3 Relevant Features for Delivery \u00b6 In total, 288 silage bale stack sections are placed within the subsidized LN area and exhibit an area consumption larger than 20m\u00b2. 87 silage bale stacks consume more than 50m\u00b2, 24 stacks consume more than 100m\u00b2. One has to keep in mind that many stacks only partially intersect with the LN layer. The overlap between all detected silage bale stacks over 20m\u00b2 and the LN layer amounts to 14\u2019200m\u00b2 or an estimated damage between CHF 1'420.- and CHF 2'840.- (assuming the subsidy payout ranges between CHF 10.- and CHF 20.- per 100m\u00b2). Considering only the overlap of the 87 largest stacks with the LN layer the area consumption amounts to 7\u2019900m\u00b2 or a damage between CHF 790.- and CHF 1'580.-. Image: Undeclared silage bale stack (red and yellow) that intersects with the cultivable land layer \u00abLN\u00bb (green). Image: The left side silage bale stack (red) is only touching the LN area (green). The center bottom silage bale stack is completely undeclared within the LN area. Image: Approximately half of the center silage bale stack (red) is undeclared and situated within the LN area. Image: This farm selfdeclared almost all areas needed (blue) for silage bales (red) to be excluded from direct subsidies areas (green). Pink areas are already pre-excluded by the agricultural office. Image: The intersection between the silage bale stack (red) and the LN area (green) is so minute, that it should not be found within the delivery dataset to the agricultural office. Image: Small silage bale stacks in the very left and very right of the image (yellow) are undeclared but each detection falls below the relevance threshold. 4 Discussion \u00b6 4.1 Feedback by the Agricultural Office \u00b6 The contact person at the agricultural office, Mr. T. Froehlich describes the detections as very accurate with a very low percentage of wrong detections. As a GIS product the detections layer can be used in the standard workflow in order to cross-check base datasets or to perform updates and corrections. On an economical scale the damage from misplaced sileage bale stacks in the LN areas is not negligible but also not extremely relevant. Federal annual direct agricultural subsidies of approx. 110 Mio. CHF stand in stark contrast to the estimated economical damage of maybe approx. CHF 2'000.- that misplaced silage bales might have caused for the Canton of Thurgau in 2019. Most farmers adhere to the policies and false declaration of areas followed by sanctions is extremely rare. Silage bales are therefore not the first priority when monitoring the advancements and updates considering the LN layer. Nevertheless these new detections allow the end users at the agricultural office to direct their eyes more quickly at relevant hotspots and spare them some aspects of the long and tidious manual search that was performed in the past. 4.2 Outlook \u00b6 Silage bales are by far not the only object limiting the extent of the cultivable subsidized land. A much larger area is consumed by farm yards \u2013 heterogenous spaces around the central farm buildings. Monitoring the growth of these spaces into the LN layer would greatly diminuish the manual workload at the agricultural office. As these spaces might also be detectable by a similar approach, this project will continue to investigate the potential of the STDL Object Detection Framework now into this direction. References \u00b6 Federal Office of Topography swisstopo (2020). SWISSIMAGE 10 cm - The Digital Color Orthophotomosaic of Switzerland. https://www.swisstopo.admin.ch/en/geodata/images/ortho/swissimage10.html Girshick, R. (2015). Fast r-cnn. In Proceedings of the IEEE international conference on computer vision (pp. 1440-1448). https://openaccess.thecvf.com/content_iccv_2015/html/Girshick_Fast_R-CNN_ICCV_2015_paper.html He, K., Gkioxari, G., Doll\u00e1r, P., & Girshick, R. (2017). Mask r-cnn. In Proceedings of the IEEE international conference on computer vision (pp. 2961-2969). https://arxiv.org/abs/1703.06870 OpenStreetMap Foundation (2021). Slippy Map. https://wiki.openstreetmap.org/wiki/Slippy_Map QGIS.org (2021). QGIS Geographic Information System. QGIS Association. https://qgis.org/en/site/ Wu, Y., Kirillov, A., Massa, F., Lo, W. Y., & Girshick, R. (2019). Detectron2. https://github.com/facebookresearch/detectron2","title":"Updating the \u00abCultivable Area\u00bb Layer of the Agricultural Office, Canton of Thurgau"},{"location":"PROJ-TGLN/#updating-the-cultivable-area-layer-of-the-agricultural-office-canton-of-thurgau","text":"Adrian Meyer (FHNW) Contributions to Background & Agricultural Law: Pascal Salath\u00e9 (FHNW) Proposed by the Canton of Thurgau - PROJ-TGOBJ March 2021 to June 2021 - Published on July 7, 2021 Abstract : The Cultivable agricultural area layer (\"LN, Landwirtschaftliche Nutzfl\u00e4che\") is a GIS vector product maintained by the cantonal agricultural offices and serves as the key calculation index for the receipt of direct subsidy contributions to farms. The canton of Thurgau requested a spatial vector layer indicating locations and area consumption extent of the largest silage bale deposits intersecting with the known LN area, since areas used for silage bale storage are not eligible for subsidies. Having detections of such objects readily available greatly reduces the workload of the responsible official by directing the monitoring process to the relevant hotspots. Ultimately public economical damage can be prevented which would result from the payout of unjustified subsidy contributions.","title":"Updating the \u00abCultivable Area\u00bb Layer of the Agricultural Office, Canton of Thurgau"},{"location":"PROJ-TGLN/#1-introduction","text":"","title":"1 Introduction"},{"location":"PROJ-TGLN/#11-background","text":"Switzerland's direct payment system is the basis for sustainable, market-oriented agriculture. The federal government supports local farms in the form of various types of contributions and enables farming families to claim an adequate income. (cf. Art. 104 BV) In the years 2014-2017 a new agricultural policy system was introduced in Switzerland. With specialized direct payment subsidies named \u00abLandscape Quality Contributions\u00bb (\u00abLQ\u00bb, Landschaftsqualit\u00e4tsbeitr\u00e4ge in German, Contributions \u00e0 la qualit\u00e9 du paysage in French) farms and agricultural businesses can be awarded for complying with measures that aim at increasing biodiversity and maintaining extensively cultivated open grasslands. Subsidies are calculated by area and the agricultural offices of the respective cantonal administration have to constantly monitor the landscape status as well as the compliance of the business operations in order to approve the requested amounts. Only certain land usage profiles are eligible for subsidies payment. According to Art. 104 \u00a71 BV, the agricultural sector, for its part, has to make a substantial decisive contribution to: Secure the supply of the population with goods and aliments. Preserve of the natural foundations of life and maintain the cultural landscape. Allow decentralized settlement throughout the territorial area. In order to be able to claim direct payments, farms are subject to various conditions. The Cultivable agricultural area layer (\u00abLN\u00bb, from German Landwirtschaftliche Nutzfl\u00e4che) is a GIS product maintained by the cantonal agricultural offices and serves as the key calculation index for the receipt of contributions. (cf. Art. 35 DZV). The registration and adjustment of the LN is part of the periodic update (\u00abPNF\u00bb, Periodische Nachf\u00fchrung) within the framework of the official cadastral survey (\u00abAV\u00bb, Amtliche Vermessung) and is usually carried out every 6 years (Gamma 2021). Its correct determination is of immense importance, because if the LN area derived from the cadastral survey data deviates from the actual conditions on site, incorrect contribution amounts may be paid out (swisstopo/BLW/BUWAL 2000). Farm areas that are not eligible for contributions, in particular areas that are not usable for effective agriculture such as farmyards or storage areas (e.g. for silage hay bales), are constantly changing due to the high degree of mechanization in agriculture and often fall within the perimeter of the LN. The tracking of these areas with conventional surveying such as repeated field visits or the visual interpretation of current aerial imagery proves to be very time-consuming and costly. Possible alternative approaches are searched for in the context of this use case project. Artificial neural networks based on Deep Learning (DL) have been used for automated detection and classification of image features for quite some time. Reliable detection from aerial imagery using applications of DL would enable cost-effective detection of uneligible areas and provide added value to agricultural offices in all cantons. The Swiss Territorial Data Lab (STDL) is a project of co-creation and a space of experimentation which aims to solve concrete problems of public administrations by using data science applied to geodata. These characteristics make it the perfect environment to conduct this project. Research in the agricultural domain was already lead by project's partners at Fachhochschule Nordwestschweiz (FHNW) using machine learning. Furthermore, students are regularly involved in these projects, for example to automatically define the agricultural cultivation boundaries in collaboration with the Canton of Thurgau.","title":"1.1 Background"},{"location":"PROJ-TGLN/#12-silage-bales","text":"Photo of wrapped and stacked silage hay bales (Source Wikimedia). One of several features of interest specifically excluded from the subsidized cultivable LN area are silage hay bales. These bales are processed and compacted fermenting grass cuttings wrapped in plastic foil. They often roughly measure 1 - 2 cubic meters in volume and are weighed in at around 900kg. They are mainly used as animal food during winter when no fresh hay is available. Farmers are encouraged to compactly (\u00abdiscretely\u00bb) stack them in regular piles at few locations rather than keeping them in scattered collections consuming large areas. The agricultural office can assess the silage bale stack locations and sizes in order to approve the application for subsidies, since areas where silage bales are stored do not count into the cultivable LN area. Farmers can specify those areas where they must not receive contributions for in a specialized webGIS system by digitizing them manually with the attribute \u00abcode 898\u00bb. For validation purposes specialists are manually evaluating aerial imagery and conduct field visits. The process of aerial imagery evaluation is arduous and monotonous and could therefore greatly profit from automatization. The agricultural office of the Canton of Thurgau (LWA) requested a spatial vector layer indicating locations and area consumption extent of the largest silage bale deposits intersecting with the known LN area. The delivered dataset should be compatible with their webGIS workflow and should be made available with new aquisitions of aerial imaging campaigns. Having such detections readily available would reduce the workload of the responsible official by directing the monitoring to the relevant hotspots. Ultimately public economical damage can be prevented which would result from the payout of unjustified subsidy contributions. This project therefore aims at the development of an efficient silage bale detection algorithm which offers a highly accurate performance and can be quickly deployed over imaged areas as large as the complete canton of Thurgau (approx. 992 km\u00b2).","title":"1.2 Silage Bales"},{"location":"PROJ-TGLN/#2-method","text":"","title":"2 Method"},{"location":"PROJ-TGLN/#21-overview","text":"Sileage bale stacks are clearly visible on the newest 2019 layer of the 10cm Swissimage orthophoto provided by Swisstopo. A few hundred of these stacks were manually digitized as vector polygons with QGIS in a semi-automatic approach. Following the structure of the STDL Object Detection Framework, an Area of Interest (AoI) was defined (most of the cantonal area of Thurgau) and tiled into smaller quadratic images (tiles). Those tiles containing an intersecting overlap with an annotation were subsequently fed to a neural object detection network for training in a process known as Transfer Learning. A random portion of the dataset was kept aside from the training process in order to allow an unbiased evaluation of the detector performance. Multiple iterations were performed in order to find out near-optimal input parameters such as tile size, zoom level, or network- and training-specific variables termed \u00abhyperparameters\u00bb. All detector models were evaluated for their prediction perforwmance on the reserved test dataset. The best model was chosen by means of its optimal overall performance. This model was used in turn to perform a prediction operation (\u00abInference\u00bb) on all tiles comprising the AoI \u2013 thereby detecting silage hay bale stacks over the whole canton of Thurgau. Postprocessing included filtering the resulting polygons by a high confidence score threshold provided by the detector for each detection in order to reduce the risk of false positive results (misidentification of an object as a silage bale stack). Subsequently adjacent polygons on seperate tiles were merged by standard vector operations. A spatial intersection with the known LN layer was performed to identify the specific areas occupied by silage stacks which should not receive contributions but potentially did in last years rolling payout. Only stacks covering more than 50m2 of LN area are considered \u00abrelevant\u00bb for the final delivery which translates to the equivalent of max. 10 CHF subsidy payment difference. For completeness, all LN-intersecting polygons of detections covering at least 20m2 are included in the finaly delivery. Filtering can be undertaken easily on the end user side by sorting the features with along a precalculated area column.","title":"2.1 Overview"},{"location":"PROJ-TGLN/#22-aerial-imagery","text":"The prototypical implementation uses the publically available Swissimage dataset. It was last flown for Thurgau in spring 2019 and offers a maximum spatial resolution of 10cm GSD (Ground Sampling Distance) at 3 year intervals. As the direct subsidies are paid out yearly the periodicity of Swissimage in theory is insufficient for annual use. In this case the high quality imagery on the one hand can serve as a proof of concept though. On the other hand the cantons have the option to order own flight campaigns to increase the periodicity of available aerial imagery if sufficient need can shown from several relevant administrative stakeholders. For our approach aerial images need to be downloaded as small quadratic subsamples of the orthomosaic called \u00abtiles\u00bb to be used in the Deep Learning process. The used tiling grid system follows the slippy map standard with an edge length of 256 pixels and a zoom level system which is derived from a quadaratic division on a mercator-projected world map (whole world equals zoom level = 0). A zoom level = 18 in this system would roughly equal to a ground sampling distance (GSD) of 60 cm.","title":"2.2 Aerial Imagery"},{"location":"PROJ-TGLN/#23-labels-annotations","text":"As no conducive vector dataset for silage bale locations exists in Thurgau or other sources known at this point, the annotations for this use case had to be created manually by the data scientists at STDL. A specific labeling strategy to obtain such a dataset was therefore implemented. Using Swissimage 10cm as a WMS bound basemap in QGIS, a few rural areas throughout the canton of Thurgau were selected and initially approximately 200 stacks of silage bales were manually digitized as polygons. Clearly disjunct stacks were digitized as two separate polygons. For partially visible stacks only visible parts were included. Loose collection of bales were connected into one common polygon if the distances between the single bales were not exceeding the diameter of a single bale. Ground imprints where silage bales were previously stored were not included. Also shadows on the ground were not part of the polygon. Plastic membrane rests were not included unless they seemed to cover additional bales. Most bales were of circular shape with an approximate diameter of 1.2 \u2013 1.5 m, but also smaller rectangular ones were common. Colours ranged from mostly white or green tinted over still common dark green or grey to also more exotic variants such as pink, light blue and yellow (the latter three are related to a specific cancer awareness program). Image: Example of the annotation rules. With these initial 200 annotations a preliminary detector was trained on a relatively high zoom level (18, 60cm GSD, tiling grid at about 150m) and predictions were generated over the whole cantonal area (See section \u00abTraining\u00bb for details). Subsequently, the 300 highest scoring new predictions (all above 99.5%) were checked visually in QGIS, precisely corrected and then transferred into the training dataset. Image: Example of label annotations manually drawn (left and top), as well as semiautomatically generated (right) \u2013 the pixel structure of the detector is visible in the label. All tiles containing labels were checked visually again at full zoom and missing labels were created manually. The resulting annotation dataset consists of approximately 700 silage bale stacks. Image: Positions of the Silage Bale Labels (red) within the borders of Thurgau.","title":"2.3 Labels / Annotations"},{"location":"PROJ-TGLN/#24-training","text":"Training of the model was performed with the STDL Object Detection Framework. The technology is based on a Mask RCNN architecture implemented with the High-Level API Detectron2 and the Deep Learning framework Pytorch. Parallelisation is achieved with CUDA-enabled GPUs on the High-Performance Computing cluster at the FHNW server facility in Muttenz. The Mask RCNN Backbone is formed by a ResNet-50 implementation and is accompanied by a Feature Pyramid Network (FPN). This combination of code elements results in a neural network leveraging more than 40 Mio. parameters. The dataset consists of RGB images and feature regions represented by pixel masks superimposing the imagery in the shape of the silage bale stack vectors. Training is performed iteratively by presenting subsets of the tiled dataset to modify \u00abedge weights\u00bb in the network graph. Progress is measured step by step by statistically minimizing the loss functions. Only tiles containing masks (labels) can be trained. Two smaller subsets of all label containing tiles are reserved from the training set (TRN), so a total of 70% of the trainable tiles are presented to the network for loss minimization. The validation set (VAL, 15%) and the test set (TST, 15%) also contain labels but are statistically independent from the TRN set. The VAL set is used to perform recurrent evaluation during training. Training can be stopped if the loss function on the validation set has reached a minimum since after that point further training would push the model into an overfitting scenario. The TST set serves as an unbiased reserve to evaluate the detector performance on previously \u00abunseen\u00bb, but labelled data. Tiles not containing a label yet were classified into a separate class called \u00abother\u00bb (OTH). This dataset was only used for generating predictions. Image: Dataset Split \u2013 Grey tiles are only used in prediction (OTH); they do not contain any labels during training. The colourful tiles contain labels, but are scattered relatively sparsely. Green tiles are used for training the model weights (TRN); orange tiles validate the learning progress during training to avoid overfitting (VAL) and blue tiles are reserved for unbiased post-training evaluation (TST). Multiple training runs were performed not only to optimize the network-specific variables called \u00abhyper-parameters\u00bb (such as batch size, learning rate or momentum), but also to test which zoom level (spatial resolution) would yield the best results.","title":"2.4 Training"},{"location":"PROJ-TGLN/#25-prediction-and-assessment","text":"For the TRN, VAL and TST subset, confusion matrix counts and classification metrics calculations can be performed since they offer a comparison with the digitized \u00abground truth\u00bb. For all subsets (including the rest of the canton as OTH), predictions are generated as vectors covering those areas of a tile that the detector algorithm identifies as target objects and therefore attributes a confidence score. In case of the label containing tiles, the overlap between the predictions and the labels can be checked. Is an overlap found between a label and a prediction this detection is considered a \u00abTrue Positive\u00bb (TP). If the detector missed a label entirely this label can be considered as \u00abFalse Negative\u00bb (FN). Did the detector predict a silage bale stack that was not present in the labelled data it is considered \u00abFalse Positive\u00bb (FP). On the unlabelled OTH tiles, all detections are by definition therefore considered FP. The counting of TPs, FPs and FNs on the TST subset allows the calculation of standard metrics such as precision (user accuracy), recall (producer accuracy) and F1 score (a common overall performance metric calculated as the harmonic mean of precision and recall). The counts, as well as the metrics can be plotted as function of the minimum confidence score threshold (THR) which can be set to an acceptable percentage for a certain detection task. A low threshold should generally yield fewer FN errors, while a high threshold should yield fewer FP detections. The best performing model by means of maximum F1 score was used to perform a prediction run over the entire cantonal surface area.","title":"2.5 Prediction and Assessment"},{"location":"PROJ-TGLN/#26-post-processing","text":"In order to obtain a consistent result dataset, detections need to be postprocessed. Firstly, the confidence score threshold operation is applied. Here, a comparatively high threshold can be used for this operation. \u00abMissing\u00bb the detection of a silage bale stack (FN) is not as costly for the analysis of the resulting dataset at the agricultural office as analyzing large numbers of FP detections would be. Also missing single individual silage bales is much less problematic than missing whole large stacks. These larger stacks are typically attributed with high confidence scores though and are therefore less likely to be missed. In some cases, silage bale stacks cross the tiling grid and are therefore detected on multiple images. This results in edge artifacts along the tile boundaries intersecting detections that should be unified. For this resaon adjacent detection polygons need to merged into a single polygon. This is achieved by first buffering all detections with a 1.5m radius (about the diameter of a single bale). Then all touching polygons are dissolved into a single feature. Afterwards, negative buffering with -1.5m radius is applied to restore the original boundary. This process also leads to an edge smoothing by planing the pixel step derived vector boundary into curves. Image: Example of adjacent detection polygons that need to be unified (buffer dissolved). Curve polygons contain a high number of vertex points, which is why a simplification operation can be performed afterwards. The intersection with the LN layer required a preparation of that dataset. First, the perimeters of all LN polygons in Thurgau, stemming from the cadastre, were intersected with the layer \"LN difference\". Areas which contained the attribute \"No LN\" in the difference layer were therefore removed, areas with the attribute \"LN\" or \"To be checked\" were kept or if necessary (if not yet available) added to the LN dataset. Areas excluded by farmers from the subsidy themself (so-called \"layer code 898\") were removed from the LN polygons. The silage bale detections were now intersected (clipped) with all remaining LN areas such that only those portions of the detections remained that were present within the LN perimeter. For all these leftover detection polygons, the area is calculated and added as an attribute to the polygon. With a threshold operation all silo bale stacks with an area below 20 m2 are filtered out of the dataset in order to provide only economically relevant detections.","title":"2.6 Post-Processing"},{"location":"PROJ-TGLN/#3-results","text":"","title":"3 Results"},{"location":"PROJ-TGLN/#31-metrics-and-evaluation","text":"Figure: Performance of serveral detectors depending on zoom level (ground sampling distance) as measured by their maximum F1-Score. The model trained with tiles at zoom level = 19 (every pixel approx. 30cm GSD) showed the highest performance with a maximum F1 Score of 92.3%. Increasing the resolution even further by using 15 cm/px GSD did not result in a gain in overall detection performance while drastically increasing storage needs and computational load. Figure: Confusion matrix counts on the TST dataset in dependency of the minimum confidence score threshold. The detector model is performing very well on the independent TST dataset detecting the largest portion of silage bale stacks at any given confidence threshold. The number of FP reaches very low counts towards the higher end of the threshold percentage. Figure: Performance metrics on the TST dataset as a function of the minimum confidence score threshold. Precision, Recall and F1 Score all remain on very performant values throughout the threshold range. The F1 Score plateaus above 90% performance between 5% and 93% essentially allowing to choose any given threshold value to adapt the model performance to the end user needs. For delivery of the dataset a detector was subsequently used at a threshold of 96%. At this value 809 silage bale stacks were rediscovered in the TRN, TST and VAL subset. Just 10 FP detections were found in these subsets. 97 silage bale stacks were not rediscovered (FN). Hence, the model precision (user accuracy) was set at approx. 99% and the recall (hit rate, producer accuracy) was set at approx. 89%. The applied model detected a total of 2\u2019473 additional silage bale stacks over the rest of the canton of Thurgau (FP on OTH).","title":"3.1 Metrics and Evaluation"},{"location":"PROJ-TGLN/#32-examples","text":"Image: Raw detections (yellow) of silage bale stacks displaying very high confidence scores. Image: Raw detections (yellow) and postprocessed detections (red) \u2013 the area occupied by these silage bale stacks does not interesect with the Cultivable land (LN, green hatched). Direct subsidies are correctly paid out in this case.","title":"3.2 Examples"},{"location":"PROJ-TGLN/#33-relevant-features-for-delivery","text":"In total, 288 silage bale stack sections are placed within the subsidized LN area and exhibit an area consumption larger than 20m\u00b2. 87 silage bale stacks consume more than 50m\u00b2, 24 stacks consume more than 100m\u00b2. One has to keep in mind that many stacks only partially intersect with the LN layer. The overlap between all detected silage bale stacks over 20m\u00b2 and the LN layer amounts to 14\u2019200m\u00b2 or an estimated damage between CHF 1'420.- and CHF 2'840.- (assuming the subsidy payout ranges between CHF 10.- and CHF 20.- per 100m\u00b2). Considering only the overlap of the 87 largest stacks with the LN layer the area consumption amounts to 7\u2019900m\u00b2 or a damage between CHF 790.- and CHF 1'580.-. Image: Undeclared silage bale stack (red and yellow) that intersects with the cultivable land layer \u00abLN\u00bb (green). Image: The left side silage bale stack (red) is only touching the LN area (green). The center bottom silage bale stack is completely undeclared within the LN area. Image: Approximately half of the center silage bale stack (red) is undeclared and situated within the LN area. Image: This farm selfdeclared almost all areas needed (blue) for silage bales (red) to be excluded from direct subsidies areas (green). Pink areas are already pre-excluded by the agricultural office. Image: The intersection between the silage bale stack (red) and the LN area (green) is so minute, that it should not be found within the delivery dataset to the agricultural office. Image: Small silage bale stacks in the very left and very right of the image (yellow) are undeclared but each detection falls below the relevance threshold.","title":"3.3 Relevant Features for Delivery"},{"location":"PROJ-TGLN/#4-discussion","text":"","title":"4 Discussion"},{"location":"PROJ-TGLN/#41-feedback-by-the-agricultural-office","text":"The contact person at the agricultural office, Mr. T. Froehlich describes the detections as very accurate with a very low percentage of wrong detections. As a GIS product the detections layer can be used in the standard workflow in order to cross-check base datasets or to perform updates and corrections. On an economical scale the damage from misplaced sileage bale stacks in the LN areas is not negligible but also not extremely relevant. Federal annual direct agricultural subsidies of approx. 110 Mio. CHF stand in stark contrast to the estimated economical damage of maybe approx. CHF 2'000.- that misplaced silage bales might have caused for the Canton of Thurgau in 2019. Most farmers adhere to the policies and false declaration of areas followed by sanctions is extremely rare. Silage bales are therefore not the first priority when monitoring the advancements and updates considering the LN layer. Nevertheless these new detections allow the end users at the agricultural office to direct their eyes more quickly at relevant hotspots and spare them some aspects of the long and tidious manual search that was performed in the past.","title":"4.1 Feedback by the Agricultural Office"},{"location":"PROJ-TGLN/#42-outlook","text":"Silage bales are by far not the only object limiting the extent of the cultivable subsidized land. A much larger area is consumed by farm yards \u2013 heterogenous spaces around the central farm buildings. Monitoring the growth of these spaces into the LN layer would greatly diminuish the manual workload at the agricultural office. As these spaces might also be detectable by a similar approach, this project will continue to investigate the potential of the STDL Object Detection Framework now into this direction.","title":"4.2 Outlook"},{"location":"PROJ-TGLN/#references","text":"Federal Office of Topography swisstopo (2020). SWISSIMAGE 10 cm - The Digital Color Orthophotomosaic of Switzerland. https://www.swisstopo.admin.ch/en/geodata/images/ortho/swissimage10.html Girshick, R. (2015). Fast r-cnn. In Proceedings of the IEEE international conference on computer vision (pp. 1440-1448). https://openaccess.thecvf.com/content_iccv_2015/html/Girshick_Fast_R-CNN_ICCV_2015_paper.html He, K., Gkioxari, G., Doll\u00e1r, P., & Girshick, R. (2017). Mask r-cnn. In Proceedings of the IEEE international conference on computer vision (pp. 2961-2969). https://arxiv.org/abs/1703.06870 OpenStreetMap Foundation (2021). Slippy Map. https://wiki.openstreetmap.org/wiki/Slippy_Map QGIS.org (2021). QGIS Geographic Information System. QGIS Association. https://qgis.org/en/site/ Wu, Y., Kirillov, A., Massa, F., Lo, W. Y., & Girshick, R. (2019). Detectron2. https://github.com/facebookresearch/detectron2","title":"References"},{"location":"PROJ-TGPOOL/","text":"SWIMMING POOL DETECTION FOR THE CANTON OF THURGAU \u00b6 Adrian Meyer (FHNW) - Alessandro Cerioni (Canton of Geneva) Proposed by the Canton of Thurgau - PROJ-TGPOOL January 2021 to April 2021 - Published on April 21, 2021 Abstract : The Canton of Thurgau entrusted the STDL with the task of producing swimming pool detections over the cantonal area. Specifically interesting was to leverage the ground truth annotation data from the Canton of Geneva to generate a predictive model in Thurgau while using the publicly available SWISSIMAGE aerial imagery datasets provided by swisstopo. The STDL object detection framework produced highly accurate predictions of swimming pools in Thurgau and thereby proved transferability from one canton to another without having to manually redigitize annotations. These promising detections showcase the highly useful potential of this approach by greatly reducing the need of repetitive manual labour. Introduction \u00b6 Until February 2021 the Swiss Territorial Data Lab developed an approach based on Mask RCNN Deep Learning algorithms for the detection of objects on aerial images, with swimming pools serving as a demonstration object. The official cadastres of the Canton of Thurgau include \u2013 among many other objects \u2013 the registration of larger private swimming pools that are permanently anchored in the ground. The challenge is to keep the cadastre up to date on a regular basis which is usually done manually by surveying or verification with aerial imagery. Because the Canton of Thurgau (unlike the Canton of Geneva) does not maintain an own specific register of swimming pools, this study primarily serves as a technology demonstration. A secondary goal encompasses detailed knowledge transfer from the data scientist team at the STDL to the cantonal authorities such as providing insight and interpretation guidance into the performance metrics and raising awareness for the prerequisites of the detector framework. Methodology \u00b6 Process Overview \u00b6 Generating a Model from Cadastral Vectors and Aerial Images to Predict Objects in the Same or a New Area of Interest (AoI). The STDL object detection framework is based on a bipartite approach of training and inference. This means that a predictive model is statistically adapted to known and verified data (\"training\") in order to then generate classification predictions on new, unknown data (\"inference\"). To achieve this we resample large high-resolution orthophoto mosaics by decomposing them into small square image tiles on which vectorized annotations of swimming pools are drawn. Verified vector annotation data (\"ground truth\") for the training process was available for the cantonal area of Geneva, as well as for a smaller part of the cantonal area of Neuch\u00e2tel covering a total of almost 5'000 swimming pools present in 2019. The predictive model used is a convolutional neural network developed for computer vision (Mask RCNN). It was trained on a high performance computing cluster at the University of Applied Sciences Northwestern Switzerland FHNW using the open source Detectron2 object detection library. During inference, pixel-precise vector contours (\u201csegments\u201d) are produced over the tiled imagery of the canton of Thurgau. Each segment is attributed a confidence score which indicates the certainty of the detections when applied to new data. Using this score as a threshold level, performance metrics are computed in post-classification assessment. Ground Truth Dataset \u00b6 Label annotations are derived from cadastral data and manually curated Vector ground truth annotations demarcating private swimming pools were available at two locations: A near-complete coverage of the cantonal area of Geneva which contains 4\u2019652 known objects, as well as a smaller subsection of the cantonal area of Neuchatel which contains 227 known objects. Label annotations in both cases are derived from cadastral surface vector datasets and then manually curated/verified. In case of the Geneva dataset the manual verification was performed by STDL data scientists in a previous study; in case of the Neuchatel dataset the manual verification was performed by the local cadastre experts. Reference Data and Area of Interest \u00b6 Approximately 5000 cross checked swimming pool annotations are available as vectorized shapes in the Cantons of Geneva and partially in Neuch\u00e2tel. They are compatible with orthophotos from 2018/19 such as the latest SWISSIMAGE 10cm layer. The Area of Interest (AoI) for all tests conducted in this study are divided into two main sections: Those areas in Geneva and Neuchatel containing vectorized ground truth labels are used as \u201cTraining AoI\u201d. The cantonal area of Thurgau is used as \u201cPrediction AoI\u201d. Only those parts of the cantonal surface of Thurgau are used as Prediction AoI which are designated as relevant settlement areas. For this purpose the STDL has received two additional reference datasets from the canton of Thurgau: Vector layer: List of all water basins from the official survey; 3'131 objects. Vector layer: Settlement areas / construction zones to delimit the study area. 2,895 objects from the water basin layer are located wholly or partially within the \u201cPrediction AoI\u201d. Only these objects were used for analysis (see Figure 4, light green objects). For each grid square, an image file with 256x256 pixels edge length and 60cm GSD was generated by WMS. Metadata and georeferencing were stored in an associated JSON. A quick qualitative review of the Thurgau datasets in QGIS revealed two limitations of the datasets. About 7,5% of the water basins are not located in the selected settlement area (e.g., on remote farmsteads or mixed industrial / commercial zones), so no detection attempt was initially undertaken for areas encompassing these objects. It is important to note that there are some objects in the water basin layer that are not comparable to private swimming pools in shape or size, such as public large scale swimming pools, but also sewage treatment plants, silos, tanks, reservoirs, or retention dams. By limiting the Prediction AoI to residential areas and adjacent land, the largest portion of these objects could be excluded. Example of a water treatment plant that appears in the \u201cwater basin layer\u201d and had to be excluded by limiting the \u201cPrediction AoI\u201d to residential and adjacent areas. To additionally calculate metrics on the quality of this reference dataset vs. the quality of the detections a small area over the city of Frauenfeld (Thurgau) containing approximately 100 swimming pools was manually curated and verified by the STDL data scientists. Orthocorrected Imagery \u00b6 Orthoimagery tiles of 150m/256px edge length containing labelled annotations Both AoIs are split by a regular checkerboard segmentation grid into squares (\u201ctiles\u201d), making use of the \u201cSlippy Map Tiles\u201d quadtree-style system. The image data used here was tested with different zoom level resampling resolutions (Ground Sampling Distance, GSD) between 30 cm and 480 cm edge length per pixel while maintaining a consistent extent of 256x256 pixels. Query of the imagery was undertaken using public web map services such using common protocols such as WMS or the MIL standard. Three separate imagery sources were used over the course of the study. The 10cm GSD RGB orthophotomosaic layer SWISSIMAGE of Swisstopo was the primary target of investigation as it was used as the basis of prediction generation over the cantonal area of Thurgau. SWISSIMAGE was also used as the imagery basis for most of the training test runs over the ground truth areas of Geneva and Neuchatel. Additionally, a model was trained leveraging combined cantonal orthophoto imagery from Geneva (SITG) and Neuchatel (SITN) to comparatively test the prediction performance of such a model on the unrelated SWISSIMAGE inference dataset in Thurgau. As it was known from the STDL\u2019s previous work, that the usage of tiles exhibiting a GSD of ~60cm/Px (tile zoom level 18) offered a decent tradeoff between reaching high accuracies during training while keeping computational effort manageable this approach was used for the test using the own cantonal imagery of Geneva and Neuchatel. Using SWISSIMAGE for training, zoom levels in a range between 15 (~480 cm/Px) and 19 (~30 cm/Px) were tested. Training \u00b6 Transfer Learning \u00b6 The choice of a relevant predictive approach fell on a \u201cCOCO-pretrained\u201d deep learning model of the type \"ResNet 50 FPN\" structured in a \u201cMask-RCNN\u201d architecture and implemented with Python and the Detectron2 API. In a transfer learning process about 44 million trainable statistical parameters are adapted (\u201cfinetuned\u201d) as edge weights in a pretrained neural network graph through a number of iterations trying to minimize the value of the so-called \u201closs function\u201d (which is a primary measure for inaccuracy in classification). Transfer Learning is common practice with Deep Learning models. The acquired knowledge gained from massive datasets allows an adaptation of the model to smaller new datasets. Training is performed through highly multithreaded GPU parallelisation of the necessary tensor / matrix operations to speed up training duration. For this purpose the vector annotations are converted into pixel-per-pixel binary masks which are aligned with the respective input image. Network- or Training-specific pre-set variables (\u201chyperparameters\u201d) such as learning rate, learning rate decay, optimizer momentum, batch size or weight decay were either used in their standard configuration or iteratively manually tuned until comparatively high accuracies (e.g. by means of the F1-Score) could be reached. More systematic approaches such as hyperparameter grid search or advanced (e.g. Bayesian) optimization strategies could be implemented in follow-up studies. Dataset Split \u00b6 Tiles falling into the \u201cTraining AoI\u201d but not exhibiting any intersecting area with the Ground Truth Labels are discarded. The remaining ground truth tile datasets are randomly sampled into three disjunct subsets: The \u201cTraining Subset\u201d consists of 70% of the ground truth tiles and is used to change the network graph edge weights. The \u201cValidation Subset\u201d consists of another 15% of the ground truth tiles and is used to validate the generalization performance of the network during training. The iteration cycling is stopped when the loss on the validation dataset is minimized. The \u201cTest Subset\u201d consists of the last 15% of the ground truth tiles and is entirely reserved from the training process to allow for independent and unbiased assessment in the post processing. Subdivision of Ground Truth Datasets Inference and Assessment \u00b6 After training, tile by tile the entire \u201cPrediction AoI\u201d as well as the ground truth datasets presented to the final model for prediction generation. From a minimum confidence threshold up to 100% the model produces a segmentation mask for each swimming pool detection delimiting its proposed outer boundary. This boundary can be vectorized and transformed back from image space into map coordinates during post-processing. Through this process we can accumulate a consistent GIS-compatible vector layer for visualization, counting and further analysis. In case of the ground truth data the resulting vector layer can be intersected with the original input data (especially the \u201cTest Subset\u201d) to obtain unbiased model performance metrics. In case of a well-performing model the resulting vector layer can then be intersected with the \u201cPrediction AoI\u201d-derived Thurgau dataset to identify missing or surplus swimming pools in the cadastre. Results \u00b6 Metrics and Model Selection \u00b6 Results of different training runs using SWISSIMAGE depending on the chosen zoom level The choice of a correct confidence threshold (\"THR\") is of central importance for the interpretation of the results. The division of a data set into true/false positives/negatives is a function of the confidence threshold. A high threshold means that the model is very confident of a detection; a low threshold means that as few detections as possible should be missed, but at the same time more false positive (\"FP\") detections should be triggered. Results of different training runs using SWISSIMAGE depending on the chosen zoom level There are several standardized metrics to evaluate model performance on unknown data. The most important are \"Precision\" (user accuracy), \"Recall\" (hit rate or producer accuracy) and \"F1 Score\" (the mathematical harmonic mean of the other two). \"Precision\" should increase with higher THR, \"Recall\" should decrease. The maximum F1 Score can be used as a measure of how well the model performs regardless of the viewing direction. Results of different training runs using SWISSIMAGE depending on the chosen zoom level Using the cantonal orthomosaics as training input with zoom level 18 the F1 Score reached a maximum of 81,0%. Using SWISSIMAGE as training input with zoom level 18 a slightly higher maximum F1 Score of 83,4% was achieved resulting in the choice of a \u201conly SWISSIMAGE\u201d approach for both, training and inference. The best detection by means of maximum F1 Score was reached using tiles with zoom level 19 displaying a GSD of approx. 30 cm/Px. Since the Slippy Map tile system is based on equal division of squares increasing the zoom level by one step results roughly in quadrupling the number of tiles presented for analysis. Hence also computational demand increases with an exponential factor in particular for file system read/write and sequential processing operations if the zoom level is increased. On the other hand increasing the zoom level (and therefor the GSD) also boosts visibility and size of the target objects which in turn increases detection accuracy. Comparatively slight increases in F1 Score between zoom levels 17, 18 and 19 suggest an asymptotic behaviour where the usage of massively higher amounts computing resources will not result in a much higher detection accuracy any longer. Zoom level 20 (GSD~15cm/Px) was not computed for this reason. True Positives \u00b6 A detection is considered \"True Positive\" (TP) if the algorithm detected a pool that was listed at the same position in the cadastral layer. Setting the threshold very low (THR \u2265 5%), 2'227 of 2\u2019959 swimming pools were detected. This corresponds to a detection proportion of 75% of the recorded water pools. Conversely, this could mean that 25% or 732 objects are False Negatives and therefore \"erroneously\" recorded in the cadastre as swimming pools or missed by the algorithm. \u201cTrue Positive\u201d detections \u2013 note that cases of empty and covered swimming pools are detected with a very high confidence threshold in this example. False Negatives \u00b6 FN describe those objects that the algorithm completely failed to detect, no matter what threshold is set. A total of 732 objects were not detected. FN easily occur when there are obvious discrepancies between orthophoto and cadastre - for example, a pool may have been constructed after the time of flight. The combined number from FN and TP corresponds to the number of analyzed labels from the water pool layer (2\u2019959 objects). Due to the splitting of pools at the segmentation grid boundaries, this value is slightly higher than the 2\u2019895 objects that were in the \u201cPrediction AoI\u201d. Here, only objects larger than 5m\u00b2 in area were counted, since the segmentation grid cuts some pools into several parts and tiny residual of only a few pixels in total area polygons might otherwise be counted as FN even though the largest part of a swimming pool was detected (and therefore counted as TP). \u201cFalse Negatives\u201d \u2013 (Left) An obvious mismatch between the cadastre and the orthophoto, an update should be considered. (Right) An ambiguous swimming pool which might be covered by a white canvas and was therefore missed by the detector. False Positives \u00b6 Swimming pools that were recognized as such in the orthophoto but are not found in the cadastre represent the FP group. If the threshold is set very low (e.g. THR \u2265 5%), a total of 9'427 additional pools would be found in the settlement area. However, this number is not realistic, since most of the detections at such a low threshold do not correspond to pools, but only mark image areas that are related to a pool in a very distant way. Therefore, to get a better estimation of objects that really represent private pools but are still missing in the cadastre, the choice of a very high threshold is recommended. For example, the geoinformation services of the Canton of Geneva work with a threshold of THR \u2265 97%. Applying this threshold, 271 unrecorded swimming pools remain in the dataset with an extremely high probability of correct redetection (9% of the cadastre). However, it is still worth looking at slightly less likely FP detections with a threshold of THR \u2265 90% here. Filtering with this value, a total of 672 unregistered swimming pools were found, which would correspond to 23% of the cadastre layer. At the same time the risk for clear errors by the object detector also increases at lower thresholds, leading to some misclassifications. \u201cFalse Positive\u201d detections \u2013 (Top) Two clear examples of detected swimming pools that are missing in the cadastre. (Bottom Left) More ambiguous examples of detected swimming pools which might be missing in the cadastre. (Bottom Right) A clear error of the detector misclassifying a photovoltaic installation as a swimming pool. Conclusion \u00b6 Manual Evaluation \u00b6 In the city of Frauenfeld a sample district was chosen for manual evaluation by a STDL data scientist. Even though this task should ideally be performed by a local expert this analysis does provide some insight on the potential errors currently existing within the cadastre as well as the object detection quality. Within the sampled area a total of 99 identifiable swimming pool objects were found to be present. Table: Manually evaluated dataset accuracy vs. detector performance comparison. Green indicates the preferred value. Overall, the STDL Detector was more accurate than the provided dataset with a F1 Score of ~90% vs. ~87%. Especially a lot fewer swimming pools (5 FN) were missing in the detections than in the cadastre (18 FN). Room for improvement exists with the False Positives, where our detector identified 16 surplus objects as potential swimming pools which could be falsified manually. At the same time only 9 surplus objects were found in the cadastre. Interpretation \u00b6 We can conclude that the use of annotation data gathered in another canton of Switzerland allows for highly accurate predictions in Thurgau using the freely and publicly available SWISSIMAGE dataset. We demonstrate that such a transferrable approach can therefore be applied within a relatively short time span to other cantons without the effort of manually digitizing objects in a new area. This is supported by the assumption that SWISSIMAGE is of the same consistent radiometrical and spatial quality we see in Thurgau over the whole country. Manual evaluation will stay paramount before authorities take for example legal action or perform updates and changes to the cadastre. Nevertheless a great amount of workload reduction can be achieved by redirecting the eyes of the experts to the detected or undetected areas that are worth looking at. References \u00b6 Federal Office of Topography swisstopo (2020). SWISSIMAGE 10 cm - The Digital Color Orthophotomosaic of Switzerland. https://www.swisstopo.admin.ch/en/geodata/images/ortho/swissimage10.html Girshick, R. (2015). Fast r-cnn. In Proceedings of the IEEE international conference on computer vision (pp. 1440-1448). https://openaccess.thecvf.com/content_iccv_2015/html/Girshick_Fast_R-CNN_ICCV_2015_paper.html He, K., Gkioxari, G., Doll\u00e1r, P., & Girshick, R. (2017). Mask r-cnn. In Proceedings of the IEEE international conference on computer vision (pp. 2961-2969). https://arxiv.org/abs/1703.06870 OpenStreetMap Foundation (2021). Slippy Map. https://wiki.openstreetmap.org/wiki/Slippy_Map QGIS.org (2021). QGIS Geographic Information System. QGIS Association. https://qgis.org/en/site/ Wu, Y., Kirillov, A., Massa, F., Lo, W. Y., & Girshick, R. (2019). Detectron2. https://github.com/facebookresearch/detectron2","title":"SWIMMING POOL DETECTION FOR THE CANTON OF THURGAU"},{"location":"PROJ-TGPOOL/#swimming-pool-detection-for-the-canton-of-thurgau","text":"Adrian Meyer (FHNW) - Alessandro Cerioni (Canton of Geneva) Proposed by the Canton of Thurgau - PROJ-TGPOOL January 2021 to April 2021 - Published on April 21, 2021 Abstract : The Canton of Thurgau entrusted the STDL with the task of producing swimming pool detections over the cantonal area. Specifically interesting was to leverage the ground truth annotation data from the Canton of Geneva to generate a predictive model in Thurgau while using the publicly available SWISSIMAGE aerial imagery datasets provided by swisstopo. The STDL object detection framework produced highly accurate predictions of swimming pools in Thurgau and thereby proved transferability from one canton to another without having to manually redigitize annotations. These promising detections showcase the highly useful potential of this approach by greatly reducing the need of repetitive manual labour.","title":"SWIMMING POOL DETECTION FOR THE CANTON OF THURGAU"},{"location":"PROJ-TGPOOL/#introduction","text":"Until February 2021 the Swiss Territorial Data Lab developed an approach based on Mask RCNN Deep Learning algorithms for the detection of objects on aerial images, with swimming pools serving as a demonstration object. The official cadastres of the Canton of Thurgau include \u2013 among many other objects \u2013 the registration of larger private swimming pools that are permanently anchored in the ground. The challenge is to keep the cadastre up to date on a regular basis which is usually done manually by surveying or verification with aerial imagery. Because the Canton of Thurgau (unlike the Canton of Geneva) does not maintain an own specific register of swimming pools, this study primarily serves as a technology demonstration. A secondary goal encompasses detailed knowledge transfer from the data scientist team at the STDL to the cantonal authorities such as providing insight and interpretation guidance into the performance metrics and raising awareness for the prerequisites of the detector framework.","title":"Introduction"},{"location":"PROJ-TGPOOL/#methodology","text":"","title":"Methodology"},{"location":"PROJ-TGPOOL/#process-overview","text":"Generating a Model from Cadastral Vectors and Aerial Images to Predict Objects in the Same or a New Area of Interest (AoI). The STDL object detection framework is based on a bipartite approach of training and inference. This means that a predictive model is statistically adapted to known and verified data (\"training\") in order to then generate classification predictions on new, unknown data (\"inference\"). To achieve this we resample large high-resolution orthophoto mosaics by decomposing them into small square image tiles on which vectorized annotations of swimming pools are drawn. Verified vector annotation data (\"ground truth\") for the training process was available for the cantonal area of Geneva, as well as for a smaller part of the cantonal area of Neuch\u00e2tel covering a total of almost 5'000 swimming pools present in 2019. The predictive model used is a convolutional neural network developed for computer vision (Mask RCNN). It was trained on a high performance computing cluster at the University of Applied Sciences Northwestern Switzerland FHNW using the open source Detectron2 object detection library. During inference, pixel-precise vector contours (\u201csegments\u201d) are produced over the tiled imagery of the canton of Thurgau. Each segment is attributed a confidence score which indicates the certainty of the detections when applied to new data. Using this score as a threshold level, performance metrics are computed in post-classification assessment.","title":"Process Overview"},{"location":"PROJ-TGPOOL/#ground-truth-dataset","text":"Label annotations are derived from cadastral data and manually curated Vector ground truth annotations demarcating private swimming pools were available at two locations: A near-complete coverage of the cantonal area of Geneva which contains 4\u2019652 known objects, as well as a smaller subsection of the cantonal area of Neuchatel which contains 227 known objects. Label annotations in both cases are derived from cadastral surface vector datasets and then manually curated/verified. In case of the Geneva dataset the manual verification was performed by STDL data scientists in a previous study; in case of the Neuchatel dataset the manual verification was performed by the local cadastre experts.","title":"Ground Truth Dataset"},{"location":"PROJ-TGPOOL/#reference-data-and-area-of-interest","text":"Approximately 5000 cross checked swimming pool annotations are available as vectorized shapes in the Cantons of Geneva and partially in Neuch\u00e2tel. They are compatible with orthophotos from 2018/19 such as the latest SWISSIMAGE 10cm layer. The Area of Interest (AoI) for all tests conducted in this study are divided into two main sections: Those areas in Geneva and Neuchatel containing vectorized ground truth labels are used as \u201cTraining AoI\u201d. The cantonal area of Thurgau is used as \u201cPrediction AoI\u201d. Only those parts of the cantonal surface of Thurgau are used as Prediction AoI which are designated as relevant settlement areas. For this purpose the STDL has received two additional reference datasets from the canton of Thurgau: Vector layer: List of all water basins from the official survey; 3'131 objects. Vector layer: Settlement areas / construction zones to delimit the study area. 2,895 objects from the water basin layer are located wholly or partially within the \u201cPrediction AoI\u201d. Only these objects were used for analysis (see Figure 4, light green objects). For each grid square, an image file with 256x256 pixels edge length and 60cm GSD was generated by WMS. Metadata and georeferencing were stored in an associated JSON. A quick qualitative review of the Thurgau datasets in QGIS revealed two limitations of the datasets. About 7,5% of the water basins are not located in the selected settlement area (e.g., on remote farmsteads or mixed industrial / commercial zones), so no detection attempt was initially undertaken for areas encompassing these objects. It is important to note that there are some objects in the water basin layer that are not comparable to private swimming pools in shape or size, such as public large scale swimming pools, but also sewage treatment plants, silos, tanks, reservoirs, or retention dams. By limiting the Prediction AoI to residential areas and adjacent land, the largest portion of these objects could be excluded. Example of a water treatment plant that appears in the \u201cwater basin layer\u201d and had to be excluded by limiting the \u201cPrediction AoI\u201d to residential and adjacent areas. To additionally calculate metrics on the quality of this reference dataset vs. the quality of the detections a small area over the city of Frauenfeld (Thurgau) containing approximately 100 swimming pools was manually curated and verified by the STDL data scientists.","title":"Reference Data and Area of Interest"},{"location":"PROJ-TGPOOL/#orthocorrected-imagery","text":"Orthoimagery tiles of 150m/256px edge length containing labelled annotations Both AoIs are split by a regular checkerboard segmentation grid into squares (\u201ctiles\u201d), making use of the \u201cSlippy Map Tiles\u201d quadtree-style system. The image data used here was tested with different zoom level resampling resolutions (Ground Sampling Distance, GSD) between 30 cm and 480 cm edge length per pixel while maintaining a consistent extent of 256x256 pixels. Query of the imagery was undertaken using public web map services such using common protocols such as WMS or the MIL standard. Three separate imagery sources were used over the course of the study. The 10cm GSD RGB orthophotomosaic layer SWISSIMAGE of Swisstopo was the primary target of investigation as it was used as the basis of prediction generation over the cantonal area of Thurgau. SWISSIMAGE was also used as the imagery basis for most of the training test runs over the ground truth areas of Geneva and Neuchatel. Additionally, a model was trained leveraging combined cantonal orthophoto imagery from Geneva (SITG) and Neuchatel (SITN) to comparatively test the prediction performance of such a model on the unrelated SWISSIMAGE inference dataset in Thurgau. As it was known from the STDL\u2019s previous work, that the usage of tiles exhibiting a GSD of ~60cm/Px (tile zoom level 18) offered a decent tradeoff between reaching high accuracies during training while keeping computational effort manageable this approach was used for the test using the own cantonal imagery of Geneva and Neuchatel. Using SWISSIMAGE for training, zoom levels in a range between 15 (~480 cm/Px) and 19 (~30 cm/Px) were tested.","title":"Orthocorrected Imagery"},{"location":"PROJ-TGPOOL/#training","text":"","title":"Training"},{"location":"PROJ-TGPOOL/#inference-and-assessment","text":"After training, tile by tile the entire \u201cPrediction AoI\u201d as well as the ground truth datasets presented to the final model for prediction generation. From a minimum confidence threshold up to 100% the model produces a segmentation mask for each swimming pool detection delimiting its proposed outer boundary. This boundary can be vectorized and transformed back from image space into map coordinates during post-processing. Through this process we can accumulate a consistent GIS-compatible vector layer for visualization, counting and further analysis. In case of the ground truth data the resulting vector layer can be intersected with the original input data (especially the \u201cTest Subset\u201d) to obtain unbiased model performance metrics. In case of a well-performing model the resulting vector layer can then be intersected with the \u201cPrediction AoI\u201d-derived Thurgau dataset to identify missing or surplus swimming pools in the cadastre.","title":"Inference and Assessment"},{"location":"PROJ-TGPOOL/#results","text":"","title":"Results"},{"location":"PROJ-TGPOOL/#metrics-and-model-selection","text":"Results of different training runs using SWISSIMAGE depending on the chosen zoom level The choice of a correct confidence threshold (\"THR\") is of central importance for the interpretation of the results. The division of a data set into true/false positives/negatives is a function of the confidence threshold. A high threshold means that the model is very confident of a detection; a low threshold means that as few detections as possible should be missed, but at the same time more false positive (\"FP\") detections should be triggered. Results of different training runs using SWISSIMAGE depending on the chosen zoom level There are several standardized metrics to evaluate model performance on unknown data. The most important are \"Precision\" (user accuracy), \"Recall\" (hit rate or producer accuracy) and \"F1 Score\" (the mathematical harmonic mean of the other two). \"Precision\" should increase with higher THR, \"Recall\" should decrease. The maximum F1 Score can be used as a measure of how well the model performs regardless of the viewing direction. Results of different training runs using SWISSIMAGE depending on the chosen zoom level Using the cantonal orthomosaics as training input with zoom level 18 the F1 Score reached a maximum of 81,0%. Using SWISSIMAGE as training input with zoom level 18 a slightly higher maximum F1 Score of 83,4% was achieved resulting in the choice of a \u201conly SWISSIMAGE\u201d approach for both, training and inference. The best detection by means of maximum F1 Score was reached using tiles with zoom level 19 displaying a GSD of approx. 30 cm/Px. Since the Slippy Map tile system is based on equal division of squares increasing the zoom level by one step results roughly in quadrupling the number of tiles presented for analysis. Hence also computational demand increases with an exponential factor in particular for file system read/write and sequential processing operations if the zoom level is increased. On the other hand increasing the zoom level (and therefor the GSD) also boosts visibility and size of the target objects which in turn increases detection accuracy. Comparatively slight increases in F1 Score between zoom levels 17, 18 and 19 suggest an asymptotic behaviour where the usage of massively higher amounts computing resources will not result in a much higher detection accuracy any longer. Zoom level 20 (GSD~15cm/Px) was not computed for this reason.","title":"Metrics and Model Selection"},{"location":"PROJ-TGPOOL/#true-positives","text":"A detection is considered \"True Positive\" (TP) if the algorithm detected a pool that was listed at the same position in the cadastral layer. Setting the threshold very low (THR \u2265 5%), 2'227 of 2\u2019959 swimming pools were detected. This corresponds to a detection proportion of 75% of the recorded water pools. Conversely, this could mean that 25% or 732 objects are False Negatives and therefore \"erroneously\" recorded in the cadastre as swimming pools or missed by the algorithm. \u201cTrue Positive\u201d detections \u2013 note that cases of empty and covered swimming pools are detected with a very high confidence threshold in this example.","title":"True Positives"},{"location":"PROJ-TGPOOL/#false-negatives","text":"FN describe those objects that the algorithm completely failed to detect, no matter what threshold is set. A total of 732 objects were not detected. FN easily occur when there are obvious discrepancies between orthophoto and cadastre - for example, a pool may have been constructed after the time of flight. The combined number from FN and TP corresponds to the number of analyzed labels from the water pool layer (2\u2019959 objects). Due to the splitting of pools at the segmentation grid boundaries, this value is slightly higher than the 2\u2019895 objects that were in the \u201cPrediction AoI\u201d. Here, only objects larger than 5m\u00b2 in area were counted, since the segmentation grid cuts some pools into several parts and tiny residual of only a few pixels in total area polygons might otherwise be counted as FN even though the largest part of a swimming pool was detected (and therefore counted as TP). \u201cFalse Negatives\u201d \u2013 (Left) An obvious mismatch between the cadastre and the orthophoto, an update should be considered. (Right) An ambiguous swimming pool which might be covered by a white canvas and was therefore missed by the detector.","title":"False Negatives"},{"location":"PROJ-TGPOOL/#false-positives","text":"Swimming pools that were recognized as such in the orthophoto but are not found in the cadastre represent the FP group. If the threshold is set very low (e.g. THR \u2265 5%), a total of 9'427 additional pools would be found in the settlement area. However, this number is not realistic, since most of the detections at such a low threshold do not correspond to pools, but only mark image areas that are related to a pool in a very distant way. Therefore, to get a better estimation of objects that really represent private pools but are still missing in the cadastre, the choice of a very high threshold is recommended. For example, the geoinformation services of the Canton of Geneva work with a threshold of THR \u2265 97%. Applying this threshold, 271 unrecorded swimming pools remain in the dataset with an extremely high probability of correct redetection (9% of the cadastre). However, it is still worth looking at slightly less likely FP detections with a threshold of THR \u2265 90% here. Filtering with this value, a total of 672 unregistered swimming pools were found, which would correspond to 23% of the cadastre layer. At the same time the risk for clear errors by the object detector also increases at lower thresholds, leading to some misclassifications. \u201cFalse Positive\u201d detections \u2013 (Top) Two clear examples of detected swimming pools that are missing in the cadastre. (Bottom Left) More ambiguous examples of detected swimming pools which might be missing in the cadastre. (Bottom Right) A clear error of the detector misclassifying a photovoltaic installation as a swimming pool.","title":"False Positives"},{"location":"PROJ-TGPOOL/#conclusion","text":"","title":"Conclusion"},{"location":"PROJ-TGPOOL/#manual-evaluation","text":"In the city of Frauenfeld a sample district was chosen for manual evaluation by a STDL data scientist. Even though this task should ideally be performed by a local expert this analysis does provide some insight on the potential errors currently existing within the cadastre as well as the object detection quality. Within the sampled area a total of 99 identifiable swimming pool objects were found to be present. Table: Manually evaluated dataset accuracy vs. detector performance comparison. Green indicates the preferred value. Overall, the STDL Detector was more accurate than the provided dataset with a F1 Score of ~90% vs. ~87%. Especially a lot fewer swimming pools (5 FN) were missing in the detections than in the cadastre (18 FN). Room for improvement exists with the False Positives, where our detector identified 16 surplus objects as potential swimming pools which could be falsified manually. At the same time only 9 surplus objects were found in the cadastre.","title":"Manual Evaluation"},{"location":"PROJ-TGPOOL/#interpretation","text":"We can conclude that the use of annotation data gathered in another canton of Switzerland allows for highly accurate predictions in Thurgau using the freely and publicly available SWISSIMAGE dataset. We demonstrate that such a transferrable approach can therefore be applied within a relatively short time span to other cantons without the effort of manually digitizing objects in a new area. This is supported by the assumption that SWISSIMAGE is of the same consistent radiometrical and spatial quality we see in Thurgau over the whole country. Manual evaluation will stay paramount before authorities take for example legal action or perform updates and changes to the cadastre. Nevertheless a great amount of workload reduction can be achieved by redirecting the eyes of the experts to the detected or undetected areas that are worth looking at.","title":"Interpretation"},{"location":"PROJ-TGPOOL/#references","text":"Federal Office of Topography swisstopo (2020). SWISSIMAGE 10 cm - The Digital Color Orthophotomosaic of Switzerland. https://www.swisstopo.admin.ch/en/geodata/images/ortho/swissimage10.html Girshick, R. (2015). Fast r-cnn. In Proceedings of the IEEE international conference on computer vision (pp. 1440-1448). https://openaccess.thecvf.com/content_iccv_2015/html/Girshick_Fast_R-CNN_ICCV_2015_paper.html He, K., Gkioxari, G., Doll\u00e1r, P., & Girshick, R. (2017). Mask r-cnn. In Proceedings of the IEEE international conference on computer vision (pp. 2961-2969). https://arxiv.org/abs/1703.06870 OpenStreetMap Foundation (2021). Slippy Map. https://wiki.openstreetmap.org/wiki/Slippy_Map QGIS.org (2021). QGIS Geographic Information System. QGIS Association. https://qgis.org/en/site/ Wu, Y., Kirillov, A., Massa, F., Lo, W. Y., & Girshick, R. (2019). Detectron2. https://github.com/facebookresearch/detectron2","title":"References"},{"location":"PROJ-TPNL/","text":"DETECTION OF THERMAL PANELS ON CANTON TERRITORY TO FOLLOW RENEWABLE ENERGY DEPLOYMENT \u00b6 Nils Hamel (UNIGE) - Huriel Reichel (FHNW) Supervision : Roxane Pott (swisstopo) Project in collaboration with Geneva and Neuch\u00e2tel States - TASK-TPNL July 2021 to February 2022 - Published on February 22, 2022 Abstract : Deployment of renewable energy becomes a major stake in front of our societies challenges. This imposes authorities and domain expert to promote and to demonstrate the deployment of such energetic solutions. In case of thermal panels, politics ask domain expert to certify, along the year, of the amount of deployed surface. In front of such challenge, this project aims to determine to which extent data science can ease the survey of thermal panel installations deployment and how the work of domain expert can be eased. Introduction \u00b6 For authorities, being able to track the deployment of renewable energy is becoming a major challenge in front of stakes of our societies. In addition, following the deployment of installations on territory is difficult, as construction permits are not sufficient evidences. Indeed, the construction permits materialize a will, but the actual deployment and its specifications can differ from paperwork to reality. In case of thermal panels, domain experts are then put in front of a major challenge, as they have to certify of the surface of solar thermal energy that is deployed and active on their territory on a regular basis. This reporting is made for politics that aim to deploy a certain amount of renewable energy, part of territories energetic politic. Mainly based on paperwork, the current survey of thermal panels deployment are affected by drawbacks. Indeed, it is currently complicated to determine whether a construction permit lead to the deployment of a thermal panel installation and if this installation is still in activity. The goal of this project is to determine if data science is able to provide new solutions for the survey of thermal energy production in order to report more accurate surface values to the politics. Research Project Specification \u00b6 In this project, the goal is to determine whether it is possible to track down thermal panels installation on territory by using aerial images and deep learning methods. The main axis are : Train a deep learning model on aerial images to detect thermal panels Assess the performances of the deep learning model Determine to which extent it is possible to link the predictions to existing domain expert database Research Project Strategy and Collaboration \u00b6 This research project was made in collaboration with the States of Neuch\u00e2tel and Geneva . Both domain experts are facing similar challenges and their needs are nearly identical, despite their current processes differs. For each collaboration, the goals are similar, but the methodology is different. With Neuch\u00e2tel , the domain expert database is considered while with Geneva , the database is not considered. Considering the database in the collaboration with Neuch\u00e2tel lead to a much larger amount of work, as the database need to be pre-processed before to put it into perspective of the deep learning network results. It is nevertheless important to be able to assess the possibility to insert our demonstrator in the existing procedures, that are used by domain expert to track thermal panels installations. Research Data & Selected Areas \u00b6 As mentioned, the best (and probably the only) solution to track down thermal panels is to use aerial images. Indeed, due to their nature, thermal panels are always visible on aerial images. Exceptions to this rule are unusual. In addition, aerial images are acquired regularly and a full set of orthomosaic can be easily obtained each five years (at least in Switzerland). For Geneva and Neuch\u00e2tel , it is not impossible to obtain a set of images each two years. Nevertheless, using aerial images come with drawbacks. The main one is of course resolution ( GSD ). Aerial image sets used to compose orthomosaics are acquired to cover the whole territory. It follows that the resolution is limited. For a large amount of applications, the available resolution is sufficient. But for thermal panels, the resolution starts to become challenging. Illustration of the resolution at which thermal panels can be viewed on aerial images - Data : swisstopo, SITG (GSD ~ 10 cm/pixel) Despite the resolution, aerial images are selected to train a deep learning network. Mainly SWISSIMAGE from swisstopo are considered for this research project. At the time, the 2020 version of the orthomosaic is considered for both Neuch\u00e2tel and Geneva . For both cases, a test area is defined. On the side of Neuch\u00e2tel , a large test area is chosen in order to cover a large portion of the territory that mixes constructed zones and more rural ones. On the side of Geneva , the test area is defined by the domain expert and consists of a rectangular zone. Illustration of the test areas defined on Neuch\u00e2tel (left) and Geneva (right) - Data : swisstopo The research project is then only focusing on portion of territory to keep the scale realistic for such demonstrator according to the available time. Deep Learning Model Initial Training \u00b6 In this project, it is not possible to extract a ground truth, that is annotations on aerial images, from the domain expert databases. Thankfully, the FHNW , partner of the STDL , conducted some year ago annotations for thermal panels on the States of Aargau . The set consists of thousands of annotated tiles of 80x80m in size made on the SWISSIMAGE images set ( 2020 ). The annotation work was made by students of the FHNW and supervised by the D. Jordan scientists team. Such data-set is exactly the required bootstrap data to train an initial deep learning model. The only constraint is coming from the fact that the ground truth is defined by the 80x80m wide tiles on which annotations are made. Illustration of the FHNW ground truth - Labels in white, tiles in red - Data : swisstopo, FHNW Several training sessions are conducted in order to determine which sub-tiling system lead to the best performances scores. Due to the predefined ground truth, only sub-tiles of the 80x80m original tiles are possible. As a result, 80x80m , 40x40m and 26x26m tiles are considered for the network training. In all training sessions, the results are quite stable around a F1-score of 0.8-0.85 , with always a non-negligible proportion of false positives. The best results are obtained for the smaller tiles : 26x26m . It is unfortunate as small tiles comes with drawbacks. Indeed, using small tiles impose important tiling strategy to cover a large area. In addition, using small tiles also induce larger amount of cuts that have to be merged afterwards to create a usable geographical layer. Despite these drawbacks, as a demonstrator is desired, the performances are favored. The following plot shows the precision, recall and F1-score obtained for the initial training using the data of the FHNW . These values are computed over the test set, that consists of 15% of the total data-set. Scores obtained with the FHNW ground truth - Precision, Recall and F1-score On the previous plot, the scores are all computed entity-wise and not pixel-wised. This choice is made to fit the main necessity of domain experts, which is to inventory thermal panel installations more than estimating their surfaces, which is a secondary goal. One can see that encouraging results are obtained, but one can also see that the F1-score plateau is not significantly marked, a sign that the model is not yet optimal, despite the large amount of data. As we are working with domain experts, presenting F1-score according to threshold can be challenging and difficult to understand. During other research projects, it has been clear that efforts have to be put on our side to present the performances of our tools in a way that is informative and understandable by the domain exerts, in order to ensure a working collaboration and dialog, without which, such research projects can be difficult to conduct. It is the reason why an alternate representation of the performances are introduced. It shows the performances of the neural network in a more compact and readable way, focusing on elements that are interesting for the domain experts and their real-world necessities. The proposed plot is as follows : Simplified representation used with domain experts of the obtained scores - The green area is the true positives, the yellow one is false negatives and the red on is the false positive. The upper percentage give the inventory capacity, the lower one adding the false positive to the percentage. The bar is containing three proportions : the true positives, the false negatives and the false positives. The two first proportions are grouped into one in order to represent the capacity of the network to create a reliable inventory. It shows the amount of thermal panels detected over their total amount (recall). The overall bar adds the proportion of false positive, that are seen by domain experts as pollution of the obtained inventory. Showing this proportions indicates to the domain experts, in a simple way, how usable the inventory is. Assessment and Improvement of the Model \u00b6 This section is split into two separated parts, one for the Geneva case and the other for the Neuch\u00e2tel one, as the chosen strategy is different. The case of Geneva , with a more direct approach (not considering the domain expert pre-existing database), is presented first. Case of Geneva \u00b6 In the case of Geneva , the choice is made to not consider existing databases and to proceed on detecting thermal panel installations directly on images to create an inventory that can then be assessed by the domain expert to extract reliable performance scores. Assessment by the Domain Expert \u00b6 In order to produce the predictions over the test area, in this case defined by the domain expert, the area is split into tiles with the chosen size. The tiles are then sent to the deep learning network in order to produce the predictions of thermal panel installations. The following image shows the tiling system over the test area : Illustration of the tiling system applied on the Geneva test area (26x26m tiles) A set of tiles is obtained with predictions on them. The optimal threshold, deduced from the initial training on the FHNW data-set, is used to filter the predictions over the test area of Geneva . The tiles containing no prediction are removed by an automated process. The other tiles are associated with the predictions geographical footprints that and stored in a shapefile to keep the format simple and easy to exchange with the domain expert. By defining a common language with the domain expert on how to validate the predictions, the shapefile containing the predictions are sent to the domain expert along with the aerial images on which predictions are made. The role of the domain expert is to assess the predictions to indicate, on the tiles containing at least a prediction, the true positives, the false positives and the false negatives. Illustration of the common language defined to assess the predictions - The domain expert simply puts a mark in the determined false positive and at the location of the false negative. The true positives are left untouched By assessing the prediction with a domain expert, ensure that the obtained scores are reliable, as thermal panels are difficult to identify on the aerial image for a non expert. Without assessing the predictions through a domain expert would lead to unreliable scores. Results \u00b6 The assessment of the predictions made by the domain expert lead to the following results on the test area. A total of 89 tiles are formally certified by the domain expert with the following counts : Category Count TP 47 FP 63 FN 35 On a total of 110 predictions on the certified tiles, 47 are true positives, 63 being false positives. A total of 35 missing predictions are pointed by the domain expert. It follows that 47 thermal panel installations are found over 47+35=82 . This leads to the performances score for the initial deep learning over the Geneva test area model of : Score Value Precision 0.43 Recall 0.57 F1 0.49 From the inventory point of view, nearly 60% of the thermal panel installations are found by the initial deep learning model on the test area. This is clearly below the initial model, showing that the data-set are not sufficient to obtain stable results at this stage. The following plot shows the results presented in the simplified form : Score obtained on Geneva with the initial deep learning model - Simple representation Taking into account the large amount of false positives, the initial training is clearly not at the desired level to be usable by the domain expert to produce a reliable geographical layer of thermal panel installations. But these number are important, as they are certified by a domain expert, ensuring the ground truth used to assess the prediction is reliable. Improvement of the Deep Learning Network \u00b6 With the assessment made by the domain expert, reliable scores are obtained. In addition, as predictions are marked as correct or incorrect, with addition of missing thermal panel installations on the certified tiles, it was possible to create an extension to the ground truth. Indeed, driven by the corrections of the domain expert, new annotations are made on the certified tiles, including true positives and false negatives. These annotations are made by STDL on the images used to produce the predictions. The predictions in themselves are not sufficiently reliable to be directly translated into labels, and the false negative have to be added anyway. Annotations created on the Geneva area driven by the assessment of the domain expert - The labels are in white and the certified tiles in red In the case of Geneva , the ground truth extension is made on the same images used to produce the prediction. As the number of certified tiles is low, a strategy is tested in order to improve the ground truth extension. The idea consist in looking along the time dimension. Indeed, in Switzerland , aerial images are acquired in a regular basis. It follows that a history of aerial images is available. The time range from 2000 to 2020 is then considered in terms of the available images. For each set of images, the annotation created on the 2020 image set are transferred to the older images. This process is not straightforward, as each prediction have to be checked to certify that the thermal panel installation is there on older images. In addition, each tile has to be checked individually in order to check that no older thermal panel installation was there and destroyed before 2020 . Illustration of the propagation of the ground truth along the time dimension - The image on the right illustrates the limit of the process By doing this exploration along the time dimension, it was possible to increase the ground truth extracted from the assessment procedure made by the domain expert. From only 41 tiles and 64 annotations extracted using the initial test zone on the year 2020 , 394 tiles and 623 annotations are obtained by considering the 2000 to 2020 time range for aerial images. Considering the time dimension allows to better leverage the assessment made by the domain expert, despite the procedure is time-consuming. One has to keep in mind that such process is not ideal, as the same examples are simply repeated. It has some interest as it allows showing the same examples under different condition of luminosity and orientation, which can improve the deep learning model detection ability. With this new ground truth, it was possible to re-train the initial network. This was done using both the FHNW initial ground truth and the annotations made on Geneva . The following results are obtained, shown using the simple representation : Scores obtained on Geneva with consideration of the new annotations certified by the domain expert - Simple representation This plot shows the results on the test set limited to the Geneva test area. Again, the test set contains 15% of the ground truth, and limiting it to the area of Geneva leads to only several tens of tiles. This amount of tiles is quite low to conclude on the encouraging results obtained with the extended ground truth. This is reinforced by the lack of stability already observed in the previous results. Conclusion \u00b6 It is clear that the initial deep learning model, trained with the FHNW ground truth is not satisfying for a real-world usage by domain experts. Its ability to produce an inventory is not optimal, and the amount of false positives make the produced geographical layer difficult to use. Nevertheless, reliable score are obtained and can be trusted on the Geneva area thanks to the domain expert assessment. In addition, the assessment made by the domain expert, as it also included the false negatives (at least on the considered tiles), allowed to extend the ground truth. The extension of the ground truth along the time dimension allows taking advantage of the work of the domain expert as much as possible, leading to more certified tiles. The new training allowed to improve the situation on the Geneva area quite clearly. The inventory capacity of the deep learning model went from around 60% to around 80% . The amount of false positives is also drastically reduced. These are encouraging results, but the small amount of new tiles and the multiplication of the same examples along the time dimension has to lead us to a certain care, especially due to the instabilities of the results. Case of Neuch\u00e2tel \u00b6 The case of Neuch\u00e2tel is clearly more complex than the case of Geneva . In this case, the database of the domain expert is considered in order to try to link the predictions with the entries of the existing database. This choice is made to demonstrate the ability to integrate data science technology in existing pipeline, in order to avoid creating disruptive effect. Processing and Linkage with the Domain Expert Database \u00b6 In the first stage, the domain expert database is analyzed in order to determine the best solution to link the prediction made by the deep learning model and the entries of the database. The database in itself is a simple Excel sheet, with each line corresponding to a subsidy query that goes along the construction permit. Subsidies are provided by the authorities to promote deployment of the renewable energy. This is also a reason explaining the necessity for authorities to track down the construction of thermal panel installations. The major issue with the database is the localization of the thermal panels installation. Along the years, the database being quite old, different ways of localizing the installation were used. Three different localization systems are then available : the postal addresses, the geographical coordinate and the EGID (federal building identifier). Unfortunately, these standards are mixed, and all entries are localized differently. Sometimes only one localization is available, sometimes two or three. In some cases, the different localization information are not consistent, which lead to contradictions in the installation position. For some entries, the localization information is also incorrect or only approximate, which can lead to difficulties to associate a geo-referenced prediction to an entry of the database. For these reason, lots of efforts are put on the pre-processing of the database to make the link between prediction and entries as reliable as possible. The RegBL (federal register of buildings and dwellings) is used to assess the EGID and the postal addresses and to track down contradiction. In addition, the post addresses of the State of Neuch\u00e2tel is also considered to match addresses with geographical positions for the same reason. By doing this, many potential positions are extracted for each entry of the database. This allows to assess the contradiction in order to retain the most probable and reliable localization for each entry of the database. Of course, in many cases, the assessment is quite weak as the amount of information on localization is low (this is especially the case for older installation, the new one being localized in a much more reliable manner using the EGID ). At the end of this complex and time-consuming task, almost all entries of the database are associated with a geographical position. This allows to match predictions, that are geographically localized, to the most probable entry of the database. This process is important as it allows the domain expert to not only have a geographical layer of the thermal panel installation but to have also the link with its pre-existing database. This allows to put into perspective prediction and database to track down construction and destruction of installations along the time dimension. Assessment by the Domain Expert \u00b6 After pre-processing of the domain expert database, a region of Neuch\u00e2tel state is defined. A tiling strategy is made to translate the defined area in tiles of the appropriated size according to the initial training of the deep learning model. Predictions are then made on each of the tiles. Again, the optimal threshold is selected according to the initial training to filter the predictions made on the test area. At this stage, the procedure differ from the case of Geneva . Here, tiles are not filtered based on their content of prediction or not. The database is considered, after its pre-processing, and the predictions are linked to the optimal entry according to its best localization. As a result, a set of predictions linked to a specific entry of the database is obtained. The other predictions are simply discarded for this specific assessment procedure. In order to serve as much as possible the interests of the domain expert, a specific assessment procedure is set. This is set to allow to assess the prediction on one side and to help the domain expert to correct the bad localization of the thermal panel installation in his database on the other side. The chosen approach is based on a dictionary of GeoTIFF images on which the prediction are shown and on which additional information are specified to help the domain expert to assess the localization provided by the database. Illustration of one page of the dictionary corresponding to one database entry - For each entry, such image is provided, showing information on the entry, its localization consistency and the prediction made by the model - Each image is a geo-referenced TIFF The dictionary is made of a GeoTIFF per prediction that is linked with a unique entry of the database. In addition to the prediction geometry drawn on the image, basic information on the linked database entry is provided. The optimal localization (between post addresses, coordinates or EGID) used to link the prediction and the entry of the database is also indicated to help the domain expert to understand the link. Information about the estimated quality of the localization of the thermal panel installation is also provided. This quality indicator is based on the consistency of the multiple location information (post address, coordinates and EGID). The more consistent they are, the better the localization is considered. In case of a potential bad localization, the domain expert is invited to check the entry of the database to correct the position. In parallel, a simple Excel file is set and filled by the domain expert along the procedure. It allows setting the corrected positions, when required, and to indicate if the prediction is correct and correctly linked to the database entry. This process allows setting a win-win strategy where incorrectly located installation are treated on the side of the database and the prediction is assessed for the correct localization. The procedure for the domain expert consists then only to parse a sequence of images on which all the information are shown and to fill columns in the assessment Excel sheet. This allows to assess quickly and efficiently the prediction while correcting the inconsistency in the database. Results \u00b6 Thanks to the assessment procedure, part of the predictions are certified by the domain expert. This allows to compute scores on the capacity of the initial deep learning model to compute inventory of thermal panel installations. Unfortunately, this assessment procedure does not allow the computation of the formal scores, as the false negative are not considered. This is the main drawback coming from the fact that we work in parallel with the domain expert database. On the 354 predictions linked to the database, 316 corresponds to correctly localized entries of the database. On the 316 correct entries of the database, the domain expert reported 255 visible installation. This shows that many installations, present in the database through an entry, are not visible in the reality. With these numbers, one can deduce that 61 installations are reported in the database through paper work but cannot be found in the real world. The explanation is probably complex, but this shows how difficult it is to keep a database of installation up to date with the reality. Without a formal historical analysis, it is not possible to determine what happened to these missing installation. For some of them, one needs to consider the natural cycle of life of such installations. Indeed, thermal panel have a determined lifetime and need to be replaced or decommissioned. It is also possible that for some of them, the construction permit was asked but without leading to the actual construction of a thermal panel installation. This case is expected to be less usual. Back to the score of the initial deep learning model, on the 255 visible installation, the domain expert determined that 204 are correctly detected by the model. This lead to an inventory capacity of 0.8 which remains in the initial model scores. It is interesting to observe that the initial model scores seem to hold in the case of Neuch\u00e2tel but not in the previous case of Geneva . Indeed, on Geneva , the inventory capacity drop to 0.6 . Improvement of the Deep Learning Network \u00b6 With the assessment made by the domain expert, despite false negatives are not considered, it was possible to increase the ground truth with new annotation on the test area of Neuch\u00e2tel . The procedure starts by isolating all prediction that are marked as correct (true positive) by the domain expert. A tiling system is then set to cover the entire test area with size fitting the initial choices. The certified true positive are then manually processed to create a proper annotation, as the prediction are not reliable enough. The certifications made by the domain expert are sufficiently clear for a data scientist to do this task autonomously. The last stage consist in validating the tiles containing a new annotation. This part is the most complex one, as the data scientist has to work autonomously. The tiles containing a new annotation can only be validated, and enter the ground-truth, if and only if no other ambiguous element appear in the validated tiles. If any ambiguities arise for a tile, it needs to be dropped and not considered for the ground truth. In the case of Neuch\u00e2tel a few tiles are then removed for this reason. With this procedure, 272 new annotation are added to the ground truth on 254 tiles. These annotations, as for Geneva , are certified by a domain expert, providing a reliable ground truth. With this new set of annotation, and considering the new annotation made in the case of Geneva , it is possible to conduct a new training of the deep learning model. For this last training, the full ground truth is considered, with the FHNW annotations and those coming from the domain experts of Geneva and Neuch\u00e2tel . The following plot gives an overall simple representation of the obtained results : Score obtained using all the available ground truth, including FHNW, Geneva and Neuch\u00e2tel - Simple representation On the test set, an F1-score of 0.82 is obtained, which is slightly worse that for the initial training ( 0.85 ). On the overall, one can also sees that the inventory capacity is decreased while the amount of false positive is reduced. Again, one can here sees the instabilities of the results, showing that the used data is not sufficient or not enough well suited for such task. One can see on this following plots, the simple representation of the score reduced only the Geneva and Neuch\u00e2tel areas : Score obtained restricted to the Geneva (test set) - Simple representation Score obtained restricted to the Neuch\u00e2tel (test set) - Simple representation One has to take into account that restricting the score to such area leads to very few prediction, leading to poor statistics. It is nevertheless clear that the results on the Neuch\u00e2tel restriction demonstrate the instabilities observed all along the project. On Neuch\u00e2tel , choosing a different threshold could lead to a better inventory capacity, but the fact that the threshold needs to be adapted according to the situation shows that the model was not able to generalise. It is most likely that the nature of the objects, its similarity with other objects and the resolution of the images play a central role in the lack of generalisation. As a conclusion, detecting thermal panels needs higher resolution in order for the model to be able to extract more reliable features from the object instead of relying only on the situation of the object. Conclusion \u00b6 In the case of Neuch\u00e2tel , the procedure is more complex, as the database is considered. The work on the database is time-consuming and the linkage of the predictions with the entries of the database is not straightforward, mainly due to the inconsistencies on thermal panel installation localization. In addition, considering the database lead it to be the main point of view from which the prediction are analyzed, assessed and understood. It offers a very interesting point of view as it allows assessing the synchronization between the database and the current state of the thermal panel installations deployment. Nevertheless, such point of view also introduce drawback, as it does not allow to directly assess the false negative and only part of the false positive. This lead to intermediate scores, that are more focused on the database-reality synchronization than the performances of the deep learning model. It is then clearly demonstrated that a deep learning model can be interfaced with an existing database to ensure processes continuity with the introduction of new technologies in the territory management. It shows that new methods can be introduced without requiring to abandon the previous processes, which is always complicated and undesired. On the initial deep learning model assessment, with an inventory capacity of around 0.85 (recall), one can observe a difference between Neuch\u00e2tel and Geneva . Indeed, in Geneva , the recall dropped to around 0.6 while it was more around 0.8 in the Neuch\u00e2tel case. A possible explanation is the similarity between the Aargau (used as to train the initial deep learning model) and Neuch\u00e2tel in terms of geography. The case of Geneva is more urban than these two others. This confirms the instabilities already observed and seems to indicate that thermal panels remains a complex object to detect at this stage considering the available data. Conclusion and Perspectives \u00b6 As a main conclusion, this project, performed in two stage with Geneva and Neuch\u00e2tel states, is a complex task. The nature of the object of interest is the main source of difficulty. The current available aerial images made the detection of such object possible, but the resolution of the images (GSD) makes the task very difficult. Indeed, as mentioned, the thermal panel installations visible on the image are at the limit of resolution. This forces the deep learning model to learn more with the context than with the object features themselves. To add complexity, thermal panels appear very alike electrical panels on images, leading to a major source of confusion. The fact that the deep learning model is relying more on context than on object features lead the electrical panel to be reported as a thermal one, reducing the efficiency of inventory, leading to large amount of false positive. Despite that, interesting results are obtained and cannot lead to the conclusion that inventory such object is currently impossible. It remains very challenging, but data science can already bring help in the tracking and surveillance of the thermal panel installations. The collaboration with the domain experts is here a necessity. Indeed, such installations, especially with the image resolution, are extremely complex to confirm as such (mainly due to the confusion with electrical panels and other roof elements ). Even for the domain expert, determining if a prediction is a true positive or not is challenging and time-consuming. Without the help of domain experts, data scientists are not able to tackle such problem. Another positive outcome is the demonstration that data science can be interfaced smoothly with existing processes. This is shown with the Neuch\u00e2tel case, where the predictions can instantly be linked to the entries of the pre-existing domain expert database. This eases the domain expert assessment procedure and can also participate to assess the synchronization between the database and the reality. As a final word, the obtained deep learning model is not formally able to enter the management of the territory. It is demonstrated that the nature of the object and the available data makes the model unstable from a situation to another. This shows that the current data available is not formally enough to lead to the production of a fully working prototype able to satisfy the specifications of the domain experts. Nevertheless, such model can already perform pre-processes to ease the work of domain expert in the complex task of tracking the deployment of thermal energy generators on the Swiss territory.","title":"DETECTION OF THERMAL PANELS ON CANTON TERRITORY TO FOLLOW RENEWABLE ENERGY DEPLOYMENT"},{"location":"PROJ-TPNL/#detection-of-thermal-panels-on-canton-territory-to-follow-renewable-energy-deployment","text":"Nils Hamel (UNIGE) - Huriel Reichel (FHNW) Supervision : Roxane Pott (swisstopo) Project in collaboration with Geneva and Neuch\u00e2tel States - TASK-TPNL July 2021 to February 2022 - Published on February 22, 2022 Abstract : Deployment of renewable energy becomes a major stake in front of our societies challenges. This imposes authorities and domain expert to promote and to demonstrate the deployment of such energetic solutions. In case of thermal panels, politics ask domain expert to certify, along the year, of the amount of deployed surface. In front of such challenge, this project aims to determine to which extent data science can ease the survey of thermal panel installations deployment and how the work of domain expert can be eased.","title":"DETECTION OF THERMAL PANELS ON CANTON TERRITORY TO FOLLOW RENEWABLE ENERGY DEPLOYMENT"},{"location":"PROJ-TPNL/#introduction","text":"For authorities, being able to track the deployment of renewable energy is becoming a major challenge in front of stakes of our societies. In addition, following the deployment of installations on territory is difficult, as construction permits are not sufficient evidences. Indeed, the construction permits materialize a will, but the actual deployment and its specifications can differ from paperwork to reality. In case of thermal panels, domain experts are then put in front of a major challenge, as they have to certify of the surface of solar thermal energy that is deployed and active on their territory on a regular basis. This reporting is made for politics that aim to deploy a certain amount of renewable energy, part of territories energetic politic. Mainly based on paperwork, the current survey of thermal panels deployment are affected by drawbacks. Indeed, it is currently complicated to determine whether a construction permit lead to the deployment of a thermal panel installation and if this installation is still in activity. The goal of this project is to determine if data science is able to provide new solutions for the survey of thermal energy production in order to report more accurate surface values to the politics.","title":"Introduction"},{"location":"PROJ-TPNL/#research-project-specification","text":"In this project, the goal is to determine whether it is possible to track down thermal panels installation on territory by using aerial images and deep learning methods. The main axis are : Train a deep learning model on aerial images to detect thermal panels Assess the performances of the deep learning model Determine to which extent it is possible to link the predictions to existing domain expert database","title":"Research Project Specification"},{"location":"PROJ-TPNL/#research-project-strategy-and-collaboration","text":"This research project was made in collaboration with the States of Neuch\u00e2tel and Geneva . Both domain experts are facing similar challenges and their needs are nearly identical, despite their current processes differs. For each collaboration, the goals are similar, but the methodology is different. With Neuch\u00e2tel , the domain expert database is considered while with Geneva , the database is not considered. Considering the database in the collaboration with Neuch\u00e2tel lead to a much larger amount of work, as the database need to be pre-processed before to put it into perspective of the deep learning network results. It is nevertheless important to be able to assess the possibility to insert our demonstrator in the existing procedures, that are used by domain expert to track thermal panels installations.","title":"Research Project Strategy and Collaboration"},{"location":"PROJ-TPNL/#research-data-selected-areas","text":"As mentioned, the best (and probably the only) solution to track down thermal panels is to use aerial images. Indeed, due to their nature, thermal panels are always visible on aerial images. Exceptions to this rule are unusual. In addition, aerial images are acquired regularly and a full set of orthomosaic can be easily obtained each five years (at least in Switzerland). For Geneva and Neuch\u00e2tel , it is not impossible to obtain a set of images each two years. Nevertheless, using aerial images come with drawbacks. The main one is of course resolution ( GSD ). Aerial image sets used to compose orthomosaics are acquired to cover the whole territory. It follows that the resolution is limited. For a large amount of applications, the available resolution is sufficient. But for thermal panels, the resolution starts to become challenging. Illustration of the resolution at which thermal panels can be viewed on aerial images - Data : swisstopo, SITG (GSD ~ 10 cm/pixel) Despite the resolution, aerial images are selected to train a deep learning network. Mainly SWISSIMAGE from swisstopo are considered for this research project. At the time, the 2020 version of the orthomosaic is considered for both Neuch\u00e2tel and Geneva . For both cases, a test area is defined. On the side of Neuch\u00e2tel , a large test area is chosen in order to cover a large portion of the territory that mixes constructed zones and more rural ones. On the side of Geneva , the test area is defined by the domain expert and consists of a rectangular zone. Illustration of the test areas defined on Neuch\u00e2tel (left) and Geneva (right) - Data : swisstopo The research project is then only focusing on portion of territory to keep the scale realistic for such demonstrator according to the available time.","title":"Research Data & Selected Areas"},{"location":"PROJ-TPNL/#deep-learning-model-initial-training","text":"In this project, it is not possible to extract a ground truth, that is annotations on aerial images, from the domain expert databases. Thankfully, the FHNW , partner of the STDL , conducted some year ago annotations for thermal panels on the States of Aargau . The set consists of thousands of annotated tiles of 80x80m in size made on the SWISSIMAGE images set ( 2020 ). The annotation work was made by students of the FHNW and supervised by the D. Jordan scientists team. Such data-set is exactly the required bootstrap data to train an initial deep learning model. The only constraint is coming from the fact that the ground truth is defined by the 80x80m wide tiles on which annotations are made. Illustration of the FHNW ground truth - Labels in white, tiles in red - Data : swisstopo, FHNW Several training sessions are conducted in order to determine which sub-tiling system lead to the best performances scores. Due to the predefined ground truth, only sub-tiles of the 80x80m original tiles are possible. As a result, 80x80m , 40x40m and 26x26m tiles are considered for the network training. In all training sessions, the results are quite stable around a F1-score of 0.8-0.85 , with always a non-negligible proportion of false positives. The best results are obtained for the smaller tiles : 26x26m . It is unfortunate as small tiles comes with drawbacks. Indeed, using small tiles impose important tiling strategy to cover a large area. In addition, using small tiles also induce larger amount of cuts that have to be merged afterwards to create a usable geographical layer. Despite these drawbacks, as a demonstrator is desired, the performances are favored. The following plot shows the precision, recall and F1-score obtained for the initial training using the data of the FHNW . These values are computed over the test set, that consists of 15% of the total data-set. Scores obtained with the FHNW ground truth - Precision, Recall and F1-score On the previous plot, the scores are all computed entity-wise and not pixel-wised. This choice is made to fit the main necessity of domain experts, which is to inventory thermal panel installations more than estimating their surfaces, which is a secondary goal. One can see that encouraging results are obtained, but one can also see that the F1-score plateau is not significantly marked, a sign that the model is not yet optimal, despite the large amount of data. As we are working with domain experts, presenting F1-score according to threshold can be challenging and difficult to understand. During other research projects, it has been clear that efforts have to be put on our side to present the performances of our tools in a way that is informative and understandable by the domain exerts, in order to ensure a working collaboration and dialog, without which, such research projects can be difficult to conduct. It is the reason why an alternate representation of the performances are introduced. It shows the performances of the neural network in a more compact and readable way, focusing on elements that are interesting for the domain experts and their real-world necessities. The proposed plot is as follows : Simplified representation used with domain experts of the obtained scores - The green area is the true positives, the yellow one is false negatives and the red on is the false positive. The upper percentage give the inventory capacity, the lower one adding the false positive to the percentage. The bar is containing three proportions : the true positives, the false negatives and the false positives. The two first proportions are grouped into one in order to represent the capacity of the network to create a reliable inventory. It shows the amount of thermal panels detected over their total amount (recall). The overall bar adds the proportion of false positive, that are seen by domain experts as pollution of the obtained inventory. Showing this proportions indicates to the domain experts, in a simple way, how usable the inventory is.","title":"Deep Learning Model Initial Training"},{"location":"PROJ-TPNL/#assessment-and-improvement-of-the-model","text":"This section is split into two separated parts, one for the Geneva case and the other for the Neuch\u00e2tel one, as the chosen strategy is different. The case of Geneva , with a more direct approach (not considering the domain expert pre-existing database), is presented first.","title":"Assessment and Improvement of the Model"},{"location":"PROJ-TPNL/#case-of-geneva","text":"In the case of Geneva , the choice is made to not consider existing databases and to proceed on detecting thermal panel installations directly on images to create an inventory that can then be assessed by the domain expert to extract reliable performance scores.","title":"Case of Geneva"},{"location":"PROJ-TPNL/#case-of-neuchatel","text":"The case of Neuch\u00e2tel is clearly more complex than the case of Geneva . In this case, the database of the domain expert is considered in order to try to link the predictions with the entries of the existing database. This choice is made to demonstrate the ability to integrate data science technology in existing pipeline, in order to avoid creating disruptive effect.","title":"Case of Neuch\u00e2tel"},{"location":"PROJ-TPNL/#conclusion-and-perspectives","text":"As a main conclusion, this project, performed in two stage with Geneva and Neuch\u00e2tel states, is a complex task. The nature of the object of interest is the main source of difficulty. The current available aerial images made the detection of such object possible, but the resolution of the images (GSD) makes the task very difficult. Indeed, as mentioned, the thermal panel installations visible on the image are at the limit of resolution. This forces the deep learning model to learn more with the context than with the object features themselves. To add complexity, thermal panels appear very alike electrical panels on images, leading to a major source of confusion. The fact that the deep learning model is relying more on context than on object features lead the electrical panel to be reported as a thermal one, reducing the efficiency of inventory, leading to large amount of false positive. Despite that, interesting results are obtained and cannot lead to the conclusion that inventory such object is currently impossible. It remains very challenging, but data science can already bring help in the tracking and surveillance of the thermal panel installations. The collaboration with the domain experts is here a necessity. Indeed, such installations, especially with the image resolution, are extremely complex to confirm as such (mainly due to the confusion with electrical panels and other roof elements ). Even for the domain expert, determining if a prediction is a true positive or not is challenging and time-consuming. Without the help of domain experts, data scientists are not able to tackle such problem. Another positive outcome is the demonstration that data science can be interfaced smoothly with existing processes. This is shown with the Neuch\u00e2tel case, where the predictions can instantly be linked to the entries of the pre-existing domain expert database. This eases the domain expert assessment procedure and can also participate to assess the synchronization between the database and the reality. As a final word, the obtained deep learning model is not formally able to enter the management of the territory. It is demonstrated that the nature of the object and the available data makes the model unstable from a situation to another. This shows that the current data available is not formally enough to lead to the production of a fully working prototype able to satisfy the specifications of the domain experts. Nevertheless, such model can already perform pre-processes to ease the work of domain expert in the complex task of tracking the deployment of thermal energy generators on the Swiss territory.","title":"Conclusion and Perspectives"},{"location":"PROJ-TREEDET/","text":"Tree Detection from Point Clouds over the Canton of Geneva \u00b6 Alessandro Cerioni (Canton of Geneva) - Flann Chambers (University of Geneva) - Gilles Gay des Combes (CJBG - City of Geneva and University of Geneva) - Adrian Meyer (FHNW) - Roxane Pott (swisstopo) Proposed by the Canton of Geneva - PROJ-TREEDET May 2021 to March 2022 - Published on April 22, 2022 Abstract : Trees are essential assets, in urban context among others. Since several years, the Canton of Geneva maintains a digital inventory of isolated (or \"urban\") trees. This project aimed at designing a methodology to automatically update Geneva's tree inventory, using high-density LiDAR data and off-the-shelf software. Eventually, only the sub-task of detecting and geolocating trees was explored. Comparisons against ground truth data show that the task can be more or less tricky depending on how sparse or dense trees are. In mixed contexts, we managed to reach an accuracy of around 60%, which unfortunately is not high enough to foresee a fully unsupervised process. Still, as discussed in the concluding section there may be room for improvement. 1. Introduction \u00b6 1.1 Context \u00b6 Human societies benefits from the presence of trees in cities and their surroundings. More specifically, as far as urban contexts are concerned, trees deliver many ecosystem services such as: the reduction of heat islands, by shading and cooling their direct environment; the mitigation of flood risks, by intercepting precipitation through their foliage and increasing soil infiltration; the reduction of atmospheric pollution; the reduction of noise pollution; a positive contribution to the physical, mental and social health of the population. Moreover, they play an important role of support of the biodiversity by offering resources and shelter to numerous animal, plant and fungus species. The quality and quantity of such benefits depend on various parameters, such as the height, the age, the leaf area, the species diversity within a given population of trees. Therefore, the preservation and the development of a healthy and functional tree population is one of the key elements of those public policies which aim at increasing resilience against climate change. For these reasons, the Canton of Geneva has set the ambitious goal of increasing its canopy cover (= ratio between the area covered by foliage and the total area) from 21% (as estimated in 2019) to 30% by 2050. In order to reach this goal, the concerned authorities ( i.e. the Office cantonal de l\u2019agriculture et de la nature ) need detailed data and tools to keep track of the cantonal tree population and drive its development. The Inventaire Cantonal des Arbres Isol\u00e9s (ICA) is the most extensive and detailed source of data on isolated trees (= trees that do not grow in forests) within the Canton of Geneva. Such dataset is maintained by a joint effort of several public administrations (green spaces departments of various municipalities, the Office cantonal de l\u2019agriculture et de la nature , the Geneva Conservatory and Botanical Garden, etc.). For each tree, several attributes are provided: geographical coordinates, species, height, plantation date, trunk diameter, crown diameter, etc. To date, the ICA includes data about more than 237 000 trees. However, it comes with a host of known limitations: only the public domain is covered (no records about trees which are found within private properties); moreover, the coverage of the public domain is partial (business experts estimate that half of the actual trees are missing). The freshness of data is not consistent among the various records, as it relies on sporadic ground surveys and manual updates. Trees tagged as \"historical\" lack precision in terms of geolocation and taxonomical information. In light of Geneva's ambitions in terms of the canopy growth, the latter observations call for the need of a more efficient methodology to improve the exhaustivity and veracity of the ICA. Over the last few years, several joint projects of the Canton, the City and the University of Geneva explored the potential of using LiDAR point clouds and tailored software to characterize trees in a semi-automatic way, following practices that are already established in forestry. Yet, forest and urban settings are quite different from each other: forests exhibit higher tree density, which can hinder tree detection; forests exhibit lower heterogeneity in terms of species and morphology, which can facilitate tree detection. Hence, the task of automatic detection is likely to be harder in urban contexts than in forests. The study reported in this page, proposed by the Office cantonal de l\u2019agriculture et de la nature (OCAN) and carried out by the STDL, represents a further yet modest step ahead towards the semi-automatic digitalisation of urban trees. 1.2 Objectives \u00b6 The objectives of this project was fixed by the OCAN domain experts and, in one sentence, amount to designing a robust and reproducible semi-automatic methodology allowing one to \"know everything\" about each and every isolated tree of the Canton of Geneva, which means: detecting all the trees (exhaustivity); geolocating the trunk and the top of every tree; measuring all the properties of every tree: height, trunk and crown diameter, canopy area and volume; identify species. Regarding quality, the following requirements were fixed: Property Expected precision Trunk geolocation 1 m Top geolocation 1 m Height 2 m Trunk diameter at 1m height 10 cm Crown diameter 1 m Canopy area 1 m\u00b2 Canopy volume 1 m\u00b3 In spite of such thorough and ambitious objectives, the time span of this project was not long enough to address them all. As a matter of fact, the STDL team only managed to tackle the tree detection and trunk geolocation. 1.3 Methodology \u00b6 As shown in Figure 1.1 here below, algorithms and software exist, which can detect individual trees from point clouds. Figure 1.1: The two panels represent a sample of a point cloud before (top panel) and after (bottom) tree detection. Not only such tools take point cloud as input data, but also the values of a bunch of parameters have to be chosen by users. The quality of results depend both on input data and on input parameters. The application of some pre-processing to the input point cloud have an impact, too. Therefore, it becomes clear that in order to find the optimal configuration for a given context, one should be able to measure the quality of results as a function of the chosen parameters as well as of the pre-processing operations. To this end, the STDL team called for the acquisition of ground truth data. Further details about input data (point cloud and ground truth), software and methodology will be provided shortly. 1.4 Input data \u00b6 1.4.1 LiDAR data \u00b6 A high-density point cloud dataset was produced by the Flotron Ingenieure company, through Airborne Laser Scanning (ALS, also commonly known by the acronym LiDAR - Light Detection And Ranging). Thanks to a lateral overlap of flight lines of ~80%, more than 200 pts/m\u00b2 were collected, quite a high density when compared to more conventional acquisitions (30 \u2013 40 pts/m\u00b2). Flotron Ingenieure took care of the point cloud classification, too. The following table summarizes the main features of the dataset: LIDAR 2021 - OCAN, Flotron Ingenieure Coverage Municipalities of Ch\u00eane-Bourg and Th\u00f4nex (GE) Date of acquisition March 10, 2021 Density > 200 pts/m\u00b2 Planimetric precision 20 mm Altimetric precision 50 mm Tiles 200 tiles of 200 m x 200 m Format LAS 1.2 Classes 0 - Unclassified 2 - Ground 4 - Medium vegetation (0.5 - 3m) 5 - High vegetation (> 3m) 6 - Building 7 - Low points 10 - Error points 13 - Bridges 16 - Noise / Vegetation < 0.5m Figs. 1.2 and 1.3 represent the coverage of the dataset and a sample, respectively. Figure 1.2: Coverage and tiling of the 2021 high-density point cloud dataset. Figure 1.3: A sample of the 2021 high-density point cloud. Colors correspond to different classes: green = vegetation (classes 4 and 5), orange = buildings (class 6), grey = ground or unclassified points (class 2 and 0, respectively). 1.4.2 Test sectors and ground truth data \u00b6 In order to be able to assess the exhaustivity and quality of our results, we needed reference (or \"ground truth\") data to compare with. Following the advice of domain experts, it was decided to acquire ground truth data regarding trees within three test sectors, which represent three different types of contexts: [1] alignment of trees, [2] park, [3] a mix of [1] and [2]. Of course, these types can also be found elsewhere within the Canton of Geneva. Ground truth data was acquired through surveys conducted by geometers, who recorded the (x, y) coordinates of the trunk at 1 m above the ground; the trunk diameter at 1 m above the ground, for every tree having a trunk diameter larger than 10 cm. Details about the three test sectors are provided in the following, where statistics on species, height, age and crown diameter stem from the ICA. Avenue de Bel-Air (Ch\u00eane-Bourg, GE) \u00b6 Property Value Type Alignment of trees Trees 135 individuals Species monospecific ( Tilia tomentosa ) Height range 6 - 15 m Age range 17 - 28 yo Crown diameters 3 - 10 m Comments Well separated trees, heights and morphologies are relatively homogenous, no underlying vegetation (bushes) around the trunks. Figure 1.4: \"Avenue de Bel-Air\" test sector in Ch\u00eane-Bourg (GE). Orange dots represents ground truth trees as recorded by geometers. Parc Floraire (Ch\u00eane-Bourg, GE) \u00b6 Property Value Type Park with ornemental trees Trees 95 individuals Species 65 species Height range 1.5 - 28 m Age range Unknown Crown diameters 1 - 23 m Comments Many ornemental species of all sizes and shapes, most of them not well separated. Very heterogenous vegetation structure. Figure 1.5: \"Parc Floraire\" test sector in Ch\u00eane-Bourg (GE). Orange dots represents ground truth trees as recorded by geometers. Adrien-Jeandin (Th\u00f4nex, GE) \u00b6 Property Value Type Mixed (park, alignment of tree, tree hedges, etc.) Trees 362 individuals Species 43 species Height range 1 - 34 m Age range Unknown Crown diameters 1 - 21 m Comments Mix of different vegetation structures, such as homogenous tree alignments, dense tree hedges and park with a lot of underlying vegetation under big trees. Figure 1.6: \"Adrien-Jeandin\" test sector in Th\u00f4nex (GE). Orange dots represents ground truth trees as recorded by the geometers. 1.5 Off-the-shelf software \u00b6 Two off-the-shelf software products were used to detect trees from LiDAR data, namely TerraScan and the Digital Forestry Toolbox (DFT). The following table summarizes the main similarities and differences between the two: Feature Terrascan DFT Licence Proprietary (*) Open Source (GPL-3.0) Price See here Free Standalone No: requires MicroStation or Spatix No: requires Octave or MATLAB Graphical User Interface Yes No In-app point cloud visualization Yes (via MicroStation or Spatix ) No (**) Scriptable Partly (via macros ) Yes Hackable No Yes (*) Unfortunately, we must acknowledge that using network licenses turned out to be quite problematic. Weeks of unexpected downtime were experienced, due to puzzling issues related to the interplay between the self-hosted license server, firewalls, VPN and end-devices. (**) We used the excellent Potree Free and Open Source software for visualization. The following sections are devoted to brief descriptions of these two tools; further details will be provided in Section 4 and Section 5 . 1.5.1 Terrascan \u00b6 Terrascan is a proprietary software, developed and commercialized by Terrasolid , a MicroStation and Spatix plugin which is capable of performing several tasks on point clouds, including visualisation, classification. As far as tree detection is concerned, Terrascan offers multiple options to manually, semi- or fully-automatically detect and segment trees in point clouds; estimate the value of a host of properties (height, trunk diameter, etc.). Two methods are provided to group (one may also say \"to segment\") points into individual trees: the so-called \"highest point\" (aka \"watershed\") method, suitable for airborne point clouds. the so-called \"trunk\" method, which requires a high amount of points from trunks and hence is suitable for very high-density airborne point clouds, for mobile data and point clouds from static scanners. For further details on these two methods, we refer the reader to the official documentation . 1.5.2 Digital Forestry Toolbox (DFT) \u00b6 The Digital Forestry Toolbox (DFT) is a collection of tools and tutorials for Matlab/Octave designed to help process and analyze remote sensing data related to forests (source: official website ) developed and maintained by Matthew Parkan, released under an Open Source license (GPL-3.0). The DFT implements algorithms allowing one to perform tree top detection, via a marker-controlled watershed segmentation (cf. this tutorial ); stem detection (cf. this other tutorial ). We refer the reader to the official documentation for further information. 2. Method \u00b6 As already stated, in spite of the thorough and ambitious objectives of this project (cf. here ), only the tree detection and trunk geolocation sub-tasks could be tackled given the resources (time, humans) which were allocated to the STDL. The method we followed goes through several steps, pre-processing, running Terrascan or DFT, post-processing, which are documented here-below. 2.1 Pre-processing: point cloud reclassification and cleaning \u00b6 [1] In some cases, points corresponding to trunks may be misclassified and lay in class 0 \u2013 Unclassified instead of class 4 \u2013 Medium vegetation . As the segmentation process only takes vegetation classes (namely classes 4 and 5) into account, the lack of trunk points can make some trees \"invisibles\". [2] We suspected that the standard classification of vegetation in LiDAR point clouds could be too basic for the task at hand. Indeed, vegetation points found at less (more) than 3 m above the ground are classified as 4 \u2013 Medium Vegetation ( 5 \u2013 High Vegetation ). This may cause one potential issue: all the points of a given tree that are located at up to 3 meters above the ground (think about the trunk!) belong to a class (namely class no. 4) which can also be populated by bushes and hedges. The \"contamination\" by bushes and hedges may spoil the segmentation process, especially in situations where dense low vegetation exists around higher trees. Indeed, it was acknowledged that in such situations the segmentation algorithm fails to properly identify trunk locations and distinguish one tree from another. Issues [1] and [2] can be solved or at least mitigated by reclassifying and cleaning the input point cloud, respectively. Figures 2.1 and 2.2 show how tree grouping (or \"segmentation\") yields better results if pre-processed pointclouds are used. Figure 2.1: Tree grouping (or \"segmentation\") applied to the original (top panel) vs pre-processed (bottom) point cloud. Without pre-processing, two trees connected by a hedge are segmented as one single individual. Therefore, only one detection is made (green circle slightly above the ground). With pre-processing, we get rid of the hedge and recover the lowest trunk points belonging to the tree on the left. Eventually, both trees are properly segmented and we end up having two detections (green circles). Figure 2.2: Tree grouping (or \"segmentation\") applied to the original (left panel) vs reclassified (right) point cloud. Without pre-processing, segmentation yields a spurious detection (= false positive, red circle slightly above the ground), resulting from the combination of a pole and a hedge. With pre-processing, we get rid of most of the points belonging to the hedge and the pole; no false positive shows up. 2.1.1 Reclassification with Terrascan and FME Desktop \u00b6 The reclassification step aims at recovering trunk points which might be misclassified and hence found in some class other than class 4 \u2013 Medium Vegetation ( e.g. class 0 - Unclassified ). It was carried out with Terrascan using the Classify by normal vectors tool, which identifies linear features generated by groups of class 0 and 4 points; moves the concerned points to an empty class (here: class 10). Finally, during the cleaning process with FME Desktop (cf. Chapter 2.1.2 here below), these points are reclassified in class 4. The outcome of this reclassification step is shown in Figure 2.3. Figure 2.3: Outcome of reclassification. In the upper picture, the trunk of the tree on the left is partially misclassified, while the trunk of the tree in the middle is completely misclassified. After reclassification, almost all the points belonging to trunks are back in class 4. Let us note that the reclassification process may also recover some unwanted objects enjoying linear features similar to trees (poles, power lines, etc.). However, such spurious objects can at least partly filtered out by cleaning step described here below. 2.1.2 Cleaning point clouds with FME Desktop \u00b6 The cleaning step aims to filter as many \"non-trunk\" points as possible out of class 4 \u2013 Medium Vegetation , in order to isolate trees from other types of vegetation. Vegetation is considered as part of a tree if higher than 3 m. Cleaning consists in two steps: Every point of class 4 which is NOT vertically covered by any class 5 point ( i.e. any class 4 point which is not under a tree) is moved to another class. This filters out an important part of bushes and hedges. Only those bushes and hedges which are actually under a tree remain in class 4. Every point of class 4 which is located above a wall is moved to another class. Actually, it was noticed that many hedges were located on or against walls. This filters out some additional \"hedge points\", which may escape the first cleaning step if found straight under a tree. Note that in case the point cloud is reclassified in order to recover missing trunks, the cleaning step also allow to get rid of unwanted linear objects (poles, electric lines, etc) that have been recovered during the reclassification. The class containing reclassified points (class 10) will simply be process together with class 4 and receive the same treatment. Eventually, reclassified points that are kept (discarded) by the cleaning process will be integrated in class 4 (3). Figure 2.4: Outcome of the cleaning process. Red points correspond to the \"cleaned\" points that were moved to class 3. Figure 2.5: Outcome of the cleaning process. Red points correspond to the \"cleaned\" points that were moved to class 3. Hedges under trees escape the cleaning. 2.1.3 FME files and documentation of pre-processing steps \u00b6 More detailed information about the reclassification and cleaning of the point cloud can be found here . FME files can be downloaded by following these links: FME Workbench File (requires a Canopy Cover Layer) Alternative FME Workbench File (does not require a Canopy Cover Layer Further information on the generation of a Canopy Cover Layer can be found here . 2.2 Running Terrascan \u00b6 Terrascan offers multiple ways to detect trees from point clouds. In this project, we focused on the fully automatic segmentation, which is available through the \"Assign Groups\" command. As already said (cf. here ), two methods are available: highest point (aka \"watershed\") method and trunk method. In what follows, we introduce the reader to the various parameters that are involved in such methods. 2.2.1 Watershed method parameters \u00b6 Group planar surfaces \u00b6 Quoting the official documentation , If on, points that fit to planes are grouped. Points fitting to the same plane get the same group number. Min height \u00b6 This parameter defines a minimum threshold on the distance from the ground that the highest of a group of points must have, in order for the group to be considered as a tree. The default value is 4 meters. The Inventaire Cantonal des Arbres Isol\u00e9s includes trees which are at least 3 m high. This parameter ranged from 2 to 6 m in our tests. Figure 2.6: Cross-section view of two detected trees. The left tree would not be detected if the parameter \"Min height\" were larger than 3.5 m. Require \u00b6 This parameter defines the minimum number of points which are required to form a group ( i.e. a tree). The default value is 20 points, which is very low in light of the high density of the dataset we used. Probably, the default value is meant to be used with point clouds having a one order of magnitude smaller density. In our analysis, we tested the following values: 20 (default), 50, 200, 1000, 2000, 4000, 6000. 2.2.2 Trunk method parameters \u00b6 Group planar surfaces \u00b6 See here . Min Height \u00b6 Same role as in the watershed method, see here . Max diameter \u00b6 This parameter defines the maximum diameter (in meters) which a group of points identified as trunk can reach. Default value is 0.6 meters. Knowing that very few trees of the ICA exceed this value; yet, older trees can exhibit larger diameters, we used the following values: 0.20, 0.30, 0.40, 0.60 (default), 0.80, 1.00, 1.50 meters. Min trunk \u00b6 This parameter defines a minimum threshold on the length of tree trunks. Default value is 2 m. We tested the following values: 0.50, 1.00, 1.50, 2.00 (default), 2.50, 3.00, 4.00, 5.00 meters. Group by density \u00b6 Quoting the official documentation , If on, points are grouped based on their distance to each other. Close-by points get the same group number. Gap \u00b6 Quoting the official documentation , Distance between consecutive groups: Automatic: the software decides what points belong to one group or to another. This is recommended for objects with variable gaps, such as moving objects on a road. User fixed: the user can define a fixed distance value in the text field. This is suited for fixed objects with large distances in between, such as powerline towers. We did not attempt the optimization of this parameter but kept the default value (Auto). 2.2.3 Visualizing results \u00b6 Terrascan allows the user to visualize the outcome of the tree segmentation straight from within the Graphical User Interface. Points belonging to the same group ( i.e. to the same tree) are assigned the same random color, which allows the user to perform intuitive, quick, qualitative in-app assessments. An example is provided in Figure 2.7. Figure 2.7: Three examples of tree segmentations. From a qualitative point of view, we can acknowledge that the leftmost (rightmost) example is affected by undersegmentation (oversegmentation). The example in the middle seems to be a good compromise. 2.2.4 Exporting results \u00b6 As already said, Terrascan takes point clouds as input data and can run algorithms which form group out of these points, each group corresponding to an individual tree. A host of \"features\" (or \"measurements\"/ \"attributes\"/...) are generated for each group, which the user can export to text files using the \"Write group info\" command. The set of exported features can be customized through a dedicated configuration panel which can be found within the software settings (\"File formats / User group formats\"). The list and documentation of all the exportable features can be found here . Let us note that depending on the segmentation method, not all the features can be populated; multiple geolocation information can exist. The following table summarizes the features which the watershed and trunk methods can export: Feature Watershed Method Trunk Method Group ID Yes Yes Point Count Yes Yes Average XY Coordinates Yes Yes Ground Z at Avg. XY Yes Yes Trunk XY No Yes Ground Z at Trunk XY No Yes Trunk Diameter See here below See here below Canopy Width Yes Yes Biggest Distance above Ground (Max. Height) Yes Yes Smallest Distance above Ground Yes Yes Length Yes Yes Width Yes Yes Height Yes Yes 2.2.5 Trunk Diameters \u00b6 Terrascan integrates a functionality allowing users to measure trunk diameters (see Figure 2.8). Figure 2.8: Screenshots of the trunk diameter measurement function. Let us note that the measurement of trunk diameters can be feasible or not, depending on the number of points which sample a given trunk. We performed some rapid experiments, which showed that some diameters could actually be estimated, given the high density of the point cloud we used (cf. here ). Still, we did not analyzed the reliability of such estimations against reference/ground truth data. 2.3 Running DFT \u00b6 As already said, DFT consists of a collection of functions which can be run either with Octave or MATLAB . The former software was used in the frame of this context. A few custom Octave scripts were written to automatize the exploration of the parameter space. Our preliminary, warm-up tests showed that we could not obtain satisfactory results by using the \"tree top detection method\" (cf. here ). Indeed, upon using this method the F1-score topped at around 40%. Therefore, we devoted our efforts to exploring the parameter space of the other available method, namely the \"tree stem detection method\" (cf. this tutorial ). In the following, we provide a brief description of the various parameters involved in such a detection method. 2.3.2 Parameters concerned by the tree stem detection method \u00b6 Quoting the official tutorial , The stem detection algorithm uses the planimetric coordinates and height of the points above ground as an input. To compute the height, DFT provides a function called elevationModels , which takes the classified 3D point cloud as input, as well as some parameters. Regarding these parameters, we stuck to the values suggested by the official tutorial, except for the cellSize parameter (= size of the raster cells) which was set to 0.8 (meters); the searchRadius parameter which was set to 10 (meters). Once that each point is assigned an height above the ground, the actual tree stem detection algorithm can be invoked ( treeStems DFT function, cf. DFT Tree Stem Detection Tutorial / Step 4 - Detect the stems ), which takes a host of parameters. While referring the reader to the official tutorial for the definition of these parameters, we provide the list of values we used (unit = meters): Parameter Value cellSize 0.9 bandWidth 0.7 verticalStep 0.15 searchRadius from 1 to 6, step = 0.5 minLength from 1 to 6, step = 0.5 searchRadius ( minLength ) was fixed to 4 (meters) when minLength ( searchRadius ) was let vary between 1 and 6 meters. 2.3.3 Visualizing results \u00b6 DFT does not include any specific Graphical User Interface. Still, users can rely on Octave/MATLAB to generate plots, something useful and clever especially when performing analysis in an interactive way. In our case, DFT was used in a non-interactive way and visualisation was delayed until the assessment step, which we describe in Section 2.4 . 2.3.4 Exporting results \u00b6 Thanks to the vast Octave/MATLAB ecosystem, DFT results can be output to disk in several ways and using data formats. More specifically, we used the ESRI Shapefile file format to export the average (x, y) coordinates of the detected stems/peaks. 2.3.5 Trunk diameters \u00b6 This feature is missing in DFT. 2.4 Post-processing: assessment algorithm and metrics computation \u00b6 As already said, the STDL used a couple of third-party tools, namely TerraScan and the Digital Forestry Toolbox (DFT) , in order to detect trees from point clouds. Both tools can output a segmented point cloud, in which points associated to the same tree are assigned the same identifier; one (X, Y, Z) triplet per detected tree, where the X, Y and Z (optional) coordinates are computed either as the centroid of all the points which get associated to a given tree, or - under some conditions - as the centroid of the trunk only; expressed in the same reference system as the input point cloud. As the ground truth data the STDL was provided with take the form of one (X', Y') pair per tree, with Z' implicitly equal to 1 meter above the ground, the comparison between detections and ground truth trees could only be performed on the common ground of 2D space. In other words, we could not assess the 3D point clouds segmentations obtained by either TerraScan or DFT against reference/ground truth segmentations in the 3D space. The problem which needed to be solved amounts to finding matching and unmatching items between two sets of 2D points: a 1st set including the (X', Y') coordinates of ground truth trees; a 2nd set including the (X, Y) coordinates of detected trees. In order to fulfill the requirement of a 1 meter accuracy which was set by the beneficiaries of this project, the following matching rule was adopted: a detection (D) matches a ground truth tree (GT) (and vice versa) if and only if the Cartesian distance between D and GT is less or equal to 1 meter Figure 2.9 shows how such a rule would allow one to tag detections as either True Positives (TPs) or False Positives (FPs) ground truth trees as either True Positives (TPs) or False Negatives (FNs) in the most trivial case. Figure 2.9: Tagging as True Positive (TP), False Positive (FP), False Negative (FN) ground truth and detected trees in the most trivial case. Actually, far less trivial cases can arise, such as the one illustrated in Figure 2.10. Figure 2.10: Only one detection can exist for two candidate ground truth trees, or else two detections can exist for only one candidate ground truth tree. The STDL designed and implemented an algorithm, which would produce relevant TP, FP, FN tags and counts even in such more complex cases. For instance, in a setting like the one in the image here above, one would expect the algorithm to count 2 TPs, 1 FP, 1 FN. Details are provided here below. 2.4.1 The tagging and counting algorithm \u00b6 1st step: geohash detections and ground truth trees \u00b6 In order to keep track of the various detections and ground truth trees all along the execution of the assessment algorithm, each item is given a unique identifier, computed as the geohash of its coordinates, using the pygeohash Python module. Such identifier is not only unique (as far as a sufficiently high precision is used), but also stable across subsequent executions. The latter property allows analysts to \"synchronise\" the concerned objects between the output of the (Python) code and the views generated with GIS tools such as QGIS , which turns out to be quite useful especially at development and debugging time. 2nd step: convert point detections to circles \u00b6 As a 2nd step, each detection is converted to a circle, centered on the (X, Y) coordinates of the detection; having a 1 m radius. This operation can be accomplished by generating a 1 m buffer around each detection. For the sake of precision, this method was used, which generates a polygonal surface approximating the intended circle. 3rd step: perform left and right outer spatial joins \u00b6 As a 3rd step, the following two spatial joins are computed: left outer join between the circles generated at the previous step and ground truth trees; right outer join between the same two operands. In both cases, the \"intersects\" operation is used (cf. this page for more technical details). 4th step: tag trivial False Positives and False Negatives \u00b6 All those detections output by the left outer join for which no right attribute exists (in particular, we focus on the right geohash) can trivially be tagged as FPs. As a matter of fact, this means that the 1 m circular buffer surrounding the detection does not intersect any ground truth tree; in other words, that no ground truth tree can be found within 1 m from the detection. The same reasoning leads to trivially tagging as FNs all those ground truth trees output by the right outer join for which no left attribute exists. These cases correspond to the two rightmost items in Fig. 6.1. For reasons which will be clarified here below, the algorithm does not actually tag items as either FPs or FNs; instead, TP and FP \"charges\" are assigned to detected trees; TP and FN charges are assigned to ground truth trees. Here's how: for FP detected trees: TP charge FP charge 0 1 for FN ground truth trees: TP charge FN charge 0 1 5th step: tag non-trivial False Positives and False Negatives \u00b6 The left outer spatial join performed at step 3 establishes relations between each detection and those ground truth trees which are located no further than 1 meter, as shown in Figure 2.11. Figure 2.11: The spatial join between buffered detections and ground truth trees establishes relations between groups of items of these two populations. In the sample setting depicted in this picture, two unrelated groups can be found. The example here above shows 4 relations, D1 - GT1, D1 - GT2, D2 - GT3, D3 - GT3 which can be split (see the red dashed line) into two unrelated, independent groups: {D1 - GT1, D1 - GT2} {D2 - GT3, D3 - GT3} In order to generate this kind of groups in a programmatic way, the algorithm first builds a graph out of the relations established by the left outer spatial join, then it extracts the connected components of such a graph (cf. this page ). The tagging and counting of TPs, FPs, FNs is performed on a per-group basis, according to the following strategy: if a group contains more ground truth than detected trees, then the group is assigned an excess \"FN charge\", equal to the difference between the number of ground truth trees and detected trees. This excess charge is then divided by the number of ground truth trees and the result assigned to each of them. For instance, the {D1 - GT1, D1 - GT2} group in the image here above would be assigned an FN charge equal to 1; then, each ground truth tree would be assigned an FN charge equal to 1/2. Similarly, if a group contains more detected trees than ground truth trees, then the group is assigned an excess FP charge, equal to the difference between the number of detected trees and ground truth trees. This excess charge is then divided by the number of detections and the result assigned to each of them. For instance, the {D2 - GT3, D3 - GT3} group in the image here above would be assigned an excess FN charge equal to 1; then, each detection would be assigned an FP charge equal to 1/2. In case the number of ground truth trees be the same as the number of detections, no excess FN/FP charge is assigned to the group. Concerning the assignment of TP charges, the per-group budget is established as the minimum between the number of ground truth and detected trees, then equally split between the items of these two populations. In the example above, both groups would be assigned TP charge = 1. Wrapping things up, here are the charges which the algorithm would assign to the various items of the example here above: item TP charge FP charge Total charge D1 1 0 1 D2 1/2 1/2 1 D3 1/2 1/2 1 Sum 2 1 3 item TP charge FN charge Total charge GT1 1/2 1/2 1 GT2 1/2 1/2 1 GT3 1 0 1 Sum 2 1 3 Let us note that: the count of TPs yields the same result, whether we consider detections or ground truth trees, which makes sense; the \"Total charge\" column allows one to check the consistency of the algorithm; as expected, we obtain 2 FPs, 1 FP, 1 FN; the algorithm does not even attempt to establish 1:1 relations, \"optimal\" in a given sense, between ground truth and detected trees. As a matter of fact, the algorithm is designed to produce meaningful counts and tags only; of course, the algorithm also works in far more complex settings than the one depicted in Figs. 6.2 and 6.3. 2.4.2 From counts to metrics \u00b6 TP, FP, FN counts are extensive properties, out of which we can compute some standard metrics such as precision recall F1-score which are intensive, instead. While referring the reader to this paragraph for the definition of these metrics, let us state the interpretation which holds in the present use case: precision is optimal (= 1.0) if and only if (iff) all the detections are matched by ground truth trees (no FPs); recall is optimal (= 1.0) iff all the ground truth trees are detected (no FNs). Typically, one cannot optimize both precision and recall for the same values of a set of parameters. Instead, they can exhibit opposite trends as a function of a given parameter ( e.g. precision increases while recall decreases). In such cases, the F1-score would exhibit convexity and could be optimized. 3. Results and discussion \u00b6 Figure 3.1 shows some of the tree detection trials we performed, using Terrascan and DFT. Each trial corresponds to a different set of parameters and is represented either by gray dots or colored diamonds in a precision-recall plot (see the image caption for further details). Figure 3.1: Precision vs. Recall of a subset of the tree detections we attempted, using different parameters in Terrascan and DFT. Colored diamonds represent the starting point (red) as well as our \"last stops\" in the parameter space, with (yellow, green) and without (orange) pre-processing. All the three test sectors are here combined. Let us note that: the DFT parameter space can be conveniently explored by scripting the batch execution of various runs; on the contrary, the exploration of the Terrascan parameter space is more laborious, has to be performed manually, trying out one specific set of parameters after another, with repeated manual export of features (including geographical coordinates) in between. Indeed, although Terrascan let users define macros, unfortunately the \"Write Group Info\" command cannot be used in macros; in both cases, the parameter space was explored in quite an heuristic and partial way; we aimed at optimizing the F1-score all sectors combined. More detailed comments follow, concerning the best trials made with Terrascan and DFT. 3.1 The best trial made with Terrascan \u00b6 Among the trials we ran with Terrascan, the one which yielded the best F1-score was obtained using the following parameters: Parameter Value Method / Algorithm Trunk Classes 4+5, cleaned and reclassified Group planar surfaces Off Min height 3.00 m Max diameter 0.40 m Min trunk 3.00 m Group by density On Gap Auto Require 1500 pts This trial corresponds to the green diamond shown in Figure 3.1. Figure 3.2: Test sectors as segmented by the best trial made with Terrascan. Figure 3.2 provides a view of the outcome on the three test sectors. Metrics read as follows: Sector TP FP FN Detectable (TP+FN) Precision Recall F1-Score Global 323 137 234 557 70.2% 58.0% 63.5% Adrien-Jeandin 177 69 160 337 72.0% 52.5% 60.7% Bel-Air 114 15 11 125 88.4% 91.2% 89.8% Floraire 32 53 63 89 37.6% 33.7% 35.6% Figure 3.3 provides a graphical representation of the same findings, with the addition of the metrics we computed before cleaning and reclassifying the LiDAR point cloud. Figure 3.3: Cleaning and reclassifying the point cloud has a positive influence on precision and recall, although modest. Our results confirm that the tree detection task is more or less hard depending on the sector at hand. Without any surprise, we acknowledge that: the \"Avenue de Bel-Air\" test sector (BEL), enjoying an alley of well-separated trees, is easily tackled by Terrascan. Quite decent precision and recall are obtained. In contrast, the \"Parc Floraire\" test sector (FLO) turns out to be the hardest one, given the vegetation density and heterogeneity. The \"Adrien-Jeandin\" (ADR) is actually a mix of dense and sparse contexts and turns out to be a good proxy for the global performance. Cleaning and Reclassification have a benificial impact on Precision and Recall for all sectors as well as the global context (TOT). While for BEL mainly Recall profited from preprocessing, ADR and FLO showed a stronger increase in Precision. For the global context both, Precision and Recall, could be increased slighty. Figure 3.4: The F1-score attained by our best Terrascan trial. Figure 3.4 shows how our best Terrascan trial performed in terms of F1-score: globally, on a per-sector basis; with and without pre-processing. We can notice that pre-processing slightly improves the F1-score for the global context as well as for the individual sectors. The largest impact was observed for the Bel-Air sector, especially for preprocessing including Reclassification. 3.2 The best trial made with DFT \u00b6 The DFT trial yielding the highest global F1-score was obtained using the stem detection method and the following parameters: Parameter Value Method / Algorithm Stem detection Classes 4+5, cleaned and reclassified Search radius 4.00 Minimum length 4.00 Here's a summary of the resulting metrics: Sector Precision Recall F1-score Adrien-Jeandin 75.4% 36.5% 49.2% Bel-Air 88.0% 82.4% 85.1% Floraire 47.9% 36.8% 41.7% Global 74.0% 46.6% 57.2% Similar comments to those formulated here apply: the \"Avenue de Bel-Air\" sector remains the easiest to process; \"Parc Floraire\" the hardest. However, here we acknowledge a bigger gap between the global F1-score and the F1-score related to the \"Adrien-Jeandin\" test sector. Figure 3.5 shows how our best DFT trial performed in terms of F1-score: globally, on a per-sector basis; with and without pre-processing. We can notice that the impact of point cloud reclassification can be slightly positive or negative depending on the test sector. Figure 3.5: The F1-score attained by our best DFT trial. 3.3 Comparison: Terrascan vs. DFT \u00b6 Figure 3.6: Comparison of Terrascan and DFT in terms of F1-score. The comparison of the best Terrascan trial vs. the best DFT trial in terms of F1-score shows that there is no clear winner (see Figure 3.6). Still, we can notice that: DFT reaches the best F1-score ever in the \"Parc Floraire\" (\"Avenue de Bel-Air\") sector, without (with) pre-processing. Terrascan performs slightly better on global scores and substantially better on the mixed context of the Adrien-Jeandin sector,especially after pre-processing. 3.4 Trials with standard-density datasets \u00b6 In addition to applying our method to the 2021 high-density (HD) LiDAR dataset, we also tried using two other datasets exhibiting a by far more standard point density (20-30 pt/m\u00b2): Nuage de points LiDAR 2017 Nuage de points LiDAR 2019 The goal was twofold: finding evidence for the added value of high-density (HD) datasets, despite their higher cost; checking whether the parameters which turned out to yield optimal scores with HD LiDAR data could also yield acceptable results if used with standard-density (SD) datasets. Concerning the 1st point, lower point densities make the \"trunk method\" unreliable (if not completely unusable). In Figure 3.7, we report results obtained with the watershed method, along with results related to the best performing trials obtained with the 2021 HD dataset. The scores we obtained with the SD dataset are far below the best we obtained with the HD dataset, confirming the interest of high-density acquisitions. Figure 3.7: Comparison of F1-scores of the best performing trials. Parameters were optimized for each model individually. Concerning the 2nd point, without any surprise we confirmed that parameters must be re-optimized for SD datasets. The usage of the set of parameters which were optimized on the basis of the HD dataset yielded poor results, as shown in Figure 3.8. Figure 3.8: Using the parameters which were optimized for the high-density dataset leads to poor results (strong under-segmentation) on SD datasets. In accordance with the TS documentation we can see that the trunk method is unusable for lower and medium density datasets. The watershed algorithm produces a more realistic segmentation pattern on the SD dataset but still cannot reach the performance levels of the trunk or the watershed method on the HD dataset. After optimizing parameters, we could obtain quite decent results though (see Figure 3.9). Figure 3.9: After a dataset-specific parameter optimization, convincing results can be achieved on the medium-density 2019 dataset (Terrascan's watershed method was used). 3.5 Tree detection over the full 2021 high-density LiDAR dataset \u00b6 Clearly, from a computational point of view processing large point cloud dataset is not the same as processing small datasets. Given the extremely high density of the 2021 LiDAR datasets, we wanted to check whether and how Terrascan could handle such a resource-intensive task. Thanks to Terrascan's macro actions, one can split the task into a set of smaller sub-tasks, each sub-task dealing with a \"tile\" of the full dataset. Additionally, Terrascan integrates quite a smart feature, which automatically merges groups of points ( i.e. trees) spanning multiple tiles. Figure 3.10 provides a static view of the results we obtained, using the parameters which globally performed the best on the three sectors. We refer the reader to this Potree viewer (kindly hosted by the G\u00e9oportail du SITN ) for an interactive view. Figure 3.10: Result of the application of the best performing Terrascan parameters to the full dataset. 4. Conclusion and outlook \u00b6 Despite all the efforts documented here above, the results we obtained are not as satisfactory as expected. Indeed, the metrics we managed to attain all sectors combined indicate that tree detections are neither reliable (low precision) nor exhaustive (low recall). Still, we think that results may be improved by further developing some ideas, which we sketch in the following. 4.1 Further the DFT parameter space exploration \u00b6 We devoted much more time to exploring Terrascan's parameter space than DFT's. Indeed, as already stated here , we only explored the two parameters searchRadius and minLenght . Other parameters such as cellSize , bandwidth and verticalStep were not explored at all (we kept default values). We think it is definitely worth exploring these other parameters, too. Moreover, we did not try feeding all the LiDAR returns to the stem detection method, we only used the last returns. It is surely worth checking whether the usage of the other returns could be beneficial. Upon using the peak detection method, we did not manage to reach a better F1-score than ~40%, as opposed to the 57% obtained with the stem detection method. However, the peak detection method is particularly interesting because it can also delimit canopies. Hence, it may be worth trying to improve the F1-score, for instance by tuning the parameters of the power law equation relating the crown radius to the tree height (cf. here ). 4.2 Exploit contextual information \u00b6 We showed that the algorithms implemented by TerraScan and DFT yield much better results in sparse contexts (ex.: the \"Avenue de Bel-Air\" test sector) than in dense ones (ex.: the \"Parc Floraire\" test sector). This means that precision may be improved (at the expense of recall, though) if one could restrain the tree detection to sparse contexts only, either as a pre- or post-processing step. We can think of at least a couple of methods which would allow one to (semi-)automatically tell sparse from dense contexts: intrinsic method: after segmenting the point cloud into individual trees, one could analyze how close (far) each individual is to (from) the nearest neighbor and estimate the density of trees on some 2D or 3D grid; extrinsic method: territorial data exist (see for instance the dataset \"Carte de couverture du sol selon classification OTEMO\" distributed by the SITG ), providing information about urban planning and land use ( e.g . roads, parks, sidewalks, etc.). These data may be analyzed in order to extract hints on how likely it is for a tree to be in close proximity with another, according to its position. 4.3 Combine detections stemming from two or more independent trials \u00b6 Detections coming from two or more independent trials (obtained with different software or else with the same software but different parameters) could be combined in order to improve either precision or recall: recall would be improved (i.e. the number of false negatives would be reduced) if detections coming from multiple trials were merged. In order to prevent double counting, two or more detections coming from two or more sources could be counted as just one if they were found within a given distance from each other. The algorithm would follow along similar lines as the ones which led us to the \"tagging and counting algorithm\" presented here above ; precision would be improved (i.e. the number of false positives would be reduced) if we considered only those detections for which a consensus could be established among two or more trials, and discarded the rest. A distance-based criterion could be used to establish such consensus, along similar lines as those leading to our \"tagging and counting algorithm\" . 4.4 Use generic point cloud segmentation algorithms \u00b6 Generic ( i.e. not tailored for tree detection) clustering algorithms exist, such as DBSCAN (\"Density-Based Spatial Clustering of Applications with Noise\", see e.g. here ), which could be used to segment a LiDAR point cloud into individual trees. We think it would be worth giving these algorithms a try! 4.5 Use Machine Learning \u00b6 The segmentation algorithms we used in this project do not rely on Machine Learning. Yet, alternative/complementary approaches might me investigated, in which a point cloud segmentation model would be first trained on reference data, then used to infer tree segmentations within a given area of interest. For instance, it would be tempting to test this Deep Learning model published by ESRI and usable with their ArcGIS Pro software. It would be also worth deep diving into this research paper and try replicating the proposed methodology. Regarding training data, we could generate a ground truth dataset by using our best TerraScan/DFT model to segment the 3D point cloud; using 2D ground truth data to filter out wrong segmentations. 5. Other resources \u00b6 The work documented here was the object of a Forum SITG which took place online on March 29, 2022. Videos and presentation materials can be found here . 6. Acknowledgements \u00b6 This project was made possible thanks to a tight collaboration between the STDL team and some experts of the Canton of Neuch\u00e2tel (NE), the Canton of Geneva (GE), the Conservatoire et Jardin botaniques de la Ville de Gen\u00e8ve (CJBG) and the University of Geneva (UNIGE). The STDL team acknowledges key contributions from Marc Riedo (SITN, NE), Bertrand Favre (OCAN, GE), Nicolas Wyler (CJBG) and Gregory Giuliani (UNIGE). We also wish to warmly thank Matthew Parkan for developing, maintaining and advising us on the Digital Forestry Toolbox .","title":" Tree Detection from Point Clouds over the Canton of Geneva "},{"location":"PROJ-TREEDET/#tree-detection-from-point-clouds-over-the-canton-of-geneva","text":"Alessandro Cerioni (Canton of Geneva) - Flann Chambers (University of Geneva) - Gilles Gay des Combes (CJBG - City of Geneva and University of Geneva) - Adrian Meyer (FHNW) - Roxane Pott (swisstopo) Proposed by the Canton of Geneva - PROJ-TREEDET May 2021 to March 2022 - Published on April 22, 2022 Abstract : Trees are essential assets, in urban context among others. Since several years, the Canton of Geneva maintains a digital inventory of isolated (or \"urban\") trees. This project aimed at designing a methodology to automatically update Geneva's tree inventory, using high-density LiDAR data and off-the-shelf software. Eventually, only the sub-task of detecting and geolocating trees was explored. Comparisons against ground truth data show that the task can be more or less tricky depending on how sparse or dense trees are. In mixed contexts, we managed to reach an accuracy of around 60%, which unfortunately is not high enough to foresee a fully unsupervised process. Still, as discussed in the concluding section there may be room for improvement.","title":" Tree Detection from Point Clouds over the Canton of Geneva "},{"location":"PROJ-TREEDET/#1-introduction","text":"","title":"1. Introduction"},{"location":"PROJ-TREEDET/#11-context","text":"Human societies benefits from the presence of trees in cities and their surroundings. More specifically, as far as urban contexts are concerned, trees deliver many ecosystem services such as: the reduction of heat islands, by shading and cooling their direct environment; the mitigation of flood risks, by intercepting precipitation through their foliage and increasing soil infiltration; the reduction of atmospheric pollution; the reduction of noise pollution; a positive contribution to the physical, mental and social health of the population. Moreover, they play an important role of support of the biodiversity by offering resources and shelter to numerous animal, plant and fungus species. The quality and quantity of such benefits depend on various parameters, such as the height, the age, the leaf area, the species diversity within a given population of trees. Therefore, the preservation and the development of a healthy and functional tree population is one of the key elements of those public policies which aim at increasing resilience against climate change. For these reasons, the Canton of Geneva has set the ambitious goal of increasing its canopy cover (= ratio between the area covered by foliage and the total area) from 21% (as estimated in 2019) to 30% by 2050. In order to reach this goal, the concerned authorities ( i.e. the Office cantonal de l\u2019agriculture et de la nature ) need detailed data and tools to keep track of the cantonal tree population and drive its development. The Inventaire Cantonal des Arbres Isol\u00e9s (ICA) is the most extensive and detailed source of data on isolated trees (= trees that do not grow in forests) within the Canton of Geneva. Such dataset is maintained by a joint effort of several public administrations (green spaces departments of various municipalities, the Office cantonal de l\u2019agriculture et de la nature , the Geneva Conservatory and Botanical Garden, etc.). For each tree, several attributes are provided: geographical coordinates, species, height, plantation date, trunk diameter, crown diameter, etc. To date, the ICA includes data about more than 237 000 trees. However, it comes with a host of known limitations: only the public domain is covered (no records about trees which are found within private properties); moreover, the coverage of the public domain is partial (business experts estimate that half of the actual trees are missing). The freshness of data is not consistent among the various records, as it relies on sporadic ground surveys and manual updates. Trees tagged as \"historical\" lack precision in terms of geolocation and taxonomical information. In light of Geneva's ambitions in terms of the canopy growth, the latter observations call for the need of a more efficient methodology to improve the exhaustivity and veracity of the ICA. Over the last few years, several joint projects of the Canton, the City and the University of Geneva explored the potential of using LiDAR point clouds and tailored software to characterize trees in a semi-automatic way, following practices that are already established in forestry. Yet, forest and urban settings are quite different from each other: forests exhibit higher tree density, which can hinder tree detection; forests exhibit lower heterogeneity in terms of species and morphology, which can facilitate tree detection. Hence, the task of automatic detection is likely to be harder in urban contexts than in forests. The study reported in this page, proposed by the Office cantonal de l\u2019agriculture et de la nature (OCAN) and carried out by the STDL, represents a further yet modest step ahead towards the semi-automatic digitalisation of urban trees.","title":"1.1 Context"},{"location":"PROJ-TREEDET/#12-objectives","text":"The objectives of this project was fixed by the OCAN domain experts and, in one sentence, amount to designing a robust and reproducible semi-automatic methodology allowing one to \"know everything\" about each and every isolated tree of the Canton of Geneva, which means: detecting all the trees (exhaustivity); geolocating the trunk and the top of every tree; measuring all the properties of every tree: height, trunk and crown diameter, canopy area and volume; identify species. Regarding quality, the following requirements were fixed: Property Expected precision Trunk geolocation 1 m Top geolocation 1 m Height 2 m Trunk diameter at 1m height 10 cm Crown diameter 1 m Canopy area 1 m\u00b2 Canopy volume 1 m\u00b3 In spite of such thorough and ambitious objectives, the time span of this project was not long enough to address them all. As a matter of fact, the STDL team only managed to tackle the tree detection and trunk geolocation.","title":"1.2 Objectives"},{"location":"PROJ-TREEDET/#13-methodology","text":"As shown in Figure 1.1 here below, algorithms and software exist, which can detect individual trees from point clouds. Figure 1.1: The two panels represent a sample of a point cloud before (top panel) and after (bottom) tree detection. Not only such tools take point cloud as input data, but also the values of a bunch of parameters have to be chosen by users. The quality of results depend both on input data and on input parameters. The application of some pre-processing to the input point cloud have an impact, too. Therefore, it becomes clear that in order to find the optimal configuration for a given context, one should be able to measure the quality of results as a function of the chosen parameters as well as of the pre-processing operations. To this end, the STDL team called for the acquisition of ground truth data. Further details about input data (point cloud and ground truth), software and methodology will be provided shortly.","title":"1.3 Methodology"},{"location":"PROJ-TREEDET/#14-input-data","text":"","title":"1.4 Input data"},{"location":"PROJ-TREEDET/#15-off-the-shelf-software","text":"Two off-the-shelf software products were used to detect trees from LiDAR data, namely TerraScan and the Digital Forestry Toolbox (DFT). The following table summarizes the main similarities and differences between the two: Feature Terrascan DFT Licence Proprietary (*) Open Source (GPL-3.0) Price See here Free Standalone No: requires MicroStation or Spatix No: requires Octave or MATLAB Graphical User Interface Yes No In-app point cloud visualization Yes (via MicroStation or Spatix ) No (**) Scriptable Partly (via macros ) Yes Hackable No Yes (*) Unfortunately, we must acknowledge that using network licenses turned out to be quite problematic. Weeks of unexpected downtime were experienced, due to puzzling issues related to the interplay between the self-hosted license server, firewalls, VPN and end-devices. (**) We used the excellent Potree Free and Open Source software for visualization. The following sections are devoted to brief descriptions of these two tools; further details will be provided in Section 4 and Section 5 .","title":"1.5 Off-the-shelf software"},{"location":"PROJ-TREEDET/#2-method","text":"As already stated, in spite of the thorough and ambitious objectives of this project (cf. here ), only the tree detection and trunk geolocation sub-tasks could be tackled given the resources (time, humans) which were allocated to the STDL. The method we followed goes through several steps, pre-processing, running Terrascan or DFT, post-processing, which are documented here-below.","title":"2. Method"},{"location":"PROJ-TREEDET/#21-pre-processing-point-cloud-reclassification-and-cleaning","text":"[1] In some cases, points corresponding to trunks may be misclassified and lay in class 0 \u2013 Unclassified instead of class 4 \u2013 Medium vegetation . As the segmentation process only takes vegetation classes (namely classes 4 and 5) into account, the lack of trunk points can make some trees \"invisibles\". [2] We suspected that the standard classification of vegetation in LiDAR point clouds could be too basic for the task at hand. Indeed, vegetation points found at less (more) than 3 m above the ground are classified as 4 \u2013 Medium Vegetation ( 5 \u2013 High Vegetation ). This may cause one potential issue: all the points of a given tree that are located at up to 3 meters above the ground (think about the trunk!) belong to a class (namely class no. 4) which can also be populated by bushes and hedges. The \"contamination\" by bushes and hedges may spoil the segmentation process, especially in situations where dense low vegetation exists around higher trees. Indeed, it was acknowledged that in such situations the segmentation algorithm fails to properly identify trunk locations and distinguish one tree from another. Issues [1] and [2] can be solved or at least mitigated by reclassifying and cleaning the input point cloud, respectively. Figures 2.1 and 2.2 show how tree grouping (or \"segmentation\") yields better results if pre-processed pointclouds are used. Figure 2.1: Tree grouping (or \"segmentation\") applied to the original (top panel) vs pre-processed (bottom) point cloud. Without pre-processing, two trees connected by a hedge are segmented as one single individual. Therefore, only one detection is made (green circle slightly above the ground). With pre-processing, we get rid of the hedge and recover the lowest trunk points belonging to the tree on the left. Eventually, both trees are properly segmented and we end up having two detections (green circles). Figure 2.2: Tree grouping (or \"segmentation\") applied to the original (left panel) vs reclassified (right) point cloud. Without pre-processing, segmentation yields a spurious detection (= false positive, red circle slightly above the ground), resulting from the combination of a pole and a hedge. With pre-processing, we get rid of most of the points belonging to the hedge and the pole; no false positive shows up.","title":"2.1 Pre-processing: point cloud reclassification and cleaning"},{"location":"PROJ-TREEDET/#22-running-terrascan","text":"Terrascan offers multiple ways to detect trees from point clouds. In this project, we focused on the fully automatic segmentation, which is available through the \"Assign Groups\" command. As already said (cf. here ), two methods are available: highest point (aka \"watershed\") method and trunk method. In what follows, we introduce the reader to the various parameters that are involved in such methods.","title":"2.2 Running Terrascan"},{"location":"PROJ-TREEDET/#23-running-dft","text":"As already said, DFT consists of a collection of functions which can be run either with Octave or MATLAB . The former software was used in the frame of this context. A few custom Octave scripts were written to automatize the exploration of the parameter space. Our preliminary, warm-up tests showed that we could not obtain satisfactory results by using the \"tree top detection method\" (cf. here ). Indeed, upon using this method the F1-score topped at around 40%. Therefore, we devoted our efforts to exploring the parameter space of the other available method, namely the \"tree stem detection method\" (cf. this tutorial ). In the following, we provide a brief description of the various parameters involved in such a detection method.","title":"2.3 Running DFT"},{"location":"PROJ-TREEDET/#24-post-processing-assessment-algorithm-and-metrics-computation","text":"As already said, the STDL used a couple of third-party tools, namely TerraScan and the Digital Forestry Toolbox (DFT) , in order to detect trees from point clouds. Both tools can output a segmented point cloud, in which points associated to the same tree are assigned the same identifier; one (X, Y, Z) triplet per detected tree, where the X, Y and Z (optional) coordinates are computed either as the centroid of all the points which get associated to a given tree, or - under some conditions - as the centroid of the trunk only; expressed in the same reference system as the input point cloud. As the ground truth data the STDL was provided with take the form of one (X', Y') pair per tree, with Z' implicitly equal to 1 meter above the ground, the comparison between detections and ground truth trees could only be performed on the common ground of 2D space. In other words, we could not assess the 3D point clouds segmentations obtained by either TerraScan or DFT against reference/ground truth segmentations in the 3D space. The problem which needed to be solved amounts to finding matching and unmatching items between two sets of 2D points: a 1st set including the (X', Y') coordinates of ground truth trees; a 2nd set including the (X, Y) coordinates of detected trees. In order to fulfill the requirement of a 1 meter accuracy which was set by the beneficiaries of this project, the following matching rule was adopted: a detection (D) matches a ground truth tree (GT) (and vice versa) if and only if the Cartesian distance between D and GT is less or equal to 1 meter Figure 2.9 shows how such a rule would allow one to tag detections as either True Positives (TPs) or False Positives (FPs) ground truth trees as either True Positives (TPs) or False Negatives (FNs) in the most trivial case. Figure 2.9: Tagging as True Positive (TP), False Positive (FP), False Negative (FN) ground truth and detected trees in the most trivial case. Actually, far less trivial cases can arise, such as the one illustrated in Figure 2.10. Figure 2.10: Only one detection can exist for two candidate ground truth trees, or else two detections can exist for only one candidate ground truth tree. The STDL designed and implemented an algorithm, which would produce relevant TP, FP, FN tags and counts even in such more complex cases. For instance, in a setting like the one in the image here above, one would expect the algorithm to count 2 TPs, 1 FP, 1 FN. Details are provided here below.","title":"2.4 Post-processing: assessment algorithm and metrics computation"},{"location":"PROJ-TREEDET/#3-results-and-discussion","text":"Figure 3.1 shows some of the tree detection trials we performed, using Terrascan and DFT. Each trial corresponds to a different set of parameters and is represented either by gray dots or colored diamonds in a precision-recall plot (see the image caption for further details). Figure 3.1: Precision vs. Recall of a subset of the tree detections we attempted, using different parameters in Terrascan and DFT. Colored diamonds represent the starting point (red) as well as our \"last stops\" in the parameter space, with (yellow, green) and without (orange) pre-processing. All the three test sectors are here combined. Let us note that: the DFT parameter space can be conveniently explored by scripting the batch execution of various runs; on the contrary, the exploration of the Terrascan parameter space is more laborious, has to be performed manually, trying out one specific set of parameters after another, with repeated manual export of features (including geographical coordinates) in between. Indeed, although Terrascan let users define macros, unfortunately the \"Write Group Info\" command cannot be used in macros; in both cases, the parameter space was explored in quite an heuristic and partial way; we aimed at optimizing the F1-score all sectors combined. More detailed comments follow, concerning the best trials made with Terrascan and DFT.","title":"3. Results and discussion"},{"location":"PROJ-TREEDET/#31-the-best-trial-made-with-terrascan","text":"Among the trials we ran with Terrascan, the one which yielded the best F1-score was obtained using the following parameters: Parameter Value Method / Algorithm Trunk Classes 4+5, cleaned and reclassified Group planar surfaces Off Min height 3.00 m Max diameter 0.40 m Min trunk 3.00 m Group by density On Gap Auto Require 1500 pts This trial corresponds to the green diamond shown in Figure 3.1. Figure 3.2: Test sectors as segmented by the best trial made with Terrascan. Figure 3.2 provides a view of the outcome on the three test sectors. Metrics read as follows: Sector TP FP FN Detectable (TP+FN) Precision Recall F1-Score Global 323 137 234 557 70.2% 58.0% 63.5% Adrien-Jeandin 177 69 160 337 72.0% 52.5% 60.7% Bel-Air 114 15 11 125 88.4% 91.2% 89.8% Floraire 32 53 63 89 37.6% 33.7% 35.6% Figure 3.3 provides a graphical representation of the same findings, with the addition of the metrics we computed before cleaning and reclassifying the LiDAR point cloud. Figure 3.3: Cleaning and reclassifying the point cloud has a positive influence on precision and recall, although modest. Our results confirm that the tree detection task is more or less hard depending on the sector at hand. Without any surprise, we acknowledge that: the \"Avenue de Bel-Air\" test sector (BEL), enjoying an alley of well-separated trees, is easily tackled by Terrascan. Quite decent precision and recall are obtained. In contrast, the \"Parc Floraire\" test sector (FLO) turns out to be the hardest one, given the vegetation density and heterogeneity. The \"Adrien-Jeandin\" (ADR) is actually a mix of dense and sparse contexts and turns out to be a good proxy for the global performance. Cleaning and Reclassification have a benificial impact on Precision and Recall for all sectors as well as the global context (TOT). While for BEL mainly Recall profited from preprocessing, ADR and FLO showed a stronger increase in Precision. For the global context both, Precision and Recall, could be increased slighty. Figure 3.4: The F1-score attained by our best Terrascan trial. Figure 3.4 shows how our best Terrascan trial performed in terms of F1-score: globally, on a per-sector basis; with and without pre-processing. We can notice that pre-processing slightly improves the F1-score for the global context as well as for the individual sectors. The largest impact was observed for the Bel-Air sector, especially for preprocessing including Reclassification.","title":"3.1 The best trial made with Terrascan"},{"location":"PROJ-TREEDET/#32-the-best-trial-made-with-dft","text":"The DFT trial yielding the highest global F1-score was obtained using the stem detection method and the following parameters: Parameter Value Method / Algorithm Stem detection Classes 4+5, cleaned and reclassified Search radius 4.00 Minimum length 4.00 Here's a summary of the resulting metrics: Sector Precision Recall F1-score Adrien-Jeandin 75.4% 36.5% 49.2% Bel-Air 88.0% 82.4% 85.1% Floraire 47.9% 36.8% 41.7% Global 74.0% 46.6% 57.2% Similar comments to those formulated here apply: the \"Avenue de Bel-Air\" sector remains the easiest to process; \"Parc Floraire\" the hardest. However, here we acknowledge a bigger gap between the global F1-score and the F1-score related to the \"Adrien-Jeandin\" test sector. Figure 3.5 shows how our best DFT trial performed in terms of F1-score: globally, on a per-sector basis; with and without pre-processing. We can notice that the impact of point cloud reclassification can be slightly positive or negative depending on the test sector. Figure 3.5: The F1-score attained by our best DFT trial.","title":"3.2 The best trial made with DFT"},{"location":"PROJ-TREEDET/#33-comparison-terrascan-vs-dft","text":"Figure 3.6: Comparison of Terrascan and DFT in terms of F1-score. The comparison of the best Terrascan trial vs. the best DFT trial in terms of F1-score shows that there is no clear winner (see Figure 3.6). Still, we can notice that: DFT reaches the best F1-score ever in the \"Parc Floraire\" (\"Avenue de Bel-Air\") sector, without (with) pre-processing. Terrascan performs slightly better on global scores and substantially better on the mixed context of the Adrien-Jeandin sector,especially after pre-processing.","title":"3.3 Comparison: Terrascan vs. DFT"},{"location":"PROJ-TREEDET/#34-trials-with-standard-density-datasets","text":"In addition to applying our method to the 2021 high-density (HD) LiDAR dataset, we also tried using two other datasets exhibiting a by far more standard point density (20-30 pt/m\u00b2): Nuage de points LiDAR 2017 Nuage de points LiDAR 2019 The goal was twofold: finding evidence for the added value of high-density (HD) datasets, despite their higher cost; checking whether the parameters which turned out to yield optimal scores with HD LiDAR data could also yield acceptable results if used with standard-density (SD) datasets. Concerning the 1st point, lower point densities make the \"trunk method\" unreliable (if not completely unusable). In Figure 3.7, we report results obtained with the watershed method, along with results related to the best performing trials obtained with the 2021 HD dataset. The scores we obtained with the SD dataset are far below the best we obtained with the HD dataset, confirming the interest of high-density acquisitions. Figure 3.7: Comparison of F1-scores of the best performing trials. Parameters were optimized for each model individually. Concerning the 2nd point, without any surprise we confirmed that parameters must be re-optimized for SD datasets. The usage of the set of parameters which were optimized on the basis of the HD dataset yielded poor results, as shown in Figure 3.8. Figure 3.8: Using the parameters which were optimized for the high-density dataset leads to poor results (strong under-segmentation) on SD datasets. In accordance with the TS documentation we can see that the trunk method is unusable for lower and medium density datasets. The watershed algorithm produces a more realistic segmentation pattern on the SD dataset but still cannot reach the performance levels of the trunk or the watershed method on the HD dataset. After optimizing parameters, we could obtain quite decent results though (see Figure 3.9). Figure 3.9: After a dataset-specific parameter optimization, convincing results can be achieved on the medium-density 2019 dataset (Terrascan's watershed method was used).","title":"3.4 Trials with standard-density datasets"},{"location":"PROJ-TREEDET/#35-tree-detection-over-the-full-2021-high-density-lidar-dataset","text":"Clearly, from a computational point of view processing large point cloud dataset is not the same as processing small datasets. Given the extremely high density of the 2021 LiDAR datasets, we wanted to check whether and how Terrascan could handle such a resource-intensive task. Thanks to Terrascan's macro actions, one can split the task into a set of smaller sub-tasks, each sub-task dealing with a \"tile\" of the full dataset. Additionally, Terrascan integrates quite a smart feature, which automatically merges groups of points ( i.e. trees) spanning multiple tiles. Figure 3.10 provides a static view of the results we obtained, using the parameters which globally performed the best on the three sectors. We refer the reader to this Potree viewer (kindly hosted by the G\u00e9oportail du SITN ) for an interactive view. Figure 3.10: Result of the application of the best performing Terrascan parameters to the full dataset.","title":"3.5 Tree detection over the full 2021 high-density LiDAR dataset"},{"location":"PROJ-TREEDET/#4-conclusion-and-outlook","text":"Despite all the efforts documented here above, the results we obtained are not as satisfactory as expected. Indeed, the metrics we managed to attain all sectors combined indicate that tree detections are neither reliable (low precision) nor exhaustive (low recall). Still, we think that results may be improved by further developing some ideas, which we sketch in the following.","title":"4. Conclusion and outlook"},{"location":"PROJ-TREEDET/#41-further-the-dft-parameter-space-exploration","text":"We devoted much more time to exploring Terrascan's parameter space than DFT's. Indeed, as already stated here , we only explored the two parameters searchRadius and minLenght . Other parameters such as cellSize , bandwidth and verticalStep were not explored at all (we kept default values). We think it is definitely worth exploring these other parameters, too. Moreover, we did not try feeding all the LiDAR returns to the stem detection method, we only used the last returns. It is surely worth checking whether the usage of the other returns could be beneficial. Upon using the peak detection method, we did not manage to reach a better F1-score than ~40%, as opposed to the 57% obtained with the stem detection method. However, the peak detection method is particularly interesting because it can also delimit canopies. Hence, it may be worth trying to improve the F1-score, for instance by tuning the parameters of the power law equation relating the crown radius to the tree height (cf. here ).","title":"4.1 Further the DFT parameter space exploration"},{"location":"PROJ-TREEDET/#42-exploit-contextual-information","text":"We showed that the algorithms implemented by TerraScan and DFT yield much better results in sparse contexts (ex.: the \"Avenue de Bel-Air\" test sector) than in dense ones (ex.: the \"Parc Floraire\" test sector). This means that precision may be improved (at the expense of recall, though) if one could restrain the tree detection to sparse contexts only, either as a pre- or post-processing step. We can think of at least a couple of methods which would allow one to (semi-)automatically tell sparse from dense contexts: intrinsic method: after segmenting the point cloud into individual trees, one could analyze how close (far) each individual is to (from) the nearest neighbor and estimate the density of trees on some 2D or 3D grid; extrinsic method: territorial data exist (see for instance the dataset \"Carte de couverture du sol selon classification OTEMO\" distributed by the SITG ), providing information about urban planning and land use ( e.g . roads, parks, sidewalks, etc.). These data may be analyzed in order to extract hints on how likely it is for a tree to be in close proximity with another, according to its position.","title":"4.2 Exploit contextual information"},{"location":"PROJ-TREEDET/#43-combine-detections-stemming-from-two-or-more-independent-trials","text":"Detections coming from two or more independent trials (obtained with different software or else with the same software but different parameters) could be combined in order to improve either precision or recall: recall would be improved (i.e. the number of false negatives would be reduced) if detections coming from multiple trials were merged. In order to prevent double counting, two or more detections coming from two or more sources could be counted as just one if they were found within a given distance from each other. The algorithm would follow along similar lines as the ones which led us to the \"tagging and counting algorithm\" presented here above ; precision would be improved (i.e. the number of false positives would be reduced) if we considered only those detections for which a consensus could be established among two or more trials, and discarded the rest. A distance-based criterion could be used to establish such consensus, along similar lines as those leading to our \"tagging and counting algorithm\" .","title":"4.3 Combine detections stemming from two or more independent trials"},{"location":"PROJ-TREEDET/#44-use-generic-point-cloud-segmentation-algorithms","text":"Generic ( i.e. not tailored for tree detection) clustering algorithms exist, such as DBSCAN (\"Density-Based Spatial Clustering of Applications with Noise\", see e.g. here ), which could be used to segment a LiDAR point cloud into individual trees. We think it would be worth giving these algorithms a try!","title":"4.4 Use generic point cloud segmentation algorithms"},{"location":"PROJ-TREEDET/#45-use-machine-learning","text":"The segmentation algorithms we used in this project do not rely on Machine Learning. Yet, alternative/complementary approaches might me investigated, in which a point cloud segmentation model would be first trained on reference data, then used to infer tree segmentations within a given area of interest. For instance, it would be tempting to test this Deep Learning model published by ESRI and usable with their ArcGIS Pro software. It would be also worth deep diving into this research paper and try replicating the proposed methodology. Regarding training data, we could generate a ground truth dataset by using our best TerraScan/DFT model to segment the 3D point cloud; using 2D ground truth data to filter out wrong segmentations.","title":"4.5 Use Machine Learning"},{"location":"PROJ-TREEDET/#5-other-resources","text":"The work documented here was the object of a Forum SITG which took place online on March 29, 2022. Videos and presentation materials can be found here .","title":"5. Other resources"},{"location":"PROJ-TREEDET/#6-acknowledgements","text":"This project was made possible thanks to a tight collaboration between the STDL team and some experts of the Canton of Neuch\u00e2tel (NE), the Canton of Geneva (GE), the Conservatoire et Jardin botaniques de la Ville de Gen\u00e8ve (CJBG) and the University of Geneva (UNIGE). The STDL team acknowledges key contributions from Marc Riedo (SITN, NE), Bertrand Favre (OCAN, GE), Nicolas Wyler (CJBG) and Gregory Giuliani (UNIGE). We also wish to warmly thank Matthew Parkan for developing, maintaining and advising us on the Digital Forestry Toolbox .","title":"6. Acknowledgements"},{"location":"TASK-4RAS/","text":"TASK-4RAS - HR, NH \u00b6 Schedule : September 2020 to February 2021 (initially planned from August 2021 February 2022) This document describe the state of an ongoing task (DIFF) and is subject to daily revision and evolution Context \u00b6 The 4D platform developed at EPFL with the collaboration of Cadastre Suisse is able to ingest both large scale point-based and vector-based models. During the previous development, the possibility to have this different type of data in a single framework lead to interesting results, showing the interest to have the possibility to put this different type of data into perspectives. Illustrations of mixed models in the 4D platform : INTERLIS, Mesh and LIDAR - Data : SITN Taking into account point-based and vector-based model allows to almost cover all type of data that are traditionally considered for land registering. The only type of data that is currently missing is the two-dimensional rasters. Indeed, due to their nature, image are more complicated to put in perspective of other three-dimensional data. The goal of this task is then to address the management of the raster by the platform in order to be able to ingest, store and broadcast any type of data with the 4D platform. Specifications \u00b6 In order to address this task, a step-by-step approach is defined. In the first place, a set of data has to be gathered from the STDL partners : Gathering a dataset of geo-referenced ortho-photography of a chosen place of reasonable size The dataset has to provide ortho-photography for at least two different times The format of the dataset has to be analyzed in order to be able to extract the image pixels with their position (CH1903+) As the platform indexation formalism is not straightforward, the images are treated as point-based model, each pixel being one colored point of the model. This will allow to provide a way of starting to analyze and understand the indexation formalism while having first results on image integration : Transform images into simple point-based models (each pixel being one point) Injection of the point-based model in an experimental instance of the platform Understanding the indexation formalism for point-based models and, subsequently, its adaptation for the vector-based models As the indexation formalism is understood for point-based models, the following adaptation will be performed : removing the third dimension from the point-based indexation specifically for the image (flat indexation) At this point, a first reporting is required : Is there an advantage to add raster to such a platform in perspective of the other types of model (points, vectors, meshes) ? How the adaptation of the point-based indexation performs for images ? How taking advantage of color accumulation enrich the image integration ? What is the cost of rendering the image with the adaptation of the point-based indexation ? Based on the formulated answer, the following strategical choice has to be discussed : Would it be more efficient to integrate image keeping them as raster (deviation from the current indexation) ? Depending on the answer, a new set of specification will be decided (if this direction is favored). Depending on the remaining time and on the obtained results, the question of the time management in the platform will be addressed. Currently, the time is treated linearly in the platform and a multi-scale approach, as for the spatial dimensions, could be interesting. The specifications will be decided as the previous points will be fulfilled. Resources \u00b6 List of the resources initially linked to the task : liberatosthene - Platform and indexation back-end eratosthene-suite - Platform front-end Other resources will be provided according to requirements.","title":"**TASK-4RAS** - HR, NH"},{"location":"TASK-4RAS/#task-4ras-hr-nh","text":"Schedule : September 2020 to February 2021 (initially planned from August 2021 February 2022) This document describe the state of an ongoing task (DIFF) and is subject to daily revision and evolution","title":"TASK-4RAS - HR, NH"},{"location":"TASK-4RAS/#context","text":"The 4D platform developed at EPFL with the collaboration of Cadastre Suisse is able to ingest both large scale point-based and vector-based models. During the previous development, the possibility to have this different type of data in a single framework lead to interesting results, showing the interest to have the possibility to put this different type of data into perspectives. Illustrations of mixed models in the 4D platform : INTERLIS, Mesh and LIDAR - Data : SITN Taking into account point-based and vector-based model allows to almost cover all type of data that are traditionally considered for land registering. The only type of data that is currently missing is the two-dimensional rasters. Indeed, due to their nature, image are more complicated to put in perspective of other three-dimensional data. The goal of this task is then to address the management of the raster by the platform in order to be able to ingest, store and broadcast any type of data with the 4D platform.","title":"Context"},{"location":"TASK-4RAS/#specifications","text":"In order to address this task, a step-by-step approach is defined. In the first place, a set of data has to be gathered from the STDL partners : Gathering a dataset of geo-referenced ortho-photography of a chosen place of reasonable size The dataset has to provide ortho-photography for at least two different times The format of the dataset has to be analyzed in order to be able to extract the image pixels with their position (CH1903+) As the platform indexation formalism is not straightforward, the images are treated as point-based model, each pixel being one colored point of the model. This will allow to provide a way of starting to analyze and understand the indexation formalism while having first results on image integration : Transform images into simple point-based models (each pixel being one point) Injection of the point-based model in an experimental instance of the platform Understanding the indexation formalism for point-based models and, subsequently, its adaptation for the vector-based models As the indexation formalism is understood for point-based models, the following adaptation will be performed : removing the third dimension from the point-based indexation specifically for the image (flat indexation) At this point, a first reporting is required : Is there an advantage to add raster to such a platform in perspective of the other types of model (points, vectors, meshes) ? How the adaptation of the point-based indexation performs for images ? How taking advantage of color accumulation enrich the image integration ? What is the cost of rendering the image with the adaptation of the point-based indexation ? Based on the formulated answer, the following strategical choice has to be discussed : Would it be more efficient to integrate image keeping them as raster (deviation from the current indexation) ? Depending on the answer, a new set of specification will be decided (if this direction is favored). Depending on the remaining time and on the obtained results, the question of the time management in the platform will be addressed. Currently, the time is treated linearly in the platform and a multi-scale approach, as for the spatial dimensions, could be interesting. The specifications will be decided as the previous points will be fulfilled.","title":"Specifications"},{"location":"TASK-4RAS/#resources","text":"List of the resources initially linked to the task : liberatosthene - Platform and indexation back-end eratosthene-suite - Platform front-end Other resources will be provided according to requirements.","title":"Resources"},{"location":"TASK-DIFF/","text":"AUTOMATIC DETECTION OF CHANGES IN THE ENVIRONMENT \u00b6 Nils Hamel (UNIGE) Project scheduled in the STDL research roadmap - TASK-DIFF September 2020 to November 2020 - Published on December 7, 2020 Abstract : Developed at EPFL with the collaboration of Cadastre Suisse to handle large scale geographical models of different nature, the STDL 4D platform offers a robust and efficient indexation methodology allowing to manage storage and access to large-scale models. In addition to spatial indexation, the platform also includes time as part of the indexation, allowing any area to be described by models in both spatial and temporal dimensions. In this development project, the notion of model temporal derivative is explored and proof-of-concepts are implemented in the platform. The goal is to demonstrate that, in addition to their formal content, models coming with different temporal versions can be derived along the time dimension to compute difference models. Such proof-of-concept is developed for both point cloud and vectorial models, demonstrating that the indexation formalism of the platform is able to ease considerably the computation of difference models. This research project demonstrates that the time dimension can be fully exploited in order to access the data it holds. Task Context : Difference Detection \u00b6 As the implemented indexation formalism is based on equivalences classes defined on space and time, a natural discretization along all the four dimensions is obtained. In the field of difference detection, it allowed implementing simple logical operators on the four-dimensional space. The OR , AND and XOR operators were then implemented allowing the platform to compute, in real time , convolutions to compare models with each others across the time. The implementation of these operators was simple due to the natural spatio-temporal discretization obtained from the indexation formalism. Nevertheless, two major drawbacks appeared : the first one is that such operators only works for point-based models. Having the opportunity to compute and render differences and similarities between any type of data is not possible with such formal operators. The second drawback comes from the nature of the point-based capturing devices. Indeed, taking the example of a building, even without any change to its structure, two digitization campaigns can lead to disparities only due to measures sampling. The XOR operator is the natural choice to detect and render differences, but this operator is very sensitive to sampling disparities. Computing the XOR convolution between two point-based models leads the rendering to be dominated by sampling variations rather than the desired structural differences. This drawback was partially solved by considering the AND operator. Indeed, the AND operator allows to only shows constant structural elements from two different positions in time and is insensitive to sampling disparities. As shown on the following images, the AND operator shows differences as black spots (missing parts) : AND convolution between two LIDAR models : Geneva 2005 and 2009 - Data : SITG As one can see, AND convolutions allow detecting, through the black spots, large area of structural changes between the two times and also, with more care, allow guessing smaller differences. Nevertheless, reading and interpreting such representation remains complex for users. The goal of this task is then to tackle these two drawbacks, allowing the platform to detect changes not only for point-based models but also for vector-based models and to implement a variation of the XOR operator for point-based models allowing to efficiently highlight the structural evolution. The task consists then in the implementation, testing and validation of a difference detection algorithm suitable for any type of model and to conduct a formal analysis on the best rendering techniques. Methodology \u00b6 A step by step methodology is defined to address the problem of difference detection in the platform. In a first phase, the algorithm will be developed and validated on vector-based models as follows : Obtaining a large scale vector-based model on which synthetic variation are introduced Development of the algorithm using the synthetic variations model Testing and validation of the algorithm (using the known synthetic variations) First conclusion In a second phase, true land register data will be used to formally detect real evolutions of the territory : Obtaining true land register vector-based models (INTERLIS) at different times Analysis of the difference detection algorithm on true land register vector-based models Second conclusion In a third phase, the algorithm will be validated and adapted to work on point-based models : Obtaining true land register point-based models (LAS) at different position in time Verifying the performances of the vector-based detection algorithm on point-based data Adaptation of the algorithm for point-based models Analysis of the difference detection algorithm on true land register point-based models Comparison of the detected differences on point-based models and on their corresponding land register vector-based models (INTERLIS) Third conclusion In addition, the development of difference detection algorithm has to be conducted keeping in mind the possible future evolutions of the platform such as addition of layers (separation of data), implementation of a multi-scale approach of the time dimension and addition of raster data in the platform. First Phase : Synthetic Variations \u00b6 In order to implements the vector-based difference detection algorithm, sets of data are considered as base on which synthetic differences are applied to simulate the evolution of the territory. This approach allows focusing on well controlled data to formally benchmark the results of the implemented algorithm. Experiments are conducted using these data to formally evaluate the performance of the developed algorithm. Selected Resources and Models \u00b6 Vector Models : Line-based \u00b6 In this first phase, line-based data are gathered from openstreetmap in order to create simple models used during the implementation and validation of the detection algorithm. A first set of vector-based models are considered made only of lines. Three sets are created each with a different scale, from city to the whole Switzerland. The line-based sets of data are extracted from openstreetmap shapefiles and the elevations are restored using the SRTM geotiff data. The EGM96-5 geoid model is then used to convert the elevation from MSL to ellipsoid heights. The following images give an illustration of these sets of data : Line-based data-sets : Switzerland - Data : OSM The following table gives a summary of the models sizes and primitives count : Model Size (UV3) Primitive Count Frauenfeld 5.0 Mio 93.3 K-Lines Neuch\u00e2tel 33.1 Mio 620.2 K-Lines Switzerland 1.3 Gio 25.0 M-Lines In order to simulate evolution of the territory in time, synthetic variations are added to these models. A script is developed and used to insert controlled variations on selected primitives. The script works by randomly selecting a user-defined amount of primitives of a model and by adding a variation on one of its vertex position using a user-specified amplitude. The variation is applied on the three dimensions of space. Vector Models : Triangle-based \u00b6 A second set of triangle-based models is also considered for implementing and validating the difference detection algorithm. The selected model is a mesh model of the Swiss buildings provided by swisstopo . It comes aligned in the CH1903+ frame with elevations. It is simply converted into the WGS84 frame using again the EGM96-5 geoid model : Triangle-based data-sets : Switzerland - Data : swisstopo The following table gives a summary of the models sizes and primitives count : Model Size (UV3) Primitive Count Frauenfeld 116.9 Mio 1.4 M-Triangles Neuch\u00e2tel 842.2 Mio 10.5 M-Triangles Switzerland 30.5 Gio 390.6 M-Triangles These models are very interesting for difference detection as the ratio between primitive size and model amplitude is very low. It means that all the primitives are small according to the model coverage, especially for the Switzerland one. The developed script for line-based models is also used here to add synthetic variations to the models primitives in order to simulate an evolution of the territory. Models : Statistical Analysis \u00b6 Before using the models in the following developments, a statistical analysis is performed on the two Switzerland models, line and triangle-based. Each primitive of these two models are considered and their edges size are computed to deduce their distribution : Statistical analysis : Models primitive edge size distribution, in meters, for the Switzerland models : line-based (left) and triangle-based (right) One can see that the line-based model comes with a much more broad distribution of the primitives size . Most of the model is made from lines between zero and twenty meters. In the case of the triangle-based models, the primitives are much smaller. As most of them are less than ten meters, a significant fraction of primitives is below one meter. Implementation of the Algorithm \u00b6 In order to compare two models at two different positions in time to detect differences, the solution is of course to search for each primitive of the primary time if it has a corresponding one in the secondary time. In such case, the primitives can be concluded as static in time and only the primitives that have no correspondence will be highlighted as differences. A first approach was initially tested : a vertex-based comparison. As every primitive (points, lines and triangles) is supported by vertexes, it can be seen as a common denominator on which comparison can take place. Unfortunately, it is not a relevant approach as it leads to an asymmetric detection algorithm. To illustrate the issue, the following image shows the situation of a group of line-based primitives at two different times with an evolution on one of the primitive vertex : Asymmetric approach : The variation is detected only when comparing backward in time When the comparison occurs between the second time and the first one, the modified vertex correspondence is not found, and the vertex can be highlighted as a difference. The asymmetry appears as the first time is compared to the second one. In this case, despite the primitive vertex changed, the vertex-based approach is able to find another vertex, part of another primitive, and interprets it as a vertex identity, leading the modified primitive to be considered as static. In order to obtain a fully symmetric algorithm, that does not depend on the way models are compared in times, a primitive-attached approach is considered. The implemented algorithm then treats the correspondence problem from the whole primitive point of view, by checking that the whole primitive can be found in the other model to which it is compared to. This allows to highlight any primitive showing a modification, regardless of the way models are compared and the nature of the modification. In addition to highlighting the primitives that changed through time, the implemented algorithm also renders the primitives that have not changed. The primitives are then shown by modulating their color to emphasize the modifications by keeping their original color for the modified one, while the static primitives are shown in dark gray. This allows to not only show the modifications but also to keep the context of the modifications, helping the user to fully understand the nature of the territory evolution. In addition to color modulation, a variation of difference rendering is analyzed. In addition to color modulation, a visual and artificial marker is added to ease their search. The visual marker is a simple line emanating from the primitive and goes straight up with a size of 512 meters. Such markers are introduced to ease the detection of small primitives that can be difficult to spot according to large point of views. Additional developments were required for triangle-based models : indeed, such models need to be subjected to a light source during rendering for the user to understand the model (face shading). The previously implemented lighting model is then modified to take into account color modulation in order to correctly render the triangle that are highlighted. Moreover, the lighting model was modified to light both face of the triangles in order to light them regardless of the point of view. In addition, as mesh models are made of triangles, primitives can hide themselves. It can then be difficult for the user to spot the highlighted primitives as they can be hidden by others. An option was added to the rendering client allowing the user to ask the rendering of triangles as line-loops or points in order to make them transparent. Finally, an option allowing the user to enable or disable the render face culling was added for him to be able to see the primitive from backward. Results and Experiments \u00b6 With the implemented algorithm, a series of experiments are conducted in order to validate its results and to analyze the efficiency of the difference detection and rendering from a user point of view. In addition, experiments are also conducted to quantify the efficiency of the difference detection for automated processes. Difference Detection : Overview \u00b6 Considering the selected data-sets, each original model is injected at a given time and synthetic variations are added to a copy of it to create a second model injected at another time. The synthetic variations are randomly added to a small amount of primitives of the original model and are of the order of one meter. On the following examples, the detection is operated considering the original model as primary and the modified one as secondary. The following images show examples of how the detection algorithm allows to highlight the detected differences while keeping the rest of the model using a darker color in case of line-based models : Example of difference detection on line-based Frauenfeld (left) and Neuch\u00e2tel (right) models - Data : OSM One can see how the modified primitives are highlighted while keeping the context of the modifications. The highlighted primitive is the one belonging to the primary time. Comparing the models in the other way around would lead the secondary model primitives to be highlighted. Considering the Frauenfeld example, the following images show the situation in the primary time (original model) and the secondary time (model with synthetic variations) : Primary model (left) and secondary one (right) showing the formal situations - The modified primitive is circled in read - Data : OSM As a result, the user can choose between the differences highlighting with the choice of model as primary and can also switch back and worth between the models themselves though the platform interface. Of course, the readability of the difference detection models depends on the size of the modified primitive and the scale at which the model is looked at by the user. If the user adopts a large scale point of view, the differences, even highlighted, can become difficult to spot. This issue can be worsened as triangle-based models are considered. In addition to primitive size, triangles also bring occlusions. The visual markers added to the highlighted primitives can considerably improve ease of differences search by the user. The following images give an example of difference detection without and with the visual markers added by the algorithm : Example of highlighted primitives without (left) and with (right) visual markers - Data : OSM Considering the triangle-based models, difference detection is made more complicated by at least three aspects : the first one is that 3D vector models are more complex than 2D ones in the way primitives (triangles) are more densely packed in the same regions of space in order to correctly model the buildings. The second one is that triangles are solid primitives that bring occlusions in the rendering, hiding other primitives. The last aspect is that such a model can contain very small primitives in order to model the details of the buildings. In such a case, the primitives can be difficult to see, even when highlighted. The following images show an example of highlighted triangles on the Frauenfeld model : Example of highlighted primitive on the Frauenfeld building model - Data : swisstopo On the right image above, the highlighted triangle is underneath the roof of the house, forcing the user to adopt an unconventional point of view (from above the house) to see it. In addition, some primitives can be defined fully inside a volume close by triangles, making them impossible to see without going inside the volume or playing with triangle rendering mode. In such a context, the usage of the visual markers become very important for such models coming with large amount of occlusion and small primitives : Example of highlighted primitives without (left) and with (right) visual markers - Data : swisstopo In case of triangle-based models, the usage of markers appears to be mandatory in order for the user to be able to locate the position of the detected differences in a reasonable amount of time. Difference Detection : User-Based Experiments \u00b6 In any case, for both line and triangle-based models, the difference detection algorithm is only able to highlight visible primitives. Depending on the point of view of the user, part of the primitives are not provided by the platform because of their small size. Indeed, the whole point of the platform is to allow the user to browse through arbitrary large models, which implies to provided only the relevant primitives according to its point of view. As a result, the detection algorithm will not be able to highlight the variations as the involved primitives are not considered as a query answer by the platform. The user has then to reduce is point of view in order to zoom on the small primitives to make them appear, and so, allowing the algorithm to highlight them. In order to show this limitation, an experiment is performed. For each model, a copy is made on which eight synthetic differences are randomly introduced. The variations are of the order of one meter. The models and their modulated copy are injected in the platform. The rule is the following : the user uses the detection algorithm on each model and its modulated copy and has five minutes to detect the eight differences. Each time a difference is seen by the user, the detection time is kept. The user is allowed to use the platform in the way he wants. In each case, the experiment is repeated five times to get a mean detection rate. As one could ask, these measures are made by the user and are difficult to understand without a reference. In order to provide such reference, the following additional experiment is conducted : each model and its modulated copy are submitted to a naive automated detection process. This process parses each primitive of the original model to search in its modulated copy if the primitive appear. If the primitive is not found, the process trigger a difference detection. This process is called naive as it simply implements two nested loops, which is the simplest searching algorithm implementation. The process is written in C with full code optimization and executed by a single thread. Starting with the line-based models, the following figures shows the difference detection rates according to time. For each of the three models, the left plots show the rate without visual markers, the middle ones with visual markers and the right ones the naive process detection rate : Frauenfeld : The black curve shows the mean detection rate while the blue (left, middle) and red (right) area gives the worst and best rates Left : without visual markers - Middle : with visual markers - Right : automated process Canton of Neuch\u00e2tel : The black curve shows the mean detection rate while the blue (left, middle) and red (right) area gives the worst and best rates Left : without visual markers - Middle : with visual markers - Right : automated process Switzerland : The black curve shows the mean detection rate while the blue (left, middle) and red (right) area gives the worst and best rates Left : without visual markers - Middle : with visual markers - Right : automated process As expected, the larger the model is, the more difficult it is for the user to find the highlighted differences, with or without visual markers. Considering a city, the differences, even of the order of one meter, are easy to spot quickly. As the model gets larger, the more time it takes for the user to find the differences. On a model covering a whole canton (Neuch\u00e2tel), one can see that most of the differences are detected in a reasonable amount of time despite their small size according to the overall model. On the Swiss model, things get more complicated, as simply looking at each part of the country is already complicated in only five minutes, leading the detection rate to be lower, even using the visual markers. These results are consistent with the statistical analysis made on the line-based Switzerland model. Detection on a city or even a whole canton lead the user to adopt a point of view sufficiently close to make most of the primitives appearing. For the Switzerland model, the user is forced to adopt a larger point of view, leading to a significant proportion of primitives to stay hidden. These results also show that adding visual markers to the highlighted primitives increases the user detection rate, meaning that the markers lead to a more suitable rendering from the user experience point of view. Considering the user results and the naive detection process, one can see that the user obtains at least similar results but most of the time outperforms the automated process. This allows to demonstrate how the implementation and data broadcasting strategy of the platform is able to provide an efficient way to access models and composite models, here in the context of difference detection. The following figures show the experiments results for the triangle-based models, which were not performed on the whole Switzerland model due to limited rendering capabilities : Frauenfeld : The black curve shows the mean detection rate while the blue (left, middle) and red (right) area gives the worst and best rates Left : without visual markers - Middle : with visual markers - Right : automated process Canton of Neuch\u00e2tel : The black curve shows the mean detection rate while the blue (left, middle) and red (right) area gives the worst and best rates Left : without visual markers - Middle : with visual markers - Right : automated process Similar conclusions apply for the triangle-based models : the larger the model is, the more difficult the difference detection is. These results also confirm that adding visual markers in addition to primitives highlighting significantly helps the user, particularly in case of triangle-based models. The obtained results on triangle-based models are lower than for line-based models. A first explanation is the greater amount of primitive that lead the user to spend more time at each successive point of view. The occlusion problem also seems to play a role, but to a lesser extent as the visual markers seems to largely solve it. The differences between detection on line and triangle-based models have to be searched in the statistical analysis of the triangle-based models. Indeed, for these models, a large proportion of the primitives are very small (less than a meter), leading them to be rendered only as the user adopts a close point of view, making the detection much more complicated in such a small amount of time. The triangle-based models being larger than the line-based one, the results of the naive process are very poor. As for the line-based models experiments, the user outperforms this automated process, in a much more significant way. Difference Detection : Process-Based Experiments \u00b6 In the previous experiments, the user ability to find the differences on the data-sets, using synthetic variations, was benchmark in perspective of the results provided by a naive automated process. The user performs quite well using the platform, but start to struggle as the data-sets get bigger according to the sizes of their primitives. In this second set of experiments, the platform is used through an automated process instead of a user. The process has the same task as the user, that is, finding the eight synthetic differences introduced in the models copy. The process starts with a list of index (the discretization cells of the platform) in order to query the corresponding data to the platform before to search for differences in each cell. The process implements, then, a systematic difference detection covering the whole model. In order for the process to work, it requires an input index list. To create it, the primitive injection condition of the platform is used to determine the maximal depth of these index. The following formula gives the poly-vertex (lines and triangles) primitives injection condition according to the platform scale. In other words, the formula gives the shallowest scale at which the primitive is considered through queries according to its size : where s gives the shallowest scale, R being the WGS84 major semi-axis and e is the largest distance, in meters, between the primitive first vertex and its other ones. For example, choosing s = 26 allows the index to reach any primitive that is greater than ~30 cm over the whole model covered by the index. The scale 26 is then chosen as the deepest search scale in the following experiments. This value can be adapted according to the primitives size and to the nature of the detection process. The larger it is, the more data are broadcast by the platform increasing the processing time. In order to compare the user-based experiments, the naive automated approach and this process-based exhaustive search, the same protocol is considered. The process addresses queries to the platform, based on the index list, and save the detection time of each difference. The detection rate is plot in the same way as for the previous experiments. Again, eight synthetic differences are randomly introduced and the experiment is repeated five times for the line-based model and only two times for the triangle-based model. As the scale 26 is chosen as the deepest search scale, the index list can be built in different ways. Indeed, as a query is made of one spatial index, that points at the desired cell, and an additional depth ( span ), to specify the density of data, the only constraint to maintain the deepest search scale at 26 is the following : where the two left hand side terms are the spatial index size and span value. In these experiments, a first list of index is built using a span of 9 and a second with a span of 10 . As the deepest scale is maintained constant, increasing the span reduces the index list size, but the queried cells contain more data to analyze. The following figures show the mean detection rate for the Switzerland lined-based model with the deepest scale at 26 and span at 9 and 10 . The plots are scaled in the same way as for the user-based experiments : Switzerland : The black curve shows the mean detection rate while the blue area gives the worst and best rates - Span at 9 (left) and 10 (right) One can see that the detection rate on such a model is much better than the user-based or naive approach ones. In a manner of five minutes, for the span set to 10 , the eight differences can be detected and reported. The full detection process took ~5 minutes with span set to 10 and ~8 minutes with the span set to 9 . This shows how the platform can be used by automated processes as an efficient data provider. In addition, as the data are queried by the automated process, the detected primitive geometry is directly available, allowing all sorts of subsequent processes to take place. As the deepest scale was set to 26 , in one of the five measures session, one of the eight differences was not detected (at all). It means that the primitive on which a synthetic variation was introduced is smaller than 30cm and was then not reached by any index. This shows the importance of defining the spatial index and spans according to the processes needs. For example, increasing the deepest scale to 27 would allow reaching primitive down to ~15 cm over the whole Switzerland, and so on. The following figures show the mean detection rate for the Switzerland triangle-based model. In this case, only two measure sessions were made to limit the time spent on this analysis : Switzerland : The black curve shows the mean detection rate while the blue area gives the worst and best rates - Span at 9 (left) and 10 (right) The conclusion remain, but the rate is slower in this case as the model contains much more primitives than the line-based one. In this case, the full detection process took ~15 minutes with span set to 10 and ~20 minutes with the span set to 9 . Again, in one of the two measure session, one difference was not detected due to the size of the primitive. Nevertheless, these results shows how the platform, seen as a process data provider, allows outperforming user-based and classic detection algorithms. Such process-based strategy can be performed in many ways depending on the needs. For example, the index list can be limited to a specific area or set to focus on spread and defined locations (for example at the intersection of the Swiss hectometric grid). The following image gives a simple example of how the detected differences can be leveraged. As the geometry of the differences is known by the process, a summary of the differences can be provided through a simple map : Example of a differences map based on the results of the detection process - Data : SRTM The eight synthetic differences are easily presented allowing a user to analyze them more in detail in the platform interface for example. This map was created detecting the eight differences on the line-based Switzerland model in about 5 minutes with a span set to 10 . Conclusion : First Phase \u00b6 During this first phase, the difference detection algorithm was developed and validated on both line-based and triangle-based data. An efficient algorithm is then implemented in the platform allowing emphasizing differences between models at different temporal positions. The algorithm is able to perform the detection on the fly with good performances allowing the users to dynamically browse the data to detect and analyze the territory evolutions. The performances of the detection algorithm allow the platform to be suitable for automated detection processes, as a data provider, answering large amounts of queries in an efficient and remote manner. Two variations of the difference detection algorithm are implemented. The first version consists in highlighting the primitives that are subject to modifications over a time. This variation is suitable for automated processes that can rely on simple search methods to list the differences. For the users, this first variation can lead to more difficult visual detection of the differences, especially in case the highlighted primitives are small or hidden by others. For this reason, visual markers were added on top of the highlighted primitives in order to be seen from far away, regardless of the primitives size. The measures sessions made during the user-based experiments showed a clear improvement of the detection rate when using the visual markers. This was especially true for triangle-based models, where the primitives bring occlusions. The user-based experiments showed that using the platform interface, a human can significantly outperform the result of a naive automated process operating on the models themselves. The experiments showed that the user is able to efficiently search and find through space and time the evolutions of the territory appearing in the data. Of course, as the model size and complexity increases, the user-driven interface starts to show its limits. In such a case, the process-based experiments showed that automated processes can take over these more complicated searches through methods allowing performing exhaustive detection over wide models in a matter of several minutes. At this point, the developments and validations of the algorithm, and its variations, were conducted on synthetic modifications introduced in models using controlled procedures. The next phase focuses on formal data extracted from land registers. Second Phase : True Variations \u00b6 In this second phase, also dedicated to vector-based models, the focus is set on applying the developed difference detection algorithm on true land register models. Two sets of data are considered in order to address short-term and long-term difference detection. Selected Resources and Models \u00b6 In both cases, short-term and long-term, INTERLIS data are considered. A selection of tables in different topics is performed to extract the most interesting geometries of the land registering. For all models, the following colors are used to distinguish the extracted layers : INTERLIS selected topics and tables colors - Official French and German designations The layers are chosen according to their geometric content. The color assignation is arbitrary and does not correspond to any official colorization standard. Short-Term Difference Detection : Thurgau \u00b6 For the short-term application of the difference detection algorithm, the case of the Thurgau canton is considered. Two set of INTERLIS data are considered that are very close in time, of the order of days. The selected layers are extracted from the source files before to be converted to the WGS84 frame using the EGM95-6 geoid model. The heights are restored using the SRTM topographic model. The following images give an illustration of the considered data : Canton of Thurgau (left) and close view of Frauenfeld (right) - Data : Kanton Thurgau Two INTERLIS models are considered with times 2020-10-13 and 2020-10-17, corresponding to the models gathering time. The following table gives the models size and primitives count : Model Size (UV3) Primitive Count Thurgau 2020-10-13 203.7 Mio 3.8 M-Lines Thurgau 2020-10-17 203.8 Mio 3.8 M-Lines As the two models are very close in time, they are very similar in size and content as the corrections count made during the considered time range is small. Long-Term Difference Detection : Geneva \u00b6 For the long-term difference detection analysis, the Geneva case is selected as the canton of Geneva keeps a copy of each land register model for each month from at least 2009 . This allows to compare INTERLIS models that are further away from each other from a temporal point of view. The selected layers are extracted and converted to the WGS84 coordinates system using the EGM96-6 geoid model. Again, the SRTM model is used to restore the heights. The following images give an illustration of the selected models : Canton of Geneva in 2019-04 (left) and close view of Geneva in 2013-04 (right) - Data : SITG The selected models are not chosen randomly along the time dimension. Models that corresponds to the Geneva LIDAR campaigns are selected as they are used in the next phase. In addition, as the LIDAR campaigns are well spread along the time dimension, the selected models are far away from each other in time, of the order of at least two years. The following table summarize the models size and primitives count : Model Size (UV3) Primitive Count Geneva 2009-10 (MN03) 550.2 Mio 10.3 M-Lines Geneva 2013-04 407.0 Mio 7.6 M-Lines Geneva 2017-04 599.6 Mio 11.2 M-Lines Geneva 2019-04 532.6 Mio 9.9 M-Lines As the temporal gaps between the models are much larger than for the Thurgau models, the size and primitive count show larger variations across the time, indicating that numerous differences should be detected on these data. Models : Statistical Analysis \u00b6 As in the first phase, a statistical analysis of the Thurgau and Geneva models is conducted. The following figures show the line length distribution of the two Thurgau models : Statistical analysis : Primitive size distribution, in meters, for the Thurgau 2020-10-13 (left) and 2020-10-17 (right) As expected, as the models are very similar, the distribution between both models is almost identical. In both cases, the distribution is centered around two meters and is mostly contained within the [0,5] range. The following figures show the same statistical analysis for the Geneva models, more spread along the time dimension : Statistical analysis : Primitive size distribution, in meters, for the Geneva 2009-10 (top-left), 2013-04 (top-right), 2017-04 (bottom-left) and 2019-04 (bottom-right) One can see that the distribution varies more from a time to another. In addition, in comparison with the Thurgau models, the Geneva models tend to have smaller primitive, mostly distributed in the [0,1] range with a narrower distribution. Results and Analysis \u00b6 Short-Term : Thurgau \u00b6 In the case of Thurgau data, the models are only separated in time by a few days. It follows that only a small amount of differences is expected. As an introduction, the following images show the overall situation of the difference detection between the two models. The differences are highlighted by keeping the primitive original color while identities are shown in dark gray to allow context conservation : Overall view of difference detection : Thurgau (right) and Amriswil (left) As expected, as the two models are very close in time, only a limited amount of differences is detected. Such situation allows to have a clear view and understanding of each difference. In order to analyze the results of the difference detection algorithm on real cases , selected differences, using the algorithm itself, are studied more in detail to emphasize the ability of the algorithm to detect and make the difference understandable for the user. As a first example, the case of the Bielackerstrasse in Amriswil is considered and illustrated by the following images : Example of difference detection : Bielackerstrasse in Amriswil - 2020-10-17 (right) and 2020-10-13 (left) as primary time In this case, new buildings are added to the official land register. As the 2020-10-17 is selected as primary, the highlighted elements correspond the footprint of the added buildings. When the 2020-10-13 time is set as primary, as it does not contain the building footprints, the highlighted elements only corresponds to the re-measured elements for land register correction. This illustrates the asymmetry of the difference detection algorithm that only highlight primitives of the primary time. In addition, by keeping the color of the highlighted primitives, the difference detection algorithm allows to immediately see that three layers of the land register have been affected by the modification (German : Einzelobjekte, Flaechenelement Geometrie; Bodenbedeckung, BoFlaeche Geometrie; Einzelobjekte, Linienelement). The following images show the respective situation of the 2020-10-13 and 2020-10_17 models : Situation of Bielackerstrasse in Amriswil - 2020-10-17 (right) and 2020-10-13 (left) This confirms the analysis deduced from the difference detection algorithm that a group of new buildings are added to the land register. In this example, if the inner road was not re-measured, at least on some portion, the difference detection with 2020-10-13 as primary time would have shown noting. To illustrate the asymmetry of the algorithm more clearly, the example of Mammern is considered. On the following image, the result of the difference detection is illustrated with both time chosen successively as primary : Example of difference detection : Mammern - 2020-10-17 (right) and 2020-10-13 (left) as primary time On this specific example, one can see that choosing the 2020-10-17 time as primary, which is the most recent time, nothing is highlighted by the detection algorithm. But when the 2020-10-13 time is set as primary, a specific element appears as highlighted, showing an evolution of the land register. This example illustrates the deletion of a sequence of primitive of the property (German : Liegenschaften, ProjLiegenschaft Geometrie) layer of the land register, which then only appear as the oldest time is set as primary. The following images show both time situation : Situation of Mammern - 2020-10-17 (right) and 2020-10-13 (left) This example shows the opposite situation of the previous one, where elements were deleted from the land register instead of added. As a last example, an in-between situation is selected. The case of the Trungerstrasse in M\u00fcnchwilen is considered and illustrated by the following images showing both time as primary : Example of difference detection : Trungerstrasse in M\u00fcnchwilen - 2020-10-17 (right) and 2020-10-13 (left) as primary time This situation is in-between the two previous one as nothing really appeared and nothing really disappeared from the land register. A modification was made on the situation of this specific property and so, appear no matter which of the two times is selected as primary. The following images show the formal situation of the land register for the two times : Situation of Trungerstrasse in M\u00fcnchwilen - 2020-10-17 (right) and 2020-10-13 (left) One can see that the correction made are around the pointed house, as the access road of the rear delimitation. For this type of situation, the algorithm recover some kind of symmetry, as the selected time as primary does is not relevant to detect the difference. To conclude this short-term difference detection analysis, the efficiency of visual markers is illustrated on the region of Romanshorn and Amriswil on the following images. Both images show the difference detection rendering without and with the visual markers : Illustration of difference detection without (right) and with (left) visual markers - 2020-10-17 as primary time for both images One can see that, for small highlighted primitive, the usage of visual markers eases the differences view for the user. Of course, as the highlighted primitive are big enough, or if the point of view is very close to the model, the efficiency of the visual markers decreases. Long-Term : Geneva \u00b6 Considering the Geneva land register, the compared model are much more spread along the time dimension, leading to a much richer difference model. Starting with the 2019-04 and 2017-04 models, the following images gives an overview of the detected differences on the whole canton : Overall view of difference detection between Geneva 2019-04 and 2017-04 models with 2019-04 as primary On this example, one can see that a much larger amount of differences is detected as the model are separated by two years. As the first observation, one can see that large portions of the model seems to have entirely moved between the two dates. Three of these zones are clearly visible on the images above as all their content is highlighted by the difference detection algorithm : the superior half of the Geneva commune , the Carouge commune and the left half of the Plan-les-Ouates commune , but more can be seen, looking more closely. These zones have been subjected to correction during the time interval separating the two models. These corrections mainly comes from the FINELTRA [1] adjustment used to ensure conversion between the old Swiss coordinates system MN03 and the MN95 current standard. As these corrections operate on each coordinate, the whole area is then modified of the order of a few centimeters. In these condition, the whole area is then highlighted by the difference detection algorithm as illustrated by the following image on the Carouge commune : Closer view of the Carouge 2019-04 and 2017-04 differences with 2019-04 as primary On this closer view, one can see that almost all the primitive of this specific commune have been corrected. Some exceptions remain. It is the case of the train tracks for example, that appear as static between the two models. Looking more closely, one can also observe that some primitive were not affected by the correction. Looking at the areas that have not been corrected through the FINELTRA triangular model, one can see that a lot of modification appear. For example, the following two images gives the differences of the Geneva historical part and the Verbois dam : Closer view of the Historical city (left) and Verbois dam (right) 2019-04 and 2017-04 differences with 2019-04 as primary One can see that, despite very few elements truly changed, a lot of primitives are highlighted as differences. This can be explained by a constant work of correction based on in-situ measurement. Some other factors can also explain these large amount of differences such as scripts used to correct the data to bring them in the expected Swiss standards. In such context, detected real changes of the territory is made much more complicated, as large amounts of detected differences are due to corrections of the model itself, without underlying true modification on the territory. Nevertheless, differences that corresponds to a true territory modification can be found. The following images show an example on the Chemin du Signal in Bernex : Differences on Chemin du Signal in Bernex with 2019-04 (left) and 2017-04 (right) as primary These differences can be detected by the user on the difference model as they appear more clearly due to an accumulation of highlighted primitives. Indeed, in case of simple correction, the highlighted primitive appear more isolated. The following images give the formal situation for the two times : Situation of Chemin du Signal in Bernex in 2019-04 (left) and 2017-04 (right) On this example, one can see that, with both time as primary, the territory evolution can be seen by the user as the highlighted primitives are more consistent. Nevertheless, territory changes are more difficult to list in such a case than in the previous short-term analysis. The following images give two example of visible territory changes in the difference model : La Gradelle (left) and Puplinge (right) 2019-04 and 2017-04 differences with 2019-04 as primary On the previous left image, a clear block of buildings can be seen as more highlighted than the rest of the difference model and correspond to new building. On the right of this block, a smaller one can also be seen that also corresponds to new buildings. On the right images, a clear block of new buildings is also visible, as more highlighted. In such a case, the user has more effort to perform in order to detect the differences that correspond to true changes in the territory, the differences model showing the land register modification in the first place rather than of the proper territory evolution. Considering the 2013-04 model, similar observations apply with stronger effect due to the larger temporal gap. The difference models are dominated by correction made to the model rather than proper territory changes. Comparing the 2017-04 and 2013-04 lead to even more difficult detection of these true modification, as the correction are widely dominating the difference models. The case of the 2009-10 model is made even worse by its coordinates system, as it is expressed in the old MN03 coordinates system. This model is made very difficult to compare with the three others, expressed in the MN95 frame, as all its primitives are highlighted in difference models due to the conversion performed between the MN03 and MN95 frames. Comparing the 2009-10 model with the 2013-04 lead to no primitive detected as identity, leaving only differences. Conclusion : Second Phase \u00b6 Two cases have been addressed in this phase showing each specific interesting application of the difference detection applied on land register data through the INTERLIS format. Indeed, short and long term differences emphasize two different points of view according to the analysis of the land register and its evolution in time. In the first place, the short term application clearly showed how difference detection and their representation opens a new point of view on the evolution of the land register as it allows focusing on clear and well identified modifications. As the compared models are close in time, one is able to produced differences models allowing to clearly see, modification by modification, what happened between the two compare situations, allowing focusing on each evolution to fully understand the modification. It follows that this short-term difference detection can provide a useful approach for the user of the land register that are more interested in the evolution of the model rather than in the model itself. The difference models can provide users a clear a simple view on what to search and to analyze to understand the evolution of such complex models. In some way, the differences on land register models can be seen as an additional layer proposed to the user to allow him to reach information that are not easy to extract from the models themselves. The case of Geneva , illustrating the long-term difference detection case, showed another interesting point of view. In the first place, one has to understand that land register models are complex and living models, not only affected by the transcription of the real-world situation across the time. Indeed, on the Geneva models, a large amount of differences is detected even on a relative short period of time (two years). In addition to the regular updates, following the territory evolution, a large amount of corrections is made to keep the model in the correct reference frame. The Swiss federal system can also add complexity, as all Cantons have to align themselves on a common set of expectations. In such a case, the difference detection turned out to be an interesting tool to understand and follows the corrections made to the model in addition to the regular updates. On the Geneva case, we illustrated that, by detecting it in the difference model, the correction on the coordinates frame on large pieces of the territory. This shows how the difference detection can be seen as a service that can help to keep track of the life of the model by detecting and checking these type of modifications. As a result, difference detection can be a tool for the user of the land register but can also be a tool for the land register authorities themselves. The difference models can be used to check and audit the evolution of the models, helping the required follow-up on the applied correction and updates. Third Phase : Point-Based Models \u00b6 In this third and last phase, the developed algorithm for difference detection on vector models is tested on point-based ones. As mentioned in the introduction, the platform was already implementing logical operators allowing comparing point-based models across time. As illustrated in the introduction, only the AND operator allowed emphasizing differences, but rendering them as missing part of the composite models. It was then difficult for the user to determine and analyze those differences. The goal of this last phase is to determine in which extend the developed algorithm is able to improve the initial results of point-based logical operators and how it can be adapted to provide better detection of differences. Selected Resources and Models \u00b6 Point-Based Models : LIDAR \u00b6 Smaller data-sets are considered as point-based models are usually much larger. The city of Geneva is chosen as an example. Four identical chunks of LIDAR data are considered covering the railway station and its surroundings. The four models correspond to the digitization campaigns of 2005, 2009, 2013 and 2017. The data are converted from LAS to UV3 and brought to WGS84 using the EGM96-5 geoid model. The following images give an overview of the selected models : Point-based data-sets : Geneva LIDAR of 2005 (left) and 2009 (right) - Data : SITG The following table gives a summary of the models sizes and primitive count : Model Size (UV3) Primitive Count Geneva 2005 663.2 Mio 24.8 M-Points Geneva 2009 1.2 Gio 46.7 M-Points Geneva 2013 3.9 Gio 4.2 G-Points Geneva 2017 7.0 Gio 7.5 G-Points The color of the models corresponds to the point classification. In addition, the models have a density that considerably increases with time, from 1 points/m^2 (2005) to 25 points/m^2 (2017). This disparity of density is considered as part of the sampling disparity, leading to a set of data very interesting to analyze and benchmark the difference detection algorithm. Models : Statistical Analysis \u00b6 As for line and triangle-based models, a statistical analysis of the point-based models is performed. The analysis consists in computing an approximation of the nearest neighbor distance distribution of points. The following figure shows the distribution of the 2005 and 2009 models : Statistical analysis : Nearest neighbor distribution approximation of the 2005 (left) and 2009 (right) models and the following figure shows the results for the 2013 and 2017 models : Statistical analysis : Nearest neighbor distribution approximation of the 2013 (left) and 2017 (right) models The nearest neighbor distribution tends to go toward zeros with the year of acquisition, showing that modern models are significantly denser that the older ones, making these models interesting for the difference detection algorithm analysis. Differences Detection Algorithm : Direct Application on Point-Based Models \u00b6 In order to determine the performances of the difference detection algorithm on the selected point-based models, the algorithm is simply applied without any adaptation on the data-sets and the results are analyzed. The following images give an overview of the obtained results comparing the 2005 and 2009 models : Application of the difference detection algorithm on point-based models : Geneva model of 2005 and 2009 with 2005 as primary (left) and inversely (right) - Data SITG One can see that the obtained results are very similar to the results obtained with the previously implemented XOR logical operator. The only differences is that the identical points are shown (in dark gray) along with the highlighted points (showing the differences). The same conclusion applies : the obtained composite model is difficult to read as it is dominated by sampling disparities. One can, by carefully looking at the model, ending up detecting large modifications by searching for highlighted points accumulation. In addition, taking one model or the other as primary for the algorithm does not really help as shown on the images above. The same conclusion applies even when the two compared models comes with a similar point density as the 2013 and 2017 models : Application of the difference detection algorithm on point-based models : Geneva model of 2013 and 2017 with 2013 as primary (left) and inversely (right) - Data SITG One can nevertheless observe that choosing the less dense model as primary leads to results a bit more clear for difference detection, but remaining very hard to interpret for a user, and much more for automated processes. In addition, the performances of the algorithm are very poor as point-based models are much denser in terms of primitives than line or triangle-based models. These reasons lead to the conclusion that the algorithm can not be directly used for point-based models and need a more specific approach. Differences Detection Algorithm : Adaptation for Point-Based Models \u00b6 In order to adapt the difference detection algorithm for point-based models, two aspects have to be addressed : the efficiency of the detection and the reduction of the sampling disparities over-representation, which are both server-side operations. The problem of efficiency can be solved quite easily if the adaptation of the difference detection algorithm goes in the direction of logical operators, for which an efficient methodology is already implemented. Solving the sampling disparity over-representation is more complicated. The adopted solution is inspired from a simple observation : the less deep (density of cells) the queries are, the clearer the obtained representation is. This can be illustrated by the following images showing the 2005 model compared with the 2009 one with depth equal to 7, 6 and 5, from left to right : Example of decreasing query depth on the comparison of 2005 and 2009 models - Data SITG This is expected, as the sampling disparities can only appear at scales corresponding to the nearest neighbor distribution. Nevertheless, as the depth is decreased, the models become less and less dense. The increase of difference readability is then compensated by the lack of density, making the structures more difficult to identify, and then, their subsequent modifications. The goal of the algorithm adaptation is to keep both readability and density. To achieve this goal, the implementation of the previous XOR operator is considered as a base, mostly for its efficiency. As the XOR simply detects if a cell of the space-time discretization at a given time is in a different state as its counterpart at another time, it can be modulated to introduce a scale delay mechanism that only applies detection on low-valued scales, broadcasting their results to their daughter cells. This allows to preserve the density and to perform the detection only on sufficiently shallow scales to avoid sampling disparities to become dominant. The question is how to operate the scale delay according to the scale itself. Indeed, with large points of view, the delay is not necessary as the model is viewed from far away. The necessity of the scale delay appears as the point of view is reduced, and, the more it is reduced, the larger the scale delay needs to be. A scale-attached delay is then defined to associate a specific value for each depth. Results and Experiments \u00b6 The adaptation of the difference detection algorithm for point-based models is analyzed using the selected data-sets. An overview of its result is presented before a more formal analysis is made using difference detection made on line-based official land register data to be compared with the differences on point-based models. Differences Detection : Overview \u00b6 Considering the two first models, from 2005 and 2009 campaigns, the following images shows the results of the initial version of the difference detection algorithm (similar to XOR operator) and its adapted version implementing the scale delay : Differences detection on 2005 and 2009 models with 2005 as primary - Left : without scale delay - Right : with scale delay - Data SITG One can see how scale delay is able to drastically reduce the effect of sampling disparities while comparing two point-based models. The effect is more obvious as the 2009 model is set as primary for difference detection : Differences detection on 2005 and 2009 models with 2009 as primary - Left : without scale delay - Right : with scale delay - Data SITG This improvement gets more clear as the point of view is reduced. The following image shows the initial algorithm and the scale delay algorithm on a specific area of the city with 2005 as primary model : Differences detection on 2005 and 2009 models with 2005 as primary - Left : without scale delay - Right : with scale delay - Data SITG By inverting the model roles and making the 2009 model primary for difference detection lead to similar results : Differences detection on 2005 and 2009 models with 2009 as primary - Left : without scale delay - Right : with scale delay - Data SITG Considering the denser models of 2013 and 2017 campaigns, the results of the scale delay introduction also lead to a better understanding of the differences as shown on the following images : Differences detection on 2013 and 2017 models with scale delay - Left : 2013 as primary - Right : 2017 as primary - Data SITG Nevertheless, one can see that scale delay is not able to get rid entirely of sampling disparities. The right image above, comparing the 2017 model to the 2013 one, shows sampling disparities being highlighted as differences on the wall of the building in the background. This does not affect too much the user readability, but still make the model a bit more complicated to understand. In addition, the models play an important role in the way differences can be detected through classic approach. For example, focusing on a specific building, the obtained highlighted differences : Differences detection on 2013 and 2017 models with scale delay with 2013 (left) and 2017 (right) as primary - Data SITG could lead the user to consider the building wall as a difference. Looking at the formal situation in both 2013 and 2017 models : Structural situation in 2013 (left) and 2017 (right) - Data SITG One can see that the detected difference comes from the missing wall on the 2013, and not from a formal evolution of the building. This example illustrates that sampling disparity is not the only factor that could reduce the readability of the model for the user. Differences Detection : Comparison with Land Register Differences \u00b6 As the algorithm is already tested for land register models, one can use its results on these data in order to put them into perspective of the detected differences on point cloud. As the methodology is not the same for vector-based and point-based models, it is interesting to see the coherence and deviations of both approaches. One important thing to underline, is that difference detection in land register model does not detect changes in the environment directly, but detects the revision of the land register itself, as discussed in the previous phase. Of course, land register models evolve with environment, but come also with a large amount of modifications that only represent corrections of the model and not formal changes in the environment. This reason reinforces the interest to but point-based model difference detection with the land register models ones. In the previous phase, the land register models of Geneva were selected to be the closest to the LIDAR campaigns. It follows, that these models can be directly used here, as each corresponding to the compared point-based model of this phase. As a first example, the following case is studied : Rue de Bourgogne and Rue de Lyon . In this case, looking at the following images giving the situation in 2013-04 and 2017-04 through the LIDAR models, that an industrial building was partially demolished. Structural situation in 2013 (left) and 2017 (right) - Data SITG The following images show the differences computed on both point-based and line-based models : Difference models between 2013 and 2017 of LIDAR (left) and INTERLIS (right), with 2013 as primary - Data SITG One can clearly see that the difference detection on the LIDAR models correctly emphasized a true structural difference between the two times. The situation is much less clear on the land register model. Indeed, as the time separating the two models is quite high, four years in such a case, a large mount of corrections dominates the difference model, leading to a difficult interpretation of the building situation change. The following images give the situation of the land register model in 2013 and 2017 that lead to the difference model above : Land register situation in 2013 (left) and 2017 (right) - Data SITG Looking at the land register models, one can also see that such large scale modification of the building situation does not appear clearly. Indeed, it takes some effort to detect minor changes on the two models, without leading to a clear indication of the modification. This shows how the LIDAR and its differences can help to detect and analyze differences in complement to the land register itself. Considering the second example, Avenue de France and Avenue Blanc , the following images give the structural situation of the two times as capture by the LIDAR campaigns : Structural situation in 2013 (left) and 2017 (right) - Data SITG One can clearly see the destruction of the two 2013 buildings replaced by a parking lot in 2017 . The detected differences on the LIDAR and land register models are presented on the following images : Difference models between 2013 and 2017 of LIDAR (left) and INTERLIS (right), with 2013 as primary - Data SITG Again, despite the differences are clearly and correctly highlighted on the LIDAR differences model, the situation remains unclear on the differences model of the land register. Again, one can observe that the land register was highly corrected between the two dates, leading to difficulties to understand the modification and its nature. Looking at the land register respective models : Land register situation in 2013 (left) and 2017 (right) - Data SITG the modification appears a bit more clearly. One can clearly see the disappearance of the two 2013 buildings in the land register replaced by a big empty area. Again, the difference detection on LIDAR seems clearly more relevant to detect and analyze structural differences than the land register itself. An interesting example is provided by the situation just east of the Basilique Notre-Dame . The two situations as captured by the LIDAR campaigns are presented on the following images : Structural situation in 2013 (left) and 2017 (right) - Data SITG One can observe two structure mounted on top of two buildings roof in the 2013 situation. These structures are used to ease the work that has to be performed on the roofs. These structures are no more present in the 2017 situation. The following images give the difference detection models for the LIDAR and land register : Difference models between 2013 and 2017 of LIDAR (left) and INTERLIS (right), with 2013 as primary - Data SITG In such a case, as the structural modification between 2013 and 2017 occurs on top of the buildings, their footprints is not affected and the differences have no chance to appear in the land register models, even looking at them individually as in the following images : Land register situation in 2013 (left) and 2017 (right) - Data SITG This is another example where the LIDAR difference detection lead to more and clearer information on the structural modification that appear on Geneva between the two times. Conclusion : Third Phase \u00b6 The main element of this third phase conclusion is that difference detection on point-based models is less straightforward than for other models. Indeed, applied naively, the algorithm is dominated by the sampling disparities of the compared models. This illustrate that point-based models, being a close mirror of the true territory state, have a large information density that is more difficult to reach, especially from their evolution point of view. Nevertheless, we showed that the algorithm can be adapted, with relatively simple adjustments, to perform well on point-based models difference detection problem. The implemented algorithm is able to track and represent the differences appearing between the models in a useful and comprehensive way for users. The proposed example showed that the differences models are able to guide the user toward interesting structural changes in the territory, with a clear view of the third dimension. Of course, the highlighted differences in point-based models are more complex and required a trained user that is able to interpret correctly the detail of the highlighted part of the model. The trees are a good example. As the tree re-grow each year, they will always appear as a differences in the compared models. A user only interested in building changes has to be aware of that and be able to separate the relevant differences from the others. Following the comparison between LIDAR and land register ( INTERLIS ) differences models, a very surprising conclusion appear. In the first place, one could stand that land register is the proper way of detected changes that can be then analyzed more in detail in point-based differences models. In turns out that to opposite is true. Several reason explain this surprising situation. In the first place, LIDAR are available only with large temporal gaps between them, at least two/three years. This allows the land register models to be filled with large amount of updates and correction, leading the differences model on this temporal gap to be filled with much more than structural modification. In addition, the LIDAR models come with the third dimension where the land register models are flat. The third dimension comes with large amount of differences that can not be seen in the land register. To some extend, the land register, and its evolution, is the reflect of the way the territory is surveyed, not the reflect of the formal territory evolution. In the opposite, as LIDAR models are a structural snapshot of a territory situation, the analyze of their differences across the time lead to a better tracking of the formal modification of the real world . Conclusion \u00b6 First Phase \u00b6 In the first phase, the difference detection algorithm was implemented for vector models and tested using synthetic differences on selected models. The results showed the interest of the obtained differences models to emphasize evolution of models from both user and process points of view. It was demonstrated that the information between models exists and can be extracted and represented in a relevant way for both users and processes. Second Phase \u00b6 In the second phase, the difference detection algorithm was tested on the Swiss land register models on which the results obtained during the first phase were confirmed. The differences models are able to provide both user and process a clear and understandable view of the modification brought to the models. In addition, through the short and long-term perspectives, it was possible to demonstrate how the difference detection algorithm is able to provide different points of view on the model evolution. From a short-term perspective, the differences models are able to provide a clear and individual view of the modification while the long-term perspective allows to see the large scale evolution and transformation of the models. It follows that the difference models can be used as a tool for various actors using or working with the land register models. Third Phase \u00b6 In the third phase, the difference detection algorithm, developed on vector models, was applied on point-based models, showing that a direct application on these models lead to the same issue as the logical operators : the differences models are dominated by sampling disparities, making them complicated to read. The solution of scale delay brought to the algorithm allowed to produce much clearer differences models for point-based data, allowing to generalize the difference detection on any models. In addition to these results, the comparison of difference models on land register and on their corresponding LIDAR point-based models showed an interesting result : for structural changes, the point-based models lead to much more interesting results through the highlighted differences. Indeed, as land register models, considered long term perspective, are dominated by a large amount of corrections and adjustments in addition to territory evolution updates, making the structural changes not easy to detect and understand. The differences models are more clear with point-based models form this point of view. In addition, as point-based models, such as LIDAR , come with the third dimension, a large amount of structural differences can only be seen through such data as many structural changes are made along the third dimension. It then follows that difference detection applied to point-based models offers a very interesting point of view for the survey of territory structural changes. Synthesis \u00b6 As a synthesis, it is clear that models are carrying a large amount of richness themselves, that is already a challenge to exploit, but it is also clear that a large amount of information can be found between the versions of the models. The difference detection algorithm brings a first tool that demonstrate the ability to reach and start to exploit these informations. More than the content of the models itself, the understanding of the evolution of this content is a major topic especially in the field of geodata as they represent, transcript, the evolution of the surveyed territory. It then appears clear that being able to reach and exploit the information contained in-between the models is a major advantage as it allows understanding what are these models, that is four dimensional objects. Perspectives \u00b6 Many perspectives are opened following the implementation and analysis of the difference detection. Several perspectives, mostly technical, are presented here as a final section. In the first place, as raster are entering the set of data that can be injected in the platform, evolution of the difference detection could be applied to the platform, taking advantage of the evolution of machine learning. The possibility of detected differences in images could lead to very interesting perspective through the data communication features of the platform. Another perspective could be to allow the platform to separate the data into formal layers, the separation being only currently ensure by type and times. Splitting data into layers would allow applying difference detection in a much more controlled manner, leading to difference models focused on very specific elements of the model temporal evolution. The addition of layer could also be the starting point to the notion of data convolution micro language . Currently, data communication and difference detection only apply through the specification of two different and parallel navigation time. The users, or processes, have to specify each of the two time position in order to obtain the mixed of differences models they need. An interesting evolution would be to replace these two navigation time by a small and simple micro language allowing the user to compare more than two times in a more complex manner. This could also benefit from data separation through layer. Such micro language could allow to compare two, three or more models, or layers, and would also open the access the mixed models of differences models such as comparing the difference detection between point-based and vector-based models, which would then be a comparison of a comparison. Reproduction Resources \u00b6 To reproduce the presented experiments, the STDL 4D framework has to be used and can be found here : STDL 4D framework (eratosthene-suite), STDL You can follow the instructions on the README to both compile and use the framework. Only part of the considered datasets are publicly available. For the OpenStreetMap datasets, you can download them from the following source : Shapefile layers, OpenStreetMap For the Swiss 3D buildings model, you can contact swisstopo : Shapefile 3D buildings, swisstopo For the land register datasets of Geneva and Thurgau , you can contact the SITG and the Thurgau Kanton : INTERLIS land register, Thurgau Kanton INTERLIS land register, SITG (Geneva) The point-based models of Geneva can be downloaded from the SITG online extractor : LAS MNS, SITG (Geneva) To extract and convert the data from planimetric shapefiles , the following code is used : Shapefile CSV export to UV3 (csv-wkt-to-uv3), STDL where the README gives all the information needed. In case of shapefile containing 3D models, please ask the STDL for advice and tools. To extract and convert the data from INTERLIS and LAS , the following codes are used : INTERLIS to UV3 (dalai-suite), STDL/EPFL LAS to UV3 (dalai-suite), STDL/EPFL where the README gives all the information needed. For the 3D geographical coordinates conversion and heights restoration, we used two STDL internal tools. You can contact the STDL to obtain the tools and support in this direction : ptolemee-suite : 3D coordinate conversion tool (EPSG:2056 to WGS84) height-from-geotiff : Restoring geographical heights using topographic GeoTIFF ( SRTM ) You can contact STDL for any question regarding the reproduction of the presented results. Auxiliary Developments & Corrections \u00b6 In addition to the main developments made, some additional scripts and other corrections have been made to solve auxiliary problems or to improve the code according to the developed features during this task. The auxiliary developments are summarized here : Correction of socket read function to improve server-client connectivity. Creation of scripts that allows to insert synthetic modifications (random displacements on the vertex coordinates) on UV3 models. Creation of a script to convert CSV export from shapefile to UV3 format. The script code is available here . Adding temporary addresses (space-time index) exportation in platform 3D interface. Correction of the cell enumeration process in platform 3D interface (wrong depth limit implementation). Creation of a script allowing segmenting UV3 model according to geographical bounding box. Creation of C codes to perform statistical analysis of the point, line and triangle-based models : computation of edge size and nearest neighbor distributions. Creation of a C code allowing enumerating non-empty cell index over the Switzerland models injected in the platform. Creation of a C code allowing to automate the difference detection based on an index list and by searching in the data queried from the platform. Developments of various scripts for plots and figures creations. References \u00b6 [1] REFRAME, SwissTopo, https://www.swisstopo.admin.ch/de/karten-daten-online/calculation-services.html","title":"AUTOMATIC DETECTION OF CHANGES IN THE ENVIRONMENT"},{"location":"TASK-DIFF/#automatic-detection-of-changes-in-the-environment","text":"Nils Hamel (UNIGE) Project scheduled in the STDL research roadmap - TASK-DIFF September 2020 to November 2020 - Published on December 7, 2020 Abstract : Developed at EPFL with the collaboration of Cadastre Suisse to handle large scale geographical models of different nature, the STDL 4D platform offers a robust and efficient indexation methodology allowing to manage storage and access to large-scale models. In addition to spatial indexation, the platform also includes time as part of the indexation, allowing any area to be described by models in both spatial and temporal dimensions. In this development project, the notion of model temporal derivative is explored and proof-of-concepts are implemented in the platform. The goal is to demonstrate that, in addition to their formal content, models coming with different temporal versions can be derived along the time dimension to compute difference models. Such proof-of-concept is developed for both point cloud and vectorial models, demonstrating that the indexation formalism of the platform is able to ease considerably the computation of difference models. This research project demonstrates that the time dimension can be fully exploited in order to access the data it holds.","title":"AUTOMATIC DETECTION OF CHANGES IN THE ENVIRONMENT"},{"location":"TASK-DIFF/#task-context-difference-detection","text":"As the implemented indexation formalism is based on equivalences classes defined on space and time, a natural discretization along all the four dimensions is obtained. In the field of difference detection, it allowed implementing simple logical operators on the four-dimensional space. The OR , AND and XOR operators were then implemented allowing the platform to compute, in real time , convolutions to compare models with each others across the time. The implementation of these operators was simple due to the natural spatio-temporal discretization obtained from the indexation formalism. Nevertheless, two major drawbacks appeared : the first one is that such operators only works for point-based models. Having the opportunity to compute and render differences and similarities between any type of data is not possible with such formal operators. The second drawback comes from the nature of the point-based capturing devices. Indeed, taking the example of a building, even without any change to its structure, two digitization campaigns can lead to disparities only due to measures sampling. The XOR operator is the natural choice to detect and render differences, but this operator is very sensitive to sampling disparities. Computing the XOR convolution between two point-based models leads the rendering to be dominated by sampling variations rather than the desired structural differences. This drawback was partially solved by considering the AND operator. Indeed, the AND operator allows to only shows constant structural elements from two different positions in time and is insensitive to sampling disparities. As shown on the following images, the AND operator shows differences as black spots (missing parts) : AND convolution between two LIDAR models : Geneva 2005 and 2009 - Data : SITG As one can see, AND convolutions allow detecting, through the black spots, large area of structural changes between the two times and also, with more care, allow guessing smaller differences. Nevertheless, reading and interpreting such representation remains complex for users. The goal of this task is then to tackle these two drawbacks, allowing the platform to detect changes not only for point-based models but also for vector-based models and to implement a variation of the XOR operator for point-based models allowing to efficiently highlight the structural evolution. The task consists then in the implementation, testing and validation of a difference detection algorithm suitable for any type of model and to conduct a formal analysis on the best rendering techniques.","title":"Task Context : Difference Detection"},{"location":"TASK-DIFF/#methodology","text":"A step by step methodology is defined to address the problem of difference detection in the platform. In a first phase, the algorithm will be developed and validated on vector-based models as follows : Obtaining a large scale vector-based model on which synthetic variation are introduced Development of the algorithm using the synthetic variations model Testing and validation of the algorithm (using the known synthetic variations) First conclusion In a second phase, true land register data will be used to formally detect real evolutions of the territory : Obtaining true land register vector-based models (INTERLIS) at different times Analysis of the difference detection algorithm on true land register vector-based models Second conclusion In a third phase, the algorithm will be validated and adapted to work on point-based models : Obtaining true land register point-based models (LAS) at different position in time Verifying the performances of the vector-based detection algorithm on point-based data Adaptation of the algorithm for point-based models Analysis of the difference detection algorithm on true land register point-based models Comparison of the detected differences on point-based models and on their corresponding land register vector-based models (INTERLIS) Third conclusion In addition, the development of difference detection algorithm has to be conducted keeping in mind the possible future evolutions of the platform such as addition of layers (separation of data), implementation of a multi-scale approach of the time dimension and addition of raster data in the platform.","title":"Methodology"},{"location":"TASK-DIFF/#first-phase-synthetic-variations","text":"In order to implements the vector-based difference detection algorithm, sets of data are considered as base on which synthetic differences are applied to simulate the evolution of the territory. This approach allows focusing on well controlled data to formally benchmark the results of the implemented algorithm. Experiments are conducted using these data to formally evaluate the performance of the developed algorithm.","title":"First Phase : Synthetic Variations"},{"location":"TASK-DIFF/#selected-resources-and-models","text":"","title":"Selected Resources and Models"},{"location":"TASK-DIFF/#implementation-of-the-algorithm","text":"In order to compare two models at two different positions in time to detect differences, the solution is of course to search for each primitive of the primary time if it has a corresponding one in the secondary time. In such case, the primitives can be concluded as static in time and only the primitives that have no correspondence will be highlighted as differences. A first approach was initially tested : a vertex-based comparison. As every primitive (points, lines and triangles) is supported by vertexes, it can be seen as a common denominator on which comparison can take place. Unfortunately, it is not a relevant approach as it leads to an asymmetric detection algorithm. To illustrate the issue, the following image shows the situation of a group of line-based primitives at two different times with an evolution on one of the primitive vertex : Asymmetric approach : The variation is detected only when comparing backward in time When the comparison occurs between the second time and the first one, the modified vertex correspondence is not found, and the vertex can be highlighted as a difference. The asymmetry appears as the first time is compared to the second one. In this case, despite the primitive vertex changed, the vertex-based approach is able to find another vertex, part of another primitive, and interprets it as a vertex identity, leading the modified primitive to be considered as static. In order to obtain a fully symmetric algorithm, that does not depend on the way models are compared in times, a primitive-attached approach is considered. The implemented algorithm then treats the correspondence problem from the whole primitive point of view, by checking that the whole primitive can be found in the other model to which it is compared to. This allows to highlight any primitive showing a modification, regardless of the way models are compared and the nature of the modification. In addition to highlighting the primitives that changed through time, the implemented algorithm also renders the primitives that have not changed. The primitives are then shown by modulating their color to emphasize the modifications by keeping their original color for the modified one, while the static primitives are shown in dark gray. This allows to not only show the modifications but also to keep the context of the modifications, helping the user to fully understand the nature of the territory evolution. In addition to color modulation, a variation of difference rendering is analyzed. In addition to color modulation, a visual and artificial marker is added to ease their search. The visual marker is a simple line emanating from the primitive and goes straight up with a size of 512 meters. Such markers are introduced to ease the detection of small primitives that can be difficult to spot according to large point of views. Additional developments were required for triangle-based models : indeed, such models need to be subjected to a light source during rendering for the user to understand the model (face shading). The previously implemented lighting model is then modified to take into account color modulation in order to correctly render the triangle that are highlighted. Moreover, the lighting model was modified to light both face of the triangles in order to light them regardless of the point of view. In addition, as mesh models are made of triangles, primitives can hide themselves. It can then be difficult for the user to spot the highlighted primitives as they can be hidden by others. An option was added to the rendering client allowing the user to ask the rendering of triangles as line-loops or points in order to make them transparent. Finally, an option allowing the user to enable or disable the render face culling was added for him to be able to see the primitive from backward.","title":"Implementation of the Algorithm"},{"location":"TASK-DIFF/#results-and-experiments","text":"With the implemented algorithm, a series of experiments are conducted in order to validate its results and to analyze the efficiency of the difference detection and rendering from a user point of view. In addition, experiments are also conducted to quantify the efficiency of the difference detection for automated processes.","title":"Results and Experiments"},{"location":"TASK-DIFF/#conclusion-first-phase","text":"During this first phase, the difference detection algorithm was developed and validated on both line-based and triangle-based data. An efficient algorithm is then implemented in the platform allowing emphasizing differences between models at different temporal positions. The algorithm is able to perform the detection on the fly with good performances allowing the users to dynamically browse the data to detect and analyze the territory evolutions. The performances of the detection algorithm allow the platform to be suitable for automated detection processes, as a data provider, answering large amounts of queries in an efficient and remote manner. Two variations of the difference detection algorithm are implemented. The first version consists in highlighting the primitives that are subject to modifications over a time. This variation is suitable for automated processes that can rely on simple search methods to list the differences. For the users, this first variation can lead to more difficult visual detection of the differences, especially in case the highlighted primitives are small or hidden by others. For this reason, visual markers were added on top of the highlighted primitives in order to be seen from far away, regardless of the primitives size. The measures sessions made during the user-based experiments showed a clear improvement of the detection rate when using the visual markers. This was especially true for triangle-based models, where the primitives bring occlusions. The user-based experiments showed that using the platform interface, a human can significantly outperform the result of a naive automated process operating on the models themselves. The experiments showed that the user is able to efficiently search and find through space and time the evolutions of the territory appearing in the data. Of course, as the model size and complexity increases, the user-driven interface starts to show its limits. In such a case, the process-based experiments showed that automated processes can take over these more complicated searches through methods allowing performing exhaustive detection over wide models in a matter of several minutes. At this point, the developments and validations of the algorithm, and its variations, were conducted on synthetic modifications introduced in models using controlled procedures. The next phase focuses on formal data extracted from land registers.","title":"Conclusion : First Phase"},{"location":"TASK-DIFF/#second-phase-true-variations","text":"In this second phase, also dedicated to vector-based models, the focus is set on applying the developed difference detection algorithm on true land register models. Two sets of data are considered in order to address short-term and long-term difference detection.","title":"Second Phase : True Variations"},{"location":"TASK-DIFF/#selected-resources-and-models_1","text":"In both cases, short-term and long-term, INTERLIS data are considered. A selection of tables in different topics is performed to extract the most interesting geometries of the land registering. For all models, the following colors are used to distinguish the extracted layers : INTERLIS selected topics and tables colors - Official French and German designations The layers are chosen according to their geometric content. The color assignation is arbitrary and does not correspond to any official colorization standard.","title":"Selected Resources and Models"},{"location":"TASK-DIFF/#results-and-analysis","text":"","title":"Results and Analysis"},{"location":"TASK-DIFF/#conclusion-second-phase","text":"Two cases have been addressed in this phase showing each specific interesting application of the difference detection applied on land register data through the INTERLIS format. Indeed, short and long term differences emphasize two different points of view according to the analysis of the land register and its evolution in time. In the first place, the short term application clearly showed how difference detection and their representation opens a new point of view on the evolution of the land register as it allows focusing on clear and well identified modifications. As the compared models are close in time, one is able to produced differences models allowing to clearly see, modification by modification, what happened between the two compare situations, allowing focusing on each evolution to fully understand the modification. It follows that this short-term difference detection can provide a useful approach for the user of the land register that are more interested in the evolution of the model rather than in the model itself. The difference models can provide users a clear a simple view on what to search and to analyze to understand the evolution of such complex models. In some way, the differences on land register models can be seen as an additional layer proposed to the user to allow him to reach information that are not easy to extract from the models themselves. The case of Geneva , illustrating the long-term difference detection case, showed another interesting point of view. In the first place, one has to understand that land register models are complex and living models, not only affected by the transcription of the real-world situation across the time. Indeed, on the Geneva models, a large amount of differences is detected even on a relative short period of time (two years). In addition to the regular updates, following the territory evolution, a large amount of corrections is made to keep the model in the correct reference frame. The Swiss federal system can also add complexity, as all Cantons have to align themselves on a common set of expectations. In such a case, the difference detection turned out to be an interesting tool to understand and follows the corrections made to the model in addition to the regular updates. On the Geneva case, we illustrated that, by detecting it in the difference model, the correction on the coordinates frame on large pieces of the territory. This shows how the difference detection can be seen as a service that can help to keep track of the life of the model by detecting and checking these type of modifications. As a result, difference detection can be a tool for the user of the land register but can also be a tool for the land register authorities themselves. The difference models can be used to check and audit the evolution of the models, helping the required follow-up on the applied correction and updates.","title":"Conclusion : Second Phase"},{"location":"TASK-DIFF/#third-phase-point-based-models","text":"In this third and last phase, the developed algorithm for difference detection on vector models is tested on point-based ones. As mentioned in the introduction, the platform was already implementing logical operators allowing comparing point-based models across time. As illustrated in the introduction, only the AND operator allowed emphasizing differences, but rendering them as missing part of the composite models. It was then difficult for the user to determine and analyze those differences. The goal of this last phase is to determine in which extend the developed algorithm is able to improve the initial results of point-based logical operators and how it can be adapted to provide better detection of differences.","title":"Third Phase : Point-Based Models"},{"location":"TASK-DIFF/#selected-resources-and-models_2","text":"","title":"Selected Resources and Models"},{"location":"TASK-DIFF/#differences-detection-algorithm-direct-application-on-point-based-models","text":"In order to determine the performances of the difference detection algorithm on the selected point-based models, the algorithm is simply applied without any adaptation on the data-sets and the results are analyzed. The following images give an overview of the obtained results comparing the 2005 and 2009 models : Application of the difference detection algorithm on point-based models : Geneva model of 2005 and 2009 with 2005 as primary (left) and inversely (right) - Data SITG One can see that the obtained results are very similar to the results obtained with the previously implemented XOR logical operator. The only differences is that the identical points are shown (in dark gray) along with the highlighted points (showing the differences). The same conclusion applies : the obtained composite model is difficult to read as it is dominated by sampling disparities. One can, by carefully looking at the model, ending up detecting large modifications by searching for highlighted points accumulation. In addition, taking one model or the other as primary for the algorithm does not really help as shown on the images above. The same conclusion applies even when the two compared models comes with a similar point density as the 2013 and 2017 models : Application of the difference detection algorithm on point-based models : Geneva model of 2013 and 2017 with 2013 as primary (left) and inversely (right) - Data SITG One can nevertheless observe that choosing the less dense model as primary leads to results a bit more clear for difference detection, but remaining very hard to interpret for a user, and much more for automated processes. In addition, the performances of the algorithm are very poor as point-based models are much denser in terms of primitives than line or triangle-based models. These reasons lead to the conclusion that the algorithm can not be directly used for point-based models and need a more specific approach.","title":"Differences Detection Algorithm : Direct Application on Point-Based Models"},{"location":"TASK-DIFF/#differences-detection-algorithm-adaptation-for-point-based-models","text":"In order to adapt the difference detection algorithm for point-based models, two aspects have to be addressed : the efficiency of the detection and the reduction of the sampling disparities over-representation, which are both server-side operations. The problem of efficiency can be solved quite easily if the adaptation of the difference detection algorithm goes in the direction of logical operators, for which an efficient methodology is already implemented. Solving the sampling disparity over-representation is more complicated. The adopted solution is inspired from a simple observation : the less deep (density of cells) the queries are, the clearer the obtained representation is. This can be illustrated by the following images showing the 2005 model compared with the 2009 one with depth equal to 7, 6 and 5, from left to right : Example of decreasing query depth on the comparison of 2005 and 2009 models - Data SITG This is expected, as the sampling disparities can only appear at scales corresponding to the nearest neighbor distribution. Nevertheless, as the depth is decreased, the models become less and less dense. The increase of difference readability is then compensated by the lack of density, making the structures more difficult to identify, and then, their subsequent modifications. The goal of the algorithm adaptation is to keep both readability and density. To achieve this goal, the implementation of the previous XOR operator is considered as a base, mostly for its efficiency. As the XOR simply detects if a cell of the space-time discretization at a given time is in a different state as its counterpart at another time, it can be modulated to introduce a scale delay mechanism that only applies detection on low-valued scales, broadcasting their results to their daughter cells. This allows to preserve the density and to perform the detection only on sufficiently shallow scales to avoid sampling disparities to become dominant. The question is how to operate the scale delay according to the scale itself. Indeed, with large points of view, the delay is not necessary as the model is viewed from far away. The necessity of the scale delay appears as the point of view is reduced, and, the more it is reduced, the larger the scale delay needs to be. A scale-attached delay is then defined to associate a specific value for each depth.","title":"Differences Detection Algorithm : Adaptation for Point-Based Models"},{"location":"TASK-DIFF/#results-and-experiments_1","text":"The adaptation of the difference detection algorithm for point-based models is analyzed using the selected data-sets. An overview of its result is presented before a more formal analysis is made using difference detection made on line-based official land register data to be compared with the differences on point-based models.","title":"Results and Experiments"},{"location":"TASK-DIFF/#conclusion-third-phase","text":"The main element of this third phase conclusion is that difference detection on point-based models is less straightforward than for other models. Indeed, applied naively, the algorithm is dominated by the sampling disparities of the compared models. This illustrate that point-based models, being a close mirror of the true territory state, have a large information density that is more difficult to reach, especially from their evolution point of view. Nevertheless, we showed that the algorithm can be adapted, with relatively simple adjustments, to perform well on point-based models difference detection problem. The implemented algorithm is able to track and represent the differences appearing between the models in a useful and comprehensive way for users. The proposed example showed that the differences models are able to guide the user toward interesting structural changes in the territory, with a clear view of the third dimension. Of course, the highlighted differences in point-based models are more complex and required a trained user that is able to interpret correctly the detail of the highlighted part of the model. The trees are a good example. As the tree re-grow each year, they will always appear as a differences in the compared models. A user only interested in building changes has to be aware of that and be able to separate the relevant differences from the others. Following the comparison between LIDAR and land register ( INTERLIS ) differences models, a very surprising conclusion appear. In the first place, one could stand that land register is the proper way of detected changes that can be then analyzed more in detail in point-based differences models. In turns out that to opposite is true. Several reason explain this surprising situation. In the first place, LIDAR are available only with large temporal gaps between them, at least two/three years. This allows the land register models to be filled with large amount of updates and correction, leading the differences model on this temporal gap to be filled with much more than structural modification. In addition, the LIDAR models come with the third dimension where the land register models are flat. The third dimension comes with large amount of differences that can not be seen in the land register. To some extend, the land register, and its evolution, is the reflect of the way the territory is surveyed, not the reflect of the formal territory evolution. In the opposite, as LIDAR models are a structural snapshot of a territory situation, the analyze of their differences across the time lead to a better tracking of the formal modification of the real world .","title":"Conclusion : Third Phase"},{"location":"TASK-DIFF/#conclusion","text":"","title":"Conclusion"},{"location":"TASK-DIFF/#first-phase","text":"In the first phase, the difference detection algorithm was implemented for vector models and tested using synthetic differences on selected models. The results showed the interest of the obtained differences models to emphasize evolution of models from both user and process points of view. It was demonstrated that the information between models exists and can be extracted and represented in a relevant way for both users and processes.","title":"First Phase"},{"location":"TASK-DIFF/#second-phase","text":"In the second phase, the difference detection algorithm was tested on the Swiss land register models on which the results obtained during the first phase were confirmed. The differences models are able to provide both user and process a clear and understandable view of the modification brought to the models. In addition, through the short and long-term perspectives, it was possible to demonstrate how the difference detection algorithm is able to provide different points of view on the model evolution. From a short-term perspective, the differences models are able to provide a clear and individual view of the modification while the long-term perspective allows to see the large scale evolution and transformation of the models. It follows that the difference models can be used as a tool for various actors using or working with the land register models.","title":"Second Phase"},{"location":"TASK-DIFF/#third-phase","text":"In the third phase, the difference detection algorithm, developed on vector models, was applied on point-based models, showing that a direct application on these models lead to the same issue as the logical operators : the differences models are dominated by sampling disparities, making them complicated to read. The solution of scale delay brought to the algorithm allowed to produce much clearer differences models for point-based data, allowing to generalize the difference detection on any models. In addition to these results, the comparison of difference models on land register and on their corresponding LIDAR point-based models showed an interesting result : for structural changes, the point-based models lead to much more interesting results through the highlighted differences. Indeed, as land register models, considered long term perspective, are dominated by a large amount of corrections and adjustments in addition to territory evolution updates, making the structural changes not easy to detect and understand. The differences models are more clear with point-based models form this point of view. In addition, as point-based models, such as LIDAR , come with the third dimension, a large amount of structural differences can only be seen through such data as many structural changes are made along the third dimension. It then follows that difference detection applied to point-based models offers a very interesting point of view for the survey of territory structural changes.","title":"Third Phase"},{"location":"TASK-DIFF/#synthesis","text":"As a synthesis, it is clear that models are carrying a large amount of richness themselves, that is already a challenge to exploit, but it is also clear that a large amount of information can be found between the versions of the models. The difference detection algorithm brings a first tool that demonstrate the ability to reach and start to exploit these informations. More than the content of the models itself, the understanding of the evolution of this content is a major topic especially in the field of geodata as they represent, transcript, the evolution of the surveyed territory. It then appears clear that being able to reach and exploit the information contained in-between the models is a major advantage as it allows understanding what are these models, that is four dimensional objects.","title":"Synthesis"},{"location":"TASK-DIFF/#perspectives","text":"Many perspectives are opened following the implementation and analysis of the difference detection. Several perspectives, mostly technical, are presented here as a final section. In the first place, as raster are entering the set of data that can be injected in the platform, evolution of the difference detection could be applied to the platform, taking advantage of the evolution of machine learning. The possibility of detected differences in images could lead to very interesting perspective through the data communication features of the platform. Another perspective could be to allow the platform to separate the data into formal layers, the separation being only currently ensure by type and times. Splitting data into layers would allow applying difference detection in a much more controlled manner, leading to difference models focused on very specific elements of the model temporal evolution. The addition of layer could also be the starting point to the notion of data convolution micro language . Currently, data communication and difference detection only apply through the specification of two different and parallel navigation time. The users, or processes, have to specify each of the two time position in order to obtain the mixed of differences models they need. An interesting evolution would be to replace these two navigation time by a small and simple micro language allowing the user to compare more than two times in a more complex manner. This could also benefit from data separation through layer. Such micro language could allow to compare two, three or more models, or layers, and would also open the access the mixed models of differences models such as comparing the difference detection between point-based and vector-based models, which would then be a comparison of a comparison.","title":"Perspectives"},{"location":"TASK-DIFF/#reproduction-resources","text":"To reproduce the presented experiments, the STDL 4D framework has to be used and can be found here : STDL 4D framework (eratosthene-suite), STDL You can follow the instructions on the README to both compile and use the framework. Only part of the considered datasets are publicly available. For the OpenStreetMap datasets, you can download them from the following source : Shapefile layers, OpenStreetMap For the Swiss 3D buildings model, you can contact swisstopo : Shapefile 3D buildings, swisstopo For the land register datasets of Geneva and Thurgau , you can contact the SITG and the Thurgau Kanton : INTERLIS land register, Thurgau Kanton INTERLIS land register, SITG (Geneva) The point-based models of Geneva can be downloaded from the SITG online extractor : LAS MNS, SITG (Geneva) To extract and convert the data from planimetric shapefiles , the following code is used : Shapefile CSV export to UV3 (csv-wkt-to-uv3), STDL where the README gives all the information needed. In case of shapefile containing 3D models, please ask the STDL for advice and tools. To extract and convert the data from INTERLIS and LAS , the following codes are used : INTERLIS to UV3 (dalai-suite), STDL/EPFL LAS to UV3 (dalai-suite), STDL/EPFL where the README gives all the information needed. For the 3D geographical coordinates conversion and heights restoration, we used two STDL internal tools. You can contact the STDL to obtain the tools and support in this direction : ptolemee-suite : 3D coordinate conversion tool (EPSG:2056 to WGS84) height-from-geotiff : Restoring geographical heights using topographic GeoTIFF ( SRTM ) You can contact STDL for any question regarding the reproduction of the presented results.","title":"Reproduction Resources"},{"location":"TASK-DIFF/#auxiliary-developments-corrections","text":"In addition to the main developments made, some additional scripts and other corrections have been made to solve auxiliary problems or to improve the code according to the developed features during this task. The auxiliary developments are summarized here : Correction of socket read function to improve server-client connectivity. Creation of scripts that allows to insert synthetic modifications (random displacements on the vertex coordinates) on UV3 models. Creation of a script to convert CSV export from shapefile to UV3 format. The script code is available here . Adding temporary addresses (space-time index) exportation in platform 3D interface. Correction of the cell enumeration process in platform 3D interface (wrong depth limit implementation). Creation of a script allowing segmenting UV3 model according to geographical bounding box. Creation of C codes to perform statistical analysis of the point, line and triangle-based models : computation of edge size and nearest neighbor distributions. Creation of a C code allowing enumerating non-empty cell index over the Switzerland models injected in the platform. Creation of a C code allowing to automate the difference detection based on an index list and by searching in the data queried from the platform. Developments of various scripts for plots and figures creations.","title":"Auxiliary Developments & Corrections"},{"location":"TASK-DIFF/#references","text":"[1] REFRAME, SwissTopo, https://www.swisstopo.admin.ch/de/karten-daten-online/calculation-services.html","title":"References"},{"location":"TASK-IDET/","text":"Object Detection Framework \u00b6 Alessandro Cerioni, Etat de Geneve - Cl\u00e9mence Herny, Exolabs - Adrian F. Meyer, FHNW - Gwena\u00eblle Salamin, Exolabs Published on November 22, 2021 Updated on December 12, 2023 Abstract : The STDL develops a framework allowing users to train and use deep learning models to detect objects in aerial images. While relying on a generic-purpose third-party open-source library, the STDL's framework implements a somewhat opinionated workflow, targeting georeferenced aerial images and labels. After a brief introduction to object detection, this article provides detailed information on the STDL's object detection framework and the opinions it implements. References to successful applications are provided along with concluding remarks. Introduction \u00b6 Object detection is a computer vision task which aims at detecting instances of objects of some target classes ( e.g. buildings, swimming pools, solar panels, ...) in digital images and videos. According to the commonly adopted terminology, a distinction is made between the following tasks: object detection , in which the goal is to determine the rectangular \"bounding box\" surrounding each detected object; instance segmentation , in which one aims at finding the pixels belonging to each detected object. This distinction is well illustrated by the bottom half of the following image: Object Detection vs Instance Segmentation. Image credit: Waleed Abdulla . Significant progress has been made over the past decades in the domain of object detection and instance segmentation (cf. e.g. this review paper ). Applications of object detection methods are today popular also in real-world products: for instance, some cars are already capable of detecting and reading speed limit signs; social media applications integrate photo and video effects based on face and pose detection. All these applications usually rely on deep learning methods, which are the subset of machine learning methods leveraging deep neural networks. While referring the reader to other sources for further information on machine and deep learning methods (cf. e.g. these lecture notes ), we wish to highlight a key point in all these approaches based on learning: no rigid, static, human-engineered rule is given to the machine to accomplish the task. Instead, the machine is provided with a collection of input-output pairs, where the output represents the outcome of a properly solved task. As far as object detection is concerned, we provide deep learning algorithms with a set of images accompanied by reference annotations (\"ground truth labels\"), which the machine is expected to reproduce. Clearly, things become interesting when the machine learns how to generate acceptable detections/segmentation on previously unseen images; such a crucial ability is referred to as \"generalization\". A generic framework was developed within the STDL, allowing the usage of state-of-the-art machine learning methods to detect objects in aerial images. Such framework allows one to leverage aerial images e.g. to provide valuable hints towards the update of cadastral information. At least as far as Switzerland is concerned, high-resolution (< 30 cm Ground Sample Distance) are acquired at the cantonal and federal scales on a regular basis. An inventory of the STDL's applications will be provided at the end of this article. The STDL's object detection framework is powered at its core by Detectron2 , a Python library developed by the Facebook Artificial Intelligence Research group and released under the Apache 2.0 open-source license . Detectron2 includes methods to train models performing various tasks, object detection and instance segmentation to name a few. Specific pieces of code were written by the STDL to pre-process data to be input to Detectron2, as well as to post-process outputs and turn them into meaningful information for the projects being developed. More precisely, our developments enable the usage of Detectron2 with georeferenced images and labels. Our workflow goes through the steps described here-below. Workflow \u00b6 1. Tileset generation \u00b6 Typically, aerial coverages are made accessible through Web Services, publicly or privately. While making opaque to the user the server-side tiling and file-based structure, these Web Services can efficiently generate raster images on-demand depending on the parameters sent by the requesting client. These parameters include: the bounding box of the requested area; the image width and height (in pixels); the reference system of both the bounding box (input) and the requested image (output). GIS tools such as QGIS and ArcGIS Pro as well as Web Applications powered by Web Mapping clients such as Leaflet , OpenLayers , MapLibre GL , etc. actually rely on this mechanism to let end-users navigating through tons of bits in quite a seamless, fluent, reactive way. As a matter of fact, zooming in and out in such 2D scenes amounts to fetching and visualizing different images depending on the zoom level, instead of \"simply\" increasing/decreasing the size of the various image pixels as displayed on screen. Through this 1st step of our workflow, several requests are issued against a Web Service in order to generate a consistent set of tiled images (\"tileset\") covering the so-called \" area of interest \" (AoI), namely the area over which the user intend to train a detection model and/or to perform the actual object detection. Connectors for the following two Web Services have been developed so far: OGC's Web Mapping Service (WMS) ; ESRI's Map Image Layer . XYZ link Except when using the XYZ connector that requires the EPSG:3857, our framework is agnostic with respect to the tiling scheme. The user has to provide as a input file compliant with some requirements. We refer the user to the code documentation for detailed information about these requirements. Concerning the AoI and its extension, the following scenarios are supported: training-only scenarios, i.e. the user intends to train a model to be used for detection at a later stage. In this case, the AoI would only cover the area for which reference, ground truth data exist. Detection-only (or \"inference-only\") scenarios, in which the user wishes to carry out object detection leveraging a previously trained model. In this case, the AoI would cover areas for which no reference data is available. Training AND detection scenarios, namely the composition of tasks 1 and 2. In the case of scenarios no. 1 and 3, ground truth labels are necessary. Provided by the user as polygons in some geographic coordinate system, the spatial coordinates of the vertices of these polygons must be mapped onto each image coordinate system - the latter ranging from (0, 0) to ( - 1, - 1) - in order to generate reference, ground truth instance segmentations. Technically, such a mapping can be achieved through an affine transformation . Labels can optionally be provided in the case of inference-only scenarios as well, should the user be willing to check non-ground truth labels against detections and vice-versa. At least two somewhat \"standard\" data formats exist, which allow one to formalize the link between images and instance segmentations (cf. e.g. this article for further information): Pascal VOC, COCO . Since Detectron2 natively supports the latter but not the former, we made the obvious choice to opt for the COCO format. As mentioned above, machine learning models are valuable as far as they do not \"overfit\" to the training data; in other words, as far as they generalize well to new, unseen data. One of the techniques which are commonly used in order to prevent machine learning algorithms from overfitting is the \"train, validation, test split\". While referring the interested reader to this Wikipedia page for further details, let us note that a 70%-15%-15% split is currently hard-coded in our framework. Various independent COCO tilesets are generated, depending on the scenario: in training-only scenarios, three COCO tilesets are generated: training tileset, abbreviated as trn ; validation tileset ( val ); test tileset ( tst ). For now, training, validation and test tiles are chosen exclusively among the tiles of the AoI including one or more ground truth labels. Having realized that some of our models tend to produce false detections, we will shortly improve our framework in order to allow for unlabeled tiles within the training, validation, test tilesets. In inference-only scenarios, a single COCO tileset labeled as \"other\" is generated ( oth is the abbreviation we use). In training + inference scenarios, the full collection of tilesets is generated: trn , val , tst , oth . 2. Model training \u00b6 The 1st step provides a collection of consistent ( i.e. same size and resolution) tiled images and corresponding COCO files ( trn + val + tst and/or oth depending on the scenario). The 2nd step consists in training a prediction model by iterating over the training dataset, as customarily done in machine and deep learning. As already mentioned, we delegate this crucial part of the process to the Detectron2 library; support for other libraries may be implemented in the future, if suitable. Detectron2 comes with a large collection of pre-trained models tailored for various tasks. In particular, as far as instance segmentation is concerned, pre-trained models can be selected from this list . In our workflow, we setup Detectron2 in such a way that inference is made on the validation dataset every N training iterations, being N a user-defined parameter. By doing this, we can monitor both the training and validation losses all along the iterative learning and decide when to stop. Typically, learning is stopped when the validation loss reaches a minimum (cf. e.g. this article for further information on early stopping). As training and validation loss curves are somewhat noisy, typically an on-the-fly smoothing is applied in order to reveal steady trends. Other metrics may be tracked and used to decide when to stop. For now, within our framework (early) stopping can be done manually and is left to the user; it will be made automatic in the future, following some suitable criterion. Training and validation losses in a sample object detection task. In this case, one could stop the training after the first ~1400 iterations. Note that, in this example, the validation loss is evaluated every 200 iterations. Let us note that the learning process is regulated by several parameters, which are usually called \"hyper-parameters\" in order to distinguish them from the learned \"parameters\", the latter being - in our deep learning context - the coefficients of the many neurons populating the various layers of the deep neural network. In successful scenarios, the iterative learning process does actually lower the validation loss until a minimum value is reached. Yet, such a minimum is likely to be a \"local\" one ( i.e. relative to a given set of hyper-parameters); indeed, the global minimum may be found along a different trajectory, corresponding to a different set of hyper-parameters. Actually, even finding the global minimum of the validation loss could be not as relevant as checking how different models resulting from different choices of the hyper-parameters compare with each other on the common ground of more meaningful \"business metrics\". Even though currently our code does not implement any automatic hyper-parameter tuning, neither in terms of expert metrics nor in terms of business ones, we have already setup everything that is needed to produce business metrics, as explained here-below. 3. Detection \u00b6 The model trained at the preceding step can be used to perform the actual object detection or instance segmentation over the various tilesets concerned by a given study: in training-only scenarios, detections can be made on the training, validation and test sets, for model assessment purposes (cf. next section); in inference-only scenarios, detections can be made over the tileset which we call \"other\", for now. Depending on the configuration, Detectron2 is capable to perform either object detection AND instance segmentation at once, or object detection only. In both cases, every detection is accompanied by the following information: the class the detected object belongs to; a confidence score, ranging from 0 to 1. In the case of object detection only, a bounding box is output as a list of vertices relative to the image coordinate system. In case instance segmentation is demanded, detections are also output under the form of binary (\"monochromatic\") masks, one per input tile/image, in which pixels belonging to target objects are encoded with ones whereas background pixels are encoded with zeros. Detectron2 output is then converted into a georeferenced vector. Polygon geometry can be simplified using the Ramer-Douglas-Peucker algorithm (RDP) by tuning the epsilon parameter. 4. Assessment \u00b6 The results are evaluated by matching the detections and the ground truth labels, i.e. by finding detections overlapping with ground truth labels. To be considered a match, the intersection over union (IoU) between the detection polygon and label polygon must be greater than a threshold set by the user, with a default value = 0.25. In addition, if there are intersections between several detections and ground truth labels, only the pair with the largest IoU is considered to be a valid match. Intersection over union between a label and a detection is defined as: \\(\\mbox{IoU} = \\frac{A_{label \\cap detection}}{A_{label \\cup detection}}\\) The spatial intersection between the vectorized detections and the ground truth labels is computed to tag detections according to the following classification: true positive (TP): detections matching correctly a ground truth object; false positive (FP): detections not matching any ground truth object; false negative (FN): missing detections, namely objects of the ground truth which are not detected; wrong class: detections matching a ground truth object of another class. The reader may wonder why there are no true negatives (TN) in the list. Actually, all the image pixels which are rightly not associated with the target class can be considered as \"true negatives\". Yet, as far as object detection and instance segmentation are concerned, we do not need to group leftover pixels into some sort of \"dummy objects\". Should the user need to model such a scenario, one idea might consist in introducing a dummy class ( e.g. \"background\" or \"other\"), to which all the (ir)relevant pixels would be associated. The metrics are calculated per-class to take into account possible imbalances between classes. The detections in the wrong class will be classified as FN, i.e. missed object, or false positive (FP), i.e. detections not matching any object, depending on the target class we are calculating for. Precision and recall by class are used here: \\(\\mbox{precision}_{class} = \\frac{\\mbox{TP}_{class}}{\\mbox{TP}_{class} + \\mbox{FP}_{class}}\\) \\(\\mbox{recall}_{class} = \\frac{\\mbox{TP}_{class}}{\\mbox{TP}_{class} + \\mbox{FN}_{class}}\\) While referring the reader to this page for further information on these metrics, let us note that: Precision is optimal when it equals one, i.e. when the count of FPs is equal to zero. This metric measures how good the model is in detecting only objects with the class of interest; Recall is optimal when it equals one, i.e. when the count of FNs is equal to zero. This metric measures how good the model is in detecting all objects of the class of interest without missing any. Each metric can be aggregated to keep only one value per dataset, rather than one per class. \\(\\mbox{precision} = \\frac{\\sum_{class}\\mbox{precision}_{class}}{\\mbox{nbr of classes}}\\) \\(\\mbox{recall} = \\frac{\\sum_{class}\\mbox{recall}_{class}}{\\mbox{nbr of classes}}\\) As already mentioned, each detection is assigned a confidence score, ranging from 0 to 1. By filtering out all the detections exhibiting a score smaller than some cut-off/threshold value, one would end up having more or less detections to compare against ground truth data; the higher the threshold, the smaller the number of detections, the better their quality in terms of the confidence score. Sampling the threshold from a minimal user-defined value to a maximum value ( e.g. 0.95) and counting TPs, FPs, FNs at each sampling step, meaningful curves can be obtained representing counts and/or metrics like precision and recall as a function of the threshold. Typically, precision (recall) is monotonically increasing (decreasing) as a function of the threshold. As such, neither the precision nor the recall can be used to determine the optimal value of the threshold, which is why precision and recall are customarily aggregated in order to form a third metric which can be convex if computed as a function of the threshold or, at least, it can exhibit local minima. This metric is named \" \\(F_1\\) score\" and is defined as follows: \\(F_1 = 2\\times \\frac{\\mbox{precision}\\;\\times\\;\\mbox{recall}}{\\mbox{precision}\\; +\\; \\mbox{recall}}\\) Different models can then be compared with each other in terms of \\(F_1\\) scores; the best model can be selected as the one exhibiting the maximum \\(F_1\\) over the validation dataset. At last, the test dataset can be used to assess the selected model and provide the end-user with an objective figures concerning its reliability. Other approaches exist, allowing one to summarize metrics and eventually come up with threshold-independent scores. One of these approaches consist in computing the \"Area Under the ROC curve\" (AUC, cf. this page ) and will be soon implemented by the STDL. 5. Iterate until results are satisfactory \u00b6 Several training sessions can be executed, using different values of the various hyper-parameters involved in the process. As a matter of fact, reviewing and improving ground truth data is also part of the hyper-parameter tuning (cf. \" From Model-centric to Data-centric Artificial Intelligence ''). Keeping track of the above-mentioned metrics across multiple realizations, eventually an optimal model should be found (at least, a local optimum). The exploration of the hyper-parameter space is a tedious task, which consumes time as well as human and computing resources. It can be performed in a more or less systematic/heuristic way, depending on the experience of the operator as well as on the features offered by the code. Typically, a partial exploration is enough to obtain acceptable results. Within the STDL team, it is customary to first perform some iterations until \"decent scores\" are obtained, then to involve beneficiaries and domain experts in the continuous evaluation and improvement of results, until satisfactory results are obtained. These exchanges between data scientists and domain experts are also key to raise both communities' awareness of the virtues and flaws of machine learning approaches. Use cases \u00b6 Here is a list of the successful applications of the object detection framework described in this article: Automatic detection of quarries Swimming Pool Detection for the Canton of Geneva Swimming Pool Detection for the Canton of Thurgau Classification of road surfaces Updating the \u00abCultivable Area\u00bb Layer of the Agricultural Office, Canton of Thurgau Concluding remarks \u00b6 The STDL's object detection framework is still under development and receives updates as new use cases are tackled.","title":" Object Detection Framework "},{"location":"TASK-IDET/#object-detection-framework","text":"Alessandro Cerioni, Etat de Geneve - Cl\u00e9mence Herny, Exolabs - Adrian F. Meyer, FHNW - Gwena\u00eblle Salamin, Exolabs Published on November 22, 2021 Updated on December 12, 2023 Abstract : The STDL develops a framework allowing users to train and use deep learning models to detect objects in aerial images. While relying on a generic-purpose third-party open-source library, the STDL's framework implements a somewhat opinionated workflow, targeting georeferenced aerial images and labels. After a brief introduction to object detection, this article provides detailed information on the STDL's object detection framework and the opinions it implements. References to successful applications are provided along with concluding remarks.","title":" Object Detection Framework "},{"location":"TASK-IDET/#introduction","text":"Object detection is a computer vision task which aims at detecting instances of objects of some target classes ( e.g. buildings, swimming pools, solar panels, ...) in digital images and videos. According to the commonly adopted terminology, a distinction is made between the following tasks: object detection , in which the goal is to determine the rectangular \"bounding box\" surrounding each detected object; instance segmentation , in which one aims at finding the pixels belonging to each detected object. This distinction is well illustrated by the bottom half of the following image: Object Detection vs Instance Segmentation. Image credit: Waleed Abdulla . Significant progress has been made over the past decades in the domain of object detection and instance segmentation (cf. e.g. this review paper ). Applications of object detection methods are today popular also in real-world products: for instance, some cars are already capable of detecting and reading speed limit signs; social media applications integrate photo and video effects based on face and pose detection. All these applications usually rely on deep learning methods, which are the subset of machine learning methods leveraging deep neural networks. While referring the reader to other sources for further information on machine and deep learning methods (cf. e.g. these lecture notes ), we wish to highlight a key point in all these approaches based on learning: no rigid, static, human-engineered rule is given to the machine to accomplish the task. Instead, the machine is provided with a collection of input-output pairs, where the output represents the outcome of a properly solved task. As far as object detection is concerned, we provide deep learning algorithms with a set of images accompanied by reference annotations (\"ground truth labels\"), which the machine is expected to reproduce. Clearly, things become interesting when the machine learns how to generate acceptable detections/segmentation on previously unseen images; such a crucial ability is referred to as \"generalization\". A generic framework was developed within the STDL, allowing the usage of state-of-the-art machine learning methods to detect objects in aerial images. Such framework allows one to leverage aerial images e.g. to provide valuable hints towards the update of cadastral information. At least as far as Switzerland is concerned, high-resolution (< 30 cm Ground Sample Distance) are acquired at the cantonal and federal scales on a regular basis. An inventory of the STDL's applications will be provided at the end of this article. The STDL's object detection framework is powered at its core by Detectron2 , a Python library developed by the Facebook Artificial Intelligence Research group and released under the Apache 2.0 open-source license . Detectron2 includes methods to train models performing various tasks, object detection and instance segmentation to name a few. Specific pieces of code were written by the STDL to pre-process data to be input to Detectron2, as well as to post-process outputs and turn them into meaningful information for the projects being developed. More precisely, our developments enable the usage of Detectron2 with georeferenced images and labels. Our workflow goes through the steps described here-below.","title":"Introduction"},{"location":"TASK-IDET/#workflow","text":"","title":"Workflow"},{"location":"TASK-IDET/#1-tileset-generation","text":"Typically, aerial coverages are made accessible through Web Services, publicly or privately. While making opaque to the user the server-side tiling and file-based structure, these Web Services can efficiently generate raster images on-demand depending on the parameters sent by the requesting client. These parameters include: the bounding box of the requested area; the image width and height (in pixels); the reference system of both the bounding box (input) and the requested image (output). GIS tools such as QGIS and ArcGIS Pro as well as Web Applications powered by Web Mapping clients such as Leaflet , OpenLayers , MapLibre GL , etc. actually rely on this mechanism to let end-users navigating through tons of bits in quite a seamless, fluent, reactive way. As a matter of fact, zooming in and out in such 2D scenes amounts to fetching and visualizing different images depending on the zoom level, instead of \"simply\" increasing/decreasing the size of the various image pixels as displayed on screen. Through this 1st step of our workflow, several requests are issued against a Web Service in order to generate a consistent set of tiled images (\"tileset\") covering the so-called \" area of interest \" (AoI), namely the area over which the user intend to train a detection model and/or to perform the actual object detection. Connectors for the following two Web Services have been developed so far: OGC's Web Mapping Service (WMS) ; ESRI's Map Image Layer . XYZ link Except when using the XYZ connector that requires the EPSG:3857, our framework is agnostic with respect to the tiling scheme. The user has to provide as a input file compliant with some requirements. We refer the user to the code documentation for detailed information about these requirements. Concerning the AoI and its extension, the following scenarios are supported: training-only scenarios, i.e. the user intends to train a model to be used for detection at a later stage. In this case, the AoI would only cover the area for which reference, ground truth data exist. Detection-only (or \"inference-only\") scenarios, in which the user wishes to carry out object detection leveraging a previously trained model. In this case, the AoI would cover areas for which no reference data is available. Training AND detection scenarios, namely the composition of tasks 1 and 2. In the case of scenarios no. 1 and 3, ground truth labels are necessary. Provided by the user as polygons in some geographic coordinate system, the spatial coordinates of the vertices of these polygons must be mapped onto each image coordinate system - the latter ranging from (0, 0) to ( - 1, - 1) - in order to generate reference, ground truth instance segmentations. Technically, such a mapping can be achieved through an affine transformation . Labels can optionally be provided in the case of inference-only scenarios as well, should the user be willing to check non-ground truth labels against detections and vice-versa. At least two somewhat \"standard\" data formats exist, which allow one to formalize the link between images and instance segmentations (cf. e.g. this article for further information): Pascal VOC, COCO . Since Detectron2 natively supports the latter but not the former, we made the obvious choice to opt for the COCO format. As mentioned above, machine learning models are valuable as far as they do not \"overfit\" to the training data; in other words, as far as they generalize well to new, unseen data. One of the techniques which are commonly used in order to prevent machine learning algorithms from overfitting is the \"train, validation, test split\". While referring the interested reader to this Wikipedia page for further details, let us note that a 70%-15%-15% split is currently hard-coded in our framework. Various independent COCO tilesets are generated, depending on the scenario: in training-only scenarios, three COCO tilesets are generated: training tileset, abbreviated as trn ; validation tileset ( val ); test tileset ( tst ). For now, training, validation and test tiles are chosen exclusively among the tiles of the AoI including one or more ground truth labels. Having realized that some of our models tend to produce false detections, we will shortly improve our framework in order to allow for unlabeled tiles within the training, validation, test tilesets. In inference-only scenarios, a single COCO tileset labeled as \"other\" is generated ( oth is the abbreviation we use). In training + inference scenarios, the full collection of tilesets is generated: trn , val , tst , oth .","title":"1. Tileset generation"},{"location":"TASK-IDET/#2-model-training","text":"The 1st step provides a collection of consistent ( i.e. same size and resolution) tiled images and corresponding COCO files ( trn + val + tst and/or oth depending on the scenario). The 2nd step consists in training a prediction model by iterating over the training dataset, as customarily done in machine and deep learning. As already mentioned, we delegate this crucial part of the process to the Detectron2 library; support for other libraries may be implemented in the future, if suitable. Detectron2 comes with a large collection of pre-trained models tailored for various tasks. In particular, as far as instance segmentation is concerned, pre-trained models can be selected from this list . In our workflow, we setup Detectron2 in such a way that inference is made on the validation dataset every N training iterations, being N a user-defined parameter. By doing this, we can monitor both the training and validation losses all along the iterative learning and decide when to stop. Typically, learning is stopped when the validation loss reaches a minimum (cf. e.g. this article for further information on early stopping). As training and validation loss curves are somewhat noisy, typically an on-the-fly smoothing is applied in order to reveal steady trends. Other metrics may be tracked and used to decide when to stop. For now, within our framework (early) stopping can be done manually and is left to the user; it will be made automatic in the future, following some suitable criterion. Training and validation losses in a sample object detection task. In this case, one could stop the training after the first ~1400 iterations. Note that, in this example, the validation loss is evaluated every 200 iterations. Let us note that the learning process is regulated by several parameters, which are usually called \"hyper-parameters\" in order to distinguish them from the learned \"parameters\", the latter being - in our deep learning context - the coefficients of the many neurons populating the various layers of the deep neural network. In successful scenarios, the iterative learning process does actually lower the validation loss until a minimum value is reached. Yet, such a minimum is likely to be a \"local\" one ( i.e. relative to a given set of hyper-parameters); indeed, the global minimum may be found along a different trajectory, corresponding to a different set of hyper-parameters. Actually, even finding the global minimum of the validation loss could be not as relevant as checking how different models resulting from different choices of the hyper-parameters compare with each other on the common ground of more meaningful \"business metrics\". Even though currently our code does not implement any automatic hyper-parameter tuning, neither in terms of expert metrics nor in terms of business ones, we have already setup everything that is needed to produce business metrics, as explained here-below.","title":"2. Model training"},{"location":"TASK-IDET/#3-detection","text":"The model trained at the preceding step can be used to perform the actual object detection or instance segmentation over the various tilesets concerned by a given study: in training-only scenarios, detections can be made on the training, validation and test sets, for model assessment purposes (cf. next section); in inference-only scenarios, detections can be made over the tileset which we call \"other\", for now. Depending on the configuration, Detectron2 is capable to perform either object detection AND instance segmentation at once, or object detection only. In both cases, every detection is accompanied by the following information: the class the detected object belongs to; a confidence score, ranging from 0 to 1. In the case of object detection only, a bounding box is output as a list of vertices relative to the image coordinate system. In case instance segmentation is demanded, detections are also output under the form of binary (\"monochromatic\") masks, one per input tile/image, in which pixels belonging to target objects are encoded with ones whereas background pixels are encoded with zeros. Detectron2 output is then converted into a georeferenced vector. Polygon geometry can be simplified using the Ramer-Douglas-Peucker algorithm (RDP) by tuning the epsilon parameter.","title":"3. Detection"},{"location":"TASK-IDET/#4-assessment","text":"The results are evaluated by matching the detections and the ground truth labels, i.e. by finding detections overlapping with ground truth labels. To be considered a match, the intersection over union (IoU) between the detection polygon and label polygon must be greater than a threshold set by the user, with a default value = 0.25. In addition, if there are intersections between several detections and ground truth labels, only the pair with the largest IoU is considered to be a valid match. Intersection over union between a label and a detection is defined as: \\(\\mbox{IoU} = \\frac{A_{label \\cap detection}}{A_{label \\cup detection}}\\) The spatial intersection between the vectorized detections and the ground truth labels is computed to tag detections according to the following classification: true positive (TP): detections matching correctly a ground truth object; false positive (FP): detections not matching any ground truth object; false negative (FN): missing detections, namely objects of the ground truth which are not detected; wrong class: detections matching a ground truth object of another class. The reader may wonder why there are no true negatives (TN) in the list. Actually, all the image pixels which are rightly not associated with the target class can be considered as \"true negatives\". Yet, as far as object detection and instance segmentation are concerned, we do not need to group leftover pixels into some sort of \"dummy objects\". Should the user need to model such a scenario, one idea might consist in introducing a dummy class ( e.g. \"background\" or \"other\"), to which all the (ir)relevant pixels would be associated. The metrics are calculated per-class to take into account possible imbalances between classes. The detections in the wrong class will be classified as FN, i.e. missed object, or false positive (FP), i.e. detections not matching any object, depending on the target class we are calculating for. Precision and recall by class are used here: \\(\\mbox{precision}_{class} = \\frac{\\mbox{TP}_{class}}{\\mbox{TP}_{class} + \\mbox{FP}_{class}}\\) \\(\\mbox{recall}_{class} = \\frac{\\mbox{TP}_{class}}{\\mbox{TP}_{class} + \\mbox{FN}_{class}}\\) While referring the reader to this page for further information on these metrics, let us note that: Precision is optimal when it equals one, i.e. when the count of FPs is equal to zero. This metric measures how good the model is in detecting only objects with the class of interest; Recall is optimal when it equals one, i.e. when the count of FNs is equal to zero. This metric measures how good the model is in detecting all objects of the class of interest without missing any. Each metric can be aggregated to keep only one value per dataset, rather than one per class. \\(\\mbox{precision} = \\frac{\\sum_{class}\\mbox{precision}_{class}}{\\mbox{nbr of classes}}\\) \\(\\mbox{recall} = \\frac{\\sum_{class}\\mbox{recall}_{class}}{\\mbox{nbr of classes}}\\) As already mentioned, each detection is assigned a confidence score, ranging from 0 to 1. By filtering out all the detections exhibiting a score smaller than some cut-off/threshold value, one would end up having more or less detections to compare against ground truth data; the higher the threshold, the smaller the number of detections, the better their quality in terms of the confidence score. Sampling the threshold from a minimal user-defined value to a maximum value ( e.g. 0.95) and counting TPs, FPs, FNs at each sampling step, meaningful curves can be obtained representing counts and/or metrics like precision and recall as a function of the threshold. Typically, precision (recall) is monotonically increasing (decreasing) as a function of the threshold. As such, neither the precision nor the recall can be used to determine the optimal value of the threshold, which is why precision and recall are customarily aggregated in order to form a third metric which can be convex if computed as a function of the threshold or, at least, it can exhibit local minima. This metric is named \" \\(F_1\\) score\" and is defined as follows: \\(F_1 = 2\\times \\frac{\\mbox{precision}\\;\\times\\;\\mbox{recall}}{\\mbox{precision}\\; +\\; \\mbox{recall}}\\) Different models can then be compared with each other in terms of \\(F_1\\) scores; the best model can be selected as the one exhibiting the maximum \\(F_1\\) over the validation dataset. At last, the test dataset can be used to assess the selected model and provide the end-user with an objective figures concerning its reliability. Other approaches exist, allowing one to summarize metrics and eventually come up with threshold-independent scores. One of these approaches consist in computing the \"Area Under the ROC curve\" (AUC, cf. this page ) and will be soon implemented by the STDL.","title":"4. Assessment"},{"location":"TASK-IDET/#5-iterate-until-results-are-satisfactory","text":"Several training sessions can be executed, using different values of the various hyper-parameters involved in the process. As a matter of fact, reviewing and improving ground truth data is also part of the hyper-parameter tuning (cf. \" From Model-centric to Data-centric Artificial Intelligence ''). Keeping track of the above-mentioned metrics across multiple realizations, eventually an optimal model should be found (at least, a local optimum). The exploration of the hyper-parameter space is a tedious task, which consumes time as well as human and computing resources. It can be performed in a more or less systematic/heuristic way, depending on the experience of the operator as well as on the features offered by the code. Typically, a partial exploration is enough to obtain acceptable results. Within the STDL team, it is customary to first perform some iterations until \"decent scores\" are obtained, then to involve beneficiaries and domain experts in the continuous evaluation and improvement of results, until satisfactory results are obtained. These exchanges between data scientists and domain experts are also key to raise both communities' awareness of the virtues and flaws of machine learning approaches.","title":"5. Iterate until results are satisfactory"},{"location":"TASK-IDET/#use-cases","text":"Here is a list of the successful applications of the object detection framework described in this article: Automatic detection of quarries Swimming Pool Detection for the Canton of Geneva Swimming Pool Detection for the Canton of Thurgau Classification of road surfaces Updating the \u00abCultivable Area\u00bb Layer of the Agricultural Office, Canton of Thurgau","title":"Use cases"},{"location":"TASK-IDET/#concluding-remarks","text":"The STDL's object detection framework is still under development and receives updates as new use cases are tackled.","title":"Concluding remarks"}]} \ No newline at end of file diff --git a/sitemap.xml b/sitemap.xml index 22e882a..c79e2dc 100644 --- a/sitemap.xml +++ b/sitemap.xml @@ -2,82 +2,82 @@ None - 2024-02-02 + 2024-02-26 daily None - 2024-02-02 + 2024-02-26 daily None - 2024-02-02 + 2024-02-26 daily None - 2024-02-02 + 2024-02-26 daily None - 2024-02-02 + 2024-02-26 daily None - 2024-02-02 + 2024-02-26 daily None - 2024-02-02 + 2024-02-26 daily None - 2024-02-02 + 2024-02-26 daily None - 2024-02-02 + 2024-02-26 daily None - 2024-02-02 + 2024-02-26 daily None - 2024-02-02 + 2024-02-26 daily None - 2024-02-02 + 2024-02-26 daily None - 2024-02-02 + 2024-02-26 daily None - 2024-02-02 + 2024-02-26 daily None - 2024-02-02 + 2024-02-26 daily None - 2024-02-02 + 2024-02-26 daily \ No newline at end of file diff --git a/sitemap.xml.gz b/sitemap.xml.gz index 93817c8b4e96921563119bbe6f55f0a526da2dba..31d8dd2e7a70cea6e44e59f691ade522e9fae2c5 100644 GIT binary patch literal 207 zcmV;=05Ja_iwFq!Qru+%|8r?{Wo=<_E_iKh0PWVj4#FT12k_meAnXMs#;Bomb9B-N zAQW2?3Kh`m+e<%Uy1Q}<$DhmnR#^4!40tIYw6i7LA_9T3($(5FCA?kF#Q|1)!=By* z6+s%dp@eOW{R!h?7*Nnrb)pZ*`348src1y}hzUAEz5%Jm1#>qQGfwi0vx?!dTR(^p zJ6Cf`=&m5Np!+nkWUDdR3fri=R}WqbZ9WXIl3Bz*GUFM~c*ZlH@r?hCPe=L<@Gr03 J&+|P9005CmU`GG| literal 207 zcmV;=05Ja_iwFpIqP%4S|8r?{Wo=<_E_iKh0PWVj4#FT12k^a5LDFH z0HN5DP^f@b-(LC=)7_N|3CHmdzZF`)dyQVwd1Xz7ccj2b8etn{+6v#U=lp