<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="PersonName"/>
<!--[if !mso]>
<style>
st1\:*{behavior:url(#default#ieooui) }
</style>
<![endif]-->
<style>
<!--
 /* 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
        {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;}
 /* List Definitions */
 @list l0
        {mso-list-id:1664122446;
        mso-list-template-ids:-7199486;}
@list l0:level1
        {mso-level-text:"%1\)";
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level2
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:1.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level3
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:1.5in;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level4
        {mso-level-tab-stop:2.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level5
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:2.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level6
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:3.0in;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l0:level7
        {mso-level-tab-stop:3.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level8
        {mso-level-number-format:alpha-lower;
        mso-level-tab-stop:4.0in;
        mso-level-number-position:left;
        text-indent:-.25in;}
@list l0:level9
        {mso-level-number-format:roman-lower;
        mso-level-tab-stop:4.5in;
        mso-level-number-position:right;
        text-indent:-9.0pt;}
@list l1
        {mso-list-id:1997685123;
        mso-list-type:hybrid;
        mso-list-template-ids:-7199486 67698705 67698713 67698715 67698703 67698713 67698715 67698703 67698713 67698715;}
@list l1:level1
        {mso-level-text:"%1\)";
        mso-level-tab-stop:.5in;
        mso-level-number-position:left;
        text-indent:-.25in;}
ol
        {margin-bottom:0in;}
ul
        {margin-bottom:0in;}
-->
</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'>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.<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>&nbsp;</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,<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>&nbsp;</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>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l1 level1 lfo1'><![if !supportLists]><font
size=2 color=navy face=Arial><span style='font-size:10.0pt;font-family:Arial;
color:navy'><span style='mso-list:Ignore'>1)<font size=1 face="Times New Roman"><span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></span></font><![endif]><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&#8217;s path format directly to
the MapGuide format.<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.5in;text-indent:-.25in;mso-list:l1 level1 lfo1'><![if !supportLists]><font
size=2 color=navy face=Arial><span style='font-size:10.0pt;font-family:Arial;
color:navy'><span style='mso-list:Ignore'>2)<font size=1 face="Times New Roman"><span
style='font:7.0pt "Times New Roman"'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span></font></span></span></font><![endif]><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:<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>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.25in'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>&#8220;Another
suggestion I have -- name the&nbsp;folder part of the path (30 * tile
index&nbsp;div 30) and then the file part would be&nbsp;(tile index mod 30).<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.25in'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.25in'><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:<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.25in'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.25in'><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<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.25in'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.25in'><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:<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.25in'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.25in'><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<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.25in'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.25in'><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:<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.25in'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.25in'><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<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.25in'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.25in'><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:<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.25in'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'>&nbsp;<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.25in'><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&#8221;<o:p></o:p></span></font></p>

<p class=MsoNormal style='margin-left:.25in'><font size=2 color=navy
face=Arial><span style='font-size:10.0pt;font-family:Arial;color:navy'><o:p>&nbsp;</o:p></span></font></p>

<p class=MsoNormal style='margin-left:.25in'><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&#8217;ve
proposed.<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>&nbsp;</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>&nbsp;</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><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>&nbsp;</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><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: <br>
<br>
<br>
<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: 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 &quot;tiled&quot; 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 <br>
<br>
<br>
<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">&lt;pspencer@dmsolutions.ca&gt;</a>
01/15/07 7:03 PM &gt;&gt;&gt; <o:p></o:p></span></font></p>

</blockquote>

</blockquote>

<p class=MsoNormal><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.&nbsp; 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.&nbsp; 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.&nbsp; Labelling is <br>
currently done post-clip.&nbsp; 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?&nbsp; 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: <br>
<br>
<br>
<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'>&quot;In lieu of fixing this in MapServer (there is
actually a proposal <br>
to fix this)...&quot; <br>
<br>
Paul - is there per chance a public link to this proposal?&nbsp; I'd be <br>
interested in looking at it. <br>
<br>
Thanks, <br>
Walt <br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;-----Original Message----- <br>
&nbsp;&nbsp;&nbsp;&nbsp;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><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'>Paul <br>
<br>
<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>
&nbsp;&nbsp;&nbsp;&nbsp;Sent: Mon 1/15/2007 7:40 PM <br>
&nbsp;&nbsp;&nbsp;&nbsp;To: <st1:PersonName w:st="on">MapGuide Internals Mail
 List</st1:PersonName> <br>
&nbsp;&nbsp;&nbsp;&nbsp;Cc: <br>
&nbsp;&nbsp;&nbsp;&nbsp;Subject: Re: [mapguide-internals] RFC required for tile
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'><br>
<br>
<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>
&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp; <br>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;Trevor, <br>
&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;I don't think I got my idea across clearly :)&nbsp; Let
me explain a <br>
&nbsp;&nbsp;&nbsp;&nbsp;little more clearly. <br>
&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;In ka-Map, the size of a tile is configurable and by
default is <br>
&nbsp;&nbsp;&nbsp;&nbsp;200x200 px.&nbsp; There is a second concept that I've
called a 'meta <br>
&nbsp;&nbsp;&nbsp;&nbsp;tile'.&nbsp; A meta tile is some number of tiles wide x
high, <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'>typically 10 <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;x 10.&nbsp; When a request for
a tile comes to the tile server, 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'>checks <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;the cache. <br>
&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;If the tile exists, the tile (200x200px) is
returned.&nbsp; This <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'>happens <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;without invoking any map
rendering ... the tile exists as an <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'>image on <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;disk. <br>
&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;If the tile does not exist, then a map render
happens.&nbsp; A map <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>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;size of the meta tile is
rendered and sliced into tile-sized <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'>chunks <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;that are stored on disk in the
cache directory structure.&nbsp; While <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>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;tiles are being created, a
lock file is used to 'pause' requests <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>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;tiles in the same meta-tile
directory so that they can all be <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'>served <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;from the same map draw when it
is finished. <br>
&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;We chose this approach for several reasons.&nbsp;
First, MapServer <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'>suffers <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;from edge effects when
rendering map images.&nbsp; This is normally <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'>not <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;noticeable, but when you put
several map draws together 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'>tiled <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;client, it becomes horribly obvious.&nbsp;
The solution was to render <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'>a <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;slightly larger map image
(about 10 pixels in fact) and clip out <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>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;center as the tile.&nbsp;
Second, MapServer labelling only considers <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>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;current map draw.&nbsp;
Depending on the size of the rendered label, <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'>it <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;may not fit into a single
tile.&nbsp; Depending on the size of 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'>feature, <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;the label may appear on
several adjacent tiles.&nbsp; In lieu 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'>fixing <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;this in MapServer (there is
actually a proposal to fix this), <br>
&nbsp;&nbsp;&nbsp;&nbsp;rendering a much larger map and slicing it into smaller
tiles <br>
&nbsp;&nbsp;&nbsp;&nbsp;produces a reasonable effect.&nbsp; Finally, it is
relatively <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'>expensive to <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;parse the map file and
find/read the data compared to rendering <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'>so <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;rendering a single large image
and slicing it is cheaper than <br>
&nbsp;&nbsp;&nbsp;&nbsp;rendering each smaller tile (with diminishing returns).
<br>
&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;I don't know how you actually render the tiles in
MapGuide, but <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'>I <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'>&nbsp;&nbsp;&nbsp;&nbsp;don't
think you suffer from the same edge and label issues. <br>
&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;The ka-Map directory structure looks something like
this: <br>
&nbsp;&nbsp;&nbsp;&nbsp; <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'>&nbsp;&nbsp;&nbsp;&nbsp;&lt;map&gt;/&lt;layer-group&gt;/&lt;scale&gt;/&lt;row-of-metatile&gt;/&lt;col-of-metatile&gt;/&lt;row-
<br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;of-tile&gt;&lt;col-of-tile&gt;.&lt;ext&gt;
<br>
&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;... which is similar to Chris' suggestion :)&nbsp; I
don't get the <br>
&nbsp;&nbsp;&nbsp;&nbsp;impression that you render the entire contents of the
metatile <br>
&nbsp;&nbsp;&nbsp;&nbsp;directory in one go though.&nbsp; Because I do, I only
have to check <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'>if <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;the meta-tile directory exists
to know if any tile in 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'>directory <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;exists, which is a small
optimizatin. <br>
&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;One difference between Chris' proposal and the way
ka-Map works <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'>is <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;that the scale and layer group
are reversed.&nbsp; This makes it <br>
&nbsp;&nbsp;&nbsp;&nbsp;theoretically possible to share the &lt;layer-group&gt;
cache <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 <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;between different maps simply
by creating symlinks or by <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'>allowing a <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;per-layer-group setting that
indicates the root directory 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'>keep the <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;tile cache in. <br>
&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;Cheers <br>
&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;Paul <br>
&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;On 15-Jan-07, at 11:49 AM, Trevor Wekel wrote: <br>
&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; Hi everyone, <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; I did some analysis on file systems a little while
ago in <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'>support <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt; of the <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; directory structure change.&nbsp; Here are some
approximate numbers <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>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt; directory entry and file
system entries that I pulled from an <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>
<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>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; search: <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; Linux ext3&nbsp; - each file or directory is
approx 8 bytes + <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'>length of <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt; file <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; or directory name <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; Linux Reiserfs&nbsp; - each file or directory is
18 bytes + length <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 <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt; file or <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; directory name <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; If we assume each file name has a format of
R99999_C99999.PNG <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>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt; each <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; file entry will require 26 bytes under ext3 and 34
bytes under <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; ReiserFS. <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; To facilitate fast directory access, tiles which
are close 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'>each <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt; other <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; should like in the same directory.&nbsp; This
reduces the 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'><br>
<br>
<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>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; reads for each tile request.&nbsp; If we also
assume that the read <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'>block <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt; size <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; for the file system is 32kbytes (32/64k is often
used in RAID <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>
<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>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; then a directory with 900 entries (30x30 block)
will get read <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 a <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt; single IOP (900*34 =
30600).&nbsp; And since the tiles are blocked <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; together, <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; it is very likely that adjacent tiles will fall
within 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'>same <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt; directory.&nbsp; Since
the directory was just read, it will be <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'>cached <br>
<br>
<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>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; there will be no disk access required. <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; If we increase the size of the directories to more
than 900 <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'>entries <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt; then <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; we will incur more than IOP to read the bottom-most
directory <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; structure. <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; I also think Traian's suggestion of Base Layer
Group/ <br>
30/60/3_4.png is <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; reasonable.&nbsp; It is more readable than the
original mod scheme. <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; From a rendering perspective, dealing with
2000x2000 pixel <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'>blocks <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; may be <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; more efficient but cutting the tiles up from these
larger <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>
<br>
<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>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; require some computational effort.&nbsp; Rendering
the tiles in 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'>same <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt; size <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; as requested from the client reduces server load
because 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'>HTTP <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt; request ends up being
simply a file serving operation. <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; With some of the latest optimizations I have been
working 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'><br>
<br>
<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>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; tile serving speeds using &quot;client-sized&quot;
tiles are quite <br>
respectable. <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; On a machine with a single 3GHz CPU, MapGuide can
service more <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'>than <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt; 100 <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; tiles per second assuming the tiles are being
served from <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'>memory, <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt; ie. no <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; disk access.&nbsp; The additional computational
effort required 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'><br>
<br>
<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>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; &quot;client&quot; tiles from larger pixel blocks
will significantly <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'>impact <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt; performance. <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; Thanks, <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; Trevor <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; -----Original Message----- <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; From: <a
href="mailto:mapguide-internals-bounces@lists.osgeo.org">mapguide-internals-bounces@lists.osgeo.org</a>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; [<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><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'>Of <br>
<br>
<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>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; Spencer (External) <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; Sent: Sunday, January 14, 2007 11:59 AM <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; To: <st1:PersonName w:st="on">MapGuide Internals
 Mail List</st1:PersonName> <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; Subject: Re: [mapguide-internals] RFC required for
tile <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'>caching <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt; changes? <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; FWIW, Traian's suggestion for naming folders based
on a mod 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'>r/ <br>
<br>
<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>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; essentially the same approach I took with ka-Map
(for the 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'><br>
<br>
<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>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; that Chris brought this up) and it seems to work
very well. <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 ka- <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt; Map, <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; tiles are rendered in blocks of about 2000x2000
pixels (tile <br>
size is <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; configurable but you might get 10 x 10 tiles in a
typical <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; configuration) and they would go in one of these
sub- <br>
directories.&nbsp; I <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; think I figured out that this would be enough
directories to <br>
decently <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; 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><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'>into <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt; file <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; system limits for most scales. <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; It would be interesting to know the limits on: <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; * files per directory <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; * directories per directory <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; * total number of directories <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; * total number of files <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; * minimum block(?) size in the file system
compared to typical <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>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt; of a <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; tile (wasted space per tile). <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; for various operating systems/file system
combinations.&nbsp; I <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'>know <br>
<br>
<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>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; ReiserFS because it handles lots of small files
better 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'>ext3 <br>
<br>
<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>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; instance.&nbsp; Knowing some of this might help
make the 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'>system <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt; more <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; tunable in different environments. <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; Paul <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; On 13-Jan-07, at 11:09 AM, Traian Stanev wrote: <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; Can you also give an example for tiles with
negative indices? <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; For example if in the current scheme the tile
is -33, -64, <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'>what <br>
<br>
<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>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; be the resulting directory path? <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; R-2/C-3/-3_-4 <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; What about tile -1,-1 <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; Another suggestion I have -- name the folder
part of the path <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>
<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>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; tile index div 30) and then the file part
would be (tile <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 mod <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; 30). <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; So for tile 33,64 the folder would be: <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; Base Layer Group/30/60/3_4.png <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; And for tile -33,-64 the folder would be: <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; Base Layer Group/-30/-60/-3_-4.png <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; For tile 1,1, the folder would be: <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; Base Layer Group/0/0/1_1.png <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; For tile -1,-1 the folder would be: <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; Base Layer Group/-0/-0/-1_-1.png <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; It's a little weird around 0, but it allows
for arbitrary <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; groupings of <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; tiles in folders (they don't have to be 30x30)
since the tile <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>
<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>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; can be computed directly from the file path,
by adding 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'>folder <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; term <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; to the file path term. <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; Also, can you tell us what the problem is with
having too <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'>many <br>
<br>
<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>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; in one directory? Is it a file system issue?
And how 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'>tiles is <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; the <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; limit, i.e. why is 30x30 the preferred
grouping and not <br>
1000x1000 for <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; example? <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; Traian <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; -----Original Message----- <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; 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><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'><br>
<br>
<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>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; Birch <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; Sent: Fri 1/12/2007 8:57 PM <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; To: <st1:PersonName w:st="on">MapGuide
 Internals Mail List</st1:PersonName> <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; Cc: <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; Subject: RE: [mapguide-internals] RFC required
for tile <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'>caching <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; changes? <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; Can I forward this to the &quot;tiling&quot;
list for comment? <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; 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><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'><br>
<br>
<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>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; Claydon <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; Sent: Fri 2007-01-12 12:24 PM <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; To: <st1:PersonName w:st="on">MapGuide
 Internals Mail List</st1:PersonName> <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; Subject: RE: [mapguide-internals] RFC required
for tile <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'>caching <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; changes? <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; A sample tile location would be as follows: <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; ......\ <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'>Repositories\TileCache\Samples_Sheboygan_Maps_Sheboygan\7
<br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; \Base <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; Layer Group\R2\C3\3_4.png <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; The R and C indices correspond to rows and columns
where 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'>row <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; contains 30 tiles
vertically and each column contains 30 <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 <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; horizontally. <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; This indicates that: <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; 1)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; We're
at zoom level 7 <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; 2)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; We're
in grouped row 2 <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; 3)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; We're
in grouped column 3 <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; 4)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; The
tile location within this grouped row/column <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; combination is (3,4). <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; The R and C indices never take a zero value
(to avoid issues <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'>with <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; negative values
around the origin), so this tile corresponds <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'>to a <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; location of (33, 64)
in the old scheme. <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; I took a quick look at the Tile Map Service
Specification, <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'>but it <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; doesn't appear to
support the concept of grouping blocks 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'>tiles <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; into subfolders in
its current form. Can you provide more <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; information on whether this is possible? <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; Chris. <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; _______________________________________________
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; mapguide-internals mailing list <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <a
href="mailto:mapguide-internals@lists.osgeo.org">mapguide-internals@lists.osgeo.org</a>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <a
href="http://lists.osgeo.org/mailman/listinfo/mapguide-internals">http://lists.osgeo.org/mailman/listinfo/mapguide-internals</a>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; <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>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt; |Paul
Spencer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a href="mailto:pspencer@dmsolutions.ca">pspencer@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'>&nbsp;&nbsp; | <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt; <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>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt; |Chief Technology Officer
<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'>&nbsp;&nbsp; | <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt; |DM Solutions Group Inc <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'><a href="http://www.dmsolutions.ca/">http://www.dmsolutions.ca/</a>
| <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt; <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>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;&gt;
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; _______________________________________________ <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; mapguide-internals mailing list <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; <a href="mailto:mapguide-internals@lists.osgeo.org">mapguide-internals@lists.osgeo.org</a>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; <a
href="http://lists.osgeo.org/mailman/listinfo/mapguide-internals">http://lists.osgeo.org/mailman/listinfo/mapguide-internals</a>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; _______________________________________________ <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; mapguide-internals mailing list <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; <a href="mailto:mapguide-internals@lists.osgeo.org">mapguide-internals@lists.osgeo.org</a>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; <a
href="http://lists.osgeo.org/mailman/listinfo/mapguide-internals">http://lists.osgeo.org/mailman/listinfo/mapguide-internals</a>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; <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'>&nbsp;&nbsp;&nbsp;&nbsp;+-----------------------------------------------------------------+
<br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;|Paul
Spencer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a href="mailto:pspencer@dmsolutions.ca">pspencer@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'>&nbsp;| <br>
<br>
<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>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;+-----------------------------------------------------------------+
<br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;|Chief Technology Officer <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'>&nbsp;| <br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp;|DM Solutions Group Inc <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'><a href="http://www.dmsolutions.ca/">http://www.dmsolutions.ca/</a>
| <br>
<br>
<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>&nbsp;</o:p></span></font></p>

