Est-il possible de remplir des polygones pour qu'ils soient complètement transparents dans MapServer? Je veux avoir un fond noir légèrement opaque, et partout où il y a un polygone, je veux qu'il soit complètement clair sans remplissage. J'ai défini mon parcours de la manière suivante:
IMAGECOLOR 0 0 0
TRANSPARENT OFF
J'ai essayé de créer une classe qui est blanche pour remplir le polygone et j'ai expérimenté l'opacité en utilisant TRANSPARENCY
des valeurs de 0 à 100 mais cela ne donne pas un polygone clair:
CLASS
NAME "light"
EXPRESSION ([max_cost] == 2000)
STYLE
OUTLINECOLOR 255 255 255
COLOR 255 255 255
SIZE 1
WIDTH 2.0
END
END
Il en résulte le type d'image suivant:
Au lieu du polygone ayant un remplissage blanc; Je veux qu'il ait un remplissage sans couleur. J'ai trouvé une suggestion en ligne pour définir la couleur comme ceci:
COLOR -1 -1 -1
mais cela n'a pas fonctionné non plus. Dans cette partie de la documentation, les éléments suivants sont décrits:
«PALETTE = / path / to / palette.txt» est utilisé pour définir le chemin absolu où les couleurs de la palette peuvent être trouvées. Ce fichier doit contenir 256 entrées de triplets r, g, b pour les modes d'imagerie RVB ou r, g, b, un quadruplet pour les modes d'imagerie RGBA. Le format attendu est un triplet (ou quadruplet) par ligne, chaque valeur séparée par des virgules, et chaque triplet / quadruplet sur une seule ligne. Si vous souhaitez utiliser la transparence avec une palette, il est important d'avoir ces deux couleurs dans le fichier de palette: 0,0,0,0 et 255,255,255,255.
Après avoir lu ceci, j'ai également essayé d'utiliser COLOR 0 0 0 0
mais cela génère une erreur:
Identifiant inconnu. Erreur d'analyse près de (0) :( ligne 71)
Je ne comprends pas comment je fais référence à une couleur définie, PALETTE=/path/to/palette.txt
mais cela semble être un moyen possible d'y parvenir.
Réponses:
Mapserver a récemment introduit le concept de calques de masque (un masque se comporte comme un masque dans Photoshop en se mélangeant avec le calque auquel il est appliqué).
Le RFC décrit ce qu'ils font et comment ils peuvent être utilisés. En lisant votre réponse, il semble que vous pourriez utiliser un calque de masque pour obtenir l'effet de «trou de serrure» que vous recherchez.
Je ne sais pas si cette fonctionnalité est entrée dans la version 6.2 qui a été publiée il y a quelques semaines.
la source
Donc, vous voulez "pénétrer" le fond noir par vos polygones transparents pour voir le fond inférieur. Je ne suis pas sûr que ce soit possible avec MapServer, mais je peux suggérer une autre astuce.
Vous pouvez créer un très grand polygone couvrant toute votre zone et encore plus étendu, en utilisant n'importe quel logiciel SIG. Ensuite, vous pouvez effacer vos polygones de ce polygone de zone, puis ce polygone troué que vous pouvez placer sur MapServer et le rendre noir, au lieu du fond noir. Les trous correspondant à vos polygones vont être "transparents".
la source
J'avais ces lignes dans mon fichier .map et la transparence inférieure à 100 fonctionnait.
J'espère que ça aide.
la source
TRANSPARENCY
0 à 100 et cela semblait juste ajuster l'opacité. Je me rends compte que ce n'était pas clair dans ma question au départ - je l'ai révisé.Ci-dessous, un exemple d'image montrant un calque de masque transparent. Si vous agrandissez le masque, votre utilisateur ne remarquera pas les bords extérieurs. Semblable à ce que @nadya a suggéré, vous pouvez:
À ce stade, vous aurez un masque fini. Cependant, si vous souhaitez ajouter des étiquettes aux espaces de découpe, vous devrez ajouter (à l'aide d'un outil Union) les plus petits polygones au masque. Ensuite, avec un fichier SLD dans Mapserver, vous pouvez styliser le masque en gris transparent, styliser les découpes comme complètement transparent et y appliquer les étiquettes. Voici un exemple de fichier SLD (il a été créé pour Geoserver):
Notez que les polygones devraient avoir la propriété "TYPE" avec les valeurs "intérieure" ou "extérieure" pour que cela fonctionne correctement.
la source