Okay, welcome to the sixth QGIS Hydro webinar that Kurt and I organized during the corona crisis, already the sixth one. Time flies when you're enjoying, and I hope you've enjoyed it as much as we are still doing that. And I hope you learned a lot making use of this time that we are all a bit grounded at home. This time we'll talk about calculating the percentage of land cover for subcatchments. It's a very thematic title, but I'll come to what you will learn during this session later. So let me, as usual, introduce myself briefly for the new people. So I'm Hans van der Krost, I'm a senior lecturer at IHE Delft Institute for Water Education. And that's a unique institute in the world where we are specialized in education on everything to do with water, going from from the diart engineering and catchment hydrology, what the book is mostly about, to water management governance, environmental sciences, and those things related all to water. And we had a unique experience yesterday. We had our first online graduation ceremony. The batch of 2018 to 2020 was graduating. And I was part of the small team of creative people to make this really good memory for the people who are graduating. And I think we succeeded. It was very exciting, very challenging also, because it can be like face-to-face completely. But I think we had an enjoyable session and you can see the video also on YouTube. We had a band live in the Garden of the Institute. Everybody respected the social distancing rules and the director and vice-director had their talks. We even did a quiz together. So if you want to have some inspiration on that for your own organization, let me know how we can help each other with those things. So I did my master's and my PhD at Utrecht University. It's the university in the center of the Netherlands Department of Physical Geography. And for my PhD, I studied how to integrate satellite information in soil moisture models using data assimilation. And I used the PC Restock Python framework for that that you can use for data assimilation, completely open source. Then I moved to the Flemish Institute for Technological Research, VITO in Belgium, where I was a researcher in spatial dynamic modeling at the Environmental Modeling Unit. And I was working on land use change models, water quality, and air quality. And it was an exciting time with a young team where we really went into open source and had a Python group to exchange knowledge on that. And then since 2012, I worked at IHE Delft, and a very nice job there. I teach a lot in GIS advocate for open source. Also modeling, remote sensing for hydrology, very important. Also with a lot of open data. In my projects, I work on spatial data infrastructures, which we already covered in one of the previous sessions and how to share and use open data. Today, we also covered a little bit because we always need open data for the exercises and tasks that we do. And as I always say, field work is an important part of our work. We are not only people behind the desk, but we also, I find that many GIS people in the world love to go out. And there are even great tools with QGIS and field work such as QField and the input app. And in that way, you can collect the data in the field. There's some tutorials that I have on it. And I know that Kurt also has some material on that art preparing. And yeah, I'm a board member of the Dutch QGIS user group, which started just in the end of last year. Yeah. If you want to be in touch with me, you can always email me, connect through LinkedIn or on social media. I give the word to Kurt to introduce him. Thanks, Hans. Yeah, it's nice. It looks like we have about 60 people here so far. And it's, I see a lot of familiar names and some new friends that I know that haven't participated recently. So I'm glad that people are coming back to this and I'm able to take some time out and join us. I'm based in Albuquerque, New Mexico, in the United States. And I run my own consulting business named Birds Eye View. I'm also part of a fairly new venture called the Q Cooperative, which is myself and several developers and trainers and documenters. And we're starting out with a mission to provide QGIS support services, especially in the US where there aren't a lot of support services available. So if people need custom plugins, new features in QGIS, that sort of thing, we're there to help. I also run a program called Community Health Maps where I try to empower public health workers with open source tools to map communities. And that's becoming more and more important, I think, right now during COVID. And I do a wide variety of things. As a self-employed person, I do, I wear a lot of hats. I do a little spatial analysis. I do some cartography. And I do quite a bit of teaching, although right now, like everyone else, they're all the face-to-face teaching has been canceled. And it's taking me a little longer than I'd hoped to kind of stand something up online, but I'm working on that. And I'm also an author. I've published six books on QGIS at this point, authored and co-authored. Obviously, we're talking about QGIS for hydrological applications during this webinar. And I've also come out in the last year with a book called Discover QGIS 3x, which is a very large workbook, which is a really thorough treatment of QGIS. And I'm a member of the QGIS US User Group and an Oz GeoCharger member. So if you want to get in touch with me, my contact information is at the bottom. And I'll be on chat during this, answering questions. So as Hans goes through this demonstration, if questions come up, you can put them in the chat and I'll try to get to those as we go through. Thanks, Kurt. So this is a series of seven free webinars. And just to remind you what we have done and what we're going to do, we started the first one with preparing data from hard copy maps, digitizing, georeferencing, a bit of styling of hydrological data. Then we imported tabular data like data from spreadsheets into QGIS. We did interpolation, spatial interpolation using two techniques and we compared them. And then we went in the third session into spatial analysis using map algebra. So we covered a lot of raster analysis. In the fourth session, an important topic for many hydrologists is how to do the stream and catchment delineation. We walked through the whole procedure. In the fifth session, we added open data to our catchment using data from web map services, but also from OpenStreetMap, which is very useful in many areas where we work, where data is available. And OpenStreetMap is a very nice community-based map that has direct access from QGIS to add factor data. Kurt also in that session covered the community, so that was last week. And that's also nice because QGIS is not only good software, great software, but also great people behind it. And you're also part of that community and you can become active. So watch that video again if you want to learn how to become active in the community and what you can do for each other there. Then in this session, we will do the calculation of percentage of land cover per subcatchments. I will explain that later. And then next week is already the last one in this series. And I already get requests from people in my mailbox about what's up next. Well, you still have to think about that, but we'll keep you posted. This has kept us quite busy amongst our other tasks, so let's see what we can come up with. But the next time Kurt will maybe be doing the demo on app design and teach you all the tips and tricks that are hidden in QGIS to make great catchment maps like the one that we see on the cover of the book. So definitely you have to join next time. The webinars are based on the chapters of the book, as said. So you can order the book at LocatePress, the link is on the screen. And with your buying the book, you contribute to a fund to allow my students from the global south to join QGIS and Phosphor G events. That's very important. We've talked about the community, but diversity is also very important. And we like to see more people from the global south become active in the open source communities such as QGIS. And I hope with the book, we can contribute to that. So for today, calculating the percentage of land cover per subcatchment, basically we start with two data sets, one open source open access data set on land use land cover that we have seen before in the previous session, but now we'll use the real data not from the web map service, but the real data, the layer is really available for calculations also. And I'll show also where you can get that. And we have here a layer with factors from subcatchments that were delineated in a similar way as in session number four, but now for many subcatchments. And the idea is that we want to have the statistics, the percentage of each land cover per subcatchment derived using vector analysis. So in the end, we want to end up with these kind of pie charts for each subcatchment, and we're going to use the data prolly plug-in for that. So vector analysis, that's a bit of a theory that will pass or we demonstrated in this session. We'll focus mostly on these kind of vector processing tools like intersections, we're going to make that, I'm not going to do union, but here you see what happens then. And we will do dissolve, that's this, when we have two features and we can merge them together and remove the border as you saw. And there's buffer, we're not going to do that, but these are the mostly used ones in geo processing for vectors. So I'm going to switch now to sharing my screen and you know that you can add indeed your questions in the chat. Here are QGIS, I always use the LTR versions, we always get a lot of questions about that, but the LTR versions, the long-term releases work best with the exercises, they are tested and newer versions are also nice, they have new features, but they can also introduce new bugs. So we have to be very careful with that operational use and with these exercises. So for this exercise, I need the catchment polygons, that's this data set. It's a simple shapefile derived with knowledge from chapter four. I'm going to style it a little bit and just use a simple outline, make it a bit thicker for later. And let's have a look at the attribute table. And we see, as we learned in the fourth session, that when we delineate the catchment, it will get automatically the end column with the value of 100. So I have here features with the value 100. You can see if I select this in the attribute table, we can see them highlighted in yellow. Now that's not very useful for our analysis, so the first step that I'm going to do is to give each subcatchment a unique value. I deviate a little bit from the book sometimes to show you other approaches to do that, because in GIS, that's a nice thing, you can do the same thing with different ways, with different approaches, but also with different buttons. So I'll show you that. So I'm going to use for that, this button, this is the field calculator. And you get this nice dialogue. And what I can do here is I can create a new field, but that's not what I want in this case. I want to update an existing field. And I want to update the DN field. And I want to update it with a function, which gives a unique value to each feature. And there's this set of functions here. So there are many functions in here, and we will use a lot today, or a few, because there are a lot. Record and attributes, I have to look at that one. And there we find a dollar ID function. And this returns the feature ID of the current row. And every feature has an internal feature ID, and that's the one I'm going to use. So if I want to use that function, I simply double click. And if it doesn't give an error here, it means it's okay. And now it will update the existing field DN with the ID. So if I do okay, you should have noticed that it automatically switched to editing mode. So that's interesting. I had one selected still, so I have to do it again. Deselect all. So because I want them all with the unique value. So let's show the other method. DN equals, and then this is the other editor. And go to dollar ID. You can also simply type it there, but to avoid typos, do this. Say okay. And then I have to say update all. And now the DN numbers are changed into unique follow up numbers that we can use further to identify the catchments. Now I also need the area of the polygons. And there are some nice internal functions for that. Let's also, let's use this main editor for that. I'm going to add a new column. Later I'll show you to do it in the other way.  It will be in square meters because that's related to our projection. I'm using here UTM zone 32 north, like the example for your work. And it's not a whole number. I need a decimal number. And I need to specify a length and a position. That's length is the amount of digits for the number. And precision is the amount of decimals, two decimals. And there are a new column. And then make sure always you choose here the output column because this is an equation. Output column equals, and I'm something you want to calculate. And I'm going to use this button to do the calculation. As I said, you can also use the other dialogue. Now, since the surface area is related to the geometry of these polygons, I have to look here under the geometry. If it's lines, I can calculate the length of a line. With the polygons, you can calculate the area. And it returns the area of the feature. And it's based on the projection that you use. So simply double click, enter it, and here we see a preview. And then I do okay. And catchment equals dollar area. I do update all. And now we see the values in square meters added to this attribute table. Now, I toggle off editing. I save it. And that's the first step. We have the catchment, the subcatchment areas for each unique number here calculated. Now, let's have a look at our data for the length use, length cover. And last time we looked at the Korean data set for 2012 as a web map service. Today, we're going to use a downloaded data set from the European SDI, Copernicus, the European system for monitoring the earth. And I'm going to look in the pan-European data sets, which contains the length use, length cover. And I want the Korean length cover. And there are gifts for the different years, the European length use, length cover, data set, Korean. And I'm going to add this one for 2018. That's the newest that is available. And it will load a preview, a web map service, like we've seen last time. But in this case, I want to download the data because I want to process it, do a factor analysis with that. So I go to the download tab. And I see other different data types that are available. So there's a 100 meter spatial resolution raster data set, a geotiff. There's a geodatabase. But there's also a geopackage. And I know that the book mentions skew lights. But on this side, they updated it. So I'm happy to see that they adopted the geopackage as a standard to provide. I'm not going to download, of course, this huge file in the session. I've already downloaded it for you. But you can see that this is huge factor data for the whole viewer, the length use, length cover, meter data, et cetera, that we're going to use. You need to have an account to log in, but it's open data. So I've downloaded that. And let's continue in QGIS. So go to the browser panel. And here is the geopackage. So open it. And if you download, it comes with all these files. And so it has a data on legend. It has meter data, all kinds of descriptions. We're going to look at that also. And I'm going to add this first length use, length cover layer there. It's huge gigabytes. And it comes with this popup because it has to adapt to our on the fly route projection. It uses the 3035. And we need to visualize them 32632. And I'm going to use this first converter for that. And there it loads. And QGIS is a smarter load only the part that I have on the screen. Otherwise, it will be really, really slow. And fortunately, that's not the case here. So the first thing I'm going to do is to style this layer. Because the data provider was so good to provide us with different files that we can use a different software to style it. So I'm not going to use the layer styling panel for that because I need to load a file. And I can do that through the properties. So go to the layer properties, symbology. And then you have this style button here. I'm going to load the style. You're now in the database styles manager. And I can load it from a file. I keep everything checked because I want everything that's in the file. And I go to browse to the file. And it's in that legend folder that comes with your download. And there are two types here. There is the QML and the SLD. So there is the CLC legend QML. That's the QGIS native format. And there is the SLD file, which is the OGC standard for legends. Here I'm going to choose the QGIS format. So you can use either a load style. And you see here the colors, the labels, and the values added. And this is so-called level three data for the land use land cover. You can find on the internet how that works for Corrine. What it means is very detailed. And what we're going to do later is work on the level one data. So we're going to use only the first value. So the first value is level one. The second is a more detailed classification level two. And this is the final detail level three. So I do okay. And it will apply the legend. I'll put the catchment polygons on top. So here we see the style of data. Now remember that we had this huge land use land cover data of the full of Europe already in our project. And I only need this part. And the other thing I need is a reprojection. Because if we want to do processing, if it's raster or vector, it is always very good advice to reproject the data to the same projection. And we're going to work in the UTM zone 32. And we can do that in one step. So I'm going to click right here and use the export function, say features s. And in the book I use the shape file here. I'm going to make a new geopackage database for this exercise. So chapter six, let's call this ruler. So catchments. That's the name of the database. And then this layer, I'll call it Corrine 2018 subset. That's the table that will go into this database. I'll change here the projection to the one of the project. And I'm going to use this extent function to clip it to approximately the bounding box of catchment polygons to reduce the data set. There's an API for Corrine data for sure. I see that as a question. Of course, it uses the web map services, the geo APIs that we've seen in the previous session. There are many other ways, I guess, also to get to that data. It's open data. It follows the inspire directive of the European Union. So I've calculated here the boundaries from the catchment polygons that will be used to clip it and reproject this data and store it then in the geopackage. So I do okay. It will then store the data in the new geopackage. I will copy the style and I'll paste it here. It's always a very nice thing to do. And it gets camouflaged, but I will remove the big one. We don't need it anymore. And there it is, the subset of the lentius around our subcatchments. So that's great. Then the next step that we need to do is to get to that level three data. And we're going to do that in a different way than in the book, because that way it will also be used later. So I can show both in this webinar. So I go to the attribute table. If you do that with the big data set, it will load for a long time because there is hundreds of thousands of features in it. This is the Korean data set. This area here is the original area of these things. And we're going to modify that by doing all kinds of processing to get the real areas per subcatchment. And what I need is I have this code 18, which is the level three data. And I'm interested to get it to level one. So I want only the first number as classes. And what I can do is use the field calculator as you learned. And I'm going to create a new field. I'm going to call the field level one. And it will be a whole number, integer. And I'm not going to use the conditional function. You will learn that later in this session, but I'm going to use a string function because these numbers are strings. And it's a quick way of solving this. There's the left function here, which says it returns a substring that contains the n leftmost characters of the string. So I use here left. Then I need to identify the field from which I want to count the string numbers from the left. And I want it from code 18. Let me use a comma. And I specify how many characters from the left. I only want one. Then I close the brackets. And here we get a nice preview. But I also want to convert the data type because it's a string and I want it to be a number. Just to show you how it works. It doesn't really affect this analysis. So here's a to int, to integer function. Put the bracket there. We need a bracket to close. Okay. Create field level one. Whole number. Apply this. And then I do okay. And here you see that it takes now the first number of each feature. And we now have chosen the left value. In the book, indeed, we use the case when function, but we applied it also later here. So here you can also use the case when function. That's a condition. The only problem is that you have to, that will take you many lines of code to do exactly the same as I did here in one line. But you'll see it later when we have to do the, to add strings to the different classes that we have here. So that was the first thing that I needed to do, to aggregate those steps. Now what I also want is to dissolve all these features. So I'm going to toggle off the editing. I'm going to save it. It's stored in our geopackage. And what I want now is that all these classes are one feature and we can then later intersect that with the cache when boundaries. So I'm going here to the vector geoprocessing tools. I'm going to choose here dissolve. And we're going to use this Korean subsets. And I want to dissolve based on the level one values. So that all the level one features are grouped and we don't have those subsets anymore, the level three data at that level as features. And I'll store it in the geopackage. So I'm going to use the geopackage that we already have. And it's a pop-up. How do I want to call my layer name? I'm going to call this Korean 2018 dissolved. Okay. And I run it. It takes a bit, still a bit large. And that basically reduces the amount of features to the amount of classes that we have. Okay, it's done. Let's have a look. So I'm going to open the attribute table to see what happened. There we see it. We only have five features. So each class becomes one feature. If I select one, it will be highlighted. It's a small one that we see here in yellow. So that's nice. Now, of course, we need to use other styles if you want to use that. But let me first go to the next step, which is the intersection. Because now we have all these classes, one to five from the level one. I want to intersect that now with the boundaries of these subcatchments. So these are then like a cookie cutter combined. And we have those boundaries added to the class boundaries. So that's another vector processing tool, which is called intersection. And I'm going to use here the Korean dissolved. And as an overlay layer, I'll use here the catchment polygons. I keep the other things as default. I simply want to have the whole data set intersected. And I give here the output name, save it to the same geopackage. And I'm going to give it a name. Korean catch intersected. Let's run it. This is an expected error for me, for you, maybe not. But when you do these catchment delineations, you can have geometrical issues when you convert your rasters to polygons. And you need to fix that and how to fix that very easily. So you need a processing tool for that, just called fixed geometries. And there we are going to fix the geometry of Korean 2018 dissolved. Save it again to the geopackage. And I call it Korean 2018. I'm going to call the output this one Korean 2018 dissolved fixed. And then I run it. And it's fixed. So another trick is to calculate a buffer of zero. And that's the classic way of fixing this. So vector geoprocessing tools and then buffer. Catch polygons. I put it on zero. And we keep everything else as it should be. Save it to the geopackage. And I call this one fixed buffer. Run it. And then geoprocessing tools, intersection. The input layer should be the Korean. Okay, I think I fixed the wrong one there. That's always in live sessions. So the Korean is okay. And this one should have fixed the catchment polygons. And then here we have the intersection. Okay. And you should always fix the right one. Apparently I fixed the wrong one. Of course, the problem is you are your catchment. And not the land use layer here. That should be geometrically quite okay. So here we have it intersected. Let me remove the other layers. This one. This one. We don't need that anymore. So we end up with the intersected polygons and land use layer. I'm going to style this one. And I prepared that. But normally you would do that using the categorized. And you choose the column in this case. And this case, level one. Click classify. And then you give the colors. In this case, I prepared already a legend. So I'm going to load that. And I've saved it in an SLD file. So I can simply load the prepared file. Remember, previously we used the QML file. And in this case, use a prepared SLD file. Open it. Load the style. And there it is. And there we see the colors and the different names next to it that I stored previously for this session in the SLD file. The SLD, remember, is the open standard. And the QML is the QGIS front. And they're both supported. So what we're going to do now is a bit more analysis in the attribute table. We're almost there. So what we have is the catchment area. And now I need, of course, the area of the class. And I need to calculate then the percentage of that class based on the area of the catchment. So go to editing mode. I'm going to add a new column. And I call that one class area. Square meters. And it will be a decimal number. We're now in a geopackage that was different previously with the catchment polygon shape file. So it doesn't ask us to specify the amount of positions and decimals. There it is. The column is added. And we're going to do the calculation. So class area equals, and we can simply type there the dollar area function. If you don't remember that function, you can do again what I previously showed. So make sure this equation is correct. Otherwise, you have common mistakes to assign it to the wrong class. You need to do update all. And there we have the class area. So the catchment area and the class area. And I'm going to use the field calculator to calculate the percentage. There. Create a new field. By the way, a virtual field is something that you is safe to your project, but not to your vector file. So if you want to have it only available in your project and not be added to your vector file, you create a virtual field. Also a useful function. Create a new field. I call this one percentage. It'll be decimal. And there we are going to use a bracket. Going to use the class area divided by the catchment area times 100%. And that's basically it. So then I do okay. And we have a new column, as you can see with the percentages. So for each land use in each subcatchment, we get the percentage. That's what we wanted. Now just a bit for adding here then the names of the legend. I'm going to explain this case function. So I'm going to add a new column. I'm going to call this one land covered. It will be a string text length. Make it a bit long. Let's say 15 characters. There's the field. I made a title there. It doesn't matter now. Output land cover equals to use this editor. And there we're going to use a conditional function. So what I basically want is if it's class one, it should be artificial surface, class two, agriculture, et cetera. So you find here the conditionals. There's the case one. That's exactly the function that does it. I double click and I see here the syntax. And what I'm going to do is make it visually a bit easier. So case is the condition when. Then I'm going to replace this part. So when level one equals one, then we move the end part to the end later. Then it should return land cover. It should return one. And I'm going to copy this. So you can return one, the class name. So it should be a string. So remember from one of the first sessions, you need to use a single quote. And then the first class is artificial, as we can still see on the left in the legend. And then class number two is agriculture, class number three, forests. Names are a bit longer, but I think you get the message here. Four equals wetlands. And five is water. And the function ends with end. And we don't see an error here, but we see water. So that's good. And then do okay. And then you see this whole equation added there. Land cover equals this whole thing. And then I do update all. And it will write here the class names. So that's how the case when function works. So you can apply it to numerical, to string, to all these things. I'm going to save the attribute table. So it's now stored in our geo package. And I think we are now ready to visualize the result in the data plot leak plugin. We used the plugin before. So it's here with the button. I'm going to open the data plot leak dialogue. And what I want is to select a subcatchment here. So let's select based on the attribute. It's better. Okay. So this function here, select features, music and expression is very useful. So I want to make a pie chart of one subcatchment to start with. So get the fields and values. And I want to have here the DN. You get all the unique values if you press that button. So these are the DN values, the unique values that we added. Remember, therefore, we needed that to add those unique those equals. Let's start with the zero one. I select those features. They are selected now highlighted in yellow on the map. So we're going to calculate the pie chart for this subcatchment. I choose here the pie chart. I use only selected features as a grouping field. That's interesting. I was expecting the land use. I'm choosing the wrong one, of course, need that one. You have to keep your attention when you do this live.  But we, of course, need, as a grouping, we need the land use. Let's cover this one. And as the Y field, as the Y field, of course, the percentage. Then we can edit also here the plot title. I want a horizontal legend. And I want to call this one land cover. And let's see how our plot looks like. So I'm going to create plot and there it shows up. So it uses those values from the attribute table. I get here the percentages and here I get the legend. And you can repeat it by selecting different subcatchments and then update the graph or create multiple graphs. So that's basically a walkthrough of this exercise. There are many ways to come to this result or different results. There are other ways also to create charts. But we are lucky today that we have a special mystery guest again. And who we have here is the developer of the Data Plotty plugin. So I'm going to stop sharing my screen here. And I'm going to invite Matteo. Matteo, get up to share a screen. I will unmute you. Hi Matteo. Hi everybody. Can you hear me? Yes. Yes, we can hear you. Great that you are here. Yeah. Hi Kurt. Hi Hans. Hi everybody. Glad to be here with you and to participate in this webinar series. And yes, my name is Matteo. I developed the Data Plotty plugin three years ago, more or less. And that's great that I see everybody using it with some really useful use cases. And yeah, I'm going to make a quick demonstration of maybe a hopefully nice feature. And can I start sharing my screen? Sure. Okay. Let me... Okay, I have this up here. Okay. So I have some data sets, some basic data sets, some simple data sets, actually some real data set. I downloaded it this morning. For example, we are in this COVID crisis, COVID quarantine. And this COVID table, I'll just have a look in the attribute table. As you can see, this is a huge massive data set. We have thousands of records. So we are actually... I am going to show you some nice feature. For example, we are going to filter this data set for just, for example, my place. That's Italy. And so I will show you how to overlap different plots in one single plot canvas and how to add a nice feature that is a range slider. Okay. So as you can see, we have here a date time. We have this a date time column, and we have this dates and these cases columns. Okay. So I will start that developmentally. And so choosing the COVID table before to choose the X, the X and Y fields, I'm going to use this feature data set, an overriding button. And I already prepared the expression that is actually entity equals to Italy. Of course, you can change it to whatever place you are. And we are not making a simple, just a simple plot or plot and lines, a scatter plot, but we are making just lines scatter plot. Okay. For date time and cases. So let's go and take a while because we have a massive data set. Oh, of course, I did not... Will we end up in something that it's wrong because I didn't activate the feature subset. So I'm going to clean that plot canvas and do the plot again. Less. Okay. So you can move the legend and you can change the X's titles and, of course, you can readapt your plot, your plot canvas. Okay. So we are going to hit this gear, blue gear button. And we have this nice feature here that it's called show the range slider. And if you check it, and if you update a lot, you have this nice, I'll just move it a little bigger, maybe. Okay. You have this nice range slider that is actually connected to the main plot. Okay. Then I will go again in the main plot, plot tab. I will leave the feature subset the same, of course. And I'm going to change from the cases and I'm going to add the deaths. Okay. Going to also change the color, making it red lines. I'm not going to update a lot, but I'm going to create another one. So it's going to overlap. And you can see this, these two different, the two different scatter plot overlapped in the same one. Okay. You have the legend. If you double click. Okay. Okay. If you double click on one items or on the other, it will isolate one single line and readapt on the plot. Okay. Then I will just change the main table from the COVID table to the admins. Okay. And from the admins, I'm going to, to delete the feature subset expression. I will take the continent, for example, and I will take, for example, we can leave the debts or yeah, that's okay. And we are not making a scatter plot, but we are making a pie chart as Hans did just minutes, some minutes ago. And we are, okay, cleaning the pop cameras and creating another plot. And that's okay. So that's actually the same one. What he wants you to show is that if you click on pie chart on the pie, on the pie slice, actually, you can see the same, the same feature highlighted and selected on the main map. Okay. Of course, again, here you can isolate the single items in the plot and the plot will readapt itself to what you have chosen. Okay. Last thing is that thanks to the crowdfunding campaign of the last year, we were able to put the data plot also in the, in the print, the map layout composer. So you can actually export your plot when you, when you export PDF or, or PNG images. So really quickly, I'm going to make another plot, another layout. Okay, making bigger. Just, okay, this zoom stuff in the middle. Okay.  What is cool about data plotly of, of, of data plot within the, the layout composer is that it is actually able to, to understand what anatomast is. So I'm going to generate an Atlas. I'm going to, to check the admins main layer. So the special layer. And I'm going to, to choose the admin, all a tree, this weird column name as the page name. And also I'm going to filter this, this layer with an expression that I have in the recent one, because we have some, some countries that luckily don't have, didn't have any, or massive health problem with this COVID crisis. And I should have it. Yeah. So actually it's not null and the case is not null. So we, we are filtering this, this, this layer with just the country that had actually some cases. And okay, then in the item properties of the main plot canvas on the, on the map canvas, we are going to click on the control by Atlas and we can hit the Atlas. And as you might know, you can just loop on each country to see the different, the different, the different areas. Okay. Then what we are going to do is to use the data workflow button. Okay. I'm just going to make a similar button. But what we have here since the last week, actually, or 10, yeah, maybe 10 days ago is this nice feature that you can overlap plots also in the, in the, in the layout composter. That's a brand new feature. Okay. So for the first plot, we are going to make pretty much, pretty much the same, the same thing. Okay. So we are set up the selected plot, the main scatter plot. Okay. We are making again a scatter plot. We are taking actually the COVID table, but we, and we are subsetting the COVID table with an expression. So actually only the, we are just filtering the countries in the COVID table with the, with the counter that is highlighted by the Atlas. And we are going to use this feature, this expression. Oops. Code here. Okay. So code is equal to the Atlas page name. And okay. So we filter it here. Then we again are, we are using the date time X as the X axis and S Y again, for example, that's okay. It's okay. Not points, outlines. We are making a little bit thicker, maybe three and we are going to update the plot. Okay. I don't know if you can see that else I will make really thick, thicker and thicker. Okay. So actually if you change the country, the plot is updating itself. Okay. Then I'm just hitting on the back button and I'm going to in the same, in the same plot, I'm going to add the second plot. Here it is. We are going to set up the second plot again, COVID table. And again, we are subsetting with the same expression. Okay. Date time again, as the X and that's as the main one. Okay. We are just making it green. And again, thick update. Okay. I think I have chosen the same one. Okay. Subcases. Is it okay? Lines and not points. And update the plot. Okay. Now, for example, if we choose another country, okay. And here it is. And so you can actually export your Atlas as a PNG, so a single big, super big PDF, sorry, not PNG, super single big PDF with several pages, one for each country, or as many PNGs or as many images as you want. Okay. So that was, okay. Here I go. That was really great, Matteo. Really, really useful functionality that has been added in recent dates to QGIS. A very actual data set that you're showing us. That was actually from this morning actually. I downloaded this morning. Wow. Yeah. Really, really nice. Let's have a look if there are questions from the audience. Otherwise, I also have a few questions. Did you see any questions from Matteo already, Kurt? Let me unmute you. Yes. I think we covered everything that people asked so far. But Matteo, where did you get that data set? From the, actually from our WarInData.org website that is taking the web, all the data from the Johns Hopkins University. But if you want, I can share with you and ask the entire project. So that's not a problem. I have a single, that's, as you can see, as you saw, it's a single geomegage with just two layers and one print layout. So that's not a problem. We'll share that with you. Nice. That'd be great. Yeah, yeah, of course. Matteo, I have a question for you. As you've seen that I have this land cover data set and I create the pie chart, but then the legend colors are not the same as the legend of the land cover map. Is there a way to solve that with some data override or is there some functionality? Actually, actually, if you look in the main data of the repository, 10 minutes ago, we had a comment on the pull request from a guy that is working on that. Because actually, that's not simple. So you have to, I mean, there is a way, not now, but in the future, that's a monthly version, it will be there. And you have to use some kind of curious expression to do that. Because that's the same also for a bar chart, when you use a third variables to change the color of the single bar. So you have to use some expression, but it will be lent soon, hopefully. Okay, curious to see that. And Mateo, I'm wondering, it seems like Plotly is getting so mature and so widely used. Has there been any discussion of having it actually become part of Core and QGIS? I spoke with Nile and with other developers. And actually, I was hoping that months ago, but actually, it's really better to have it as a separate plugin because you have QGIS and you have all the plugins. So I can update Plotly every week, for example, or if you hit a bug or a feature request, then you should not wait for the next, I don't know, long-term release of QGIS, for example, or the next stable release. So actually, that's better to keep it separated. Good point. There's a question from the audience. Is it possible to filter value directly with a dynamic field in the presentation, somebody asks? And is it possible to have two y-axis? Okay, from the presentation, actually no. Dynamic field in presentation. Actually, you have some dynamic filter, not filter, but you have this two checkbox in the main panel that you hit the first one to just look at the, just on the selected items in the map. You have the other one that is filtering dynamically. So live, just the item that is, that are in the map in that moment. So if you are zooming in or zooming out, the plot is updating itself dynamically. And what was the second question? Is it possible to have two y-axis? I don't know if Plotly supported that, but remembering that, I'm remembering that from ggplots or from R and RStudio, that having two y-axis, it's not a good idea for plot. I started it some years ago and actually the, I mean, ggplot guys were against it. I'm not sure that that Plotly supports it because I think they are going to do the same direction because they think that, I mean, they claim that having two y-axis is kind of confusing the plot of what you are, what you're plotting in the plot actually. Okay. Are there any more questions from the audience on also on the previous stuff, the exercise? If not, then a great thanks to Matteo and we can still ask questions to him. I hope he will stay for the Geo beers. Yeah, of course I have a cold beer by Fringe, of course, waiting for me. Good, we're getting almost thirsty, so let's go through the last few slides. I ask Matteo to hide your screen and mute yourself and I'll go through the last set of slides and then we're soon at the Geo beers. Yes, so at the end of the session, we always have a little plug of what we can offer more for you in terms of courses, so I'll keep it again short because you can, you know it from the previous sessions and hopefully you know what we offer. At IHG Delft, we have OpenCourseWare, GIS, OpenCourseWare.org, you can look there for many videos and tutorials on many different topics related to GIS. Hope you've noticed the YouTube channel. If you subscribe to get automatic updates and this video of this session will also be posted tomorrow there, so you can watch it again. We also share on social media. If you'd like to have a face-to-face course, you can join us in Delft as soon as it's possible. Of course, in September there will be normally a short course from 14 to 18 September. Kurt joined me in the last two years in this course. It's always great fun. We do a mapathon and we have people from all over the world doing GIS with us. And there's online courses and we are working currently on making the online course for the book. So that will give you the official QGIS certificate and of course support from Kurt and me in getting through the course. So we keep you updated about progress on that. And we have many other plans and we will update you also on that. I'm going to give the word to Kurt. Yeah, if people didn't see it, this is where we're all from. So I think it's pretty amazing how much of the world is represented in these webinars. So I just want to thank everybody for joining in. And I'll be the one kind of leading the way next week to show you some cartography tricks and how to make the nice plot that's on the cover of the book. And just to remind everyone, I did an episode of Mapscaping with Daniel O'Donoghue a few weeks ago on QGIS and the QGIS project. And this coming Tuesday I'm going to interview me about Lutra Consulting's input and margin tools for field data collection and QField. So I'll be talking about those QGIS-related mobile tools. And it will probably take a couple of weeks for it to come out, but look for that. And just in general, I love podcasts and this Mapscaping one is fantastic for all things geospatial. For example, he just had Paul Ramsey on talking about post-GIS recently. So if you're into podcasts, give this a listen. That's really great. And I think it's a very nice topic to cover the field data collection tools. I mentioned it a bit in my introduction. And there are two great tools for that. It's nice to look at the different tools and to learn more about that. On the GIS OpenCourse where there's a full tutorial on input from Lutra Consulting, Lutra is the company also sponsoring these sessions. And I make that tutorial together with Saber, who is also frequently joining us. I don't know if he's around today. So definitely I'll be looking forward to this great podcast. The previous ones from Courtauld have been great. Then next week, the final session, unfortunately, because we're getting into some rhythm, we need to make some new chapters, I guess. All these new things coming out and QGIS is not locked down. It's continuously developing while we're locked down, which is a good thing. So we'll probably never end with nice new features to explain to you and to discuss. But next week, as we promised, the map design, you will hear everything about inverted polygon shape burst fills and other tips and tricks to create really beautiful maps for your hydrological applications with Courtauld. That brings me to the slide that I was longing for in the last minutes to have some dual beers with you. And if it's breakfast time, have some coffee with us or lunch or your latte, as we've seen last time. So I'll stop the recording.


