3

我正在尝试使用 postGIS+Mapserver 显示地图。我已经在我的 WEB 中展示了一张 PNG 图片。但是,我想在地图中显示一些字符,就像这样: mapserv demo http://demo.mapserver.org/cgi-bin/mapserv.exe?map=/ms4w/apps/tutorial/htdocs/example1-4 .map&layer=states_poly&layer=states_line&mode=map

这是来自Mapserver的示例

现在我正在使用数据库(postgreSQL),但不是形状文件。那我该如何添加字符呢?

这是我的地图文件的一部分:

LAYER
  CONNECTIONTYPE postgis
  NAME "state"
  //Connect to a remote spatial database
  CONNECTION "user=postgres dbname=*** host=*** password=***"
  PROCESSING "CLOSE_CONNECTION=DEFER"
  DATA "the_geom from province"
  STATUS ON
  TYPE POLYGON
  CLASS
    STYLE
      COLOR 122 122 122
      OUTLINECOLOR 0 0 0
    END
    LABEL
      COLOR 132 31 31
      SHADOWCOLOR 218 218 218
      SHADOWSIZE 2 2
      TYPE TURETYPE
      FONT arial-bold
      SIZE 12
      ANTIALIAS TRUE
      POSITION CL
      PARTIALS FALSE
      MINDISTANCE 300
      BUFFER 4
    END
  END
END

有人说在“LABEL”中添加“TEXT ([*])”,但我不知道怎么做?

谢谢你的帮助!

4

2 回答 2

1

您应该将该LABELITEM指令与包含要呈现的文本的表字段的名称一起使用:

...
DATA "the_geom from province"
LABELITEM "<field_name>"
STATUS ON
...

查看地图文件文档以获取更多详细信息

http://mapserver.org/mapfile/layer.html

于 2010-03-25T09:47:42.920 回答
0

上面的amercader的回答是非常正确的。但是,我从amercader的帮助中解决了这个问题,但有点不同,只是使用子查询。


这是一个部分代码:

LAYER
  CONNECTIONTYPE postgis
  NAME "state"
  //# Connect to a remote spatial database
  CONNECTION "user=postgres dbname=*** host=*** password=***"
  PROCESSING "CLOSE_CONNECTION=DEFER"
  DATA "the_geom from (select gid, the_geom, name from province) as subquery using unique gid using srid=4326"
  STATUS ON
  TYPE POLYGON
  LABELITEM "name"
  CLASS
    STYLE
      ...
    END
    LABEL
      ...
    END
  END
END

重点是“ data ”属性,添加子查询;以及“ labelitem ”的参数必须与子查询中的选择相同。

amercader 告诉我子查询是不必要的(见评论)。这个很酷!

希望这些话能对其他使用mapserver的程序员有所帮助。并感谢 amercader。

于 2010-03-30T11:50:32.177 回答