<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Hey Paul, I think that is because you explicitly added him, for some
weird reason this list is already set to <b>reply to list</b>. The
change in question would not have made a difference in this case...<br>
<br>
Bob<br>
<br>
Paul Spencer wrote:
<blockquote
 cite="mid2ED16901-1E08-478F-8803-0A4D52397516@dmsolutions.ca"
 type="cite">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>
  <blockquote type="cite">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>
    <blockquote type="cite">
      <blockquote type="cite">
        <blockquote type="cite">Paul Spencer
<a class="moz-txt-link-rfc2396E" href="mailto:pspencer@dmsolutions.ca">&lt;pspencer@dmsolutions.ca&gt;</a> 01/15/07 7:03 PM &gt;&gt;&gt;
          <br>
        </blockquote>
      </blockquote>
    </blockquote>
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, Walt Welton-Lair wrote:
    <br>
    <br>
    <blockquote type="cite">"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?&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 class="moz-txt-link-abbreviated" href="mailto:mapguide-internals-bounces@lists.osgeo.org">mapguide-internals-bounces@lists.osgeo.org</a> on behalf of
      <br>
    </blockquote>
Paul
    <br>
    <blockquote type="cite">Spencer (External)
      <br>
&nbsp;&nbsp;&nbsp;&nbsp;Sent: Mon 1/15/2007 7:40 PM
      <br>
&nbsp;&nbsp;&nbsp;&nbsp;To: MapGuide Internals Mail List
      <br>
&nbsp;&nbsp;&nbsp;&nbsp;Cc:
      <br>
&nbsp;&nbsp;&nbsp;&nbsp;Subject: Re: [mapguide-internals] RFC required for tile caching
      <br>
    </blockquote>
    <br>
    <blockquote type="cite">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,
      <br>
    </blockquote>
typically 10
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;x 10.&nbsp; When a request for a tile comes
to the tile server, it
      <br>
    </blockquote>
checks
    <br>
    <blockquote type="cite">&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
      <br>
    </blockquote>
happens
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;without invoking any map rendering ...
the tile exists as an
      <br>
    </blockquote>
image on
    <br>
    <blockquote type="cite">&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
      <br>
    </blockquote>
the
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;size of the meta tile is rendered and
sliced into tile-sized
      <br>
    </blockquote>
chunks
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;that are stored on disk in the cache
directory structure.&nbsp; While
      <br>
    </blockquote>
the
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;tiles are being created, a lock file is
used to 'pause' requests
      <br>
    </blockquote>
for
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;tiles in the same meta-tile directory
so that they can all be
      <br>
    </blockquote>
served
    <br>
    <blockquote type="cite">&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
      <br>
    </blockquote>
suffers
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;from edge effects when rendering map
images.&nbsp; This is normally
      <br>
    </blockquote>
not
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;noticeable, but when you put several
map draws together in a
      <br>
    </blockquote>
tiled
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;client, it becomes horribly obvious.&nbsp;
The solution was to render
      <br>
    </blockquote>
a
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;slightly larger map image (about 10
pixels in fact) and clip out
      <br>
    </blockquote>
the
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;center as the tile.&nbsp; Second, MapServer
labelling only considers
      <br>
    </blockquote>
the
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;current map draw.&nbsp; Depending on the
size of the rendered label,
      <br>
    </blockquote>
it
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;may not fit into a single tile.&nbsp;
Depending on the size of a
      <br>
    </blockquote>
feature,
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;the label may appear on several
adjacent tiles.&nbsp; In lieu of
      <br>
    </blockquote>
fixing
    <br>
    <blockquote type="cite">&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
      <br>
    </blockquote>
expensive to
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;parse the map file and find/read the
data compared to rendering
      <br>
    </blockquote>
so
    <br>
    <blockquote type="cite">&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
      <br>
    </blockquote>
I
    <br>
    <blockquote type="cite">&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;
      <br>
      <br>
    </blockquote>
