Hi folks, I have a challenge, presented to me by some users of one of our surveys. We have a cave with layers horribly stacked above each other (10 passages all crossing the same point!). Simple solution; use map offsets to put them all side by side. Use map connection arrows to show what connects to what. That's all good, but they find the default connection arrow hard to see. I can redefine l_mapconnection to create my own arrows. Great! But here's the challenge; they want us to show the difference between an unimportant connection, and a major "follow this route" connection. Eg. minor ones in grey, major route in red. I have tried everything I can think of with the mapconnection point: id, scale, rotation, -attr etc., but Therion is not creating a p_mapconnection. it creates a l_mapconnection, and passes it a path to create the line. The attributes are all completely ignored. Normally, I would use "-attr type major", but that cannot work here, because Therion just ignores it. In my opinion, this is a limitation that should be fixed. The only solution I can think of, is to put *two* mapconnection points. The l_mapconnection code can then see if the current path matches the previous path, and if so, draw it in red. But this is such a horrible hack, and prone to failure in future if someone does not realise why there are two points, and why they have to follow on from each other. Can anyone think of a better workaround? Cheers, Tarquin
Hi Tarquin, Can’t you just define some map in grey and some in colors depending on the scrap and the connection ? Cheers, Phil
On 7 Jul 2022, at 19:03, Tarquin Wilton-Jones via Therion <therion@speleo.sk> wrote:
Hi folks,
I have a challenge, presented to me by some users of one of our surveys.
We have a cave with layers horribly stacked above each other (10 passages all crossing the same point!). Simple solution; use map offsets to put them all side by side. Use map connection arrows to show what connects to what.
That's all good, but they find the default connection arrow hard to see. I can redefine l_mapconnection to create my own arrows. Great!
But here's the challenge; they want us to show the difference between an unimportant connection, and a major "follow this route" connection. Eg. minor ones in grey, major route in red.
I have tried everything I can think of with the mapconnection point: id, scale, rotation, -attr etc., but Therion is not creating a p_mapconnection. it creates a l_mapconnection, and passes it a path to create the line. The attributes are all completely ignored.
Normally, I would use "-attr type major", but that cannot work here, because Therion just ignores it. In my opinion, this is a limitation that should be fixed.
The only solution I can think of, is to put *two* mapconnection points. The l_mapconnection code can then see if the current path matches the previous path, and if so, draw it in red. But this is such a horrible hack, and prone to failure in future if someone does not realise why there are two points, and why they have to follow on from each other.
Can anyone think of a better workaround?
Cheers,
Tarquin _______________________________________________ Therion mailing list Therion@speleo.sk https://mailman.speleo.sk/listinfo/therion
Hi Philippe and Bruce,
Can’t you just define some map in grey and some in colors depending on the scrap and the connection ?
A nice thought, but sadly not. A single scrap might have 2 or 3 different connection arrows going from it, and there is no way to distinguish between those from the MetaPost, except the order in which they appear in the source. Any approach to fixing that becomes a horrendous hack that quickly becomes unmaintainable for anyone else who tries to work on the project. Bruce, your thought process seems to have gone a long way along the same lines as mine. In our cave, there are a crazy number of overlaps - 10 overlapping passages at one point - and a lot of shifted sections (it's an exploded plan, because the plan is unusable otherwise), so without actual arrows showing the parts a caver can travel through (the same approach we used), it is a minefield of wondering which bit got shifted to where. So yes, those arrows are needed in most cases (replacing the odd couple with letters would not really clear up much confusion). Clearly you ran into the same limitation, where the solution became to create a custom point because Therion fails to pass variables into the MetaPost. I could in fact create a custom point p_u_arrowvariables read the -attr values, save them globally, and pick them up in the MetaPost for the arrows. This is also a cludge, but a more flexible cludge than my current one since I can have different themes. But it means having another point showing up in the legend. Can p_u_foo be hidden from the legend? Cheers, Tarquin
Can p_u_foo be hidden from the legend?
Some examples. Statements need to be in thconfig outside of layouts. #symbols removed from legends text en "point u:foo" "" text en "point station:temporary" "" text en "line wall:bedrock" "" text fr "line wall:bedrock" "" text mi "line wall:bedrock" "" text en "line border:visible" "" text en "line border:temporary" "" text en "line border:presumed" "" text en "line rock-edge" "" text en "area bedrock" "" text en "point stalactites" "" text en "point stalagmites" "" Bruce
Tarquin I don't have a solution to your particular question, but for what it is worth here is my map-connection journey so far. The default point map-connection lines are all but invisible in large maps, and there is no orientation that shows clearly what is the offset and what is the main map. So I modified the l-arrow and l-map-connection metapost. These are clearly visible and have a clear orientation - dot in the main map and arrowhead at the offset position. My convention is to place a map-connection point at every location where a caver could travel from the main map to the offset map. This makes an easy-to-follow map where there are just a few, but not so much when there are many. Then I discovered the ICCaving Migovec project that uses a user-defined point u:connection. These are just coloured dots that must be manually placed in each offset map. There are no lines joining the dots. This approach avoids the noise associated with lots of connecting lines and has the advantages of working across various projections and being able to adjust the colour and size on a point-by-point basis. It is not so obvious which is the primary map and which is offset though. My work-in-progress example does not show it at its best. I haven't settled on a favourite approach yet, it probably depends on the particular cave. Both approaches need further development. I like your suggestion that Therion be able to pass an object id and user defined attribute as it will add to the options available. Bruce -----Original Message----- From: Therion <therion-bounces@speleo.sk> On Behalf Of Tarquin Wilton-Jones via Therion Sent: Friday, 8 July 2022 05:04 To: Therion <therion@speleo.sk> Cc: Tarquin Wilton-Jones <tarquin.wilton-jones@ntlworld.com> Subject: [Therion] Custom map connections Hi folks, I have a challenge, presented to me by some users of one of our surveys. We have a cave with layers horribly stacked above each other (10 passages all crossing the same point!). Simple solution; use map offsets to put them all side by side. Use map connection arrows to show what connects to what. That's all good, but they find the default connection arrow hard to see. I can redefine l_mapconnection to create my own arrows. Great! But here's the challenge; they want us to show the difference between an unimportant connection, and a major "follow this route" connection. Eg. minor ones in grey, major route in red. I have tried everything I can think of with the mapconnection point: id, scale, rotation, -attr etc., but Therion is not creating a p_mapconnection. it creates a l_mapconnection, and passes it a path to create the line. The attributes are all completely ignored. Normally, I would use "-attr type major", but that cannot work here, because Therion just ignores it. In my opinion, this is a limitation that should be fixed. The only solution I can think of, is to put *two* mapconnection points. The l_mapconnection code can then see if the current path matches the previous path, and if so, draw it in red. But this is such a horrible hack, and prone to failure in future if someone does not realise why there are two points, and why they have to follow on from each other. Can anyone think of a better workaround? Cheers, Tarquin _______________________________________________ Therion mailing list <mailto:Therion@speleo.sk> Therion@speleo.sk <https://mailman.speleo.sk/listinfo/therion> https://mailman.speleo.sk/listinfo/therion
participants (3)
-
Bruce Mutton -
Philippe Vernant -
Tarquin Wilton-Jones