I am not sure if is possible to do this (due to the way machine learning works): Cartographic map labeling is a problem that can pretty much only be solved via neural networks / machine-learning, since it is NP-hard. Current algorithms are only a manual approximation of what could be done using machine learning. My idea was to train a model using data from existing (manually produced) cartographic maps. An interesting paper on this topic is here.
However, the problem is this: Maps that go into print production usually receive some form of manual cartography. A neural network will never be as good as a human. So what I am doing is (for each label) saving the manual edits into a separate file. This means that I am not saving the whole map, but only the manual edits made by the cartographer. The goal is for the map to be “reproducible”, i.e. I need to be able to open the map with the same configuration after a few years, apply the manual corrections again and receive the same map (in terms of label placement). This makes it possible to easily update the map (for addition / removal of labels) without manually editing all labels all over again.
Now, how do you determine the initial positions for the labels? The initial algorithm I wrote just places the labels (let’s say: labels for a road) on the first two points of the line. Then the cartographer manually moves the label to the correct position and rotation.
To keep this work to a minimum, I thought of using a neural network and train it on existing maps (using classifications such as text size, importance, etc.). But in order for maps to be reproducible in this way, the initial positioning algorithm has to be stable – if you give it the same map data, it has to give the same output. So my question is if it is possible to construct a neural network that can be “paused” or “versioned”, i.e. I can tell the cartographer, “these manual edits were done with generation 2.000.000” – if he loads the trained model, would it yield the same results, i.e. would the labeling be stable? Or is it truly a “black box” where you never know exactly what you’re going to get?
This is not regarding any software or frameworks, just a hypothetical question if it would be possible, from the way that neural networks work.