&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>
    <blockquote type="cite">&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
      <br>
    </blockquote>
if
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;the meta-tile directory exists to know
if any tile in the
      <br>
    </blockquote>
directory
    <br>
    <blockquote type="cite">&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
      <br>
    </blockquote>
is
    <br>
    <blockquote type="cite">&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
      <br>
    </blockquote>
directory
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;between different maps simply by
creating symlinks or by
      <br>
    </blockquote>
allowing a
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;per-layer-group setting that indicates
the root directory to
      <br>
    </blockquote>
keep the
    <br>
    <blockquote type="cite">&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
      <br>
    </blockquote>
support
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;&gt; of the
      <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; directory structure change.&nbsp; Here are some approximate numbers
      <br>
    </blockquote>
for
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;&gt; directory entry and file system
entries that I pulled from an
      <br>
    </blockquote>
    <br>
    <blockquote type="cite">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 +
      <br>
    </blockquote>
length of
    <br>
    <blockquote type="cite">&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
      <br>
    </blockquote>
of
    <br>
    <blockquote type="cite">&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
      <br>
    </blockquote>
then
    <br>
    <blockquote type="cite">&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
      <br>
    </blockquote>
each
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;&gt; other
      <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; should like in the same directory.&nbsp; This reduces the directory
      <br>
    </blockquote>
    <br>
    <blockquote type="cite">entry
      <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; reads for each tile request.&nbsp; If we also assume that the read
      <br>
    </blockquote>
block
    <br>
    <blockquote type="cite">&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
      <br>
    </blockquote>
    <br>
    <blockquote type="cite">arrays)
      <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; then a directory with 900 entries (30x30 block) will get read
      <br>
    </blockquote>
in a
    <br>
    <blockquote type="cite">&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
      <br>
    </blockquote>
same
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;&gt; directory.&nbsp; Since the directory
was just read, it will be
      <br>
    </blockquote>
cached
    <br>
    <blockquote type="cite">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
      <br>
    </blockquote>
entries
    <br>
    <blockquote type="cite">&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
      <br>
    </blockquote>
blocks
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; may be
      <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; more efficient but cutting the tiles up from these larger
      <br>
    </blockquote>
images
    <br>
    <blockquote type="cite">will
      <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; require some computational effort.&nbsp; Rendering the tiles in the
      <br>
    </blockquote>
same
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;&gt; size
      <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; as requested from the client reduces server load because the
      <br>
    </blockquote>
HTTP
    <br>
    <blockquote type="cite">&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,
      <br>
    </blockquote>
    <br>
    <blockquote type="cite">MapGuide
      <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; tile serving speeds using "client-sized" tiles are quite
      <br>
respectable.
      <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; On a machine with a single 3GHz CPU, MapGuide can service more
      <br>
    </blockquote>
than
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;&gt; 100
      <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; tiles per second assuming the tiles are being served from
      <br>
    </blockquote>
memory,
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;&gt; ie. no
      <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; disk access.&nbsp; The additional computational effort required to
      <br>
    </blockquote>
    <br>
    <blockquote type="cite">generate
      <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; "client" tiles from larger pixel blocks will significantly
      <br>
    </blockquote>
impact
    <br>
    <blockquote type="cite">&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 class="moz-txt-link-abbreviated" href="mailto:mapguide-internals-bounces@lists.osgeo.org">mapguide-internals-bounces@lists.osgeo.org</a>
      <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; [<a class="moz-txt-link-freetext" href="mailto:mapguide-internals-bounces@lists.osgeo.org">mailto:mapguide-internals-bounces@lists.osgeo.org</a>] On Behalf
      <br>
    </blockquote>
Of
    <br>
    <blockquote type="cite">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: MapGuide Internals Mail List
      <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; Subject: Re: [mapguide-internals] RFC required for tile
      <br>
    </blockquote>
caching
    <br>
    <blockquote type="cite">&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
      <br>
    </blockquote>
