Hi Dane,
Thanks for the reply. I think that #1 is my problem here. I am seeing
plenty of these:
select xmin(ext),ymin(ext),xmax(ext),ymax(ext) from (select extent(geometry)
as ext from web_plotgeometry) as tmp
so I changed my datasource definition to be this:
lyr.datasource = PostGIS(host='localhost', user='postgres', password='',
dbname='nextdoor', estimate_extent='false', extent='-124.454454821,
32.3352604235004,-69.957842017, 47.688798', srid='4326',
geometry_table='web_plotgeometry',
table='(select geometry, color, 1 as
snohood from web_plotgeometry WHERE neighborhood_id=%s) as web_plotgeometry'
% hood.id)
but I'm still seeing those extent queries. Am I missing something?
On Tue, Apr 12, 2011 at 5:05 PM, Dane Springmeyer <[email protected]> wrote:
> Hi David:
>
> 1) When constructing a postgis you need to be careful to avoid triggering a
> call to ST_Extent() which can be very slow. Basically you best bet is to
> calculate the extent of your table once and then always pass the extent as
> an option when you create the postgis datasource, eg.
> extent='-179,-60,179,60'
>
> Also, if you pass the srid and the name of the geometry table (in your case
> 'web_plotgeometry') that will also allow mapnik to skip a few setup queries
> and get going rendering even faster.
>
> 2) Have you vacuumed recently?
>
> 3) It appears you are requiring mapnik to re project geometries on the fly.
> If you store you data in the map projection your renders will be faster.
>
> Dane
>
>
> On Apr 12, 2011, at 4:50 PM, David Wiesen wrote:
>
> I have been using mapnik for a while with a rather small PostGIS database.
> Recently, my database became significantly larger (currently about 8
> million geometries),
> and I am now seeing calls to render() being very slow (20-30 seconds).
>
> I believe my database is properly indexed, and I've noticed that mapnik's
> queries run extremely quickly. For example:
>
> SELECT AsBinary("geometry",'NDR') AS geom,"color","nohood" from (select
> geometry, color, 1 as nohood from web_plotgeometry WHERE neighborhood_id=1)
> as web_plotgeometry WHERE "geometry" && SetSRID('BOX3D(-122.1830749511719
> 37.47703779669804,-122.1817016601562 37.4781276287212)'::box3d, 4326);
>
> executes almost instantly.
>
> Furthermore, my features are not very complex, and the tiles I am
> generating don't have a lot of features on them
> (roughly dozens, usually). So I'm wondering if anyone has hints on where
> the slowdown is
>
> At a basic level, here is the relevant part of my code.
>
> Thanks for looking!
> David
>
> ---------------
>
> lyr = Layer('Neighborhood, '+init=epsg:4326')
> lyr.datasource = PostGIS(host='localhost', user='postgres', password='',
> dbname='nextdoor',
> table='(select geometry, color, 1 as snohood from
> web_plotgeometry WHERE neighborhood_id=%s) as web_plotgeometry' % hood.id)
>
> map_obj = Map(int(query['WIDTH']), int(query['HEIGHT']),
> '+init=epsg:3857')
> map_obj.append_style('color', self.style) # self.style is a very simple
> style with 3 rules.
>
> bbox = map(float, query['BBOX'].split(','))
> map_obj.zoom_to_box(Envelope(*bbox))
>
> image = Image(int(query['WIDTH']), int(query['HEIGHT']))
>
> # SLOW
> render(map_obj, image)
> png_data = image.tostring(common.PIL_TYPE_MAPPING[query['FORMAT']])
> return png_data
>
>
>
>
> _______________________________________________
> Mapnik-users mailing list
> [email protected]
> https://lists.berlios.de/mailman/listinfo/mapnik-users
>
>
>
_______________________________________________
Mapnik-users mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/mapnik-users