MundoMar

My low-effort geofiction bragpost for the week is a theme park called MundoMar in the country of Ardesfera.

I’m not  as good at what’s called detailed or micro-mapping, but I thought this was a good effort. It’s a maritime-themed theme park, maybe somewhat modeled on Sea World – though I haven’t visited Sea World in about 50 years.

The surroundings to the theme park are not as well mapped, and the farther afield you go, the more embarrassed I am by the work. Much of this mapping is from my first year on the opengeofiction site (2014), when I was still learning how to use the tools and figuring out what was possible in the realm of “slippy map geofiction”.

Here is a screenshot of the spot:

Screenshot of the map window on the OpenGeofiction site, showing an area mapped of a theme park called MundoMar with lots of detail.

The area shown is here on the map server: https://opengeofiction.net/#map=17/-24.47490/124.33675&layers=B

Quelepa

For this week’s low-effort bragpost, I’m sharing my pre-modern ceremonial capital, Quelepa. The plan that I had, long ago, was to create this circa 1400’s city, in the style of maybe a Mayan or Aztec city, and then overlay a modern city over it, using a historical mapping process. But I never got around to it, so the city is still there, in a kind of anachronistic reservation within the otherwise modern country of Ardesfera. That explains the bit of railroad seen in the lower left of the screenshot.

I was especially pleased with the city because it conformed to the already-drawn contours (topo) for the region. I also did some minor work on a conlang for the culture involved, which I used to name all the various temples included.

A screenshot of the zoomable map on the OpenGeofiction.net website, showing a pre-modern ceremonial city with detailed buildings and walls, and a background showing the contour lines of the area's physical topography.

Here is a link to the zoomable map: https://opengeofiction.net/#map=16/-21.7931/121.6496&layers=V

OpenGeofiction Aggregate Active User Data (Since Migration)

I decided to try to brush off some very rusty SQL skills and write a query against the OGF database to find out what our monthly active user counts looked like.

This data can only be compiled accurately for dates since the “migration”, which was in August, 2021. Before that changesets are not properly dated as they were all loaded at once from the old instance (Thilo’s) to the new instance (Luciano’s).

I decided to categorize unique user counts for each month by their “start year” (e.g. a user like myself would be under start year 2014). That way I could also see how old “generations” of users drop off over time.

I started with a nested SQL query, which is basically what I used to do professionally about 20 years ago, but it’s been a while since I wrote raw queries against complex data like this. It comes back fairly quickly though, and this is definitely the result of a little bit of trial and error. I’m working with two tables in the openstreetmap PostgreSQL database: users and changesets. I’m counting changesets by the month they occur and by a breakdown of users by when they started using the OGF site (with a special category for users who are “new” in the month they are active).

Here’s the query I made and ran at the PSQL prompt on the server (these data structures are all public knowledge, part of the OSM specification, so I don’t feel worried sharing it).

SELECT 
 t.changeset_month,
 t.user_first_year, 
 t.new_user_flag,
 COUNT(DISTINCT t.user_id) AS count_users,
 COUNT(t.changeset_id) AS count_changesets
FROM ( 
  SELECT
   i.changeset_id,
   i.changeset_month,
   i.user_id,
   LEFT(i.creation_month, 4) AS user_first_year,
   CASE
    WHEN i.creation_month = i.changeset_month
    THEN 'new_user'
    ELSE 'old_user'
   END AS new_user_flag
  FROM ( 
    SELECT 
     to_char(changesets.closed_at, 'YYYY-MM') AS changeset_month,
     changesets.user_id AS user_id, 
     changesets.id AS changeset_id, 
     to_char(users.creation_time, 'YYYY-MM') as creation_month
    FROM changesets INNER JOIN users 
    ON users.id = changesets.user_id 
    WHERE changesets.closed_at >= '2021-10-01'::date
    AND changesets.closed_at <= '2022-12-31'::date
  ) AS i
) AS t
GROUP BY 
 t.changeset_month,
 t.user_first_year, 
 t.new_user_flag
ORDER BY 
 t.changeset_month,
 t.user_first_year, 
 t.new_user_flag DESC;

Here’s the raw output I got.