r/
    <br>
    <blockquote type="cite">c is
      <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; essentially the same approach I took with ka-Map (for the same
      <br>
    </blockquote>
    <br>
    <blockquote type="cite">reason
      <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; that Chris brought this up) and it seems to work very well.
      <br>
    </blockquote>
In ka-
    <br>
    <blockquote type="cite">&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 US) without running
      <br>
    </blockquote>
into
    <br>
    <blockquote type="cite">&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
      <br>
    </blockquote>
size
    <br>
    <blockquote type="cite">&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
      <br>
    </blockquote>
know
    <br>
    <blockquote type="cite">we use
      <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; ReiserFS because it handles lots of small files better than
      <br>
    </blockquote>
ext3
    <br>
    <blockquote type="cite">for
      <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; instance.&nbsp; Knowing some of this might help make the caching
      <br>
    </blockquote>
system
    <br>
    <blockquote type="cite">&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,
      <br>
    </blockquote>
what
    <br>
    <blockquote type="cite">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
      <br>
    </blockquote>
    <br>
    <blockquote type="cite">(30 *
      <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; tile index div 30) and then the file part would be (tile
      <br>
    </blockquote>
index mod
    <br>
    <blockquote type="cite">&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
      <br>
    </blockquote>
    <br>
    <blockquote type="cite">index
      <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; can be computed directly from the file path, by adding the
      <br>
    </blockquote>
folder
    <br>
    <blockquote type="cite">&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
      <br>
    </blockquote>
many
    <br>
    <blockquote type="cite">images
      <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; in one directory? Is it a file system issue? And how many
      <br>
    </blockquote>
tiles is
    <br>
    <blockquote type="cite">&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 class="moz-txt-link-abbreviated" href="mailto:mapguide-internals-bounces@lists.osgeo.org">mapguide-internals-bounces@lists.osgeo.org</a> on behalf
of
      <br>
    </blockquote>
    <br>
    <blockquote type="cite">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: MapGuide Internals Mail List
      <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; Cc:
      <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; Subject: RE: [mapguide-internals] RFC required for tile
      <br>
    </blockquote>
caching
    <br>
    <blockquote type="cite">&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 "tiling" 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 class="moz-txt-link-abbreviated" href="mailto:mapguide-internals-bounces@lists.osgeo.org">mapguide-internals-bounces@lists.osgeo.org</a> on behalf
of
      <br>
    </blockquote>
    <br>
    <blockquote type="cite">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: MapGuide Internals Mail List
      <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; Subject: RE: [mapguide-internals] RFC required for tile
      <br>
    </blockquote>
caching
    <br>
    <blockquote type="cite">&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; ......\
      <br>
    </blockquote>
Repositories\TileCache\Samples_Sheboygan_Maps_Sheboygan\7
    <br>
    <blockquote type="cite">&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
      <br>
    </blockquote>
row
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; contains 30 tiles vertically
and each column contains 30
      <br>
    </blockquote>
tiles
    <br>
    <blockquote type="cite">&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
      <br>
    </blockquote>
with
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; negative values around the
origin), so this tile corresponds
      <br>
    </blockquote>
to a
    <br>
    <blockquote type="cite">&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,
      <br>
    </blockquote>
but it
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; doesn't appear to support the
concept of grouping blocks of
      <br>
    </blockquote>
tiles
    <br>
    <blockquote type="cite">&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 class="moz-txt-link-abbreviated" href="mailto:mapguide-internals@lists.osgeo.org">mapguide-internals@lists.osgeo.org</a>
      <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt;&gt; <a class="moz-txt-link-freetext" 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>
    </blockquote>
+-----------------------------------------------------------------+
    <br>
    <blockquote type="cite">&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 class="moz-txt-link-abbreviated" href="mailto:pspencer@dmsolutions.ca">pspencer@dmsolutions.ca</a>
      <br>
    </blockquote>
&nbsp;&nbsp; |
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;&gt;
      <br>
    </blockquote>
