Cartographic generalization with Open Source
This is a modal window.
The media could not be loaded, either because the server or network failed or because the format is not supported.
Formal Metadata
Title |
| |
Title of Series | ||
Number of Parts | 266 | |
Author | ||
License | CC Attribution 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. | |
Identifiers | 10.5446/66358 (DOI) | |
Publisher | ||
Release Date | ||
Language |
Content Metadata
Subject Area | ||
Genre | ||
Abstract |
|
FOSS4G Prizren Kosovo 2023236 / 266
10
17
23
44
45
46
47
48
49
50
52
53
80
84
85
91
110
116
129
148
164
167
169
173
174
181
182
183
186
187
199
202
204
206
209
215
241
248
265
00:00
Local GroupUniverse (mathematics)Expert systemVector spaceRaster graphicsOpen setDatabaseTerm (mathematics)Digital signalContent (media)Basis <Mathematik>Endliche ModelltheorieScale (map)Characteristic polynomialObject (grammar)Positional notationRepresentation (politics)Complex (psychology)Data modelType theoryAttribute grammarContinuous trackDigital photographyGenetic programmingBuildingVisualization (computer graphics)Group actionGraph coloringScaling (geometry)Object (grammar)Medical imagingBuildingProjective planeTexture mappingReal numberOpen setMultiplication signDatabaseFunction (mathematics)Endliche ModelltheorieData modelLine (geometry)Data structureSweep line algorithmOperator (mathematics)Universe (mathematics)Form (programming)Water vaporComputer animationLecture/Conference
02:52
Saddle pointLemma (mathematics)AlgorithmOperator (mathematics)Port scannerTransformation (genetics)Social classScale (map)Parameter (computer programming)SmoothingOpen sourceComputer wormIntegrated development environmentSoftwareZoom lensLevel (video gaming)Execution unitAxonometric projectionTheoryHausdorff dimensionPixelAbstractionDegree (graph theory)Letterpress printingComplex (psychology)Operator (mathematics)Open setLine (geometry)Texture mappingSet (mathematics)Web 2.0Similarity (geometry)EmailAlgorithmScaling (geometry)Probability density functionSoftwareComplex (psychology)MetreDrop (liquid)Level (video gaming)MappingPixelGoodness of fitSweep line algorithmZoom lensSmoothingDimensional analysisProcess (computing)Cartesian coordinate systemLecture/ConferenceComputer animation
05:03
Open sourceOpen setMathematicsAreaCurvePolygonBuildingUniverse (mathematics)Texture mappingOpen setObject (grammar)Sweep line algorithmField (computer science)Projective planeComputer animation
05:19
Open sourceAreaCurvePolygonBuildingUniverse (mathematics)Projective planeDevice driverTopostheorieOpen setProcedural programmingScaling (geometry)Texture mappingComputer animation
05:33
Universe (mathematics)CurveAreaBuildingOpen sourceOpen setMathematicsProcedural programmingAlgorithmScaling (geometry)Texture mappingTesselationComputer animation
05:47
Open sourceMathematicsOpen setCurveAreaPolygonBuildingCellular automatonPolygonComputer animation
06:10
Open sourceUniverse (mathematics)BuildingAreaCurvePolygonParalleler AlgorithmusOpen setMathematicsTesselationPolygonTexture mappingOpen setAlgorithmSweep line algorithmBuildingComputer animation
06:23
Open setMathematicsAreaCurvePolygonBuildingOpen sourceDigital video recorderAlgorithmBuildingLine (geometry)Paralleler AlgorithmusComputer animation
06:39
Point (geometry)Open sourceAttribute grammarNumerical analysisVisualization (computer graphics)Point (geometry)DistancePlug-in (computing)Student's t-testEndliche ModelltheorieSelectivity (electronic)Parameter (computer programming)Cellular automatonRadiusFunctional (mathematics)BitMappingDiscrete groupGoodness of fitCircleGlattheit <Mathematik>ImplementationSlide ruleFront and back endsCurveScaling (geometry)AbstractionDressing (medical)Attribute grammarNumeral (linguistics)Computer animation
09:54
Open sourceDiscrete groupMalwarePolygonAreaTexture mappingWeb 2.0Pairwise comparisonDifferent (Kate Ryan album)Projective planeRight angleComputer animation
10:17
AreaExecution unitPolygonBuildingForestStudent's t-testAlgorithmComputer animationLecture/Conference
10:33
Open sourceNegative numberAreaUniverse (mathematics)Open setR-ParitätWeb pageAreaBuffer solutionPoint (geometry)Texture mappingPosition operatorPolygonGene clusterBitSelectivity (electronic)CodeComputer fontRevision controlNumberNegative numberSweep line algorithmClosed setOpen setMereologyComputer animation
12:31
Heaviside step functionAreaRectangleWeb pageVertex (graph theory)Universe (mathematics)Limit (category theory)Cone penetration testOpen sourceTerm (mathematics)Open setInternet forumComputing platformDiscrete groupBitComputer hardwareBuffer solutionNumberOpen setAreaBuildingShape (magazine)AlgorithmSpherical capPoint (geometry)Projective planeCurvatureRectangleForm (programming)Selectivity (electronic)Scaling (geometry)Cartesian coordinate systemAddress spaceTexture mappingPolygonSoftwareResultantContext awarenessPerfect groupMessage passingImplementationShared memoryRotationTesselationVector spaceVisualization (computer graphics)Computer animationEngineering drawing
Transcript: English(auto-generated)
00:08
To give you a background, you may hear or tell you, yeah, I'm working now for the WER group. But this project, I think, is from my time at the TU Western. So I'm trying to make my PhD, my defense will be in some weeks.
00:22
So I'm now working also in QGIS and PostGIS and all these things. So keep a background with things I tried to collect while I was teaching, helping at the university. And just a short introduction on why all these things. So cartography. The output of cartography is a map.
00:42
It's not just about drawing lines somewhere, taking colors. It's making form like aerial images, building objects, and building a model. And this model depends always on a scale. A scale is the most important thing on a map. And you have to go from one scale to another.
01:01
You have to remove things. And that's generalization. You have to remove things in a good way, but the important things stay. These are the classical definitions that you hear and find in German textbooks. And I will roughly keep around this as what I've learned. So my structure overall.
01:21
Short introduction about this generalization. Then now I will come to the more general problem of generalization and open sweep map. So here are some examples and solutions which I found. Maybe they can take a look if you need some help, some ideas. And overall an outlook. And maybe at the end you will understand by holding this presentation.
01:44
Oh, nice if you try to export some things and this doesn't work. So overall I will go to this. Oh, here are some things. So generalization, there are three things. I will try to explain it here. You're trying to create objects from real world things.
02:02
Usually you should see something like an aerial image. I don't know why it's now missing in the PDF. But you have a building, you have a water feature, and you're sketching all of it. You create objects. Then if you're working with open sweep map, you import all these things in a PostgreSQL database
02:23
and make it a new model. You have to convert this from the PostgreSQL data model into an OGR compatible data model. And you do some cleaning. That's something like a model generalization. At the end, you should see, if I have Tim, I'll draw it also later here,
02:44
there's a cartographic generalization. When you say okay, you're moving objects far away from nada, you can clearly reach it out. If you have more generative things, there are some kinds of operators that describe what happens there. These are not algorithms.
03:01
These are operators. You can say you can simplify a line. Simplify a line is made and implemented by Douglas Koechger's algorithm, by Viswellingham, via it. You can smooth something like a child. The smoothing you can use for this. There are many more. I'll just cut something else to give you the idea.
03:20
There are many more things that can happen than just applying a Douglas Koechger or Viswellingham algorithm and say, okay, I have done simplification. I have done generalization. If you are classical looking at what happens here, you are looking at what happens with cartographic maps.
03:41
You have a defined set of scales, 10,000, 25,000, 50,000, 100,000, and so on. This whole job of generalization is mostly done by national mapping agencies and they use quite complex software. It's not usually about Esri.
04:01
Esri tried to earn money with this, but there are other companies like Axis Software, Spatial One, who are more into this topic and they are more widely used in the past. But if you go now to open sweep map, you say, okay, what's this open sweep map? We have something similar like the set of scales.
04:21
It has zoom levels. It has a fixed software, what is usually in use, PostgreSQL, but we may have to use for generalization. We have some minimal dimensions. In classical, there are millimeters. If you go to VEP, you have just pixels. But you have the same goal, removing things, simplifying things.
04:42
If you want to have a good look at what's happening here, there's a nice, sadly just German publication from the Schweizer, the session for cartography. Try to get it on the VEP. You can get it for five euro, otherwise just write an email. I have the PDF and I'll save nothing.
05:05
So, that is not a blank field. If you are looking about cartography and generalization and open sweep map, you can look into many objects. Not objects, projects. I don't want to mention here OSM Carto.
05:20
I know there are many things inside. You can also find some nice features for generalization, but I may want to talk about the projects which are less known. We have maybe the Open Topo map. This has a nice procedure developed for selecting the most important peaks for scale. We use the topographic isolation.
05:41
We have a nice algorithm implemented about curved labels. We can also look at the map tiles. We have another approach or approach copied from Mapbox like the label grid. If you see the most important places in the grid cell and say, okay, let's see if the most important places can be maybe a city
06:03
or it can be even a small town in a rural area. We have to merge nearby polygons and small polygons to create more efficient vector tiles. It's also simplifications. The Open Map LT is a very nice example of what's possible with generalization
06:21
and open sweep map. We have a great algorithm for simplifying buildings. I've put here screenshots. This looks very clear for me. If I would put OSM carto-ware, it wouldn't look so nice. We have also something like merging parallel road lines implemented also with PostRescrow.
06:42
So, there are things that already happened. I've done a bit of my PhD. I've done a bit of teaching to students who have to explain, okay, we have heard in the professor's lecture, we have to do cartographic generalization here. Let's try to explain. The first one is now from my research.
07:02
I had the question how to select important points like peaks. You see here, I come from Dresden. It's the second Switzerland. There are many peaks. Which one is the important? Or maybe if you look on the settlements between Berlin and Dresden, it's about 200 kilometers.
07:20
If you look to OSM carto, no city is shown at the scale in between, but there must be something in between. How to fix this in general? The abstract problem, you have many points. I've here always an example. And you have a numerical attribute like population.
07:42
Okay, there we go. There was the label good approach. I found it at first at Mapbox. Maybe it was already earlier known somewhere. I don't know. I just have this implementation found from Mapbox. We take a grid and we show inside the grid
08:02
the point or the city with the highest population. You see here the grid. And you will see, okay, each grid cell is one point. So you can make a better selection than just saying, okay, I want to have the cities with more than one million inhabitants.
08:22
And you would only see Praha and Berlin. Another solution which I found is something called functional distance approach. It's more like a modeling approach. You model something like these curves. The height of the curves is defined by the population.
08:41
And then you have a smoothing function going out. And so we get maybe according to the function's parameters more nearby cities or less nearby cities. Another solution. My own idea was to take the approach of the topographic isolation and not use always like a digital elevation model.
09:02
I say I just look for the next point. So do this something in discrete and not on a continuous model. And then you have always this search radius. And you'll say, okay, in the circle of X kilometers, we're at the most important city which I want to show.
09:21
And you get this solution. If you're interested in this specific problem, you can look where I have written a paper of it. It's linked there. You can get the slides. Google it. There's a Postgres implementation of the discrete isolation. I have written a QGIS plug-in. So play around. And let's make better maps about this.
09:43
It's also now implemented in a new back end for the OSM to PJS Go with some generalization if you want to try this out. Like this one. This one. Maybe here a comparison. I made a web map for a project.
10:00
And you see here on the right side my map which I created with discrete isolation. And on the other side, OSM CartoWare can see the difference. There are many more small towns shown which are in between the big cities to give you a better overview. So another thing that I was also thinking about
10:21
is the simplification of features like forest polygons or building polygons. What was more for teaching the students how to apply algorithms and to combine things. So if you're looking on the original and then the upper left, you will say, okay, I want to simplify.
10:42
Just throwing a darkest part on it doesn't work. But if you are going more into detail and you're learning cartography a bit of photogrammetry you have this opening and closing. This is your shrink and expand features. You can do this also with a negative buffer,
11:01
with a positive buffer. You see here in the end it looks for me a bit more nicer and more generalized like just applying a Douglas Polka. You can also apply a Douglas Polka or this Wallingham at the end to remove some points. For me as cartographer this looks a bit better.
11:23
It's always a bit subtle what is better or not. I have shown this here on a bigger area. You can see here. With the outline, the generalized version and just in the green area, the original is open sweep map data.
11:42
If you want to try this out by yourself, there is also the SQL code to do this, where it's also explained how it can work. I just expand the features, I cluster it to merge nearby features,
12:02
I merge these features according to the clusters because sometimes you have to split these polygons in some points. You see here, I grow over the small gaps and then I'm merging this. Simplifying the buffer, multi-polygon to single-polygon to have
12:22
an area selection, I'm throwing out holes. There are many things in between if you're simplifying features and not just saying, okay, I do this with a Douglas Polka. But be aware, it's not perfect. Maybe there are some edges where you say, okay, I'm not happy with the solution my algorithm or my idea works like,
12:42
but maybe, yeah, it's a 90% solution and not a perfect one. Another problem is if you're going to an area features like buildings which have rectangles. Someone definitely said, just try a buffer,
13:01
but say, okay, the important thing you have to do is with the end cap flat and the joint neutral. And then if you say to Douglas Polka with Wallingham, ah, it's not so good. But if you're doing this with a maybe you should leave the drawer open. With a buffer, it keeps more the general
13:20
the general shape of the building and is not just simplified. So, I've done this to a little city next to Dresden where I can go. I've done also some clustering overall to merge these features. And this can be the result
13:40
how it looks when I say, okay, I have removed all the small buildings building bigger polygons. Would be also interesting for vector tiles if you can say, okay, I have compromised this having less points would be advantage. Just a short insight what's happened here. So, clustering the touching buildings
14:01
instead I'm merging them and made a simplification with this buffering. Then I go back to the buildings and should look which I have lost. Maybe there are some buildings that are which are a bit too small or have maybe a house number where I say, okay,
14:20
we are coding because we are a church or something this when I say, okay, I make you to a point, give you a rotation according to your main axis and then I have an abstract building just as a rectangle. It's something called typification cartography. And then I add the buildings again. So, maybe some buildings
14:42
like this here or maybe this here are just now typified showing by a general rectangle. The buffer solution is nice. You need not a software but sometimes it gives you some hard edges like this one here where I say,
15:00
okay, that's not so great but that's just a 90% solution. So, I have give you some rough insight why I'm trying to do this here. I'm putting like in the introduction today I'm putting some seed to push this topic about cartography
15:21
because visualization is an important topic in cartography where many people say, okay, it's done. Now, let's proceed with AI. I think we don't need the AI. We have to just collect knowledge. I'm trying to share my knowledge with just a little bit of this complex topic and
15:41
to push this a bit. I'm trying to build a general implementation where you have just OSM data and at the end, I will have a map at the scale of 25,000 qubits. I started this. I have to open seed map import. I have my algorithmic for generalization.
16:00
I have to merge this. If you're happy, you can use this. I will try to work on it. You can use my Discord installation. You can also try the point selection algorithm. My background messages talk to me. If I would be happy, some other people have said, oh, I
16:21
found a solution. Let's share it. I share my ideas that we can make better maps. My idea is later to build something like a collection of generalization solutions, not looking everywhere in a project to find a solution and then say, okay, maybe I can
16:41
use this. I have to re-implement this. I have to adapt this. It would be nice to sum up the knowledge somewhere where you can find it and easily access. That's it. Thank you.