Stevenson Falls, 67-49, the messiah here tonight, Glen Clark alongside Stevenson coach Jackie Boswell. Coach, this was obviously a very good messiah team that you faced tonight. Aside from them being very good, what were you happy about and unhappy about with your team's efforts? That's too soon. No, I'm just kidding. Actually, I thought we executed our half-court defense really well. Our goal was to make sure that we forced them to take shots that were going to be difficult for them to take. I thought that we did that. The problem was then we didn't finish the defensive play by not giving up the put-back. So I thought we executed our defensive game plan really well, but we just couldn't finish there. And you're right, you've got to give them a lot of credit. They're a really good team. They can score from multiple ways. I thought their post-players hurt us a little bit tonight, a lot tonight. And I think the positive thing that we've just got to take from this is we've got to keep working. I think that everything that did happen to us tonight is fixable and that we can get it done later and later down in the stretch. Any issue coming off a long break that may be a little bit sluggish? Although I know I obviously jumped out and actually played pretty well in the first half, but any issue with maybe just having the first game in a few weeks? I mean, it could be, but like you said, I thought we started off really strong now. Did fatigue set in the second half? We'll never know. There's nothing we can do about that, though. And we've got to just move forward. We can't make any excuses for that. So, you know, we've got a quick turnaround and we've got to get ourselves back into shape if we are out of shape. And, you know, we just got to keep playing. There's a couple other teams that didn't play over a break either, and we just can't make excuses for that. Let's talk about some bright spots. I think Olivia Coleman continues to look really good. Finished pretty close to a double-double tonight and really was battling against some very good players.  Yeah, I still think we can do better there, but I am happy with the strides that she took on the offensive end today. I thought she went up a little bit stronger and was a little bit tougher offensively trying to get the, you know, the ball up to the basket. Also, I thought she did a good job of calling for the ball as well. So definitely some positive things to take from today's game. Just got to, you know, push through that and find those. Now you head back out on the road this weekend for the first of three straight away from home. What do you need to do better?  They got a good post player as well. So we got to take these next two days of practice and fix everything that we need to fix. Coach, I appreciate you taking the time. Best of luck on the road. Thank you. She is Coach Jackie Boswell. I'm Glenn Clark for GomezTankSports.com.


