[{"content":"","date":null,"permalink":"https://florian-bieser.de/en/","section":"Florian Bieser","summary":"","title":"Florian Bieser"},{"content":"Some time ago I created a map of the TfL zones in London and would like to document here how I went about it.\nFirst of all, the most important information: The map is located at https://umap.openstreetmap.de/de/map/london-tfl-zones_78601.\nWhy?\nWell, because I wanted to have a graphical representation of information that I couldn\u0026rsquo;t find on the TfL website. The Tube station closest to my accommodation is in zone 3 and so the ticket costs me more than if it were in zone 1 or 2. Is it worth walking a few hundred metres further to a station that is still in the cheaper zone? Where exactly is the border between the fare zones? And if I then realise that I really need zone 3: what other possible destinations are in the zone? The famous map of the London Tube network is excellent for making the routes easy to recognise, but I couldn\u0026rsquo;t find any answers to these questions.\nI have already found a similar map with Google maps, but there only the zones themselves are available on the map, but not the routes. There are also no markers for the stations within zones 1-3.\nCreating the points for the stations The first step was to get all stations with the information in which zone they are located. Fortunately, the Tube stations in London are well and above all consistently maintained in OSM, there is an attribute ‘fare_zone’.\nThe first attempt to solve this using Overpass Turbo looked like this: 1 2 3 4 [out:json][timeout:25]; {{geocodeArea:London}}-\u0026gt;.searchArea; node[\u0026#34;fare_zone\u0026#34;=\u0026#34;1\u0026#34;](area.searchArea); out geom; Here is the corresponding output1: graphic output of the query. (Copyright) Four lines with a result that looks plausible at first glance. Congratulations, this quality is sufficient for vibe-coding2.\nSo are these the stations that are in zone 1? What are the pitfalls? Let\u0026rsquo;s zoom in a little: graphic output of the query, a bit closer. (Copyright) The first thing that catches your eye is a larger area that contains no search results, even though there are stations there (circled in red). In the second line of the query, \u0026ldquo;London\u0026rdquo; is specified as the searchArea, but London is not simply London. This area is the ‘City of London’, which has a special status and was therefore not included in the \u0026ldquo;London\u0026rdquo; area.\nEven after I extended the area accordingly and then also got the stations within the City of London, zone 1 was still incomplete. The query only shows me the results where the attribute \u0026ldquo;fare_zone\u0026rdquo; has the exact value \u0026ldquo;1\u0026rdquo;. However, some stations are located on the border to zone 2, where the attribute has the value \u0026ldquo;1;2\u0026rdquo;, which was not taken into account in the original query. I only realised this error later.\nWith this knowledge, I have now created several queries, in each of which I have adjusted the value for the \u0026ldquo;fare_zone\u0026rdquo;, downloaded the result of the queries as GeoJSON and uploaded it to umap as a new layer.\nDrawing lines Tube / London Underground Once I have entered all the stations, the next thing I want to know is which line goes where. For this I have chosen the easiest way (which should of course lead to problems later):\n1 2 3 4 [out:json][timeout:25]; {{geocodeArea:Great Britain}}-\u0026gt;.searchArea; way[\u0026#34;line\u0026#34;=\u0026#34;Bakerloo\u0026#34;](area.searchArea); out geom; Simply query all lines one after the other; instead of a node, a way is now searched for. This worked well in the example above. But here, too, two errors have crept in.\nFor the District Line, the result of the query looks like this: graphic output of the query for the District Line. (Copyright) Both the arms at the western and eastern ends are visible, the area in the centre is mostly missing. (Occasionally a few metres of track are shown). The error was the same as above with the stations that were in multiple zones. Wherever several lines were travelling on the same tracks, this area was not included in the results. So instead of the equal sign at \u0026ldquo;line\u0026quot;=\u0026ldquo;District\u0026rdquo; a tilde was used. Line 3 must therefore read\nway[\u0026#34;line\u0026#34;~\u0026#34;District\u0026#34;](area.searchArea); Elizabeth Line and DLR The previous process worked quite well. At least until I came to the Elizabeth Line, which opened a few years ago. This has a special role and is not part of the regular Tube network, even though the normal tickets are valid within the 9 fare zones. As the line was also listed on the official Tube map, I wanted to have it on my map as well. But the query for\nway[\u0026#34;line\u0026#34;~\u0026#34;Elizabeth\u0026#34;](area.searchArea); brought no results. In contrast to the regular lines, this cannot be found as a way, but as a relation. Line 3 now reads:\nrelation[\u0026#34;name\u0026#34;~\u0026#34;Elizabeth line\u0026#34;](area.searchArea); With the relation, however, I have included all the stations as well as the tracks. I deleted these manually or added them as points in a separate layer where the Elizabeth Line runs outside Zone 9.\nWhen inserting the data for DLR, it turned out that some stations were also missing there. Did I mention above that the OSM data is consistent? Yes, but only for the Tube. Well, the \u0026ldquo;fare_zone\u0026rdquo; is only maintained for a few DLR stations. So here too, the relation including the stations was downloaded via Overpass Turbo and uploaded to umap, then the new stations were moved to the corresponding map layer.\nLondon Overground The recently renamed London Overground lines have also been added, but are hidden by default for clarity. The query for the relation also provides markers for the stop position at most stations, but they are missing in some places. Manual reworking was necessary here.\nFine-tuning Once all the data had been exported from Overpass Turbo and imported into individual layers on umap.openstreetmap.de, some fine-tuning was still required.\nunwanted objects The queries for the lines sometimes contain objects that are not part of the line. For example, there is a building in the query for the District line that used to be the Osterley \u0026amp; Spring Grove station until it was closed 90 years ago.\nStation \u0026lsquo;Osterley \u0026amp; Spring Grove\u0026rsquo;. (Copyright) However, some buildings are also included in the results on other lines, often the depots.\nColours It is practical for the routes if the colours are consistent. The TfL made a large part of the design guidelines publicly accessible, but the colour codes are not specified in hex format. It doesn\u0026rsquo;t matter, a conversion from RGB to hex is possible without any problems. Or you can use the colour codes already stored in the respective routes in OSM. Stations that are only in one zone have been given a colour from the Progress Pride Flag. Stations that are in two zones are shown in grey and everything outside zone 9 in black.\nline width The line width had to be adjusted manually in some places as the lines overlap and would otherwise no longer be visible. The yellow of the Circle Line was painted slightly wider so that it can still be seen under the green line of the District Line, which runs the same for long stretches. The ‘Hammersmith \u0026amp; City Line’ has also been adjusted, here with a dashed line.\nStill on the to-do list Currently, only the Tube, London Overground (hidden by default for clarity, but available), DLR and Elizabeth Line lines are on the map. In the future, regional train connections from other operators may be added.\nCopyright notice: All screenshots in this blog post contain map material from OpenStreetMap, © OpenStreetMap contributors.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\nVibe coding: Feeding an AI with a prompt, which outputs the appropriate code and usually using this code unchecked without understanding it. (More on this in the article \u0026ldquo;Vibe coding\u0026rdquo; on Wikipedia)\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","date":"24 March 2025","permalink":"https://florian-bieser.de/en/posts/map-of-tfl-zones-london/","section":"Posts","summary":"\u003cp\u003eSome time ago I created a map of the TfL zones in London and would like to document here how I went about it.\u003c/p\u003e\n\u003cp\u003eFirst of all, the most important information: The map is located at \u003ca href=\"https://umap.openstreetmap.de/de/map/london-tfl-zones_78601\" target=\"_blank\" rel=\"noreferrer\"\u003ehttps://umap.openstreetmap.de/de/map/london-tfl-zones_78601\u003c/a\u003e.\u003c/p\u003e\n\u003cp\u003eWhy?\u003c/p\u003e\n\u003cp\u003eWell, because I wanted to have a graphical representation of information that I couldn\u0026rsquo;t find on the TfL website. The Tube station closest to my accommodation is in zone 3 and so the ticket costs me more than if it were in zone 1 or 2. Is it worth walking a few hundred metres further to a station that is still in the cheaper zone? Where exactly is the border between the fare zones? And if I then realise that I really need zone 3: what other possible destinations are in the zone?\nThe famous map of the London Tube network is excellent for making the routes easy to recognise, but I couldn\u0026rsquo;t find any answers to these questions.\u003c/p\u003e","title":"Map of TfL zones London"},{"content":"","date":null,"permalink":"https://florian-bieser.de/en/posts/","section":"Posts","summary":"","title":"Posts"},{"content":"Since 2023, I\u0026rsquo;m working for a company that uses the OKR (Objectives and Key Results) method to set its goals. In mid-2024, I was asked to lead the OKR meetings for my team and have now decided to also record my private goals in the form of OKRs. In the spirit of transparency, I want to share (at least some of them) publicly so that everyone can see how far I am with my goals. I plan to update this article once a month, if I forget I invite you to ask me where the update is.\nObjective 1: I will improve my fitness as mesured by\u0026hellip;\nKey Result 1: Weight reduction of 10kg compared to the turn of the year 2024/2025\nKey Result 2: Fulfilment of 10 monthly challenges in Apple Fitness\nKey Result 3: Achieve all 3 rings on 250 days (with the current settings or higher targets)\nKey Result 4: four special tours\nclimbing Arthur\u0026rsquo;s Seat (if the weather is good) (28.06.) 10km+ hike in the Palatinate Forest (31.08.) Three-Bridges-Walk of Mainz 1 (09.02.) along the Rhine to Heidesheim (23.08.) or similar routes Objective 2: I will visit new places as measured by:\nKey Result 1: Visiting of at least one place, where I was never before in my life (place = city or village. Not just walking to another streetcorner)\n1/1\nKey Result 2: Visiting an area of London, that is new to me. (Visiting another theather doesn\u0026rsquo;t count.)\n1/1\nObjective 3: I will continue my professional development as measured by:\nKey Result 1: a new certification with a technical focus\n0/1\nKey Result 2: - not publicly available -\nKey Result 3: - not publicly available -\nTo be exactly, the Three-Bridges-Walk of Mainz has 6 bridges.\u0026#160;\u0026#x21a9;\u0026#xfe0e;\n","date":"18 January 2025","permalink":"https://florian-bieser.de/en/posts/goals-2025/","section":"Posts","summary":"\u003cp\u003eSince 2023, I\u0026rsquo;m working for a company that uses the \u003ca href=\"https://en.wikipedia.org/wiki/Objectives_and_Key_Results\" title=\"Link title\" target=\"_blank\" rel=\"noreferrer\"\u003eOKR (Objectives and Key Results)\u003c/a\u003e method to set its goals. In mid-2024, I was asked to lead the OKR meetings for my team and have now decided to also record my private goals in the form of OKRs. In the spirit of transparency, I want to share (at least some of them) publicly so that everyone can see how far I am with my goals. I plan to update this article once a month, if I forget I invite you to ask me where the update is.\u003c/p\u003e","title":"Goals 2025"},{"content":"This website does not collect any data that would allow users to be identified during normal viewing.\nLog files Log files are immediately anonymised so that IP addresses are no longer stored in this way.\nCookies No cookies are used on this website. Cookies may be used on subdomains to save logins, in which case they are technically necessary.\nData transfer to third countries Data is not transferred to third countries. This site is hosted entirely in Germany.\nContact For legal reasons, this page contains contact details. If you use the contact details, I will keep your message until it has been processed and then delete it.\nYour rights Article 15 GDPR: You have the right to obtain confirmation as to whether I am processing data about you and to receive a copy of your data. -\u0026gt; Unless you have emailed me shortly beforehand, I will probably not have any data about you.\nArticle 16 GDPR: You have the right to have your data completed or inaccurate data corrected. -\u0026gt; Since I probably don\u0026rsquo;t have any data from you (and don\u0026rsquo;t want to have any), there will probably be nothing to correct.\nArticle 17 GDPR: You have the right to request the erasure of your data. This right may be restricted if erasure is not possible for other legal reasons (e.g. retention periods). -\u0026gt; Since I probably have no data about you, there will be nothing to delete. If I do have data about you, I will check whether it is still needed.\n","date":null,"permalink":"https://florian-bieser.de/en/data_protection/","section":"Florian Bieser","summary":"\u003cp\u003eThis website does not collect any data that would allow users to be identified during normal viewing.\u003c/p\u003e\n\u003ch2 id=\"log-files\" class=\"relative group\"\u003eLog files \u003c/h2\u003e\u003cp\u003eLog files are immediately anonymised so that IP addresses are no longer stored in this way.\u003c/p\u003e\n\u003ch2 id=\"cookies\" class=\"relative group\"\u003eCookies \u003c/h2\u003e\u003cp\u003eNo cookies are used on this website. Cookies may be used on subdomains to save logins, in which case they are technically necessary.\u003c/p\u003e\n\u003ch2 id=\"data-transfer-to-third-countries\" class=\"relative group\"\u003eData transfer to third countries \u003c/h2\u003e\u003cp\u003eData is not transferred to third countries. This site is hosted entirely in Germany.\u003c/p\u003e","title":"Data Protection"},{"content":"Although this is a private website and therefore should not be subject to the german \u0026ldquo;Impressumspflicht\u0026rdquo;, I do not want to discuss this legally and therefore give the usual contact details anyway. This site is operated by:\nFlorian Bieser\nZeystr. 6\n55120 Mainz\nGERMANY\nThe contact information is provided out of (possible) legal necessity and does not imply permission to use it for advertising purposes.\nContact E-Mail: impressum2026@florian-bieser.de\nAbout this page This page is hosted by uberspace and was created using Hugo with the theme Congo.\n","date":null,"permalink":"https://florian-bieser.de/en/legal_information/","section":"Florian Bieser","summary":"\u003cp\u003eAlthough this is a private website and therefore should not be subject to the german \u0026ldquo;Impressumspflicht\u0026rdquo;, I do not want to discuss this legally and therefore give the usual contact details anyway. This site is operated by:\u003c/p\u003e\n\u003cp\u003eFlorian Bieser\u003cbr\u003e\nZeystr. 6\u003cbr\u003e\n55120 Mainz\u003cbr\u003e\nGERMANY\u003c/p\u003e\n\u003cp\u003eThe contact information is provided out of (possible) legal necessity and does not imply permission to use it for advertising purposes.\u003c/p\u003e\n\u003ch2 id=\"contact\" class=\"relative group\"\u003eContact \u003c/h2\u003e\u003cp\u003eE-Mail: \u003ca href=\"mailto:impressum2026@florian-bieser.de\"\u003eimpressum2026@florian-bieser.de\u003c/a\u003e\u003c/p\u003e\n\u003ch2 id=\"about-this-page\" class=\"relative group\"\u003eAbout this page \u003c/h2\u003e\u003cp\u003eThis page is hosted by \u003ca href=\"https://uberspace.de\"\u003euberspace\u003c/a\u003e and was created using \u003ca href=\"https://gohugo.io/\"\u003eHugo\u003c/a\u003e with the theme \u003ca href=\"https://github.com/jpanther/congo\"\u003eCongo\u003c/a\u003e.\u003c/p\u003e","title":"Legal Information"},{"content":"","date":null,"permalink":"https://florian-bieser.de/en/categories/","section":"Categories","summary":"","title":"Categories"},{"content":"","date":null,"permalink":"https://florian-bieser.de/en/tags/","section":"Tags","summary":"","title":"Tags"}]