changeset_month | user_first_year | new_user_flag | count_users | count_changesets
-----------------+-----------------+---------------+-------------+------------------
2021-10         | 2013            | old_user      |          10 |              112
2021-10         | 2014            | old_user      |          17 |             1098
2021-10         | 2015            | old_user      |          23 |              720
2021-10         | 2016            | old_user      |          24 |              448
2021-10         | 2017            | old_user      |          34 |              787
2021-10         | 2018            | old_user      |          45 |             1088
2021-10         | 2019            | old_user      |          35 |              750
2021-10         | 2020            | old_user      |          28 |              557
2021-10         | 2021            | old_user      |          34 |              492
2021-10         | 2021            | new_user      |          24 |              280
2021-11         | 2012            | old_user      |           1 |                1
2021-11         | 2013            | old_user      |           8 |              207
2021-11         | 2014            | old_user      |          19 |              687
2021-11         | 2015            | old_user      |          26 |              697
2021-11         | 2016            | old_user      |          21 |              408
2021-11         | 2017            | old_user      |          36 |              738
2021-11         | 2018            | old_user      |          41 |             1271
2021-11         | 2019            | old_user      |          29 |              663
2021-11         | 2020            | old_user      |          26 |              749
2021-11         | 2021            | old_user      |          28 |              439
2021-11         | 2021            | new_user      |          23 |              498
2021-12         | 2013            | old_user      |          10 |              335
2021-12         | 2014            | old_user      |          17 |              773
2021-12         | 2015            | old_user      |          23 |              892
2021-12         | 2016            | old_user      |          25 |              657
2021-12         | 2017            | old_user      |          31 |              703
2021-12         | 2018            | old_user      |          43 |             1506
2021-12         | 2019            | old_user      |          29 |              769
2021-12         | 2020            | old_user      |          25 |              664
2021-12         | 2021            | old_user      |          45 |              854
2021-12         | 2021            | new_user      |          22 |              250
2022-01         | 2012            | old_user      |           1 |                3
2022-01         | 2013            | old_user      |           7 |              174
2022-01         | 2014            | old_user      |          13 |             1023
2022-01         | 2015            | old_user      |          22 |              805
2022-01         | 2016            | old_user      |          23 |              568
2022-01         | 2017            | old_user      |          32 |              753
2022-01         | 2018            | old_user      |          39 |             1642
2022-01         | 2019            | old_user      |          30 |             1062
2022-01         | 2020            | old_user      |          30 |              878
2022-01         | 2021            | old_user      |          42 |              703
2022-01         | 2022            | new_user      |          24 |              192
2022-02         | 2013            | old_user      |          10 |              397
2022-02         | 2014            | old_user      |          19 |             1251
2022-02         | 2015            | old_user      |          21 |              768
2022-02         | 2016            | old_user      |          22 |              540
2022-02         | 2017            | old_user      |          30 |             1136
2022-02         | 2018            | old_user      |          41 |             1612
2022-02         | 2019            | old_user      |          25 |              617
2022-02         | 2020            | old_user      |          27 |              888
2022-02         | 2021            | old_user      |          41 |              722
2022-02         | 2022            | old_user      |           8 |              117
2022-02         | 2022            | new_user      |          21 |              234
2022-03         | 2013            | old_user      |           8 |               61
2022-03         | 2014            | old_user      |          17 |             1384
2022-03         | 2015            | old_user      |          25 |              927
2022-03         | 2016            | old_user      |          22 |              705
2022-03         | 2017            | old_user      |          35 |             1498
2022-03         | 2018            | old_user      |          41 |             1211
2022-03         | 2019            | old_user      |          33 |              861
2022-03         | 2020            | old_user      |          30 |             1018
2022-03         | 2021            | old_user      |          38 |             1458
2022-03         | 2022            | old_user      |          13 |              491
2022-03         | 2022            | new_user      |          27 |              758
2022-04         | 2013            | old_user      |           7 |              186
2022-04         | 2014            | old_user      |          17 |              871
2022-04         | 2015            | old_user      |          24 |              500
2022-04         | 2016            | old_user      |          19 |              683
2022-04         | 2017            | old_user      |          30 |             1093
2022-04         | 2018            | old_user      |          39 |             1291
2022-04         | 2019            | old_user      |          29 |              833
2022-04         | 2020            | old_user      |          28 |              673
2022-04         | 2021            | old_user      |          32 |              753
2022-04         | 2022            | old_user      |          25 |              900
2022-04         | 2022            | new_user      |          21 |              231
2022-05         | 2012            | old_user      |           1 |                1
2022-05         | 2013            | old_user      |           8 |              214
2022-05         | 2014            | old_user      |          22 |             1093
2022-05         | 2015            | old_user      |          25 |              526
2022-05         | 2016            | old_user      |          25 |              899
2022-05         | 2017            | old_user      |          28 |             1100
2022-05         | 2018            | old_user      |          40 |             1097
2022-05         | 2019            | old_user      |          30 |              873
2022-05         | 2020            | old_user      |          30 |              673
2022-05         | 2021            | old_user      |          34 |             1328
2022-05         | 2022            | old_user      |          27 |              558
2022-05         | 2022            | new_user      |          30 |              348
2022-06         | 2013            | old_user      |           7 |              249
2022-06         | 2014            | old_user      |          17 |              979
2022-06         | 2015            | old_user      |          26 |              605
2022-06         | 2016            | old_user      |          26 |              593
2022-06         | 2017            | old_user      |          30 |              988
2022-06         | 2018            | old_user      |          39 |              941
2022-06         | 2019            | old_user      |          27 |              985
2022-06         | 2020            | old_user      |          26 |              783
2022-06         | 2021            | old_user      |          36 |              919
2022-06         | 2022            | old_user      |          44 |              606
2022-06         | 2022            | new_user      |          31 |              523
2022-07         | 2013            | old_user      |           8 |               84
2022-07         | 2014            | old_user      |          19 |             1414
2022-07         | 2015            | old_user      |          25 |              630
2022-07         | 2016            | old_user      |          24 |              558
2022-07         | 2017            | old_user      |          29 |             1209
2022-07         | 2018            | old_user      |          39 |             1199
2022-07         | 2019            | old_user      |          27 |              632
2022-07         | 2020            | old_user      |          29 |              796
2022-07         | 2021            | old_user      |          35 |             1082
2022-07         | 2022            | old_user      |          41 |              750
2022-07         | 2022            | new_user      |          38 |              632
2022-08         | 2013            | old_user      |          10 |              165
2022-08         | 2014            | old_user      |          17 |             1236
2022-08         | 2015            | old_user      |          24 |              687
2022-08         | 2016            | old_user      |          25 |              636
2022-08         | 2017            | old_user      |          29 |              961
2022-08         | 2018            | old_user      |          41 |             1145
2022-08         | 2019            | old_user      |          35 |              808
2022-08         | 2020            | old_user      |          25 |              585
2022-08         | 2021            | old_user      |          38 |              847
2022-08         | 2022            | old_user      |          50 |             1049
2022-08         | 2022            | new_user      |          40 |              589
2022-09         | 2013            | old_user      |          10 |              175
2022-09         | 2014            | old_user      |          19 |             1534
2022-09         | 2015            | old_user      |          20 |              604
2022-09         | 2016            | old_user      |          24 |              750
2022-09         | 2017            | old_user      |          23 |              735
2022-09         | 2018            | old_user      |          41 |             1302
2022-09         | 2019            | old_user      |          28 |              841
2022-09         | 2020            | old_user      |          24 |              503
2022-09         | 2021            | old_user      |          30 |              609
2022-09         | 2022            | old_user      |          54 |             1035
2022-09         | 2022            | new_user      |          25 |              261
2022-10         | 2012            | old_user      |           1 |                3
2022-10         | 2013            | old_user      |           8 |              231
2022-10         | 2014            | old_user      |          18 |             1112
2022-10         | 2015            | old_user      |          22 |              433
2022-10         | 2016            | old_user      |          25 |              789
2022-10         | 2017            | old_user      |          25 |              809
2022-10         | 2018            | old_user      |          39 |             1267
2022-10         | 2019            | old_user      |          28 |              895
2022-10         | 2020            | old_user      |          30 |              736
2022-10         | 2021            | old_user      |          27 |              382
2022-10         | 2022            | old_user      |          54 |             1040
2022-10         | 2022            | new_user      |          17 |              173
2022-11         | 2013            | old_user      |           8 |              248
2022-11         | 2014            | old_user      |          16 |             1164
2022-11         | 2015            | old_user      |          22 |              357
2022-11         | 2016            | old_user      |          23 |              675
2022-11         | 2017            | old_user      |          25 |              927
2022-11         | 2018            | old_user      |          37 |              897
2022-11         | 2019            | old_user      |          25 |              702
2022-11         | 2020            | old_user      |          25 |              679
2022-11         | 2021            | old_user      |          25 |              577
2022-11         | 2022            | old_user      |          49 |             1100
2022-11         | 2022            | new_user      |          31 |             1641
2022-12         | 2013            | old_user      |           6 |              317
2022-12         | 2014            | old_user      |          18 |              981
2022-12         | 2015            | old_user      |          23 |              543
2022-12         | 2016            | old_user      |          20 |              541
2022-12         | 2017            | old_user      |          25 |              941
2022-12         | 2018            | old_user      |          34 |              973
2022-12         | 2019            | old_user      |          28 |              935
2022-12         | 2020            | old_user      |          22 |              500
2022-12         | 2021            | old_user      |          29 |              432
2022-12         | 2022            | old_user      |          59 |             1623
2022-12         | 2022            | new_user      |          25 |              317

