We're sorry but this page doesn't work properly without JavaScript enabled. Please enable it to continue.
Feedback

Mesh layer: why we need another GIS data type

00:00

Formal Metadata

Title
Mesh layer: why we need another GIS data type
Title of Series
Number of Parts
37
Author
License
CC Attribution - ShareAlike 3.0 Germany:
You are free to use, adapt and copy, distribute and transmit the work or content in adapted or unchanged form for any legal purpose as long as the work is attributed to the author in the manner specified by the author or licensor and the work or content is shared also in adapted form only under the conditions of this
Identifiers
Publisher
Release Date
Language

Content Metadata

Subject Area
Genre
Software developerInformation technology consultingHuman migrationCore dumpMobile WeboutputTexture mappingMathematicsPhysicsProcess modelingSoftwarePolygon meshMetropolitan area networkNumerical analysisPattern languageMultiplication signComputer fontView (database)Right angleDenial-of-service attackVisualization (computer graphics)Polygon meshAnalytic continuationType theoryFinite element methodPhysicalismNumeral (linguistics)Goodness of fitPartial derivativeVector spaceXMLUML
Information technology consultingPolygon meshAbstractionLibrary (computing)Process (computing)Artistic renderingProcess modelingDenial-of-service attackFrame problemType theoryRegular graphElement (mathematics)Process (computing)Well-formed formulaMeasurementCellular automatonRight angleElectronic mailing listOpen sourceComputer virusGeometrySpeech synthesisDifferent (Kate Ryan album)Social classData structureForm (programming)Source codePolygon meshFrame problemPolygonAttribute grammarDenial-of-service attackVertex (graph theory)Matrix (mathematics)WeightTriangleEndliche ModelltheorieData conversionVariable (mathematics)Plug-in (computing)Library (computing)File formatType theoryCurvatureoutputPixelAbstractionRegular graphVector spaceResultantMathematical analysisMusical ensembleCodeComputer animation
Price indexInformation technology consultingWater vaporVector graphicsActive contour modelScalar fieldSolar timeWebsiteFrame problemReading (process)Forcing (mathematics)Multiplication signSingle-precision floating-point formatElectronic visual displayMeasurementSimulationPressureTheorySummierbarkeitMathematicsVertex (graph theory)Active contour modelPolygon meshEndliche ModelltheorieFile formatVector spaceInterpolationWater vaporScalar fieldSubject indexingDenial-of-service attackComputer animation
Information technology consultingFormal verificationEvent horizonWebsiteSimulationSolid geometryPlug-in (computing)Selectivity (electronic)DialectSimilarity (geometry)InternetworkingComputer animation
Information technology consultingSymbol tableActive contour modelGraph coloringSimulationVector spaceMappingRaster graphicsAssociative propertyAddress spaceMassAreaComputer animation
Process modelingDenial-of-service attackInformation technology consultingEndliche ModelltheorieDenial-of-service attackType theoryField (computer science)Function (mathematics)Water vaporView (database)Matching (graph theory)
Frame problemProcess (computing)Plot (narrative)Information technology consultingSimilarity (geometry)File formatDenial-of-service attackIndependence (probability theory)Library (computing)Traffic reportingError messageMobile WebSoftwarePolygon meshEndliche ModelltheorieSinc functionComputer simulationProjective planeCore dumpMobile WebBinary filePlug-in (computing)PlanningData structureFile formatDenial-of-service attackArtistic renderingoutputFrame problemMultiplication signLibrary (computing)MereologyProcess (computing)CodeCalculationSoftware developerFunctional (mathematics)Exception handlingCurvatureSeries (mathematics)Cellular automaton1 (number)TheoryForm (programming)Stress (mechanics)Video gameComputer animation
WebsiteMeasurementRing (mathematics)Phase transitionMultiplication signWordVotingVelocityCellular automatonQuantum gravityCodePolygon meshRaster graphicsCASE <Informatik>File formatRegular graphVector spaceArrow of timeComputer animation
Information technology consultingGeometryComputer animationJSONXMLUML
Transcript: English(auto-generated)
So, I was talking about meshes in QGIS 3.6. And that's kind of continuation of the happy news, good news because this is a completely new layer type in QGIS.
So far, it only had the rest layer or vector layer. And this is a completely new type of data that we developed. So, this is completely new type of data we support in QGIS, and it's called meshes. And it's very needed for anyone who is doing any numerical simulations,
weather forecasts, flood modeling, and anything like that. Very quickly, about good travel. So, we do QGIS development, trainings, and make-place packaging and stuff like that. About me and meshes, I am in mathematical modeling and physics.
So, that's where you use finite element methods. I play chess, there's also mesh. And here you see a continuation from QGIS 3D presentation, because right now you can visualize meshes in 3D canvas partially.
So, first, how you get the data to your mesh, to QGIS. So, as I mentioned, you have three data types, or three layer types in QGIS. Vector layer is based on OGR, OGIS.
It's features with some attributes. Then you have rest layer, which is kind of matrix of pixels with bands. Every pixel has some value. And then you have this new type of mesh, which consists of cells, polygon cells,
could be triangles, or quads, or any polygons. And the data is defined on the cell or on the vertex. And we developed a new open-source MIT-licensed library called MDAL, similar to GDAL, which is mesh data abstraction library.
You can look at GitHub for issues or what it can do. Right now it supports many formats for weather, grip, net cdf, and many flood modeling formats
for various solvers like flow, flow2d, basement, and so on. And this is mostly a conversion of the crayfish plugin. I don't know if anyone heard of crayfish plugin. So the code is not new.
It's mostly taken from old crayfish plugin. This library is C++ with no big dependencies on any frameworks. And right now it's shipped to its QGIS 3D library, but we will package it independently in the near future.
Since last year, the API changed a lot, so it was easier to ship it with QGIS. So how it is now? It's MDAL for data input and output. And QGIS is responsible for rendering of the data, styling, and processing of the data, if you want to do some analysis.
So let's talk about the structure of the data for the new layer. So first we have mesh frame, which could be, as I said, triangular mesh, regular mesh, mod, or variable mix, mixes of the mesh, and tonsils of cells and vertices.
In numerical modeling, you usually do your mesh in a way that it helps your simulation, so you do more cells, for example, where you have a river and you want more precise results.
Here is some other examples from flat modeling. So on the left, you see bed elevation, model of the terrain, and on the right, you see how it looks like in QGIS. All the pictures are from QGIS,
so you can really do this in QGIS. There is also a styling panel where you can easily style your layers, similar to vector layers. Also, we can visualize this mesh frame in 3D
if you enable 3D vendors. So it's not all right. So now we have mesh frame, and we want to have some data on it.
So let's imagine that we index all the vertices in the mesh triangles, and we can assign to each vertex some data. It could be either scalar data, like water depth at various times, or it could be vector data, like wind speed, wind direction,
or it could be some other vector data. So assign to each vertex or face for each time. With this, you can interpolate data on canvas
and display contours of vectors in QGIS canvas. And of course, the weather data or flood modeling is all dynamic, so you want to see how the values change over time, which is also supported in QGIS natively.
So on the right, you see that data slider there, which is shifted, and you get such a kind of simulation. This is some wind forecast in a grid format probably.
So let's see what QGIS can do, really, in current version. So let's see some weather data. So here is an example of wind speeds, Madagascar on the left, and you can do some nice animations with it on the right.
On the right, this is a simulation from Crayfish. We want to implement it in QGIS, but we can do similar things in QGIS too. The good thing about the data is that there are many free data available on the internet. There is recently also a plugin made by finally Apollo,
where you can download the data directly to the measure and visualize it. So you don't need to click over the websites and select some regions. Of course, you can do some basic styling of your data. So you can do line widths and symbol for arrow, stuff like that.
So this will make the data. You can also do some simulation for pollution, let's say, or temperature.
You can see how it looks like. So pollution. Let's see another example. This is an example of how you style the contours. So again, you will have similar panels as you know from vector styling or raster styling.
You can assign some color ramps and create nice maps from your data. So let's see some other examples from different area. It's flood modeling. So here we have in QGIS the output of some flood model
where you see again some mesh, how it looks with some water flow. And right, you have an animation of flood, some field type view.
So all of this was kind of possible in some limited way even before. It's the plug-in Crayfish.
So the code is not new, as I mentioned. There was a problem because the rendering was done in C++ in Crayfish before, and it was very hard to distribute it with QGIS, as it was partially Python, partially C++ plug-in, and we get rid of it.
And now the Crayfish is normal plug-in as any other Python plug-in. And we use it for new features that are not in the core. Big benefit of QGIS mesh support in core
is that you can use it now in other plug-ins too very easily, and you can, for example, show this mesh data even on mobile. I think Qfield or input or other mobile devices based on QGIS core,
since everything is in core. And you have a native experience with QGIS, and it's also faster, since it's everything in core. What we would like to do in the future with this mesh support,
we want to import the remaining issue, remaining features from Crayfish, as these trace animations you've seen in the presentation. We want to move some processing algorithms to QGIS core. Now they are in Crayfish.
The very nice feature would be to be able to simulate flat animations in 3D, because right now we have just a support for mesh frames and not the datasets. Also, there are some small issues like time formatting and mesh calculator for some other data types.
Also, we have plans with MDAL. We want to package it as a separate library, so you can use it in other softwares too. Probably it would be nice if also solvers for, let's say, flood modeling can use it directly for the data handling,
and you want to support more formats in MDAL. It seems that the project gets momentum, so we get some requests from suppliers of some numerical models to support their formats.
We want to do better error handling and some lazy loading of the data, so everything is faster and smoother a lot. Yes, that's it. That's it from me. Thank you for attention, and if you have any questions, feel free to ask.
What did you decide to not include any dependencies like QGIS in the library? There was some discussion. Originally we wanted to have it in QGIS,
but then developers decided it's better to have it in a separate library, similar to GDAL, and then in the discussion we found out that it will be more useful for other projects, not QT, but if someone knows what to incorporate this library
to this C++ goal, let's say, it would be easier to have it without such a big dependencies as QT, because we really do not need most of the QT functionality since it's a very low-level library. Mostly it reads a binary format or takes formats and parts them,
and tries to get mesh data from it, the mesh structure and values for various cells, so it doesn't do any complicated stuff, let's say.
Very much like your animation of the mesh over time and directly came to my mind, would it also be possible or easy to do if I have raster data, regular raster data, over time to animate this? So it's a special kind of mesh.
Yes, we support... You can load most of the rest of the data as a meshware nowadays, because let's say regular grid is just a special case of this, so we support some formats from GDAL to load,
so that's one possibility. And also in the QG's site, we want to... Right now we share some rendering code between mesh layer and vector layer, let's say, or raster layer, but we want to port it back, so you'll be able to do, let's say,
if you have raster data and you know that one bed is X and the other bed is Y, you can do these arrows also for raster, let's say. So we want to migrate the code so you can use the same styling for any data. That's on Flybaz.
It's quite a lot of work to do it.