Prior to ArcGIS 10, we had a nice little free application called the Cartographic Text Renderer which essentially labelled the Ordnance Survey MasterMap Annotation layer. Whilst this is a great little tool for pre- ArcGIS 10 installations this doesn't work correctly at 10. Also the new basemap layer renderer are incompatible with the labelling methods used in the tool.
(Basemap layers were new at ArcGIS 10 which are a group of layers that draw continuously during navigation and significantly improve the display speed and responsiveness of the map. If you’re not using them already then they are definitely worth investigating. Further information about them can be found in the following blog post. )
So, if you want to be able to use OS MasterMap annotation in a basemap layer, then you could use the following method in ArcMap:
- Enable labels on the OSMMANNO layer
- Goto “Placement Properties” under “Other Options”
- If using the Standard Label Engine ensure that “On the line” is checked. If using Maplex then you will probably want to use Street Placement and make further modifications/tweaks to your labels as you see fit.
- Add the following as a label expression: "<FNT name='Arial' size='" & [TEXTHEIGHT]*5& "'>" & [TEXT] & "</FNT>" (including the quotes)
- Of course at this point you can change the way the label looks!… for example, I also quite like "<FNT name='Gill San MT' size= '" & [TEXTHEIGHT]*4& "'>" & [TEXT] & "</FNT>"
- Optional: Click on the “Symbol” button in the “Text Symbol” area
- Optional: Click on “Edit Symbol”, and click on the “Mask” tab
- Optional: Add a Halo of 0.5 to the layer
- Click OK/Apply to all windows
At this point you could use the newly labeled layer in the Basemap Layer. To do this you just need to drag the layer into the basemap layer. However I’ve found that converting it into Annotation performs better. So to do this you need to complete the following:
- Zoom to 1:800
- Right click on OSMMANNO and click “Convert Labels to Annotation”
- Choose the “In a Database” option for “Store Annotation”
- Choose the “All Features” option for “Create Annotation For”
- Un-tick the “Feature Linked” box
- Click on the file symbol to set the output file location and name
- Click “Convert” (performance will depend on amount of data)
The annotation layer created using this process won’t look exactly the same as the results achieved using the Esri UK tool but it will be near enough and also perform well in the Basemap layer. And here is the result:
If you’re still using ArcGIS 9.3.1 the Cartographic Text Renderer is a great way to label the OS MasterMap Topo Layer. The Cartographic Text renderer can be downloaded from MyESRI UK.
One of our readers has pointed out that the original post missed a special case to the workflow. If the label field values include the ampersand character (&) then the label expression will need include a function with text substitution, to change "&" to the tag "&". To do this check the advanced box in the label expression dialog and paste in the function below:
Function FindLabel ( [TEXTHEIGHT], [TEXT] )
if instr( [Text] , "&") > 0 then
[Text] = replace([Text], "&", "&")
FindLabel = "<FNT name='Gill San MT' size= '" & [TEXTHEIGHT]*4& "'>" & [Text] & "</FNT>"
Verify the expression, remember the field names [TEXTHEIGHT] and [TEXT] need to match the field names in your feature class. The labels that include the & characters should now draw correctly. A similar approach would work with other special characters.