I plugged these data into a spreadsheet, did a few changes and a pivot table. Here’s a graph of the result.

picture

The top band, in light blue, is the “new users” band – these are users each month who are active in their first month of joining OGF. The lower bands represent each year back to OGF’s founding, in 2012 (there were only 2 users in the first year, Thilo and Joschi).

Based on that graph, I would say really OGF is quite stable. We acquire a certain number of new users each month, we lose about an equal proportion of old users, but some subset of long-term users stick around.

Springfield

I felt that my faux-midwestern state, Makaska, would need a “Springfield” – doesn’t every real US state have a “Springfield”?

For this week’s low-effort brag-post of my mapping on OpenGeofiction, I’ll post this view of Springfield. Unlike most other parts of Makaska where I’ve mapped, this is not being done chronologically. It’s meant to represent the modern state of the map. I don’t feel it’s complete, but a lot is done – at least 65% done I’d say.

picture

Here is a link to the map: https://opengeofiction.net/#map=14/-41.5031/148.4594&layers=B

Faux-midwestern, rural Makaska

This is my low-effort map-brag of the week. This is quite recent work – mostly done in the last year or so. It’s in the central-south of my imaginary faux-US-midwestern state of Makaska. Like most of Makaska, this region is being drawn “historically” – which is to say, I’m trying to add features and such in a rough chronological order. As such, this still incomplete mapping is stuck somewhere in the very early 1900’s right now, and still needs quite a bit of work before I’d even feel comfortable to advance the calendar.
A screen shot of the website opengeofiction.net . This is a
Here is a link to the location on the map: https://opengeofiction.net/#map=12/-43.0508/145.6341&layers=B

