Opened 19 years ago

#1546 new enhancement

lost connection of annotation to geometry

Reported by: Josef.Scheichenzuber@… Owned by: mapserverbugs
Priority: high Milestone:
Component: Output-SVG Version: unspecified
Severity: minor Keywords:
Cc:

Description

SVG should make it possible to build "interactive maps", that are maps with 
tool tips, with  worked in hyper links, with searching for text and 
highlightening the appropriate geometries of the found hits. All these actions 
could be handled exclusively on the client without involving the mapserver 
again and again.

Concerning this theme I've built a prototype:
MapServer produces SVG output, with all the values of our various disciplinary 
attributes given in form of annotations. A special written Perl program catches 
the MapServer SVG output and reconstructs another SVG document (i.e. modifies 
it, especially the text output of the annotations, making them apriori 
invisible and visualizing them by tooltips, adds java script code, etc.), 
before sending it to the client.
But there is a severe problem with the annotations:
In the actual SVG output of the MapServer there is no interconnection of 
annotation text with the corresponding geometry, this important information is 
lost! My Perl program tries to reconstruct this lost interconnection by looking 
at the output order of the annotation texts, but this procedure is unreliable, 
because the amount of geometric features is not always the same as the amount 
of annotations output.

The concerning Output of MapServer now is of the form:
======================================================
<!-- START LAYER xyz -->
<path stroke="#00ffff" stroke-width="1" d="..."/>
...
<!-- START LAYER uvw -->
<path stroke="#00ffff" stroke-width="1" d="..."/>
...
<!-- START LAYER uvw_label -->
<text ...>here is the annotation text of one feature of uvw_layer</text>
...
<text ...>here is the annotation text of one feature of xyz_layer</text>
...

The Output of MapServer, I suggest (but I'm no SVG guru):
==========================================================
<defs>
...
<g id="layer_xyz">
<path id="xyz.1" stroke="#00ffff" stroke-width="1" d="..."/>
<path id="xyz.2" stroke="#00ffff" stroke-width="1" d="... z"/>
<path id="xyz.3" stroke="#00ffff" stroke-width="1" d="... z"/>
...
</g>
<g id="layer_uvw">
<path id="uvw.1" stroke="#00ffff" stroke-width="1" d="..."/>
<path id="uvw.2" stroke="#00ffff" stroke-width="1" d="... z"/>
<path id="uvw.3" stroke="#00ffff" stroke-width="1" d="... z"/>
...
</g>
...
<g id="annotation_xyz">
<text id="A_xyz.1"  ...> appropriate annotation for xyz.1</text>
<text id="A_xyz.2"  ...> appropriate annotation for xyz.2</text>
<text id="A_xyz.3"  ...> appropriate annotation for xyz.3</text>
...
</g>
<g id="annotation_uvw">
<text id="A_uvw.1"  ...> appropriate annotation for uvw.1</text>
<text id="A_uvw.2"  ...> appropriate annotation for uvw.2</text>
<text id="A_uvw.3"  ...> appropriate annotation for uvw.3</text>
...
</g>
...
</defs>
...
<use xlink:href="#layer_xyz" />
<use xlink:href="#layer_uvw" />
...
<use xlink:href="#annotation_xyz" />
<use xlink:href="#annotation_uvw" />
...
</svg>

Another separate desire would be:
=================================
It would be nice if I could depose at the MapServer an SVG template (with java 
script code etc.) like the HTML template in standard BROWSE-mode.

Thanks for the good work yet done, and for reviewing my suggestions.

Change History (0)

Note: See TracTickets for help on using tickets.