2010-03-24 2 views
3

J'essaie de montrer une carte en utilisant postGIS + Mapserver. Et j'ai affiché une image PNG dans mon WEB. Cependant, je veux montrer quelques charactors dans la carte, comme ceci: 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=mapComment afficher des caractères dans une carte par mapfile?

c'est l'exemple de Mapserver

Maintenant, je suis base de données en utilisant (postgresql), mais pas un fichier de forme . Comment puis-je ajouter les charactères alors?

Voici une partie de mon mapfile:

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 

Certains ont dit l'ajout d'un "TEXT ([*])" dans "LABEL", mais je ne sais pas howto?

Merci pour votre aide!

Répondre

1

Vous devez utiliser la directive LABELITEM avec le nom du champ de la table contenant le texte que vous souhaitez rendre:

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

Vérifiez la documentation du fichier carte pour plus de détails

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

0

La réponse de l'amercader ci-dessus est tout à fait correcte. Cependant, je l'ai résolu de l'aide de amercader, mais un peu de différences, juste en utilisant la sous-requête.


Voici un code de section:

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 

Le point clé est attribut "de données", l'ajout d'une sous-requête; ainsi que le paramètre "labelitem" doit être identique à la sélection dans la sous-requête. Amercader m'a dit que la sous-requête est inutile (voir les commentaires)

C'est cool!

J'espère que ces mots peuvent donner un coup de main à d'autres programmeurs utilisant le mapserver. Et merci amercader.

+0

Vous devriez probablement marquer la réponse d'amercader comme correcte et leur donner un upvote .. – geographika

+1

Je ne pense pas que vous ayez besoin de faire une sous-requête dans le paramètre connection si la colonne 'name' est dans la table' province'. Laissez-le juste comme "the_geom from province using gid unique en utilisant srid = 4326" 'et voyez si les labels apparaissent (ils devraient). Les sous-requêtes sont chères et n'ont de sens que dans certains cas, comme lorsque vous devez effectuer une jointure avec une table qui contient des attributs supplémentaires. Peut-être que je n'ai pas compris à partir de vos exemples, mais cela ne semble pas être votre cas. Voici quelques exemples: http://postgis.refractions.net/docs/ch05.html#id2801160 – amercader

+0

Vous avez raison, amercader, merci beaucoup! J'ai lu la documentation sur le postGIS (http://mapserver.org/input/vector/postgis.html), et supposé ainsi. J'ai tort. – sirius

Questions connexes