Still my proudest accomplishment

For this week’s low-effort post reviewing my geofiction work on opengeofiction, I’ll present what I still consider my “masterpiece” – it’s the best bit of geofiction I’ve created for any OSM-style platform (i.e. opengeofiction.net or arhet). I did this work mostly in 2015-2016.

That’s my island city-state called Tárrases. It includes a well-wrought contour layer.

picture

Here’s the link: https://opengeofiction.net/#map=12/-58.3003/83.9568&layers=B

 

Provincia de Amor

As I said last week – I’m going to try to do a low-effort post of past or current geofiction work once a week.

For this week, I’ve been feeling nostalgic for my years living in South Korea. So I decided to post a geofiction I did while living there, in 2015 or so. It’s not the greatest – there are aspects I can even say I feel a bit embarrassed by, but at the time it was the best I’d done so far, and I was quite happy with it.

Screenshot of a map of an imaginary place called Sarang-do, hosted on the OpenGeofiction map server

Here’s the link to the map: https://opengeofiction.net/#map=15/-20.7997/124.2137&layers=B

It’s a little bit tongue-in-cheek, linguistically. My Korean language skill isn’t that good, so the naming is probably amusing or cringey for those who are better with Korean. The whole idea is that this is a quite small, touristically-oriented, Korean-speaking exclave of my imaginary country called Ardesfera (Ardisphere). Bear, in mind, therefore, that anything outside of Sarang-do’s borders is not my work – and there’s been quite a bit of turnover by the neighbors, too, so I don’t actually know who’s currently mapping in the surroundings nor what their concept is – it’s clearly incomplete.

Long time, no update

I have neglected this blog for the last 6 months. That’s bad.

I occasionally think of things I’d like to blog here, but I get lazy or distracted with other, non-geofiction stuff, and never get around to it.

For now, I’m going to try something different. I’ll try to do a “low effort” post once a week. We’ll see how long that lasts.

One of these low effort posts will involve pointing to something I (or someone else) has mapped on one of the map servers (Ogieff, Arhet).