Hi everyone, Joe for jaspyscasebreaks.com coming at you with 2019-2020 Panini Impeccable Basketball 3 box pick your team at number 17 from jaspyscasebreaks.com Big thanks to There's the case right there big. Thanks all of these folks For getting into the action Pick your team 17 on the 7th Happy Tuesday everybody. Thanks for spending a bit of your Tuesday evening with us Who got last spot mojo in this? Gary did Gary got the Hornets last So we'll put that last spot mojo star next to your name It's important Ladies and gentlemen, we did a few number blocks. There's the golden state number block right there, etc, etc, etc so all those number block randomizers I posted in a separate video there's the Memphis one plus some of those other teams right there and this one is just for one team pelicans New Orleans pelicans So I'll put that right here and here is the case right here doing all three boxes Coming up after this will be another quick little break. It'll be a flawless And then another quick break prime cuts and then another quick break prime And then and then we're done for the evening All right, there it is. We gave away one of these boxes In our basketball mix earlier today if you in case you missed it There's the silver or gold card, which we'll set right over there We'll do that last What up, kevin? Yeah, you're just in time for the good stuff. We're gonna close this evening out strong Base card on the bottom. Yes all right, I got Aaron Gordon 52 out of 75 That goes to the magic evan with orlando We got matisse thiebel 5 out of 99 for the sixers that goes to josh proust got the six straight up Lonzo 35 out of 49 for the pelicans. That's gonna be Pelicans five allen Allen with that one redemption Is jackson haze rookie autographs for the pelicans Pelican zero goes to philip and a free top loader There you go pelican zero On that side over there. We got cedric maxwell Matt silverstein with the selting six out of 10 Thank you matt. We've got illustrious ink jamal mashburn 22 out of 99 Mavs two dallas two Is on this list over here jeff t jeff thorfinson With dallas two they should bring that old logo back basketball with a hat on it come on pj washington last spot mojo 19 out of 25 charlotte hornets Gary got the hornets last We're just sitting there And there's nicola voosevich 44 out of 49 extravagance autograph for the orlando magic evan levine Oh frank's thinking you have a feeling one of the big names will be pulled Does one of those names rhyme with ha And the other name rhymes with guy on we got yannis 95 out of 99 Hans with the bucks That looks like a plate auto down there. It's in the audience in an autograph spot 30 out of 75 karsten edwards Celtics for matt demarda rosen 82 out of 99 spurs Spurs number block san antonio is up there San Antonio down here San Antonio to jeff 22 out 25 c jim a column trail blazers evan with portland quendery weather spoon 20 out of 99 jersey and auto Spurs zero gym With spur zero We got dino raja canvas creations 12 out of 99 Celtics matt with the Celtics straight up We got jamal wilkes Old laker 24 out of 99 Lakers picked up straight up by rené It's my team the plate autograph Is gonna be nassir little I love these on plate autographs right here 23 out of 49 evan with the trail blazers And back here is eric pascal for the warriors 34 out of 99 golden state 4 Is down here golden state 4 derrick melanson last bot mojo all right Next box last box Good luck everybody cam reddish Atlanta hawks mark mattson with the atl There's yannis 34 out of 75 milwauke hans with the bucks 31 out of 99 cam reddish for mark and the hawks 32 out of 49 nikhil alexander walker Pelicans 2 on this side over here derrick From derrick melanson to derrick fischer 7 out of 10 that goes to rené and the lakers My lakers Derrick fischer does a lot of tv work for the lakers For the lakers network bob dandridge 84 out of 99 for the milwauke bucks Tons with milwauke You get the chris middleton as well hans 4 out of 10 nice low number there An impeccable victory for chris middleton On that date in history All right knocking down the game-winning tray 5.2 seconds left There's isiah robin dallas 65 out of 99 dallas 5 dallas 5 jim moran The dallas 5 And anthony davis wow one of one rené with the lakers Little laker joe mojo and a one of one nice All aboard the big hit express It's pretty nice now. What do we have here? Silver i saw it it's silver A silver sixer a joel m bead 2 out of 25 some fine fine silver right there for josh pruce and the sixers 2 out of 25 On that one josh That's a nice one. That's a nice way to end the break. Thanks very much everyone joe for jasby's case breaks.com I'll see did this side not hit anything now. This is Feel bad, uh 10 dollars a break credit whatever You know, it's not much, but it's not nothing after three times Feel bad There you go cohen 10 bucks a break credit going your way appreciate you at least giving this a shot Can't believe all those teams. They didn't nothing got a card Maybe the base card, but it's crazy. All right. Thanks for watching everyone joe for jasby's case breaks.com I'll see you next time for the next one


