OpenOrienteering / mapper

OpenOrienteering Mapper is a software for creating maps for the orienteering sport.
https://www.openorienteering.org/apps/mapper/
GNU General Public License v3.0
396 stars 106 forks source link

Separating map object type and image (content and style) #793

Open otoomet opened 7 years ago

otoomet commented 7 years ago

As #789 discusses two issues, I move the part related to "symbol number 501.0 must be renamed to 501 according ISMTBOM specification" here. I think this is a more general question. And sorry, these are just loose thoughts I have been thinking for a while.

Currently, Mapper (and OCAD as well) does not really distinguish between the object and it's layout. We have, for instance 419.0 and 420.0, both labeled as "distinct vegetation object". But there is little way to record what is behind the symbol. For instance, when mapping I would like to separate distinct trees, stumps, rootstocks, snags, and possibly more vegetation objects. Later, when printing the map, I would like to be able to choose whether to print rootstocks in green or brown, trees as dots or circles, perhaps leave stumps out altogether, etc

Analogous to HTML+CSS (and latex + style files), one could distinguish content and layout. For instance, define object "rootstock" and select it's default layout being brown cross (118.0). If I choose, I can later change that without changing the content of the map, only it's layout. This amount to choosing between different symbol sets (style sheets) with the possibility to manipulate individual links between the object and symbol. It would also make it easier to link orienteering maps and geographic databases such as OSM.

It is currently somewhat possible by defining new symbols with layout identical to one of the existing one. But a clean distinction throughout the program, and a supportive UI would make it easier and more clear.

Thoughts?

dg0yt commented 7 years ago

What we do have is "object tags" where you can record any key value pairs, like in OSM. Try View > Tag editor.

What we leck is tools which use this information to assign symbols. This would not only help with OSM import. It could also facilitate converting maps between ISOM and ISMTBOM based on a "ridability" tag for example.

Also a search tool would help to leverage object tags (#358).

Zerbembasqwibo commented 7 years ago

OK, now, maybe on wrong place, but I have thought of a similarir thought. But that is about position. One position is the geographical (which you get from GPS or Laserfiles, it is "exact". But you often want to use the cartographical position on the map, which might differ slightly.

In CAD-world there are such tools where to separate these two object from each other.

In som future it might be some idea, to not as now, always be unsure in "old" maps which of those two positions the object have.

dg0yt commented 7 years ago

The separation of exact position and drawn symbol is an issue which I thought about, too. It relates to readability, especially for orienteering maps. But I have no solution here. When we start to use such concepts, we will have more difficulties to exchange data with other software. But you might want to do course setting with a different application, for example.

otoomet commented 7 years ago

There may be some related GIS/UI research. I can imagine it is not just problem for orienteering maps but for different other usage cases as well. I was thinking about symbols that do not have any well-defined geographic location (slope line, or dots for rocky ground.) These positions or densities may need some adjustment when using different "styles", for instance when re-scaling map.

It is probably true that one cannot go all the way of separating logic and layout. I think more that one should keep these ideas in mind when doing design decisions. In the long run we can perhaps get somewhere.

Andreasox commented 7 years ago

In spatial databases like PostGIS you can have any number of attributes, incl. different geometry columns. This is according to the OGC SQL standard. So you may have one geometry column for "exact" position, another column for scale 1:5000 etc. With database views you may do this transparent for the user, i.e. only expose geometries relevant for the active scale. I have not tested myself but I think that SQLite/Spatialite supports several geometry columns as well, see https://www.gaia-gis.it/gaia-sins/spatialite-cookbook/html/new-geom.html.

dg0yt commented 7 years ago

A search tool for object tags (#358) is part of Mapper since 0.6.7. You may now select objects based on tags, and assign a different symbol.