Skip to main content

Hi,

I'm evaluating MapTextLabeller in FME 2016 Desktop and have encountered an issue. The context is municipal land parcel mapping.

So far, I have labeled parcels of land using MapTextLabeller (currently in FME Generic target format). Now I want to label blocks, which are groups of parcels of land. I need the labels generated for the parcels of land to be competitors to the labels generated for the blocks. In other words, the parcel labels should be generated first, and then the block labels should be placed around them.

I am currently taking the labels generated for the parcels and feeding them into a second MapTextLabeller transformer for the blocks and setting the parcel labels as obstacles. However, the block labels still often overlap the parcel labels.

Any help would be much appreciated.

Thanks,

Tom

From a cartographic point of view, I would consider the blocks to be more important than the parcels, so those to be labelled first (but it depends on the purpose of your map of course).

If you label both in a single MapTextLabeller but with different priorities you should be able to get them all labelled without overlapping.


@tom_adair

 

 

Hi Tom,

 

 

as Hans correctly said, placing all the labels with a single MapTextLabeller is a better way of creating the labels.

Keep in mind that MapTextLabeller does whatever it can to place the labels according to your rules, but it cannot guarantee that ALL the labels will be placed - there might be no room for them if all the rules are applied and all the are met. If you don't get all the labels (MapText gives you placement statistics in the log) try softening your rules - set more different sizes for the labels, allow boundary crossings etc.

There might be some situations, when it is necessary to place two MapTextLabellers. For example, with the first transformer, you may want to place names, and, if some of the names don't fit, the second transformer would place numbers instead, which occupy less space. Whatever was generated with the first transformer then will becomes obstacles. Supply them to the second transformer as bounding boxes. In my opinion, however, the situation where two transformers are needed, should be rare.

Here is my article about MapTextLabeller:

https://knowledge.safe.com/articles/1040/introduct...

 

If you need more help with this, feel free to contact me directly at dmitri.bagh@safe.com

Dmitri


@tom_adair

 

 

Hi Tom,

 

 

as Hans correctly said, placing all the labels with a single MapTextLabeller is a better way of creating the labels.

Keep in mind that MapTextLabeller does whatever it can to place the labels according to your rules, but it cannot guarantee that ALL the labels will be placed - there might be no room for them if all the rules are applied and all the are met. If you don't get all the labels (MapText gives you placement statistics in the log) try softening your rules - set more different sizes for the labels, allow boundary crossings etc.

There might be some situations, when it is necessary to place two MapTextLabellers. For example, with the first transformer, you may want to place names, and, if some of the names don't fit, the second transformer would place numbers instead, which occupy less space. Whatever was generated with the first transformer then will becomes obstacles. Supply them to the second transformer as bounding boxes. In my opinion, however, the situation where two transformers are needed, should be rare.

Here is my article about MapTextLabeller:

https://knowledge.safe.com/articles/1040/introduct...

 

If you need more help with this, feel free to contact me directly at dmitri.bagh@safe.com

Dmitri

Thank you Dmitri. Unfortunately, one MapTextLabeller will not meet our needs. But I'll try working with bounding boxes as you suggested. To the developers at Safe: It would be nice if the placed text from a MapTextLabller could be used as an obstacle in a subsequent MapTextLabeller transformer. Bounding boxes are ok but they are not great if the labels are at an angle. Scripting a solution is also not easy since the text can be stacked, and whether/how it is stacked seems to be hidden. Implementing this enhancement would make MapTextLabeller extremely powerful.


Thank you Dmitri. Unfortunately, one MapTextLabeller will not meet our needs. But I'll try working with bounding boxes as you suggested. To the developers at Safe: It would be nice if the placed text from a MapTextLabller could be used as an obstacle in a subsequent MapTextLabeller transformer. Bounding boxes are ok but they are not great if the labels are at an angle. Scripting a solution is also not easy since the text can be stacked, and whether/how it is stacked seems to be hidden. Implementing this enhancement would make MapTextLabeller extremely powerful.

Hi @tom_adair -- normally the label collisions are best handled within one labeller -- then the rules can be set up to assign priorities etc. It has the effect of precisely taking into account the issues you raise.

What is the reason that one MapTextLabeller can't do what you need? Maybe we could take this in detail with you --- please do follow up with Dmitri at the address above.


Reply