We are celebrating the 100th anniversary of the Vancouver Island Regional Correction Center here at the historic Wilkinson Road site. It's a familiar spot to many people on Vancouver Island and indeed in the province because it's a very interesting and historically significant building. It's been a hundred years of service to the community here as a prison, as a mental hospital, and now back to being a prison again. And it serves a varied prison population, people with many different issues and also many different levels of security and it helps them in education and work programs and as I say this is one place where we don't want the customers to keep coming back and I think the staff work very hard to make that happen. It's a very well-run facility you know from where we compared it to 40-50 years ago where it was people you know neighbors were a bit nervous about what was going on here and the siren proved it when there was a when there was an incident. Today the Correction Center has a great relationship with our municipality they have a community liaison committee they get on to any issues when they arise so that they don't get worse and in fact the municipality just sold land right across the fence with some new houses on it so people were quite happy to put their homes across the fence from this facility it's so secure. So from the programming that we offer to inmates, from the opportunities to learn hands-on skills to be able to take out the community, from the spiritual guidance that's provided by our chaplains, getting your dog with diploma all of those things are here and offered to the inmates that come with us as you know while we're taking care of our community for providing safety and security we're also focused on rehabilitation and reintegration back into the community.


So with Solstice comes grind, my job is to help you with that grind, make it a little less of a pain in the butt and today I hope I can do that with the fastest way in my opinion to farm Solstice Key Fragments. How's it going guys, my name is DPJ and I'd like to thank you for stopping by and checking out my video. If you enjoy leaving a like really helps out and if you are new around here and enjoy daily Destiny 2 videos, be sure to subscribe. Okay so Solstice packages require 15 of these Solstice Keys each to open. At least one armor piece per character requires 150 of these Solstice Key Fragments to level up as you have to open 10 of the packages for these armor pieces. And that's just the armor pieces that doesn't count towards any of the other quest steps which require Solstice Keys or packages. Now Eververse does sell something called a Solstice Key Fragment magnet. What with my testing it doesn't seem to actually work or I'm just not using them right. Either way this method it seems you don't need these and if they do work somehow and I'm not using them right and they do give you extra then fair enough put them on and give it a bash. Now with testing I found patrols give you between one and three key fragments, public events between three and five but strikes give you between eight and ten if you use the Vanguard Strike playlist you get between 14 and 18 per strike but even Solstice strikes can take you upwards of 15 minutes when they are at random and you can't determine which one you actually get. So what you need is a strike you can complete within five minutes with ease and the one for you is the Lake of Shadows upon the EDZ.  Now I ran this like five times in under 30 minutes earlier and to be honest I wasn't even rushing and believe me when I say this is the fastest method of getting these said keys. I had roughly 45 from these five strikes in turn it took me almost an hour to do public events to get equal in math and because the Vanguard Strike playlist is random and you can't actually determine the strikes you get it will sometimes be even quicker to do public events than the strikes at the Vanguard playlist. So definitely people the fastest way in farming these actual Solstice key fragments is to load up the Lake of Shadows strike under EDZ and just farm this with friends. You can easily get this done between five and six minutes even quicker if you know what you're doing. But yeah guys I've been asked about these keys and a quick farm for them and I hope this helps those people out. On that note we have come to the end if you enjoyed the video leaving a like really helps out. If you are new around here and enjoy daily testing the videos be sure to subscribe and if you never want to miss a video I upload you can turn notifications on by hitting that bell. Bottom up guys thanks as always for stopping by hopefully you enjoyed the video and hopefully I will see you on that next one.