[mapserver-users] Label attribute bindings

Stephen Woodbridge woodbri at swoodbridge.com
Thu Jun 5 16:52:17 EDT 2008


Tim,

Well in that case you should be able to set CLASSITEM to your position 
attribute. And then set up a CLASS for each position. This is UGLY in 
the mapfile, but you should be able to do it now without code changes.

-Steve

Tim Urwin wrote:
> Hi Steve,
> 
> Unfortunatly not, it is a single digit 1-9 in an attribute field which 
> we mapped to the two letter characters used by mapserver for text 
> position, eg ll cc etc. We would just like to be able to look this up 
> for each feature rather than apply a blanket approach for the layer. We 
> would prefer not to edit the data as it changes get updated on a regular 
> basis (we get updates every 6 to 8 weeks from ordnance suervey) and the 
> database table has just under 22 and a half million entries.
> 
> Thanks
> 
> Tim
> 
> Stephen Woodbridge wrote:
>> Tim,
>>
>> When you say "OS has determined the best position for the label", what 
>> form is this attribute in? Is the x-y position attribute columns? or 
>> some offset x-y attribute? or what?
>>
>> If it is an x-y position that you would rather use that the default 
>> the_geom geometry position of the feature then it would probably be 
>> possible to create a view that makes that x-y appear as 
>> setsrid(makepoint(x_col,y_col),27700) as the_geom in the view and then 
>> add a record to the geometry_columns table for this view. for 
>> performance you might want to add this column to the orginal table and 
>> index it.
>>
>> Then you should be able to renter the annotation using the view or the 
>> alternate column in the table.
>>
>> -Steve W
>>
>> Tim Urwin wrote:
>>> Hi all,
>>>
>>> This is a questuion about label attribute bindings.
>>>
>>> We are about to migrate some of our Ordnance Survey MasterMap data 
>>> from a propriety system to using mapserver serving the data from a 
>>> PostGIS database for screen maps. We are currently using Mapserver 
>>> 5.02 and are very happy with the results we have achieved so far, 
>>> however, due to only being able to set a single value for the 
>>> position of a label has caused much of the text to be badly 
>>> misaligned with the underlying features.
>>>
>>> OS has determined the best position for the label and provide this as 
>>> attribute data for each text label point and we would like to be able 
>>> to utilise it. Is there anyway to make the position label attribute 
>>> accept a binding as some of the other values do, e.g. angle which we 
>>> also use. The problem we have is that no single value works with the 
>>> data to provide a good map result, therefore we would like to be able 
>>> to use each feature's value as opposed to a global value.
>>>
>>> Any help or insights in how to achieve this will be gratefully 
>>> received. At the moment our applications access Mapserver via CGI 
>>> mode directly without the use of mapscript although we could 
>>> investigate that option.
>>>
>>> The following is an example of one of the entries in the mapfile for 
>>> a label layer.
>>>
>>> LAYER
>>>
>>>   NAME "Heritage labels"
>>>
>>>   METADATA
>>>      "wms_title" "Heritage labels"
>>>      "wms_srs"   "EPSG:27700"
>>>      "wms_extent"   "0.0 0.0 700000.0 1300000.0"
>>>   END
>>>
>>>   STATUS OFF
>>>
>>>   CONNECTIONTYPE postgis
>>>   CONNECTION "user=XXXX password=XXXX dbname=XXXX host=XXXX port=XXXX"
>>>   DATA '"anchorpoint" from "cartographictext" using unique "fid" 
>>> using SRID=27700'
>>>
>>>   PROCESSING    "CLOSE_CONNECTION=DEFER"
>>>
>>>   TYPE Annotation
>>>
>>>   LABELITEM 'textstring'
>>>
>>>   FILTER ("layer" = '59')
>>>
>>>   CLASS
>>>      NAME 'Antiquity Text (82)'
>>>         LABEL
>>>           COLOR     0 0 0
>>>           OUTLINECOLOR 255 255 255
>>>           TYPE      TRUETYPE
>>>           FONT      arial-italic
>>>           SIZE      8
>>>           ANGLE  [angle]
>>>           ANTIALIAS TRUE
>>>           POSITION  CC
>>>           PARTIALS  TRUE
>>>           ENCODING 'UTF-8'
>>>         END
>>>   END
>>>
>>>   MINSCALEDENOM 100.0
>>>   MAXSCALEDENOM 5500.0
>>>
>>>   PROJECTION
>>>   "init=epsg:27700"
>>>   END
>>> END
>>>
>>>
>>> many thanks
>>>
>>> Tim
>>>
>>
>>
>>
> 
> 



More information about the mapserver-users mailing list