Skip to main content

Hello,

I am transforming Ordnance Survey MasterMap data into an ESRI Geodatabase. Where I require assistance is with the cartographic text (labelling) layer. This layer provides labeling information including font, colour, rotation and placement. I can't use these attributes directly in ArcMap or ArcGIS Pro which leads to labels overlapping and looking generally messy. I have found that writing these attributes to the relevant format attributes in the geodatbase writer work well but it is increadibly slow and discoraged by Safe. I am seeking advice or an alternative.

Many Thanks

David

Hi @djmcdermott have you tried looking the Maptextlabeller-transformer? I believe this a chargeable transformer, however this would be better value than the productivity suite managed by another well know vendor.

Just out of curiosity are you managing the text for both map production and updating the Mastermap for the wider organisation?


Hi @djmcdermott have you tried looking the Maptextlabeller-transformer? I believe this a chargeable transformer, however this would be better value than the productivity suite managed by another well know vendor.

Just out of curiosity are you managing the text for both map production and updating the Mastermap for the wider organisation?

Hi @fme_forever. I have tried to avoid the maptextlabeller due to the additional cost. Howeverm after your post I requested the 30-day trial and gave it a go. Alas to does not solve my issue. Setting the font, height, colour etc. can be done with other transformers. That's not the issue. Where I am struggling is setting the position of the label around the point. The label record contains optimum poition. A number between 0 and 8 that specifies which part of the text is bound to the point i.e 0 = SW, 1 = W etc. I currently pass these to the geodb_v_align and h_align format attributes. This is not possible in the maptextlabeller, you have to pick a preference order link in ArcMap.


Are you writing to a SDE geodatabase? If so you might want to try writing it to a GDB and uploading to the SDE via ESRI tooling.


The best way I've found is to use a combination of the placement location, and the size of the text to create a line feature and label that. Its not perfect but it does give a better placement than just the point in ArcMap etc. If you get the string length, and pick a size based on your typical map view scale you can work out the bounds of the text and then calculate the x & y of the optimum location. From there you can add an end point to that to get the line (accounting for orientation).

 

Its not perfect but gives a reasonably decent result in ESRI, and is fairly performant.

The best way I've found is to use a combination of the placement location, and the size of the text to create a line feature and label that. Its not perfect but it does give a better placement than just the point in ArcMap etc. If you get the string length, and pick a size based on your typical map view scale you can work out the bounds of the text and then calculate the x & y of the optimum location. From there you can add an end point to that to get the line (accounting for orientation).

 

Its not perfect but gives a reasonably decent result in ESRI, and is fairly performant.

Ok, Let me work this out. Correct me if I’m wrong. The point size is included as an attribute so I can calculate the text height at 1:2500 meters. Then create a polygon from the text, anchor the polygon to the current position on the point, rotate then covert to a line. Sounds simple...


Ok, Let me work this out. Correct me if I’m wrong. The point size is included as an attribute so I can calculate the text height at 1:2500 meters. Then create a polygon from the text, anchor the polygon to the current position on the point, rotate then covert to a line. Sounds simple...

Yep thats the idea. Though you might want to consider the length of the lable as well to help define the box.


Reply