[Cartoweb-users] How to query mapOverlay
Carolin Latze
carolin.latze at unifr.ch
Mon Dec 10 09:20:55 EST 2007
Hi list,
I declared the following layer in my mapfile:
LAYER
TRANSPARENCY 100
NAME "BackmehlBetriebe122000"
CONNECTIONTYPE postgis
TEMPLATE "ttt"
LABELCACHE on
STATUS ON
DEBUG false
TRANSFORM true
CONNECTION 'XXX'
DATA 'the_geom FROM Backmehl311200 USING UNIQUE gid USING SRID=-1'
TYPE POINT
CLASS
NAME '>3226.31'
EXPRESSION ([menge]>=3226.31)
STYLE
SYMBOL "square"
SIZE 12
COLOR 30 110 222
OUTLINECOLOR 0 0 0
END
END
CLASS
NAME '1107.4-3226.31'
EXPRESSION ([menge]>=1107.4 AND [menge]<3226.31)
STYLE
SYMBOL "square"
SIZE 10
COLOR 30 110 222
OUTLINECOLOR 0 0 0
END
END
CLASS
NAME '309.5-1107.4'
EXPRESSION ([menge]>=309.5 AND [menge]<1107.4)
STYLE
SYMBOL "square"
SIZE 8
COLOR 30 110 222
OUTLINECOLOR 0 0 0
END
END
CLASS
NAME '91.45-309.5'
EXPRESSION ([menge]>=91.45 AND [menge]<309.5)
STYLE
SYMBOL "square"
SIZE 4
COLOR 30 110 222
OUTLINECOLOR 0 0 0
END
END
CLASS
NAME '<91.45'
EXPRESSION ([menge] < 91.45)
STYLE
SYMBOL "square"
SIZE 2
COLOR 30 110 222
OUTLINECOLOR 0 0 0
END
END
METADATA
"id_attribute_string" "id|int"
END
END
This layer can be displayed and queried. To modify the DATA value, I
wrote a plugin containing this code sniplet:
//BEGIN Overlay
$overlay=new LayerOverlay();
$overlay->name="BackmehlBetriebe122000";
$overlay->data='the_geom FROM (SELECT gid,id,btrname,SUM(menge) AS
menge,the_geom FROM Backmehl311200 GROUP BY gid,id,btrname,the_geom) AS
FilteredBackmehl311200 USING UNIQUE gid USING SRID=-1';
$mapOverlay=$this->serverContext->getPluginManager()->mapOverlay;
$mapOverlay->updateMap($overlay);
$this->serverContext->getMapObj()->save('./debug.map');
//END Overlay
This plugins seems to work... if I read out the attributes I see that it
only shows the ones, I want to see. But I cannot query this layer
anymore. There is no error message, it simply does not output anything .
The debug.map looks as follows:
LAYER
CONNECTION "XXX"
CONNECTIONTYPE POSTGIS
DATA "the_geom FROM (SELECT gid,id,btrname,SUM(menge) AS
menge,the_geom FROM Backmehl311200 GROUP BY gid,id,btrname,the_geom) AS
FilteredBackmehl311200 USING UNIQUE gid USING SRID=-1"
METADATA
"id_attribute_string" "id|int"
END
NAME "BackmehlBetriebe122000"
STATUS ON
TEMPLATE "ttt"
TYPE POINT
UNITS METERS
CLASS
NAME ">3226.31"
EXPRESSION ([menge]>=3226.31)
STYLE
ANGLE 360
COLOR 30 110 222
OPACITY 100
OUTLINECOLOR 0 0 0
SIZE 12
SYMBOL "square"
END
END
CLASS
NAME "1107.4-3226.31"
EXPRESSION ([menge]>=1107.4 AND [menge]<3226.31)
STYLE
ANGLE 360
COLOR 30 110 222
OPACITY 100
OUTLINECOLOR 0 0 0
SIZE 10
SYMBOL "square"
END
END
CLASS
NAME "309.5-1107.4"
EXPRESSION ([menge]>=309.5 AND [menge]<1107.4)
STYLE
ANGLE 360
COLOR 30 110 222
OPACITY 100
OUTLINECOLOR 0 0 0
SIZE 8
SYMBOL "square"
END
END
CLASS
NAME "91.45-309.5"
EXPRESSION ([menge]>=91.45 AND [menge]<309.5)
STYLE
ANGLE 360
COLOR 30 110 222
OPACITY 100
OUTLINECOLOR 0 0 0
SIZE 4
SYMBOL "square"
END
END
CLASS
NAME "<91.45"
EXPRESSION ([menge] < 91.45)
STYLE
ANGLE 360
COLOR 30 110 222
OPACITY 100
OUTLINECOLOR 0 0 0
SIZE 2
SYMBOL "square"
END
END
END
That look ok, doesn't it? Does anybody have a hint?
Regards
Carolin
More information about the Cartoweb-users
mailing list