This week: yesterday, I uploaded some work-in-progress on the city of Saint-Raphaël, Ooayatais. It’s far from complete, but I decided that instead of hoarding the work on my desktop computer, I’d go ahead and post it in its incomplete state. Even so, yesterday’s upload was about 70k objects. (https://opengeofiction.net/#map=14/-46.6363/146.7445&layers=B)

Screenshot showing map

Note that in the screenshot, coastlines are not yet updated. There’s something going on with delayed coastline updates, which, as admin for the site, I should probably look into.

On Castine and its many tribulations

Castine is an imaginary country that once existed on the imaginary planet I prefer to call Ogieff. In fact, the imaginary planet doesn’t have an official name – it’s hosted at opengeofiction.net, which all the users call, simply, “OGF”. That initialism leads to my preferred name for the planet – just sound it out.

There is a real place called Castine – it’s a small town in Maine, USA. This is not that Castine.

I joined OGF in 2014, and Castine appeared and began evolving sometime in the year after that, I think – in 2015. I also became an admin on the opengeofiction.net website in that year.

During the period from 2015 to 2017, Castine became the locus of a kind of meta-proxy-war, where I used it as a stand-in for a never-ending argument I liked to have with my fellow OGF admins.

The issue in question was the rule about “verisimilitude”. I had long felt (and continue to feel) that OGF’s verisimilitude rule is a bad idea – it’s vague and impossible to enforce consistently. It has no objectivity. The principle is that mapping on the OGF world is supposed to be “realistic” in the sense that it eschews fantasy and sci-fi elements, and doesn’t contain cultural or cartographic artifacts that couldn’t reasonably exist in the real world. Hence, people who build 50 km bridges or tunnels are called out for violating verisimilitude, likewise more science-fictional elements like space elevators or fantasy elements like dens of dragons or nations of 1920’s-era talking sheep (all these examples really occurred at various times on the OGF planet).

Castine was (is) a borderline case of violating verisimilitude. Some users felt it violated the rule, others felt it was okay. My position was always something like: “since we can’t decide if this violates verisimilitude or not, but it’s really good mapping… c’cmon, people, let’s drop (or at least, fix) this stupid rule.

Of course, this was an unpopular stance. And in the long run, I lost the battle to remove or even alter the verisimilitude rule on Ogieff, and I made my peace with it.

One way that I made that peace with it, was to create my own, separate planet! In 2016, I started the planet Arhet as a kind of alternative project to Ogieff. By 2018, it had several active mappers and its own emerging community. The principle concept behind Arhet is to be a kind of “libertarian” reinterpretation of OGF. It has very few rules: no verisimilitude rule, no assigned territories, etc. And somewhat to my own surprise, it sorta kinda works. The key to it working, I reckon, is that unlike OGF, Arhet is not “open” to any and all comers. There’s an application process to join, and although I enforce almost no rules for the planet, I do stand firm that arguments or disagreements between users that escalate to my remit will simply result in immediate banning of all parties. That keeps everyone participating on best behavior, I guess.

The irony is that then, in 2021, I took over the hosting of the original opengeofiction.net. So now I host a little federation of two imaginary planets, Ogieff and Arhet, which have substantially overlapping user communities but having quite different rule systems. And I’m okay about that. I inevitably yield to my fellow admins, whose hard work and dedication to the project I admire, when it comes to matters of rules and judgements on Ogieff. But off to the side, I run Arhet singularly, and I insist on its fundamentally anarchic state.

In around 2020, the creator of Castine (Ramasham) was banned from Ogieff – ultimately for violating another, different rule: the rule prohibiting direct upload of data copied from OSM. OSM is OpenStreetMap, which is a map of the Real World™ in the same technological vein as our two imaginary planets. This is the so-called “slippy map” paradigm, originally popularized by mapquest and perfected and dominated by google maps. OSM runs on and supports a whole complex ecosystem of software that is all open source, as a kind of alternative to google maps, and that’s why it’s easy (uh, “easy” in a financial sense, not “easy” in a technical sense) for us to use the same software to run OGF and Arhet.

Anyway, there is (and there has always been) a rule prohibiting copying OSM data into OGF. Ostensibly this is motivated by paranoia about copyright violation, but in fact copyright has little to do with it, in my own estimation – there are easy ways to avoid issues around copyright as long as you follow along with OSM’s “attribution and re-use” rules. The real motivation for the prohibition is legitimate, though: on OGF, we want to discourage mappers from spamming the planet’s map with cut-n-paste copies of real-world places. It’s low effort geofiction and discourages creativity.

That said, when I set up Arhet I decided to also not enforce OGF’s “no real-world (OSM) data” rule. And indeed I myself played around with cutting and pasting some data from OSM, including an ephemeral instance of country I called “Lingit Aani” (this is Tlingit language) – a copy of the islands of Southeast Alaska but minus any nearby continent, as an open-ocean archipelago. I later deleted this, but there are multiple copy-the-real-world geofiction projects going on in Arhet, these days, including clones of Sakhalin Island (Siberia) and Romania’s Bucharest, and at least two Polands – perhaps more.

I guess Castine’s creator, Ramasham, had been doing some copy-pasting of OSM data to increase the detail and complexity of Castine’s cartography. Notably, this airport is a modified cut-n-paste copy of one in the real world, with only the names of things altered. And so Ramasham was banned from OGF. Rules are rules, and that “no copy from OSM” rule is actually probably the most common reason for mappers to be banned from the site.

Now we come to February of this year (2022). The admin team at OGF, moving to “clean up” various abandoned territories around our (imaginary) globe, decided finally to delete Castine once and for all. And I had a moment of deep sadness and regret. Despite my having leveraged Castine back in 2016 as part of my proxy war with the other admins over the verisimilitude rule, in fact I really, really like Castine.

From a technical standpoint, Ramasham was at best a mediocre mapper. But the imaginary country is full of cartographic whimsy and playfulness, the naming is thorough and inventive and culturally intriguing, and the detail in some parts is quite incredible. I thought it was worth preserving.

So I considered: Ramasham’s ban from OGF was for violating the “No OSM data” rule; if there were any other issues with Castine, they were issues with the “verisimilitude” rule; so… hey – Arhet doesn’t have those rules!

The solution was obvious. I decided I’d move Castine to Arhet. And even more conveniently, the exact latitude and longitude of Castine’s old Ogieff location was open an unused on Arhet. I figured it should be quite easy to simply “cut-n-paste” the whole of Castine into Arhet.

Yikes! This turned out to be the far from the case – it was not easy. Not at all. Castine included almost 2 million distinct GIS objects: nodes, ways, relations. This was not trivial to simply cut, paste, and upload into the new site. And further, the data quality was quite poor, from a technical standpoint. Thousands of improperly stacked ways on shared nodes, hundreds of lazily-crafted or incomplete data relations, etc.

I have spent the last week in a kind of Alice-in-Wonderland nightmare of trying to rescue Castine and upload it to the Arhet planet. I think that as of this morning, that I have succeeded, but not before almost destroying the Arhet server altogether in the process.

Without going into a lot of detail, it seems that there were a couple of relations (a technical term in this case for a type of data object used in OSM GIS software) that were apparently so badly constructed that they broke the server’s database. Since I had to do a kind of trial-and-error search to finally identify these objects, it took a very long time. I’d upload some subset of the full Castine dataset, and watch to see if the database crashed or not. If it didn’t, fine, I’d try another set of data. If it crashed, I’d have to go back to the last backup of the server, restore it, and try again. I think I did a backup-restore cycle maybe 12 or 14 times over the last week on the Arhet server. It was painful, and tedious, and immensely frustrating.

The crash-provoking objects in question are puzzling. I still don’t understand why they crash the database. And given my difficulties in identifying them (and surviving them – see below), I probably won’t spend time, any time soon, trying to figure them out. They are “Giant Chessboards” – three of them. Interestingly, Castine also has other “Giant Chessboards” (e.g. here) that do not cause any kind of data problem. They are apparently implemented differently, in their details.

The problem was compounded yesterday, when, much to my shocked dismay, the server-level backup-restore functionality offered by my hosting provider, Linode – that I’d been so repeatedly abusing – suddenly and inexplicably failed to work.

So for a day (yesterday) the world was Arhetless. The server was down. I was in a panic because it seemed I’d have to fully rebuild the server from scratch. And it was only pure luck that I even had a copy of the map data, because I was still running a kludgey render engine (map drawing process) for Arhet on a different machine.

I wrangled with tech support at Linode, and they finally held my hand (or was it that they held my server’s hand?) through a successful if stressful restoration of the server’s image.

Let’s just say, these days Castine now has a quite colorful meta-history.

I reached out to the creator of Castine, sending an email to the address on record at OGF, announcing its restoration in Arhet. I would absolutely welcome and be pleased if that person would come back and take up work on the country, again – they won’t be constrained by the rules and regulations on Ogieff. Unfortunately I haven’t heard back. I speculate that there might be some bitterness about the whole business of having been first praised and then banned, back a few years ago.

The link to Castine-in-Arhet is here:

https://arhet.rent-a-planet.com/relation/10996

Please feel free to explore. I decided not to bother with adding extensive screenshots for this blog post – the point of having the Castine map hosted on the server is that you can explore easily directly on the website.

Happy mapping.

Music to view geofiction to: Dawg Yawp, “Lost At Sea.”

The State of the OGF Topo Layer

This will be a fairly long write-up, so depending on your interests, you can skip sections that aren’t useful to you.

First I will write about the OGF topo layer, and give a tour of its current status, with some discussion of how it works.

Then in subsequent sections I will try to discuss how to create or edit your own contributions to the OGF Topo layer.

Part I – Introducing The OGF Topo Layer

The term “topo” (short for topographic) refers to a style of map that shows the physical elevation of land, either through shading or drawing contour lines or both. There are many topo renders available for the OpenStreetMap platform. My own favorite for daily use is the Cycle Map layer on OSM – not for any specific reason except that it’s easy to get to – it’s included right there in the layer selector for the OSM site. The best known, however, and one of the oldest, is the separately built and maintained OpenTopoMap. The code for OpenTopoMap is freely available on github.

All the various implementations of topo style for OpenStreetMap rely on the easy availability of free data from the United States’ NASA. This agency did a planet-wide survey of the elevation of all the land in the world on an arc-second (approx. 30-meter) grid, using radar, and published that data, online, for anyone to use. This data is called “SRTM”. Developers implementing OpenStreetMap’s various topo layers are able to download and use this SRTM data to use as a raw source of the detailed topographic information needed to draw the map. So, in the case of OpenTopoMap, the SRTM data is loaded to the render machine, processed in various ways, and turned into the hillshading, contour lines, and map-elevation color shading that we all know and love.

For the real world, getting topo data is matter of launching a spacecraft or satellite with a little radar range-finder on it, and flying over the surface of the earth finding how high each part of the earth is relative to some baseline (i.e. mean high sea level). Easy! But OpenGeofiction is on a fictional planet. To repurprose Virginia Woolf’s famous line: There’s no there, there.

Instead we have to sit down and make up each square of elevation information – there’s got to be a 30-meter square grid for our entire imaginary planet, and we have to invent the elevation for each and every square! And just randomizing this isn’t going to work – real world topographic data betrays the evolved geophysical patterns of our planet, influenced by everything from plate tectonics to vulcanism to erosion to human landscaping. The data is going to have to either be “drawn” by creative human hands, or “drawn” by well-trained machine-learning AI’s. Both are possible in principle, but then we have the data problem.

The data problem is this: the NASA SRTM format was developed for storing real world data. But no one ever thought: we need a nice, user-friendly, SRTM file editor! Why? Because no one needs to edit real-world data. It came from a super-precise scientific gadget, who’s going to need to edit that? They could only mess it up.

So there simply does not exist any easy way to get the “imaginary” SRTM files that we need for our topo layer. Some geofiction genius is going to need to write a converter.

Luckily, OpenGeofiction has such a genius. The original creator of OpenGeofiction, Thilo, wrote a little program that turns a standard OSM XML format file (.osm) that has been filled with hand-drawn contour lines (tagged contour=elevation / ele=nnn) into a pseudo-SRTM format file (.hgt). Then we just need to install the standard OpenTopoMap software on our render server, copy the pseudo-SRTM files across, and voila, topo for OGF!

Still, we have a whole planet to cover. At this point in time (the time of writing this article, early 2022) the overall coverage for OGF’s topo layer is tiny, and of fairly low quality, on average, so far.

One of the main reasons I started my “OGF Mirror” project, last year, was because Thilo had decided he could no longer invest the time and energy required to support the topo layer for OpenGeofiction. I had a strong desire to see the topo layer continue to be supported and expand. Eventually that “OGF Mirror” became the migration project and I and user wangi and some other admin took over running OGF from Thilo, with his blessing. So it was my interest in topo that led to my taking on all this work for OGF, and therefore it remains of a focus of my efforts, moving forward.

Part II – The Current OGF Topo Zones

OpenGeofiction currently has 14 actively maintained topo zones. Here they are, in alphabetical order.

zone-alved

This zone has been created by mapper SwissCrusader. It’s a first draft, and clearly needs a lot of cleanup work, but it’s an excellent and ambitious start.

picture

zone-gobras

This zone actually is two smaller areas that have been combined because of their close proximity. The older is the topo work for Khaiwoon, on the eastern tip of the Gobrassanya peninsula. The territory is one of the oldest on OGF. It was developed by user isleño with a lot of additional mapping by user histor. The contours were drawn as a collaboration between thilo and isleño. The other is the background topo for Gobras City, to the northwest. Gobras City is one of the most successful wholly public and collaborative projects on OGF, created by a very large number of different mappers over almost a decade, now. User Ūdilugbulgidħū volunteered to draw contours for the city, and in my opinion, they are quite excellent. Obviously, since the contours were drawn after much of the city, and since there is work in the city drawn without a strong awareness of the contours, there are areas where the human development (roads, etc) doesn’t really properly “match” the contours as drawn.

picture

zone-gwynian

This zone is also actually two adjacent areas combined because of proximity. The older part, to the west, is my own work (user Luciano), drawn for my territory Ardisphere, in 2014-2016. I think it has well-done areas, but it’s quite noticeably incomplete, full of lacunae and missing expanses and weird glitches where the contour work is too sparse to properly cover the map. The newer part, currently in development by user Martinawa, is the largest single expanse of topo work on OGF, and still in early stages across most of the territory, but it’s got a lot of promise.

picture

zone-hesperis

This is a quite small but complete set of contours for an island territory drawn by mapper Ūdilugbulgidħū.

picture

zone-iscu

This zone includes several islands in a chain called Iscu, drawn by mapper Lithium-Ion. The contours are quite detailed and excellent.

picture

zone-izaland

This zone includes a few of the southern islands of a the nation called Izaland, by the user Izaland Terramorphing Committee. I’m looking forward to seeing more of Izaland getting contours.

picture

zone-january

I (user Luciano) drew these islands as part of a collaborative effort between myself and mapper deltanz. I later turned over the islands to deltanz. Personally I think they are my “most complete” set of contours among those I have done.

picture

zone-kofuku

This is a new effort by mapper Huachachi. Kofuku is an immense territory and so far these are just a few islands off that country’s north coast. They are excellently done, and I’m looking forward to seeing more of Kofuku with contours.

picture

zone-kojo

I (user Luciano) did a small spot of contours in collaboration with user Leowezy some years ago, in the southernmost spot of this zone, at the Joenji Peninsula. Leowezy has subsequently been gradually adding other areas of coverage for his territory, Kojo. Hopefully will come in the future.

picture

zone-makaska

This zone actually overlaps not just the territory of Makaska, but also the one to the south, called Ooayatais. I (user Luciano) own both of these territories. The northern territory, Makaska, has a very complete set of contours and is work I’m quite proud of. The southern territory, Ooayatais is much lower quality and, for now, also quite incomplete. It’s my “current project” with contour mapping, however, and hopefully sometime later this year I’ll upload a major update.

picture

zone-roantra

This is the oldest and, arguably, best of all the topo zones on OGF. User thilo, the original creator of OpenGeofiction, uploaded this topo zone when he first created the OGF server, for his territory Roantra. It is the archetype of OSM-style topo work.

picture

zone-ruanerara

This is a small project done by user Toadwart for his outlying (overseas) territory of his country, KA076 (apparently this mapper recently decided to change the name of the country, and the new name hasn’t been decided on). Anyway, the contours are clearly still in development but I’m looking forward to seeing more progress.

picture

zone-tapira

This zone, a small island, was created by mapper Ūdilugbulgidħū, but he subsequently gave up the territory. It’s someone’s chance to take on an already-existing topo project.

picture

zone-tarrases

This is another of my own (user Luciano) territories. The Duchy of Tárrases is the one case where I quite successfully imposed a set of contours on an already-created map. I’m quite happy with the result. The surrounding islands used to be owned by me, too, but for now they are in a bit of limbo. For that reason I haven’t bothered to repair the mess of half-finished contours on those surrounding islands.

picture

Part III – Create A New Topo Zone

There is quite a bit of work involved in creating a new topo zone for the ogf-topo rendering process. Multiple new working and data directories must be created, code must be added to xml layer specifications and data-processing scripts, and the proper raw contour templates need to be created and populated with initial draft contour data.

Therefore if you want to create a new topo zone for your OGF territory, you need to contact me and we can discuss, so I can get things set up and I can create the templates you’ll need to draw your contours (see next section). There is nothing wrong with diving in and drawing contours for yourself before contacting me, but bear in mind you’ll probably end up doing a lot of cutting and pasting and manipulation using the JOSM editor once I’ve created those templates for you, because I will no longer accept contour data drawn in files other than the pre-created templates.

If you’re trying to decide whether or not you want to create a topo zone, one good way to get a feel for what’s involved is to download one of the osm-squares from the server (see below) and just go ahead and open that up in JOSM and try to get a feel for how it works and what’s involved. Start with something small, complete and well-done, like the January Islands or Hesperis (see above).

Part IV – Edit or Improve An Existing Topo Zone

In the past, I’ve allowed users to simply submit new, hand-drawn “contour files” which I then clean up and process using the tools at hand. However, I have found that the first step – cleaning up the submitted files – can be quite tedious and time-consuming, and further, I often end up repeating work as newly submitted files have the same problems as previous iterations.

I would like to move toward a more reliable system of iterative improvement. To do this, if there is an already-existing topo zone and you want to add to it or improve it, you must download the existing osm-squares (contour files) from the ogfsrtm server, edit those, and send the edited copies of those files back to me. Do not try to bypass this process – I have special tags embedded in those contour files as found on the server, and I’ll know if you haven’t used those as a basis for your edits.

You can find downloadable individual squares for most topo zones at this location on the ogfsrtm server: https://ogfsrtm.rent-a-planet.com/osm-squares/

If a given square is missing from the server, contact me and I’ll create an initial template for that square and post it there, that you can then edit. Don’t try to create squares not found on the server.

Part V – An Alternative Pathway To Maintaining Your Own Topo Zone

If all this business of drawing vast numbers of contour lines in JOSM is not your style, there is, in fact, an alternative. You can directly submit NASA-SRTM format compliant .hgt files. This bypasses the whole contour conversion process, and would be quite a bit easier for me to do.

That said, so far, no one has done this successfully. There have been challenges to finding a program that produces .hgt files in the exact NASA-SRTM format expected by the OpenTopoMap rendering software. If, as a community, we find such a tool in the future, that may make a lot of what’s written above obsolete and we’ll have a better way to do things, moving forward.

Regardless, if you want to try doing it this way, you still need to contact me in advance, so I can set up the new zone on the render server – that aspect won’t change. Then you’d send me the pseudo-SRTM files (.hgt) so I can post them on the ogfsrtm server in the proper directory, since that’s where the render server expects to find them.

Music to draw contours to: Haddaway, “What is love?”