Right. You probably won't be able to actually publish the numbers as Stanley pointed out, but for your own knowledge, I agree with Paul - round out your testing with different spatial joins, like STContains, STTouches, STCrosses, etc. with different geometry types (point/point, point/line, point/poly, line/line, line/poly, poly/poly). Test with different geometry sizes.

Test the spatial index by performing queries like "SELECT count(*) FROM mytable WHERE geom.Filter(@geom)" (the && equivalent operator in PostGIS) over large tables, each of a different geometry type.

Personally, I would limit the number of tests like you have in #4. Although interesting, you won't know how STArea and STIntersects comparatively perform using such a query (since they're both in the same query). Rather, test raw computation speed by computing the buffer, area, centroid, boundary, isvalid, pointonsurface, etc (in different tests of course) of several large polygonal tables (one with small polygons, one with large polygons, one mixed, etc). Try STUnion-ing an entire table of polygons and again of lines. If you really want to send shivers up your spine, I highly recommend you throw in some simple point-in-polygon tests (ie. 100's of thousands of points in a single large polygon of several 10's of thousands of vertices). I know Lion King is an old show, but I can't help but think "Mufasa".

Cheers,
Kevin

Sufficool, Stanley wrote:
Read the EULA on MSSQL first.

5.  BENCHMARK TESTING.  You must obtain Microsoft's prior written approval to 
disclose to a third party the results of any benchmark test of the software.  
However, this does not apply to the Microsoft .NET Framework (see below).


-----Original Message-----
From: [email protected] [mailto:[email protected]] On Behalf Of Paul Ramsey
Sent: Monday, November 09, 2009 3:08 PM
To: PostGIS Users Discussion
Subject: Re: [postgis-users] Small benchmark with PostGIS and MS SQL-ServerSpatial: Any suggestions?


On Mon, Nov 9, 2009 at 11:55 AM, Stefan Keller <[email protected]> wrote:

1. Loading data (SELECT * INTO...) and generating indices (CREATE SPATIAL INDEX...)

2. Non-spatial selection query (inc. filling table):
  SELECT * INTO query2_result FROM {dataset} t
    WHERE t.Name = n;
Don't do "SELECT INTO" as you'll muddy your query performance with insert performance.

3. Spatial query (inc. filling table):
  SELECT * FROM {dataset} t  INTO query3_result
    WHERE t.geom.STIntersects(@poly) = 1
I try to do these kinds of queries with a "SELECT count(*)" so that there is no penalty converting the rows returned into some kind of output format.

4. Combining two spatial functions (inc. filling table):
  SELECT * FROM {polygons} t INTO query3_result
    WHERE STArea(t.geom)>x AND t.geom.STIntersects(@poly) = 1

5. Join of a linestring and a point table  (inc. filling table):
  SELECT s.* FROM {linestrings} t
INNER JOIN {points} s ON STDistance(t.geom, s.geom) <= x INTO query5_result
    WHERE t.Type = 'Autobahn'
For PostGIS, you have to use ST_DWithin() to get an equivalent query to the STDistance query above.

Try some full table joins

select sum(length(p.geom)) from polys p join lines l on st_contains(p.geom, l.geom) where l.type = 'Autobahn'

Mix up the typologies, do st_contains/st_intersects of poly/poly, poly/line, poly/poing Mix up the geometry sizes, do the above on polygon tables of counties and of tracts

Publish all the SQL and the data tables so people can critique your work before you start publishing numbers.

P.
_______________________________________________
postgis-users mailing list [email protected]
http://postgis.refractions.net/mailman/listinfo/postgis-users

_______________________________________________
postgis-users mailing list
[email protected]
http://postgis.refractions.net/mailman/listinfo/postgis-users
_______________________________________________
postgis-users mailing list
[email protected]
http://postgis.refractions.net/mailman/listinfo/postgis-users

Reply via email to