<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML xmlns="http://www.w3.org/TR/REC-html40" 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"><HEAD>
<META http-equiv=Content-Type content="text/html; charset=us-ascii">
<META content="MSHTML 6.00.2900.3020" name=GENERATOR><!--[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 name="country-region"
namespaceuri="urn:schemas-microsoft-com:office:smarttags"></o:SmartTagType><o:SmartTagType
name="place"
namespaceuri="urn:schemas-microsoft-com:office:smarttags"></o:SmartTagType><o:SmartTagType
name="PersonName"
namespaceuri="urn:schemas-microsoft-com:office:smarttags"></o:SmartTagType><!--[if !mso]>
<STYLE>st1\:* {
        BEHAVIOR: url(#default#ieooui)
}
</STYLE>
<![endif]-->
<STYLE>@font-face {
        font-family: Tahoma;
}
@page Section1 {size: 8.5in 11.0in; margin: 1.0in 1.25in 1.0in 1.25in; }
P.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0in 0in 0pt; COLOR: black; FONT-FAMILY: "Times New Roman"
}
LI.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0in 0in 0pt; COLOR: black; FONT-FAMILY: "Times New Roman"
}
DIV.MsoNormal {
        FONT-SIZE: 12pt; MARGIN: 0in 0in 0pt; COLOR: black; FONT-FAMILY: "Times New Roman"
}
A:link {
        COLOR: blue; TEXT-DECORATION: underline
}
SPAN.MsoHyperlink {
        COLOR: blue; TEXT-DECORATION: underline
}
A:visited {
        COLOR: blue; TEXT-DECORATION: underline
}
SPAN.MsoHyperlinkFollowed {
        COLOR: blue; TEXT-DECORATION: underline
}
SPAN.EmailStyle17 {
        COLOR: navy; FONT-FAMILY: Arial; mso-style-type: personal-reply
}
DIV.Section1 {
        page: Section1
}
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 lang=EN-US vLink=blue link=blue bgColor=white>
<DIV dir=ltr align=left><SPAN class=139522820-23012007><FONT face=Arial
color=#0000ff size=2>Hi Chris,</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=139522820-23012007><FONT face=Arial
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=139522820-23012007><FONT face=Arial
color=#0000ff size=2>As an additional item, can we add serverconfig.ini
parameters to control the following: </FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=139522820-23012007><FONT face=Arial
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=139522820-23012007><FONT face=Arial
color=#0000ff size=2>- Size of the cache tile where the tiles assumed to be
square "TileSize = 300" for 300x300 tiles</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=139522820-23012007><FONT face=Arial
color=#0000ff size=2>- Tile block size, ie. the mod value in the discussion
below "TileBlockSize = 30"</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=139522820-23012007><FONT face=Arial
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=139522820-23012007><FONT face=Arial
color=#0000ff size=2>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.</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=139522820-23012007><FONT face=Arial
color=#0000ff size=2></FONT></SPAN> </DIV>
<DIV dir=ltr align=left><SPAN class=139522820-23012007><FONT face=Arial
color=#0000ff size=2>Thanks,</FONT></SPAN></DIV>
<DIV dir=ltr align=left><SPAN class=139522820-23012007><FONT face=Arial
color=#0000ff size=2>Trevor</FONT></SPAN></DIV><BR>
<DIV class=OutlookMessageHeader lang=en-us dir=ltr align=left>
<HR tabIndex=-1>
<FONT face=Tahoma size=2><B>From:</B> mapguide-internals-bounces@lists.osgeo.org
[mailto:mapguide-internals-bounces@lists.osgeo.org] <B>On Behalf Of </B>Chris
Claydon<BR><B>Sent:</B> Tuesday, January 23, 2007 1:26 PM<BR><B>To:</B> MapGuide
Internals Mail List<BR><B>Subject:</B> RE: [mapguide-internals] RFC required for
tile caching changes?<BR></FONT><BR></DIV>
<DIV></DIV>
<DIV class=Section1>
<P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">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 face=Arial color=navy size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">Thanks,<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">Chris.<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal
style="MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo1"><![if !supportLists]><FONT
face=Arial color=navy size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><SPAN
style="mso-list: Ignore">1)<FONT face="Times New Roman" size=1><SPAN
style="FONT: 7pt 'Times New Roman'">
</SPAN></FONT></SPAN></SPAN></FONT><![endif]><FONT face=Arial color=navy
size=2><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">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.<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal
style="MARGIN-LEFT: 0.5in; TEXT-INDENT: -0.25in; mso-list: l1 level1 lfo1"><![if !supportLists]><FONT
face=Arial color=navy size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><SPAN
style="mso-list: Ignore">2)<FONT face="Times New Roman" size=1><SPAN
style="FONT: 7pt 'Times New Roman'">
</SPAN></FONT></SPAN></SPAN></FONT><![endif]><FONT face=Arial color=navy
size=2><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">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 face=Arial color=navy size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 0.25in"><FONT face=Arial color=navy
size=2><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">“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).<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 0.25in"><FONT face=Arial color=navy
size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"> <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 0.25in"><FONT face=Arial color=navy
size=2><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">So for
tile 33,64 the folder would be:<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 0.25in"><FONT face=Arial color=navy
size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"> <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 0.25in"><FONT face=Arial color=navy
size=2><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">Base Layer
Group/30/60/3_4.png<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 0.25in"><FONT face=Arial color=navy
size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"> <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 0.25in"><FONT face=Arial color=navy
size=2><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">And for
tile -33,-64 the folder would be:<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 0.25in"><FONT face=Arial color=navy
size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"> <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 0.25in"><FONT face=Arial color=navy
size=2><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">Base Layer
Group/-30/-60/-3_-4.png<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 0.25in"><FONT face=Arial color=navy
size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"> <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 0.25in"><FONT face=Arial color=navy
size=2><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">For tile
1,1, the folder would be:<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 0.25in"><FONT face=Arial color=navy
size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"> <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 0.25in"><FONT face=Arial color=navy
size=2><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">Base Layer
Group/0/0/1_1.png<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 0.25in"><FONT face=Arial color=navy
size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"> <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 0.25in"><FONT face=Arial color=navy
size=2><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">For tile
-1,-1 the folder would be:<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 0.25in"><FONT face=Arial color=navy
size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"> <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 0.25in"><FONT face=Arial color=navy
size=2><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">Base Layer
Group/-0/-0/-1_-1.png”<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 0.25in"><FONT face=Arial color=navy
size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN-LEFT: 0.25in"><FONT face=Arial color=navy
size=2><SPAN style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial">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.<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face=Arial color=navy size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: navy; FONT-FAMILY: Arial"><o:p> </o:p></SPAN></FONT></P>
<DIV>
<DIV class=MsoNormal style="TEXT-ALIGN: center" align=center><FONT
face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt; COLOR: windowtext">
<HR tabIndex=-1 align=center width="100%" SIZE=2>
</SPAN></FONT></DIV>
<P class=MsoNormal><B><FONT face=Tahoma color=black size=2><SPAN
style="FONT-WEIGHT: bold; FONT-SIZE: 10pt; COLOR: windowtext; FONT-FAMILY: Tahoma">From:</SPAN></FONT></B><FONT
face=Tahoma color=black size=2><SPAN
style="FONT-SIZE: 10pt; COLOR: windowtext; FONT-FAMILY: Tahoma">
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 face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">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 face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">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 face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">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 <BR><BR><BR><o:p></o:p></SPAN></FONT></P>
<BLOCKQUOTE style="MARGIN-TOP: 5pt; MARGIN-BOTTOM: 5pt" type="cite">
<BLOCKQUOTE style="MARGIN-TOP: 5pt; MARGIN-BOTTOM: 5pt" type="cite">
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">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:
<BR><BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">"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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">Paul <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"><BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">typically 10 <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> x 10. When a request for a
tile comes to the tile server, it <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">checks <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> the cache.
<BR> <BR> If the tile exists, the
tile (200x200px) is returned. This <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">happens <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> without invoking any map
rendering ... the tile exists as an <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">image on <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> 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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">the <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> size of the meta tile is
rendered and sliced into tile-sized <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">chunks <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> that are stored on disk in the
cache directory structure. While <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">the <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> tiles are being created, a lock
file is used to 'pause' requests <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">for <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> tiles in the same meta-tile
directory so that they can all be <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">served <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> 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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">suffers <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> from edge effects when rendering
map images. This is normally <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">not <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> noticeable, but when you put
several map draws together in a <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">tiled <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> client, it becomes horribly
obvious. The solution was to render <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">a <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> slightly larger map image (about
10 pixels in fact) and clip out <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">the <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> center as the tile.
Second, MapServer labelling only considers <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">the <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> current map draw.
Depending on the size of the rendered label, <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">it <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> may not fit into a single
tile. Depending on the size of a <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">feature, <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> the label may appear on several
adjacent tiles. In lieu of <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">fixing <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> 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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">expensive to <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> parse the map file and find/read
the data compared to rendering <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">so <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> 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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">I <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN-BOTTOM: 12pt"><FONT face="Times New Roman"
color=black size=3><SPAN style="FONT-SIZE: 12pt"> 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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> <map>/<layer-group>/<scale>/<row-of-metatile>/<col-of-metatile>/<row-
<BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> 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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">if <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> the meta-tile directory exists
to know if any tile in the <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">directory <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> 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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">is <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> 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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">directory <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> between different maps simply by
creating symlinks or by <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">allowing a <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> per-layer-group setting that
indicates the root directory to <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">keep the <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> 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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">support <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> > of the
<BR> > directory structure change. Here are some
approximate numbers <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">for <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> > directory entry and file
system entries that I pulled from an <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"><BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">length of <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> > 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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">of <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> > 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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">then <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> > 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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">each <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> > other
<BR> > should like in the same directory. This
reduces the directory <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"><BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">entry <BR> > reads for each
tile request. If we also assume that the read
<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">block <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> > 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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"><BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">arrays) <BR> > then a
directory with 900 entries (30x30 block) will get read
<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">in a <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> > 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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">same <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> > directory. Since the
directory was just read, it will be <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">cached <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">entries <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> > 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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">blocks <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> >> may be
<BR> > more efficient but cutting the tiles up from
these larger <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">images <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">will <BR> > require some
computational effort. Rendering the tiles in the
<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">same <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> > size
<BR> > as requested from the client reduces server
load because the <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">HTTP <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> > 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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"><BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">than <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> > 100
<BR> > tiles per second assuming the tiles are being
served from <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">memory, <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> > ie. no
<BR> > disk access. The additional computational
effort required to <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"><BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">generate <BR> > "client" tiles
from larger pixel blocks will significantly <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">impact <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> > 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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">Of <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">caching <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> > 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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">r/ <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"><BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">reason <BR> > that Chris
brought this up) and it seems to work very well. <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">In ka- <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> > 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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">into <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> > 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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">size <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> > 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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">know <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">we use <BR> > ReiserFS because
it handles lots of small files better than <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">ext3 <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">for <BR> > instance.
Knowing some of this might help make the caching <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">system <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> > 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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">what <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"><BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">(30 * <BR> >> tile index
div 30) and then the file part would be (tile <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">index mod <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> >> 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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"><BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">index <BR> >> can be
computed directly from the file path, by adding the
<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">folder <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> >> 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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">many <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">images <BR> >> in one
directory? Is it a file system issue? And how many <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">tiles is <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> >> 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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"><BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">caching <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> >> 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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"><BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">caching <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> >> changes?
<BR> >> <BR> >> A
sample tile location would be as follows: <BR> >>
<BR> >> <BR> >>
......\ <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">Repositories\TileCache\Samples_Sheboygan_Maps_Sheboygan\7
<BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> >> \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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">row <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> >> contains 30 tiles
vertically and each column contains 30 <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">tiles <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> >> 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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">with <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> >> negative values around
the origin), so this tile corresponds <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">to a <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> >> 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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">but it <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> >> doesn't appear to
support the concept of grouping blocks of <o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">tiles <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> >> 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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">+-----------------------------------------------------------------+
<BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> > |Paul
Spencer
<A href="mailto:pspencer@dmsolutions.ca">pspencer@dmsolutions.ca</A>
<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> | <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> >
<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">+-----------------------------------------------------------------+
<BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> > |Chief Technology Officer
<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> | <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> > |DM Solutions Group Inc
<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"><A
href="http://www.dmsolutions.ca/">http://www.dmsolutions.ca/</A> |
<BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> >
<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt">+-----------------------------------------------------------------+
<BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN-BOTTOM: 12pt"><FONT face="Times New Roman"
color=black size=3><SPAN style="FONT-SIZE: 12pt"> >
<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><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> +-----------------------------------------------------------------+
<BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> |Paul
Spencer
<A href="mailto:pspencer@dmsolutions.ca">pspencer@dmsolutions.ca</A>
<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> | <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> +-----------------------------------------------------------------+
<BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> |Chief Technology Officer
<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> | <BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> |DM Solutions Group Inc
<o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"><A
href="http://www.dmsolutions.ca/">http://www.dmsolutions.ca/</A> |
<BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"><o:p> </o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> +-----------------------------------------------------------------+
<BR><BR><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal><FONT face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"> <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: 12pt"><FONT face="Times New Roman"
color=black size=3><SPAN
style="FONT-SIZE: 12pt"><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><o:p></o:p></SPAN></FONT></P>
<P class=MsoNormal style="MARGIN-BOTTOM: 12pt"><FONT face="Times New Roman"
color=black size=3><SPAN
style="FONT-SIZE: 12pt"><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 face="Times New Roman" color=black size=3><SPAN
style="FONT-SIZE: 12pt"><o:p> </o:p></SPAN></FONT></P></DIV></BODY></HTML>