[Mapserver-users] dynamic labeling -- help needed
Murat Isik
muratisik at megatek.com.tr
Wed Nov 5 23:42:19 PST 2003
This is a multi-part message in MIME format.
------=_NextPart_000_006C_01C3A44A.452C1D40
Content-Type: text/plain;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
Hello,
I am working on a mapscript project, it is a car tracking project.
Coordinates data comes to mysql, and my mapscript reads the data and =
prints
points on the map accordingly. However I am given a new task which is =
truely
above me...
I am handed a new layer for my project, a layer about streets. I am =
supposed
to add this layer to the map (which is easy) and have the php code
dynamicaly query this layer (which is "????" for me) I have used some =
free
map tools to "look
into" the layer. The database coloumn has two coloumns: an ID and an ADI
coloumn. ADI means "its name" in Turkish. Every time this php code is
called, it should not only print the streets on the map but next to each
street, it
should also write its name. Even if it is zoomed, it should still =
maintain
the names of the streets within the picture on the page. I have no idea
about how to do this, it is way above me...
One problem might be that while ID coloumn is all numbers, ADI coloumn =
has a
lot of Turkish characters (8859-9 named code set I believe, UTF-9 might =
be
another name too.) I dont know if php/mapscript supports this one. This =
is
not a big problem anyway. If I can get the ID coloumn to be printed, =
then I
can use ArcView or some other windows tool to open up the .dbf file and
rewrite the names with international characters and then change it to ID =
to
ADI.
But I dont have any ideas about how to get anything read out of the =
static
layer and properly printed on the page. I have searched the net and mail
list archieve but didnot understand much. Please help me...:)
Have a nice day:)
Murat Isik
current php code:
<HEAD>
<TITLE>Displaying a Point</TITLE>
</HEAD>
<CENTER>
<FORM METHOD=3DPOST ACTION=3D<?php echo $PHP_SELF?>>
<H1>DYNAMIC POINT</H1>
<P>
<?php
dl("php_mapscript.so");
mysql_connect("localhost","root","sqlpass") or
die ("Could not connect to database");
mysql_select_db("gpstrack") or
die("Could not select database");
$val_zsize=3D3;
$check_pan=3D"CHECKED";
$shpFname =3D "target1";
$shpFile =3D ms_newShapeFileObj($shpFname, MS_SHP_POINT);
$shpFname1 =3D "target2";
$shpFile1 =3D ms_newShapeFileObj($shpFname1, MS_SHP_POINT);
$pt =3D ms_newPointObj();
$i =3D 0;
$result =3D mysql_query("select * from track2") or
die (mysql_error());
$x[0]=3D0;
$y[0]=3D0;
while ($row =3D mysql_fetch_array($result))
{
++$i;
$test_x[$i] =3D $row["lodegrees"]+$row["lominutes"]/60;
$test_y[$i] =3D $row["ldegrees"]+$row["lminutes"]/60;
if($test_x[$i]=3D=3D$x[$i-1] || $test_y[$i]=3D=3D$y[$i-1])
{
--$i;
}else
{
$x[$i] =3D $test_x[$i];
$y[$i] =3D $test_y[$i];
}
}
mysql_free_result($result);
for($k=3D1;$k<=3D$i-1;++$k)
{
$pt->setXY($x[$k], $y[$k]);
$shpFile->addPoint($pt);
};
$pt->setXY($x[$i], $y[$i]);
$shpFile1->addPoint($pt);
$shpFile->free();
$shpFile1->free();
$def =3Darray(array("UNIQID", "C", 13),array("NOM", "C", 128));
$dbfFile =3D dbase_create($shpFname.".dbf", $def);
dbase_add_record($dbfFile, array("1","TEST"));
$def =3Darray(array("UNIQID", "C", 13),array("NOM", "C", 128));
$dbfFile =3D dbase_create($shpFname1.".dbf", $def);
dbase_add_record($dbfFile, array("1","TEST"));
$myMap =3D ms_newMapObj("demo_try.map");
#$myLayer =3D $myMap->getLayerByName("target1");
#$myLayer->set("data", $shpFname);
#$myLayer->set('status', MS_ON);
if ( isset($HTTP_POST_VARS["mapa_x"]) && =
isset($HTTP_POST_VARS["mapa_y"])
&& !isset($HTTP_POST_VARS["full"]) ) {
// $extent_to_set =3D explode(" ",$HTTP_POST_VARS["extent"]);
$extent_to_set[0] =3D 29.057;
$extent_to_set[1] =3D 40.954;
$extent_to_set[2] =3D 29.143;
$extent_to_set[3] =3D 40.999;
$myMap->setextent($extent_to_set[0],$extent_to_set[1],
$extent_to_set[2],$extent_to_set[3]);
$my_point =3D ms_newpointObj();
=
$my_point->setXY($HTTP_POST_VARS["mapa_x"],$HTTP_POST_VARS["mapa_y"]);
$my_extent =3D ms_newrectObj();
$my_extent->setextent($extent_to_set[0],$extent_to_set[1],
$extent_to_set[2],$extent_to_set[3]);
$zoom_factor =3D $HTTP_POST_VARS["zoom"]*$HTTP_POST_VARS["zsize"];
if ($zoom_factor =3D=3D 0) {
$zoom_factor =3D 1;
$check_pan =3D "CHECKED";
$check_zout =3D "";
$check_zin =3D "";
} else if ($zoom_factor < 0) {
$check_pan =3D "";
$check_zout =3D "CHECKED";
$check_zin =3D "";
} else {
$check_pan =3D "";
$check_zout =3D "";
$check_zin =3D "CHECKED";
}
$val_zsize =3D abs($zoom_factor);
=
$myMap->zoompoint($zoom_factor,$my_point,$myMap->width,$myMap->height,
$my_extent);
}
$img =3D $myMap->draw();
$image_url =3D $img->saveWebImage(GIF,1,1,0);
?>
<BODY>
<center>
<table border=3D0 cellspacing=3D0 cellpadding=3D4 bgcolor=3D"#FFFFFF">
<tr>
<td valign=3D"top" align=3Dcenter>
<table cellpadding=3D"0" cellspacing=3D"5" border=3D"5">
<tr><td colspan=3D"2"><INPUT NAME=3D"mapa" TYPE=3D"image" =
SRC=3D"<?php echo
$image_url; ?>" width=3D600 height=3D600 border=3D0></td></tr>
<tr>
<TR>
<TD>
Pan
</TD>
<TD>
<INPUT TYPE=3DRADIO NAME=3D"zoom" VALUE=3D0 <?php echo =
$check_pan?>>
</TD>
</TR>
<TR>
<TD>
Zoom In
</TD>
<TD>
<INPUT TYPE=3DRADIO NAME=3D"zoom" VALUE=3D1 <?php echo =
$check_zin?>>
</TD>
</TR>
<TR>
<TD>
Zoom Out
</TD>
<TD>
<INPUT TYPE=3DRADIO NAME=3D"zoom" VALUE=3D-1 <?php echo
$check_zout?>>
</TD>
</TR>
<TR>
<TD>
Zoom Size
</TD>
<TD>
<INPUT TYPE=3DTEXT NAME=3D"zsize" VALUE=3D"<?php echo =
$val_zsize?>"
SIZE=3D2>
</TD>
</TR>
<TR>
<TD>
Full Extent
</TD>
<TD>
<INPUT TYPE=3DSUBMIT NAME=3D"full" VALUE=3D"Go"
SIZE=3D2>
</TD>
</TABLE>
<INPUT TYPE=3DHIDDEN NAME=3D"extent" VALUE=3D"<?php echo =
$extent_to_html?>">
</FORM>
</CENTER>
</BODY>
</HTML>
current map file:
#
# Start of map file
#
NAME ERENKOY
STATUS ON
SIZE 600 600
EXTENT 29.057 40.954 29.143 40.999
UNITS DD
SHAPEPATH "/var/www/html/mapserver/itasca/"
IMAGECOLOR 255 255 255
#OUTPUTFORMAT
# NAME PNG
# DRIVER "GD/PNG"
# MIMETYPE "image/png"
# IMAGEMODE PC256
# EXTENSION "png"
#END
IMAGETYPE GIF
WEB
MINSCALE 1000
MAXSCALE 1550000
IMAGEPATH "/var/www/html/mapserver/tmp3/"
IMAGEURL "/mapserver/tmp3/"
END
SYMBOL
NAME 'circle'
TYPE ELLIPSE
POINTS 1 1 END
FILLED TRUE
END
LAYER
NAME 'ERENKOY_ORNEKILCE_PG_region'
TYPE polygon
STATUS DEFAULT
DATA ERENKOY_ORNEKILCE_PG_region
CLASSITEM 'ID'
CLASS
EXPRESSION '3'
OUTLINECOLOR 128 128 128
COLOR 225 225 185
END
CLASS
EXPRESSION /./
OUTLINECOLOR 128 128 128
COLOR 255 255 255
END
END
LAYER
NAME ERENKOY_ORNEKMAHALLE_PG_region
GROUP cities
TYPE polygon
DATA ERENKOY_ORNEKMAHALLE_PG_region
STATUS ON
CLASSITEM 'ID'
CLASS
EXPRESSION /./
COLOR 255 225 185
OUTLINECOLOR 0 0 0
END
END
LAYER
NAME 'target2'
TYPE point
DATA target2
STATUS ON
CLASS
SYMBOL 'circle'
COLOR 255 255 0
SIZE 20
LABEL
COLOR 0 0 0
END
END
END
LAYER
NAME 'target1'
TYPE point
DATA target1
STATUS ON
CLASS
SYMBOL 'circle'
COLOR 255 0 0
SIZE 4
LABEL
COLOR 0 0 0
END
END
END
END # end of map file
------=_NextPart_000_006C_01C3A44A.452C1D40
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META content=3D"text/html; charset=3Diso-8859-1" =
http-equiv=3DContent-Type>
<META content=3D"MSHTML 5.00.3700.6699" name=3DGENERATOR>
<STYLE></STYLE>
</HEAD>
<BODY bgColor=3D#ffffff>
<DIV><FONT face=3DArial size=3D2>Hello,<BR>I am working on a mapscript =
project, it=20
is a car tracking project.<BR>Coordinates data comes to mysql, and my =
mapscript=20
reads the data and prints<BR>points on the map accordingly. However I am =
given a=20
new task which is truely<BR>above me...<BR>I am handed a new layer for =
my=20
project, a layer about streets. I am supposed<BR>to add this layer to =
the map=20
(which is easy) and have the php code<BR>dynamicaly query this layer =
(which is=20
"????" for me) I have used some free<BR>map tools to "look<BR>into" the =
layer.=20
The database coloumn has two coloumns: an ID and an ADI<BR>coloumn. ADI =
means=20
"its name" in Turkish. Every time this php code is<BR>called, it should =
not only=20
print the streets on the map but next to each<BR>street, it<BR>should =
also write=20
its name. Even if it is zoomed, it should still maintain<BR>the names of =
the=20
streets within the picture on the page. I have no idea<BR>about how to =
do this,=20
it is way above me...<BR><BR>One problem might be that while ID coloumn =
is all=20
numbers, ADI coloumn has a<BR>lot of Turkish characters (8859-9 named =
code set I=20
believe, UTF-9 might be<BR>another name too.) I dont know if =
php/mapscript=20
supports this one. This is<BR>not a big problem anyway. If I can get the =
ID=20
coloumn to be printed, then I<BR>can use ArcView or some other windows =
tool to=20
open up the .dbf file and<BR>rewrite the names with international =
characters and=20
then change it to ID to<BR>ADI.<BR><BR>But I dont have any ideas about =
how to=20
get anything read out of the static<BR>layer and properly printed on the =
page. I=20
have searched the net and mail<BR>list archieve but didnot understand =
much.=20
Please help me...:)<BR><BR>Have a nice day:)<BR><BR>Murat =
Isik</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2>current php code:</FONT></DIV>
<DIV><FONT face=3DArial size=3D2></FONT> </DIV>
<DIV><FONT face=3DArial size=3D2><HEAD><BR><TITLE>Displaying =
a=20
Point</TITLE><BR></HEAD><BR><CENTER><BR><FORM =
METHOD=3DPOST=20
ACTION=3D<?php echo $PHP_SELF?>><BR><H1>DYNAMIC=20
POINT</H1><BR><P><BR><?php<BR>dl("php_mapscript.so");<BR><=
BR>mysql_connect("localhost","root","sqlpass")=20
or<BR> die ("Could not connect =
to=20
database");<BR><BR>mysql_select_db("gpstrack")=20
or<BR> die("Could not select=20
database");<BR><BR>$val_zsize=3D3;<BR>$check_pan=3D"CHECKED";<BR><BR>$shp=
Fname =3D=20
"target1";<BR>$shpFile =3D ms_newShapeFileObj($shpFname,=20
MS_SHP_POINT);<BR><BR>$shpFname1 =3D "target2";<BR>$shpFile1 =3D=20
ms_newShapeFileObj($shpFname1, MS_SHP_POINT);<BR><BR>$pt =3D=20
ms_newPointObj();<BR><BR>$i =3D 0;<BR><BR>$result =3D =
mysql_query("select * from=20
track2") or<BR> die=20
(mysql_error());<BR><BR><BR>$x[0]=3D0;<BR>$y[0]=3D0;<BR><BR>while ($row =
=3D=20
mysql_fetch_array($result))<BR>{<BR>++$i;<BR>$test_x[$i] =3D=20
$row["lodegrees"]+$row["lominutes"]/60;<BR>$test_y[$i] =3D=20
$row["ldegrees"]+$row["lminutes"]/60;<BR><BR><BR>if($test_x[$i]=3D=3D$x[$=
i-1] ||=20
$test_y[$i]=3D=3D$y[$i-1])<BR>{<BR>--$i;<BR>}else<BR>{<BR><BR>$x[$i] =3D =
$test_x[$i];<BR>$y[$i] =3D=20
$test_y[$i];<BR><BR>}<BR><BR>}<BR>mysql_free_result($result);<BR><BR><BR>=
for($k=3D1;$k<=3D$i-1;++$k)<BR>{<BR>$pt->setXY($x[$k],=20
$y[$k]);<BR>$shpFile->addPoint($pt);<BR>};<BR><BR>$pt->setXY($x[$i]=
,=20
$y[$i]);<BR>$shpFile1->addPoint($pt);<BR><BR><BR>$shpFile->free();<=
BR>$shpFile1->free();<BR><BR>$def=20
=3Darray(array("UNIQID", "C", 13),array("NOM", "C", 128));<BR>$dbfFile =
=3D=20
dbase_create($shpFname.".dbf", $def);<BR>dbase_add_record($dbfFile,=20
array("1","TEST"));<BR><BR>$def =3Darray(array("UNIQID", "C", =
13),array("NOM",=20
"C", 128));<BR>$dbfFile =3D dbase_create($shpFname1.".dbf",=20
$def);<BR>dbase_add_record($dbfFile, array("1","TEST"));<BR><BR>$myMap =
=3D=20
ms_newMapObj("demo_try.map");<BR><BR>#$myLayer =3D=20
$myMap->getLayerByName("target1");<BR>#$myLayer->set("data",=20
$shpFname);<BR>#$myLayer->set('status', MS_ON);<BR><BR><BR>if (=20
isset($HTTP_POST_VARS["mapa_x"]) &&=20
isset($HTTP_POST_VARS["mapa_y"])<BR> =
&&=20
!isset($HTTP_POST_VARS["full"]) ) =
{<BR><BR> // =20
$extent_to_set =3D explode("=20
",$HTTP_POST_VARS["extent"]);<BR><BR><BR>$extent_to_set[0] =3D=20
29.057;<BR>$extent_to_set[1] =3D 40.954;<BR>$extent_to_set[2] =3D=20
29.143;<BR>$extent_to_set[3] =3D 40.999;<BR><BR><BR> =20
$myMap->setextent($extent_to_set[0],$extent_to_set[1],<BR> =
&=
nbsp; =20
$extent_to_set[2],$extent_to_set[3]);<BR><BR> &nbs=
p;=20
$my_point =3D ms_newpointObj();<BR> =20
$my_point->setXY($HTTP_POST_VARS["mapa_x"],$HTTP_POST_VARS["mapa_y"]);=
<BR><BR> =20
$my_extent =3D ms_newrectObj();<BR><BR> =20
$my_extent->setextent($extent_to_set[0],$extent_to_set[1],<BR> &n=
bsp; &nb=
sp; &nbs=
p; =20
$extent_to_set[2],$extent_to_set[3]);<BR><BR> &nbs=
p;=20
$zoom_factor =3D=20
$HTTP_POST_VARS["zoom"]*$HTTP_POST_VARS["zsize"];<BR> &n=
bsp; =20
if ($zoom_factor =3D=3D 0)=20
{<BR> &n=
bsp; =20
$zoom_factor =3D=20
1;<BR> &=
nbsp; =20
$check_pan =3D=20
"CHECKED";<BR>  =
; =20
$check_zout =3D=20
"";<BR> =
=20
$check_zin =3D "";<BR> } else if =
($zoom_factor <=20
0)=20
{<BR> &n=
bsp; =20
$check_pan =3D=20
"";<BR> =
=20
$check_zout =3D=20
"CHECKED";<BR>  =
; =20
$check_zin =3D "";<BR> } else=20
{<BR> &n=
bsp; =20
$check_pan =3D=20
"";<BR> =
=20
$check_zout =3D=20
"";<BR> =
=20
$check_zin =3D "CHECKED";<BR> =20
}<BR><BR> $val_zsize =3D=20
abs($zoom_factor);<BR><BR> =20
$myMap->zoompoint($zoom_factor,$my_point,$myMap->width,$myMap->h=
eight,<BR> &nb=
sp; =20
$my_extent);<BR><BR>}<BR>$img =3D $myMap->draw();<BR>$image_url =3D=20
$img->saveWebImage(GIF,1,1,0);<BR><BR>?><BR><BODY><BR><cen=
ter><BR><table=20
border=3D0 cellspacing=3D0 cellpadding=3D4=20
bgcolor=3D"#FFFFFF"><BR><tr><BR><td valign=3D"top"=20
align=3Dcenter><BR> <table cellpadding=3D"0" =
cellspacing=3D"5"=20
border=3D"5"><BR> <tr><td =
colspan=3D"2"><INPUT=20
NAME=3D"mapa" TYPE=3D"image" SRC=3D"<?php echo<BR>$image_url; ?>" =
width=3D600=20
height=3D600 border=3D0></td></tr><BR> =20
<tr><BR> <TR><BR> =20
<TD><BR>  =
; =20
Pan<BR> =20
</TD><BR> =20
<TD><BR>  =
; =20
<INPUT TYPE=3DRADIO NAME=3D"zoom" VALUE=3D0 <?php echo=20
$check_pan?>><BR> =20
</TD><BR> </TR><BR> <TR><BR>  =
; =20
<TD><BR>  =
; =20
Zoom In<BR> =20
</TD><BR> =20
<TD><BR>  =
; =20
<INPUT TYPE=3DRADIO NAME=3D"zoom" VALUE=3D1 <?php echo=20
$check_zin?>><BR> =20
</TD><BR> </TR><BR> <TR><BR>  =
; =20
<TD><BR>  =
; =20
Zoom Out<BR> =20
</TD><BR> =20
<TD><BR>  =
; =20
<INPUT TYPE=3DRADIO NAME=3D"zoom" VALUE=3D-1 <?php=20
echo<BR>$check_zout?>><BR> =20
</TD><BR> </TR><BR> <TR><BR>  =
; =20
<TD><BR>  =
; =20
Zoom Size<BR> =20
</TD><BR> =20
<TD><BR>  =
; =20
<INPUT TYPE=3DTEXT NAME=3D"zsize" VALUE=3D"<?php echo=20
$val_zsize?>"<BR>  =
; =20
SIZE=3D2><BR> =20
</TD><BR> </TR><BR> <TR><BR>  =
; =20
<TD><BR>  =
; =20
Full Extent<BR> =20
</TD><BR> =20
<TD><BR>  =
; =20
<INPUT TYPE=3DSUBMIT NAME=3D"full"=20
VALUE=3D"Go"<BR> &nb=
sp; =20
SIZE=3D2><BR> =20
</TD><BR></TABLE><BR><INPUT TYPE=3DHIDDEN NAME=3D"extent" =
VALUE=3D"<?php echo=20
$extent_to_html?>"><BR></FORM><BR></CENTER><BR><BR><=
/BODY><BR></HTML><BR><BR><BR>current=20
map file:<BR><BR>#<BR># Start of map file<BR>#<BR>NAME ERENKOY<BR>STATUS =
ON<BR>SIZE 600 600<BR>EXTENT 29.057 40.954 29.143 40.999<BR>UNITS=20
DD<BR>SHAPEPATH "/var/www/html/mapserver/itasca/"<BR>IMAGECOLOR 255 255=20
255<BR><BR>#OUTPUTFORMAT<BR># NAME PNG<BR># DRIVER=20
"GD/PNG"<BR># MIMETYPE "image/png"<BR># IMAGEMODE =
PC256<BR># =20
EXTENSION "png"<BR>#END<BR><BR>IMAGETYPE GIF<BR><BR><BR>WEB<BR> =
MINSCALE=20
1000<BR> MAXSCALE 1550000<BR> IMAGEPATH=20
"/var/www/html/mapserver/tmp3/"<BR> IMAGEURL=20
"/mapserver/tmp3/"<BR> END<BR><BR><BR>SYMBOL<BR> NAME=20
'circle'<BR> TYPE ELLIPSE<BR> POINTS 1 1 END<BR> =
FILLED=20
TRUE<BR>END<BR><BR><BR>LAYER<BR> NAME=20
'ERENKOY_ORNEKILCE_PG_region'<BR> TYPE polygon<BR> STATUS=20
DEFAULT<BR> DATA ERENKOY_ORNEKILCE_PG_region<BR><BR> =
CLASSITEM=20
'ID'<BR> CLASS<BR> EXPRESSION =
'3'<BR> =20
OUTLINECOLOR 128 128 128<BR> COLOR 225 225 =
185<BR> =20
END<BR> CLASS<BR> EXPRESSION =
/./<BR> =20
OUTLINECOLOR 128 128 128<BR> COLOR 255 255 =
255<BR> =20
END<BR>END<BR><BR>LAYER<BR> NAME =
ERENKOY_ORNEKMAHALLE_PG_region<BR> =20
GROUP cities<BR> TYPE polygon<BR> DATA=20
ERENKOY_ORNEKMAHALLE_PG_region<BR> STATUS ON<BR> CLASSITEM=20
'ID'<BR> CLASS<BR> =
EXPRESSION=20
/./<BR>COLOR 255 225 185<BR> =20
OUTLINECOLOR 0 0 0<BR><BR> =
END<BR><BR><BR>END<BR><BR>LAYER<BR> NAME=20
'target2'<BR> TYPE point<BR> DATA target2<BR> STATUS=20
ON<BR> CLASS<BR> SYMBOL=20
'circle'<BR> COLOR 255 255 0<BR> =
SIZE=20
20<BR> LABEL<BR> =
COLOR 0 0=20
0<BR> END<BR> =20
END<BR><BR><BR>END<BR><BR>LAYER<BR> NAME 'target1'<BR> TYPE=20
point<BR> DATA target1<BR> STATUS ON<BR> =20
CLASS<BR> SYMBOL 'circle'<BR> COLOR =
255 0=20
0<BR> SIZE 4<BR> =20
LABEL<BR> COLOR 0 0 =
0<BR> =20
END<BR> END<BR><BR><BR>END<BR><BR>END # end of map=20
file<BR><BR><BR></DIV></FONT></BODY></HTML>
------=_NextPart_000_006C_01C3A44A.452C1D40--
More information about the MapServer-users
mailing list