Compressing the data into single bits per bit should indeed make it possible to reduce the memory needed a fair bit, at the cost of speed (which is important).
However, I'm unable to see how you can compress what you mentioned into 200 MB, as my quick calculation results in:
(264 non procedurally generated inorganics + 6 booleans) / 8 = 33 bytes *
257 *257 * 256 mid level tiles (= 16908544) => 557981952 bytes, i.e. about 560 MB.
Nevertheless, this might be a useful approach, although the speed impact will have to be investigated, and I'd definitely check the overhead of this RoaringBitmap thingie compared to doing it "manually". Note, though, that there are currently 3 vectors over the inorganics: one for all of them, one for metals, and one for economics. While the data itself can be stored in a single vector, it comes at the expense of then having to probe the appropriate indices for metals and economics, which may or may not turn out to be an issue.
Incursion processing is indeed complicated, made more so by the way Toady ended up representing the information so that it almost, but not quite, provided all the information needed to evaluate a world tile in isolation along the eastern/southern edges. As you can see, the incursion processing ended up with partial storage of the base information (notably excluding the inorganics) along the world tile edges, and I've considered whether it would be reasonable to expand that partial information storage to cover all mid level tiles, but haven't investigated that.