+-----------------------------------------------------------------+
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;&gt; |Chief Technology Officer
      <br>
    </blockquote>
&nbsp;&nbsp; |
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;&gt; |DM Solutions Group Inc
      <br>
    </blockquote>
<a class="moz-txt-link-freetext" href="http://www.dmsolutions.ca/">http://www.dmsolutions.ca/</a> |
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;&gt;
      <br>
    </blockquote>
+-----------------------------------------------------------------+
    <br>
    <blockquote type="cite">&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 class="moz-txt-link-abbreviated" href="mailto:mapguide-internals@lists.osgeo.org">mapguide-internals@lists.osgeo.org</a>
      <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; <a class="moz-txt-link-freetext" 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 class="moz-txt-link-abbreviated" href="mailto:mapguide-internals@lists.osgeo.org">mapguide-internals@lists.osgeo.org</a>
      <br>
&nbsp;&nbsp;&nbsp;&nbsp;&gt; <a class="moz-txt-link-freetext" 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>
    </blockquote>
&nbsp;&nbsp;&nbsp;&nbsp;+-----------------------------------------------------------------+
    <br>
    <blockquote type="cite">&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 class="moz-txt-link-abbreviated" href="mailto:pspencer@dmsolutions.ca">pspencer@dmsolutions.ca</a>
      <br>
    </blockquote>
&nbsp;|
    <br>
    <blockquote type="cite"><br>
    </blockquote>
&nbsp;&nbsp;&nbsp;&nbsp;+-----------------------------------------------------------------+
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;|Chief Technology Officer
      <br>
    </blockquote>
&nbsp;|
    <br>
    <blockquote type="cite">&nbsp;&nbsp;&nbsp;&nbsp;|DM Solutions Group Inc
      <br>
    </blockquote>
<a class="moz-txt-link-freetext" href="http://www.dmsolutions.ca/">http://www.dmsolutions.ca/</a> |
    <br>
    <blockquote type="cite"><br>
    </blockquote>
&nbsp;&nbsp;&nbsp;&nbsp;+-----------------------------------------------------------------+
    <br>
    <blockquote type="cite">&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 class="moz-txt-link-abbreviated" href="mailto:mapguide-internals@lists.osgeo.org">mapguide-internals@lists.osgeo.org</a>
      <br>
&nbsp;&nbsp;&nbsp;&nbsp;<a class="moz-txt-link-freetext" 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 class="moz-txt-link-abbreviated" href="mailto:mapguide-internals@lists.osgeo.org">mapguide-internals@lists.osgeo.org</a>
      <br>
<a class="moz-txt-link-freetext" href="http://lists.osgeo.org/mailman/listinfo/mapguide-internals">http://lists.osgeo.org/mailman/listinfo/mapguide-internals</a>
      <br>
    </blockquote>
    <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 class="moz-txt-link-abbreviated" 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 class="moz-txt-link-freetext" href="http://www.dmsolutions.ca/">http://www.dmsolutions.ca/</a> |
    <br>
+-----------------------------------------------------------------+
    <br>
    <br>
    <br>
    <br>
    <br>
    <br>
  </blockquote>
  <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 class="moz-txt-link-abbreviated" 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 class="moz-txt-link-freetext" href="http://www.dmsolutions.ca/">http://www.dmsolutions.ca/</a> |
  <br>
+-----------------------------------------------------------------+
  <br>
  <br>
  <br>
  <br>
  <br>
_______________________________________________
  <br>
mapguide-internals mailing list
  <br>
<a class="moz-txt-link-abbreviated" href="mailto:mapguide-internals@lists.osgeo.org">mapguide-internals@lists.osgeo.org</a>
  <br>
<a class="moz-txt-link-freetext" href="http://lists.osgeo.org/mailman/listinfo/mapguide-internals">http://lists.osgeo.org/mailman/listinfo/mapguide-internals</a>
  <br>
  <br>
</blockquote>
<br>
</body>
</html>