Jeff,

For tiger data I use the counties as that is the way the data is organized so I have 3300 counties in the US and each county is a directory with all the layers in that directory.

For Navteq data, I use shp2tile with the quad tree option and limit the maximum number of entities in a tile to 8000. This seems to work reasonably well, but I haven't actual tested variations on that to see what is better.

You also should build mapserver with the debug option in ./configure and then add DEBUG ON in all you layers and look at the apache error log for the timing info on the layers. One of the big killers is the labelcache processing time.

<soapbox>
I have discussed a new algorithm on the dev list regarding the labelcache processing that should change the it from O(n*(n-1)) to O(n) complexity problem. I'm hoping I can get someone to champion the development because when there are a lot of labels the current labelcache processing can take nearly 50% to the map rendering time.
</soapbox>

If the labelcache is you problem, try to thin the number of objects that could potentially be labeled at the zoom scale in question. You might try splitting the shapefile based on road class into major and minor roads and only labeling the major roads until you are zoomed in even more.

-Steve

Jeff Dege wrote:
In my particular case, I'm only using this layer when zoomed in tightly.

The shapefile in question contains street data.  There are millions of
features in the original shapefile.  But I have very much smaller
shapefiles containing only the major roads, only the highways, and only
the interestates, that I use at wider zoom levels.  It's only at the
tight zooms that I will draw the individual streets, so trying to read
large numbers of tiles is not an issue.

What's surprised me in this case is that it's the first time where only
drawing detail on close-in zooms, and adding spatial indexes to the
shapefiles with shptree wasn't enough to get reasonable performance.

I'm currently running shp2tile with different arguments, trying to see
how speed vs. number of files trade off against one another.  But with a
half-gig shapefile, each trial is taking a while.

My current fastest attempt cut the time to draw to 1/4 of what I
originally had.  Which isn't fast enough.

-----Original Message-----
From: UMN MapServer Users List [mailto:[EMAIL PROTECTED] On Behalf Of Ed McNierney
Sent: Monday, April 23, 2007 1:05 PM
To: [email protected]
Subject: Re: [UMN_MAPSERVER-USERS] Attributes in tile indexes?

Jeff -

In addition to Steve's suggestion, please keep in mind that what you are trying to do is reduce the amount of data MapServer needs to read in order to retrieve the data you need. Think about your data carefully and see
whether you're achieving that goal.

First, splitting the shapefile into multiple files and indexing them with a TILEINDEX helps MapServer select a subset of that data to be used for a given map draw. If MapServer has to open most or all of those shapefiles
anyway, then the TILEINDEX isn't going to do a thing!

Since your method of producing shapefile tiles will minimize overlap between files, you should also check the relationship of your map's spatial extent with those tiles. Ideally, each tile should be (roughly) somewhat larger than the extent of the map view. With rectangularly-tiled data, you cannot avoid situations where the map view is centered on a corner and you need to open four different input shapefiles. If each rectangular tile is, however, slightly larger than the map image size, then you will never get a situation
that is WORSE than four input files.  If you render a zoomed-out view
covering dozens of input files, your TILEINDEX isn't going to help much.

Think about how your TILEINDEX and split shapefiles are behaving. Have you substantially eliminated most of your input data from consideration in a map-drawing request? If not, then you need to go back and think about how to restructure your tiling and indexing, since that's the whole goal of
those techniques.

     - Ed

--
Ed McNierney
President and Chief Mapmaker
Maps a la carte, Inc. / TopoZone.com
73 Princeton Street, Suite 305
North Chelmsford, MA  01863
Phone: (978) 251-4242
Fax: (978) 251-1396
[EMAIL PROTECTED]

From: Stephen Woodbridge <[EMAIL PROTECTED]>
Reply-To: Stephen Woodbridge <[EMAIL PROTECTED]>
Date: Mon, 23 Apr 2007 11:53:56 -0400
To: <[email protected]>
Subject: Re: [UMN_MAPSERVER-USERS] Attributes in tile indexes?

Jeff,

Make SURE all your tiles have a spatial index *.qix and the
tileindex
also has a spatial index. These can be built with

   shptree file.shp

-Steve W.

Jeff Dege wrote:
OK - I knew I had to be doming something stupid.

To tell a layer to draw using a tileindex shapefile, you
include the
commands:

   TILEINDEX "tileindex"
   TILEITEM "LOCATION"

Using:

   DATA "tileindex"

won't work.

Now, after all of that, drawing with the split shapefiles
is slower than
with the original.  So there's still some playing to do.
-----Original Message-----
From: UMN MapServer Users List
[mailto:[EMAIL PROTECTED] On Behalf Of Jeff Dege
Sent: Monday, April 23, 2007 9:53 AM
To: [email protected]
Subject: Re: [UMN_MAPSERVER-USERS] Attributes in tile indexes?

Well, I've been looking at this in more detail, and
finding that the
tileindex layer isn't drawing at all.  With all other layers
turned off,
when I use shp2img with an extent that causes the tile layer
to draw, I
get a blank image.  When I change the layer to use the original
shapefile, I get the data displayed.  (And the layer takes 40
seconds to
draw, even after I've run shptree on the shapefile, which
is why I've
been playing around with tiling.)

I identified the individual tile shapefile that contains
the area I'm
trying to draw and used it directly, and it works fine.  So the
splitting apart seems to be working.  But the tileindex
shapefile seems
to be broken.

-----Original Message-----
From: UMN MapServer Users List
[mailto:[EMAIL PROTECTED] On Behalf Of Stephen
Woodbridge
Sent: Saturday, April 21, 2007 7:15 AM
To: [email protected]
Subject: Re: [UMN_MAPSERVER-USERS] Attributes in tile indexes?

Jeff,

This should just work. There is nothing special you should
have to do. I do it all the time with my mapfiles. I use shp2tile to break mine up but that should not make a difference.

First I would try changing your layer to use just one of
the smaller
shape files without the tileindex and see if that works and
that you can display the labels.

You might also want to post info about what OS, version of
mapserver,
and the LAYER block in question.

-Steve W

Jeff Dege wrote:
I have a shape file that's too big to draw maps with -
takes far too
long.

In an attempt to speed things up, I split it into 16
smaller shapefiles,
using:

ogr2ogr -f "ESRI Shapefile" -spat xmin ymin xmax
ymax newXX.shp
old.shp

Then did a shptree on each of these new files, then a
shptinidex to
create a single tile index shapefile on them, and tried to
build a map.
It works fine, so long as I don't try to display labels.
But if I do, I
get errors:

   msDBFGetItemIndex(): Item 'NAME' not found.

Where "NAME" is the attribute I'm trying to use for the
label.  It looks
like the tileindex shapefile doesn't expose the
attributes of the
underlying shape tiles.  I've done an ogrinfo on the
shapefiles that I'd
generated, and the attributes are there.

Can I expose the attributes through the tileindex?

How?

Reply via email to