<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:st1="urn:schemas-microsoft-com:office:smarttags" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=us-ascii">
<meta name=Generator content="Microsoft Word 11 (filtered medium)">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]--><o:SmartTagType
namespaceuri="urn:schemas-microsoft-com:office:smarttags" name="country-region"/>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
name="place"/>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
name="City"/>
<o:SmartTagType namespaceuri="urn:schemas-microsoft-com:office:smarttags"
name="PersonName"/>
<!--[if !mso]>
<style>
st1\:*{behavior:url(#default#ieooui) }
</style>
<![endif]-->
<style>
<!--
font-face
        {font-family:Tahoma;}
/* Font Definitions */
@font-face
        {font-family:Tahoma;
        panose-1:2 11 6 4 3 5 4 4 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0in;
        margin-bottom:.0001pt;
        font-size:12.0pt;
        font-family:"Times New Roman";
        color:black;}
a:link, span.MsoHyperlink
        {color:blue;
        text-decoration:underline;}
a:visited, span.MsoHyperlinkFollowed
        {color:blue;
        text-decoration:underline;}
span.emailstyle17
        {font-family:Arial;
        color:navy;}
span.emailstyle18
        {font-family:Arial;
        color:navy;}
span.EmailStyle19
        {mso-style-type:personal-reply;
        font-family:Arial;
        color:navy;}
@page Section1
        {size:8.5in 11.0in;
        margin:1.0in 1.25in 1.0in 1.25in;}
div.Section1
        {page:Section1;}
-->
</style>
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor=white lang=EN-US link=blue vlink=blue>
<div class=Section1>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>The impact on the AJAX Viewer complicates
the issue of dynamic tile sizing, and Trevor will be addressing that issue in
an RFC.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>I am going to implement the TileBlockSize
config parameter (which has no impact on the viewer) and Traian’s
tile-organizing scheme.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Chris.<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'><o:p> </o:p></span></font></p>
<div>
<div class=MsoNormal align=center style='text-align:center'><font size=3
color=black face="Times New Roman"><span style='font-size:12.0pt;color:windowtext'>
<hr size=2 width="100%" align=center tabindex=-1>
</span></font></div>
<p class=MsoNormal><b><font size=2 color=black face=Tahoma><span
style='font-size:10.0pt;font-family:Tahoma;color:windowtext;font-weight:bold'>From:</span></font></b><font
size=2 color=black face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma;
color:windowtext'> mapguide-internals-bounces@lists.osgeo.org [mailto:mapguide-internals-bounces@lists.osgeo.org]
<b><span style='font-weight:bold'>On Behalf Of </span></b><st1:PersonName
w:st="on">Walt Welton-Lair</st1:PersonName><br>
<b><span style='font-weight:bold'>Sent:</span></b> January 23, 2007 2:26 PM<br>
<b><span style='font-weight:bold'>To:</span></b> <st1:PersonName w:st="on">MapGuide
Internals Mail List</st1:PersonName><br>
<b><span style='font-weight:bold'>Subject:</span></b> RE: [mapguide-internals]
RFC required for tile caching changes?</span></font><font color=black><span
style='color:windowtext'><o:p></o:p></span></font></p>
</div>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'><o:p> </o:p></span></font></p>
<div>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt;color:windowtext'>If you make the cached tile size a
parameter then this will also require some AJAX Viewer work. IIRC
the <st1:City w:st="on"><st1:place w:st="on">AJAX</st1:place></st1:City> code
has the current tile size hard-coded. If you make it a parameter then
you'll need to update ajaxviewer.templ (I think) to let it be set dynamically.<o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt;color:windowtext'> <o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt;color:windowtext'>There may also be other things you
need to fix in <st1:City w:st="on"><st1:place w:st="on">AJAX</st1:place></st1:City>.
For example, it currently requests tiles for rows / columns which are
slightly outside your visible extents. I don't know offhand how many
extra rows / columns it requests, but it seems this also depends on the tile
size. Maybe you'd want to request enough rows/columns to give you an
additional 25% screen coverage. So the number of extra rows/columns
you'll need to request on each side is 0.25 * screen width in pixels
/ tile size. I don't know if <st1:City w:st="on"><st1:place w:st="on">AJAX</st1:place></st1:City>
viewer currently has such logic.<o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt;color:windowtext'> <o:p></o:p></span></font></p>
</div>
<div>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt;color:windowtext'>Walt<o:p></o:p></span></font></p>
</div>
<blockquote style='margin-top:5.0pt;margin-right:0in;margin-bottom:5.0pt'>
<div>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=2 color=black
face="Times New Roman"><span style='font-size:10.0pt;color:windowtext'>-----Original
Message----- <br>
<b><span style='font-weight:bold'>From:</span></b>
mapguide-internals-bounces@lists.osgeo.org on behalf of Chris Claydon
<br>
<b><span style='font-weight:bold'>Sent:</span></b> Tue 1/23/2007 9:42 PM <br>
<b><span style='font-weight:bold'>To:</span></b> <st1:PersonName w:st="on">MapGuide
Internals Mail List</st1:PersonName> <br>
<b><span style='font-weight:bold'>Cc:</span></b> <br>
<b><span style='font-weight:bold'>Subject:</span></b> RE: [mapguide-internals]
RFC required for tile caching changes?</span></font><font color=black><span
style='color:windowtext'><o:p></o:p></span></font></p>
</div>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>That should be relatively straightforward
to achieve. I would add a comment into serverconfig.ini indicating that any
modifications to these settings would:</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>a)</span></font><font size=1 color=navy><span
style='font-size:7.0pt;color:navy'> </span></font><font
size=2 color=navy face=Arial><span style='font-size:10.0pt;font-family:Arial;
color:navy'>Only take effect after a server restart.</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>b)</span></font><font size=1 color=navy><span
style='font-size:7.0pt;color:navy'> </span></font><font
size=2 color=navy face=Arial><span style='font-size:10.0pt;font-family:Arial;
color:navy'>Invalidate ALL existing cached tiles.</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Chris.</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<div>
<div class=MsoNormal align=center style='text-align:center'><font size=3
color=black face="Times New Roman"><span style='font-size:12.0pt;color:windowtext'>
<hr size=2 width="100%" align=center tabIndex=-1>
</span></font></div>
<p class=MsoNormal><b><font size=2 color=black face=Tahoma><span
style='font-size:10.0pt;font-family:Tahoma;color:windowtext;font-weight:bold'>From:</span></font></b><font
size=2 color=black face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma;
color:windowtext'> mapguide-internals-bounces@lists.osgeo.org
[mailto:mapguide-internals-bounces@lists.osgeo.org] <b><span style='font-weight:
bold'>On Behalf Of </span></b>Trevor Wekel<br>
<b><span style='font-weight:bold'>Sent:</span></b> January 23, 2007 1:34 PM<br>
<b><span style='font-weight:bold'>To:</span></b> <st1:PersonName w:st="on">MapGuide
Internals Mail List</st1:PersonName><br>
<b><span style='font-weight:bold'>Subject:</span></b> RE: [mapguide-internals]
RFC required for tile caching changes?</span></font><o:p></o:p></p>
</div>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=blue face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:blue'>Hi Chris,</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=blue face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:blue'>As an additional item, can we
add serverconfig.ini parameters to control the following: </span></font><o:p></o:p></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=blue face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:blue'>- Size of the cache tile where the
tiles assumed to be square "TileSize = 300" for 300x300 tiles</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=2 color=blue face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:blue'>- Tile block size, ie. the mod value in
the discussion below "TileBlockSize = 30"</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=blue face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:blue'>The first item is good for tuning and is
useful if you need to match MapGuide tiles against an externally tiled raster
source. The second item could be used for tuning and eventually to
support "block rendering" of tiles.</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=blue face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:blue'>Thanks,</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=2 color=blue face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:blue'>Trevor</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<div class=MsoNormal align=center style='text-align:center'><font size=3
color=black face="Times New Roman"><span style='font-size:12.0pt;color:windowtext'>
<hr size=2 width="100%" align=center tabIndex=-1>
</span></font></div>
<p class=MsoNormal style='margin-bottom:12.0pt'><b><font size=2 color=black
face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma;color:windowtext;
font-weight:bold'>From:</span></font></b><font size=2 color=black face=Tahoma><span
style='font-size:10.0pt;font-family:Tahoma;color:windowtext'>
mapguide-internals-bounces@lists.osgeo.org
[mailto:mapguide-internals-bounces@lists.osgeo.org] <b><span style='font-weight:
bold'>On Behalf Of </span></b>Chris Claydon<br>
<b><span style='font-weight:bold'>Sent:</span></b> Tuesday, January 23, 2007
1:26 PM<br>
<b><span style='font-weight:bold'>To:</span></b> <st1:PersonName w:st="on">MapGuide
Internals Mail List</st1:PersonName><br>
<b><span style='font-weight:bold'>Subject:</span></b> RE: [mapguide-internals]
RFC required for tile caching changes?</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>We seem to have digressed a little from my
original question! I have summarized the issues discussed in this thread below.
I would like to implement the changes as proposed in item 2), and to do so
without the need for an RFC. Please let me know if this is unacceptable for any
reason.</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Thanks,</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Chris.</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>1)</span></font><font size=1 color=navy><span
style='font-size:7.0pt;color:navy'> </span></font><font
size=2 color=navy face=Arial><span style='font-size:10.0pt;font-family:Arial;
color:navy'>We cannot conform directly with the Tile Map Service Specification,
because it does not currently support the concept of grouping sets of tiles
into individual folders. However, it would be very simple to write a simple
script or servlet to map from the specification’s path format directly to the
MapGuide format.</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>2)</span></font><font size=1 color=navy><span
style='font-size:7.0pt;color:navy'> </span></font><font
size=2 color=navy face=Arial><span style='font-size:10.0pt;font-family:Arial;
color:navy'>Traian suggested a slightly modified folder naming convention that
provides an easier mapping to the original tile index. I like this approach and
would be happy to implement it this way. His proposal is as follows:</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>“Another suggestion I have -- name
the folder part of the path (30 * tile index div 30) and then the
file part would be (tile index mod 30).</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>So for tile 33,64 the folder would be:</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Base Layer Group/30/60/3_4.png</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>And for tile -33,-64 the folder would be:</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Base Layer Group/-30/-60/-3_-4.png</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>For tile 1,1, the folder would be:</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Base Layer Group/0/0/1_1.png</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>For tile -1,-1 the folder would be:</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>Base Layer Group/-0/-0/-1_-1.png”</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=2 color=navy face=Arial><span style='font-size:
10.0pt;font-family:Arial;color:navy'>3) Various issues were brought up
regarding how tiles are generated, and how label placement can be optimized.
These are beyond the scope of my proposal, and can be addressed separately
without being affected by the changes I’ve proposed.</span></font><o:p></o:p></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<div>
<div class=MsoNormal align=center style='text-align:center'><font size=3
color=black face="Times New Roman"><span style='font-size:12.0pt;color:windowtext'>
<hr size=2 width="100%" align=center tabIndex=-1>
</span></font></div>
<p class=MsoNormal><b><font size=2 color=black face=Tahoma><span
style='font-size:10.0pt;font-family:Tahoma;color:windowtext;font-weight:bold'>From:</span></font></b><font
size=2 color=black face=Tahoma><span style='font-size:10.0pt;font-family:Tahoma;
color:windowtext'> mapguide-internals-bounces@lists.osgeo.org
[mailto:mapguide-internals-bounces@lists.osgeo.org] <b><span style='font-weight:
bold'>On Behalf Of </span></b><st1:PersonName w:st="on">Robert Bray</st1:PersonName><br>
<b><span style='font-weight:bold'>Sent:</span></b> January 17, 2007 9:08 AM<br>
<b><span style='font-weight:bold'>To:</span></b> <st1:PersonName w:st="on">MapGuide
Internals Mail List</st1:PersonName><br>
<b><span style='font-weight:bold'>Subject:</span></b> Re: [mapguide-internals]
RFC required for tile caching changes?</span></font><o:p></o:p></p>
</div>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'>Hey Paul, I think that is because you explicitly added
him, for some weird reason this list is already set to <b><span
style='font-weight:bold'>reply to list</span></b>. The change in question would
not have made a difference in this case...<br>
<br>
Bob<br>
<br>
Paul Spencer wrote: <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>Steve's response bounced
from the list, but fortunately reply-to-all was still actually sending to
everyone so I actually got the message ... hint, hint ... <br>
<br>
Paul <br>
<br>
<br>
On 16-Jan-07, at 11:18 PM, Steve Lime wrote: <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>Paul: Er, I spent too
much time at the Camp-to-Camp beer tap so my <br>
memory is a bit fuzzy. We talked about several things from pre-computing <br>
label positions to what you mention below. You are correct in how <br>
MapServer works. It doesn't have any special "tiled" mode and hence <br>
considers each tile just as any other map. In a single map context, <br>
computing label positions post-clip makes sense. <br>
<br>
Computing label positions pre-clip would result in a single, consistent <br>
label position for each feature. For points and polygons that's <br>
generally <br>
OK I believe. For linear features the results might not always be <br>
optimal <br>
since the clipping often provides a nice means of segmenting long <br>
features <br>
so that get labeled multiple times. One could work around that at the <br>
data level by segmenting long features ahead of time. <br>
<br>
I don't believe it would hard to hack MapServer drawing routine <br>
to do this and someone could test it out. Let me know if interested. <br>
<br>
Steve <o:p></o:p></span></font></p>
<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt' type=cite>
<blockquote style='margin-top:5.0pt;margin-bottom:5.0pt' type=cite>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'>Paul Spencer <a href="mailto:pspencer@dmsolutions.ca"><pspencer@dmsolutions.ca></a>
01/15/07 7:03 PM >>> <o:p></o:p></span></font></p>
</blockquote>
</blockquote>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>Walt, <br>
<br>
I don't believe it got documented. I spoke with Steve Lime (cc'd) <br>
directly about this during OSGeo. <br>
<br>
At the time, I believe Steve suggested label placement would be done <br>
before features are clipped for rendering. I believe the way <br>
mapserver works, it grabs all features that intersect a given bbox <br>
then clips the features to the bbox then renders them. Labelling is <br>
currently done post-clip. If it were done pre-clip, then labels <br>
would be in a fixed position and could overlap tile boundaries <br>
without problems. <br>
<br>
I do believe that there were some potential problems with this <br>
approach, but I don't know enough of mapserver internals to remember <br>
what they were. <br>
<br>
Steve, perhaps you could jump in and fix my explanation? Also, do <br>
you think that label rendering changes would be a potential for <br>
version 5? <br>
<br>
Cheers <br>
<br>
Paul <br>
<br>
On 15-Jan-07, at 2:54 PM, <st1:PersonName w:st="on">Walt Welton-Lair</st1:PersonName>
wrote: <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'>"In lieu of fixing this in MapServer (there is
actually a proposal <br>
to fix this)..." <br>
<br>
Paul - is there per chance a public link to this proposal? I'd be <br>
interested in looking at it. <br>
<br>
Thanks, <br>
Walt <br>
<br>
-----Original Message----- <br>
From: <a
href="mailto:mapguide-internals-bounces@lists.osgeo.org">mapguide-internals-bounces@lists.osgeo.org</a>
on behalf of <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>Paul <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'>Spencer (External) <br>
Sent: Mon 1/15/2007 7:40 PM <br>
To: <st1:PersonName w:st="on">MapGuide Internals Mail
List</st1:PersonName> <br>
Cc: <br>
Subject: Re: [mapguide-internals] RFC required for tile
caching <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'>changes? <br>
<br>
<br>
<br>
Trevor, <br>
<br>
I don't think I got my idea across clearly :) Let
me explain a <br>
little more clearly. <br>
<br>
In ka-Map, the size of a tile is configurable and by default
is <br>
200x200 px. There is a second concept that I've
called a 'meta <br>
tile'. A meta tile is some number of tiles wide x
high, <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>typically 10 <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> x 10. When a request for
a tile comes to the tile server, it <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>checks <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> the cache. <br>
<br>
If the tile exists, the tile (200x200px) is
returned. This <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>happens <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> without invoking any map
rendering ... the tile exists as an <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>image on <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> disk. <br>
<br>
If the tile does not exist, then a map render
happens. A map <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>the <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> size of the meta tile is
rendered and sliced into tile-sized <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>chunks <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> that are stored on disk in the
cache directory structure. While <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>the <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> tiles are being created, a
lock file is used to 'pause' requests <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>for <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> tiles in the same meta-tile
directory so that they can all be <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>served <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> from the same map draw when it
is finished. <br>
<br>
We chose this approach for several reasons.
First, MapServer <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>suffers <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> from edge effects when
rendering map images. This is normally <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>not <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> noticeable, but when you put
several map draws together in a <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>tiled <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> client, it becomes horribly
obvious. The solution was to render <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>a <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> slightly larger map image
(about 10 pixels in fact) and clip out <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>the <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> center as the tile. Second,
MapServer labelling only considers <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>the <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> current map draw.
Depending on the size of the rendered label, <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>it <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> may not fit into a single
tile. Depending on the size of a <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>feature, <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> the label may appear on
several adjacent tiles. In lieu of <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>fixing <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> this in MapServer (there is
actually a proposal to fix this), <br>
rendering a much larger map and slicing it into smaller
tiles <br>
produces a reasonable effect. Finally, it is
relatively <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>expensive to <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> parse the map file and find/read
the data compared to rendering <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>so <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> rendering a single large image
and slicing it is cheaper than <br>
rendering each smaller tile (with diminishing returns).
<br>
<br>
I don't know how you actually render the tiles in
MapGuide, but <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>I <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'> don't
think you suffer from the same edge and label issues. <br>
<br>
The ka-Map directory structure looks something like
this: <br>
<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'> <map>/<layer-group>/<scale>/<row-of-metatile>/<col-of-metatile>/<row-
<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> of-tile><col-of-tile>.<ext>
<br>
<br>
... which is similar to Chris' suggestion :) I
don't get the <br>
impression that you render the entire contents of the
metatile <br>
directory in one go though. Because I do, I only
have to check <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>if <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> the meta-tile directory exists
to know if any tile in the <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>directory <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> exists, which is a small
optimizatin. <br>
<br>
One difference between Chris' proposal and the way
ka-Map works <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>is <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> that the scale and layer group
are reversed. This makes it <br>
theoretically possible to share the <layer-group>
cache <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>directory <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> between different maps simply
by creating symlinks or by <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>allowing a <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> per-layer-group setting that
indicates the root directory to <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>keep the <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> tile cache in. <br>
<br>
Cheers <br>
<br>
Paul <br>
<br>
On 15-Jan-07, at 11:49 AM, Trevor Wekel wrote: <br>
<br>
> Hi everyone, <br>
> <br>
> I did some analysis on file systems a little while
ago in <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>support <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> > of the <br>
> directory structure change. Here are some
approximate numbers <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>for <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> > directory entry and file
system entries that I pulled from an <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'>internet <br>
> search: <br>
> <br>
> Linux ext3 - each file or directory is
approx 8 bytes + <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>length of <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> > file <br>
> or directory name <br>
> Linux Reiserfs - each file or directory is
18 bytes + length <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>of <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> > file or <br>
> directory name <br>
> <br>
> If we assume each file name has a format of
R99999_C99999.PNG <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>then <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> > each <br>
> file entry will require 26 bytes under ext3 and 34
bytes under <br>
> ReiserFS. <br>
> <br>
> To facilitate fast directory access, tiles which
are close to <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>each <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> > other <br>
> should like in the same directory. This
reduces the directory <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'>entry <br>
> reads for each tile request. If we also
assume that the read <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>block <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> > size <br>
> for the file system is 32kbytes (32/64k is often
used in RAID <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'>arrays) <br>
> then a directory with 900 entries (30x30 block)
will get read <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>in a <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> > single IOP (900*34 =
30600). And since the tiles are blocked <br>
> together, <br>
> it is very likely that adjacent tiles will fall
within the <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>same <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> > directory. Since
the directory was just read, it will be <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>cached <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'>and <br>
> there will be no disk access required. <br>
> <br>
> If we increase the size of the directories to more
than 900 <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>entries <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> > then <br>
> we will incur more than IOP to read the
bottom-most directory <br>
> structure. <br>
> <br>
> I also think Traian's suggestion of Base Layer
Group/ <br>
30/60/3_4.png is <br>
> reasonable. It is more readable than the
original mod scheme. <br>
> <br>
>> From a rendering perspective, dealing with
2000x2000 pixel <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>blocks <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> >> may be <br>
> more efficient but cutting the tiles up from these
larger <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>images <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'>will <br>
> require some computational effort. Rendering
the tiles in the <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>same <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> > size <br>
> as requested from the client reduces server load
because the <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>HTTP <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> > request ends up being
simply a file serving operation. <br>
> <br>
> With some of the latest optimizations I have been
working on, <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'>MapGuide <br>
> tile serving speeds using "client-sized"
tiles are quite <br>
respectable. <br>
> On a machine with a single 3GHz CPU, MapGuide can
service more <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>than <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> > 100 <br>
> tiles per second assuming the tiles are being
served from <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>memory, <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> > ie. no <br>
> disk access. The additional computational
effort required to <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'>generate <br>
> "client" tiles from larger pixel blocks
will significantly <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>impact <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> > performance. <br>
> <br>
> <br>
> Thanks, <br>
> Trevor <br>
> <br>
> -----Original Message----- <br>
> From: <a
href="mailto:mapguide-internals-bounces@lists.osgeo.org">mapguide-internals-bounces@lists.osgeo.org</a>
<br>
> [<a
href="mailto:mapguide-internals-bounces@lists.osgeo.org">mailto:mapguide-internals-bounces@lists.osgeo.org</a>]
On Behalf <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>Of <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'>Paul <br>
> Spencer (External) <br>
> Sent: Sunday, January 14, 2007 11:59 AM <br>
> To: <st1:PersonName w:st="on">MapGuide Internals
Mail List</st1:PersonName> <br>
> Subject: Re: [mapguide-internals] RFC required for
tile <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>caching <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> > changes? <br>
> <br>
> FWIW, Traian's suggestion for naming folders based
on a mod of <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>r/ <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'>c is <br>
> essentially the same approach I took with ka-Map
(for the same <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'>reason <br>
> that Chris brought this up) and it seems to work
very well. <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>In ka- <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> > Map, <br>
> tiles are rendered in blocks of about 2000x2000
pixels (tile <br>
size is <br>
> configurable but you might get 10 x 10 tiles in a
typical <br>
> configuration) and they would go in one of these
sub- <br>
directories. I <br>
> think I figured out that this would be enough
directories to <br>
decently <br>
> cache a pretty large area (say, all of the <st1:country-region
w:st="on"><st1:place w:st="on">US</st1:place></st1:country-region>) without
running <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>into <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> > file <br>
> system limits for most scales. <br>
> <br>
> It would be interesting to know the limits on: <br>
> <br>
> * files per directory <br>
> * directories per directory <br>
> * total number of directories <br>
> * total number of files <br>
> * minimum block(?) size in the file system
compared to typical <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>size <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> > of a <br>
> tile (wasted space per tile). <br>
> <br>
> for various operating systems/file system
combinations. I <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>know <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'>we use <br>
> ReiserFS because it handles lots of small files
better than <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>ext3 <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'>for <br>
> instance. Knowing some of this might help
make the caching <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>system <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> > more <br>
> tunable in different environments. <br>
> <br>
> Paul <br>
> <br>
> On 13-Jan-07, at 11:09 AM, Traian Stanev wrote: <br>
> <br>
>> Can you also give an example for tiles with
negative indices? <br>
>> For example if in the current scheme the tile
is -33, -64, <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>what <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'>would <br>
>> be the resulting directory path? <br>
>> <br>
>> R-2/C-3/-3_-4 <br>
>> <br>
>> What about tile -1,-1 <br>
>> <br>
>> Another suggestion I have -- name the folder
part of the path <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'>(30 * <br>
>> tile index div 30) and then the file part
would be (tile <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>index mod <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> >> 30). <br>
>> <br>
>> So for tile 33,64 the folder would be: <br>
>> <br>
>> Base Layer Group/30/60/3_4.png <br>
>> <br>
>> And for tile -33,-64 the folder would be: <br>
>> <br>
>> Base Layer Group/-30/-60/-3_-4.png <br>
>> <br>
>> For tile 1,1, the folder would be: <br>
>> <br>
>> Base Layer Group/0/0/1_1.png <br>
>> <br>
>> For tile -1,-1 the folder would be: <br>
>> <br>
>> Base Layer Group/-0/-0/-1_-1.png <br>
>> <br>
>> <br>
>> It's a little weird around 0, but it allows
for arbitrary <br>
>> groupings of <br>
> <br>
>> tiles in folders (they don't have to be 30x30)
since the tile <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'>index <br>
>> can be computed directly from the file path,
by adding the <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>folder <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> >> term <br>
> <br>
>> to the file path term. <br>
>> <br>
>> Also, can you tell us what the problem is with
having too <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>many <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'>images <br>
>> in one directory? Is it a file system issue?
And how many <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>tiles is <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> >> the <br>
> <br>
>> limit, i.e. why is 30x30 the preferred
grouping and not <br>
1000x1000 for <br>
>> example? <br>
>> <br>
>> Traian <br>
>> -----Original Message----- <br>
>> From: <a
href="mailto:mapguide-internals-bounces@lists.osgeo.org">mapguide-internals-bounces@lists.osgeo.org</a>
on behalf of <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'>Jason <br>
>> Birch <br>
>> Sent: Fri 1/12/2007 8:57 PM <br>
>> To: <st1:PersonName w:st="on">MapGuide
Internals Mail List</st1:PersonName> <br>
>> Cc: <br>
>> Subject: RE: [mapguide-internals] RFC required
for tile <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>caching <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> >> changes? <br>
>> <br>
>> Can I forward this to the "tiling"
list for comment? <br>
>> <br>
>> <br>
>> From: <a
href="mailto:mapguide-internals-bounces@lists.osgeo.org">mapguide-internals-bounces@lists.osgeo.org</a>
on behalf of <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'>Chris <br>
>> Claydon <br>
>> Sent: Fri 2007-01-12 12:24 PM <br>
>> To: <st1:PersonName w:st="on">MapGuide
Internals Mail List</st1:PersonName> <br>
>> Subject: RE: [mapguide-internals] RFC required
for tile <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>caching <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> >> changes? <br>
>> <br>
>> A sample tile location would be as follows: <br>
>> <br>
>> <br>
>> ......\ <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>Repositories\TileCache\Samples_Sheboygan_Maps_Sheboygan\7
<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> >> \Base <br>
>> Layer Group\R2\C3\3_4.png <br>
>> <br>
>> <br>
>> The R and C indices correspond to rows and
columns where each <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>row <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> >> contains 30 tiles
vertically and each column contains 30 <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>tiles <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> >> horizontally. <br>
>> <br>
>> <br>
>> This indicates that: <br>
>> <br>
>> <br>
>> 1) We're
at zoom level 7 <br>
>> <br>
>> 2) We're
in grouped row 2 <br>
>> <br>
>> 3) We're
in grouped column 3 <br>
>> <br>
>> 4) The
tile location within this grouped row/column <br>
>> combination is (3,4). <br>
>> <br>
>> <br>
>> The R and C indices never take a zero value
(to avoid issues <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>with <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> >> negative values
around the origin), so this tile corresponds <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>to a <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> >> location of (33, 64)
in the old scheme. <br>
>> <br>
>> <br>
>> I took a quick look at the Tile Map Service
Specification, <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>but it <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> >> doesn't appear to
support the concept of grouping blocks of <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>tiles <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> >> into subfolders in
its current form. Can you provide more <br>
>> information on whether this is possible? <br>
>> <br>
>> <br>
>> Chris. <br>
>> <br>
>> <br>
>>
_______________________________________________ <br>
>> mapguide-internals mailing list <br>
>> <a
href="mailto:mapguide-internals@lists.osgeo.org">mapguide-internals@lists.osgeo.org</a>
<br>
>> <a
href="http://lists.osgeo.org/mailman/listinfo/mapguide-internals">http://lists.osgeo.org/mailman/listinfo/mapguide-internals</a>
<br>
> <br>
> <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>+-----------------------------------------------------------------+
<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> > |Paul
Spencer
<a href="mailto:pspencer@dmsolutions.ca">pspencer@dmsolutions.ca</a> <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'> | <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> > <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>+-----------------------------------------------------------------+
<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> > |Chief Technology Officer
<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'> | <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> > |DM Solutions Group Inc <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'><a
href="http://www.dmsolutions.ca/">http://www.dmsolutions.ca/</a> | <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> > <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'>+-----------------------------------------------------------------+
<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'> >
<br>
> <br>
> <br>
> <br>
> _______________________________________________ <br>
> mapguide-internals mailing list <br>
> <a href="mailto:mapguide-internals@lists.osgeo.org">mapguide-internals@lists.osgeo.org</a>
<br>
> <a
href="http://lists.osgeo.org/mailman/listinfo/mapguide-internals">http://lists.osgeo.org/mailman/listinfo/mapguide-internals</a>
<br>
> <br>
> _______________________________________________ <br>
> mapguide-internals mailing list <br>
> <a href="mailto:mapguide-internals@lists.osgeo.org">mapguide-internals@lists.osgeo.org</a>
<br>
> <a
href="http://lists.osgeo.org/mailman/listinfo/mapguide-internals">http://lists.osgeo.org/mailman/listinfo/mapguide-internals</a>
<br>
<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'> +-----------------------------------------------------------------+
<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> |Paul
Spencer
<a href="mailto:pspencer@dmsolutions.ca">pspencer@dmsolutions.ca</a> <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'> | <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'> +-----------------------------------------------------------------+
<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> |Chief Technology Officer <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'> | <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> |DM Solutions Group Inc <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'><a
href="http://www.dmsolutions.ca/">http://www.dmsolutions.ca/</a> | <o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> <o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'> +-----------------------------------------------------------------+
<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> <br>
<br>
<br>
<br>
_______________________________________________ <br>
mapguide-internals mailing list <br>
<a href="mailto:mapguide-internals@lists.osgeo.org">mapguide-internals@lists.osgeo.org</a>
<br>
<a
href="http://lists.osgeo.org/mailman/listinfo/mapguide-internals">http://lists.osgeo.org/mailman/listinfo/mapguide-internals</a>
<br>
<br>
<br>
<winmail.dat> <br>
_______________________________________________ <br>
mapguide-internals mailing list <br>
<a href="mailto:mapguide-internals@lists.osgeo.org">mapguide-internals@lists.osgeo.org</a>
<br>
<a href="http://lists.osgeo.org/mailman/listinfo/mapguide-internals">http://lists.osgeo.org/mailman/listinfo/mapguide-internals</a>
<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'><br>
+-----------------------------------------------------------------+ <br>
|Paul
Spencer
<a href="mailto:pspencer@dmsolutions.ca">pspencer@dmsolutions.ca</a>
| <br>
+-----------------------------------------------------------------+ <br>
|Chief Technology
Officer
| <br>
|DM Solutions Group
Inc
<a href="http://www.dmsolutions.ca/">http://www.dmsolutions.ca/</a> | <br>
+-----------------------------------------------------------------+ <br>
<br>
<br>
<o:p></o:p></span></font></p>
<p class=MsoNormal style='margin-bottom:12.0pt'><font size=3 color=black
face="Times New Roman"><span style='font-size:12.0pt'><br>
+-----------------------------------------------------------------+ <br>
|Paul
Spencer
<a href="mailto:pspencer@dmsolutions.ca">pspencer@dmsolutions.ca</a>
| <br>
+-----------------------------------------------------------------+ <br>
|Chief Technology
Officer
| <br>
|DM Solutions Group
Inc
<a href="http://www.dmsolutions.ca/">http://www.dmsolutions.ca/</a> | <br>
+-----------------------------------------------------------------+ <br>
<br>
<br>
<br>
<br>
_______________________________________________ <br>
mapguide-internals mailing list <br>
<a href="mailto:mapguide-internals@lists.osgeo.org">mapguide-internals@lists.osgeo.org</a>
<br>
<a href="http://lists.osgeo.org/mailman/listinfo/mapguide-internals">http://lists.osgeo.org/mailman/listinfo/mapguide-internals</a>
<o:p></o:p></span></font></p>
<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'> <o:p></o:p></span></font></p>
</blockquote>
</div>
</body>
</html>