<p class=MsoNormal><font size=3 color=black face="Times New Roman"><span
style='font-size:12.0pt'>&nbsp;&nbsp;&nbsp;&nbsp;+-----------------------------------------------------------------+
<br>
<br>
<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'>&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp; <br>
&nbsp;&nbsp;&nbsp;&nbsp;_______________________________________________ <br>
&nbsp;&nbsp;&nbsp;&nbsp;mapguide-internals mailing list <br>
&nbsp;&nbsp;&nbsp;&nbsp;<a href="mailto:mapguide-internals@lists.osgeo.org">mapguide-internals@lists.osgeo.org</a>
<br>
&nbsp;&nbsp;&nbsp;&nbsp;<a
href="http://lists.osgeo.org/mailman/listinfo/mapguide-internals">http://lists.osgeo.org/mailman/listinfo/mapguide-internals</a>
<br>
&nbsp;&nbsp;&nbsp;&nbsp; <br>
<br>
&lt;winmail.dat&gt; <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&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a href="mailto:pspencer@dmsolutions.ca">pspencer@dmsolutions.ca</a>&nbsp;&nbsp;&nbsp;
| <br>
+-----------------------------------------------------------------+ <br>
|Chief Technology
Officer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
| <br>
|DM Solutions Group
Inc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a href="http://www.dmsolutions.ca/">http://www.dmsolutions.ca/</a> | <br>
+-----------------------------------------------------------------+ <br>
<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&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<a href="mailto:pspencer@dmsolutions.ca">pspencer@dmsolutions.ca</a>&nbsp;&nbsp;&nbsp;
| <br>
+-----------------------------------------------------------------+ <br>
|Chief Technology
Officer&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
| <br>
|DM Solutions Group
Inc&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;
<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>&nbsp;</o:p></span></font></p>

</div>

</body>

</html>