On Jan 22, 2009, at 6:48 PM, Sergej Schwarz wrote:

> Dear all,
>
> I'm using RTree to have FAST possibility to extract all the  
> polygons, which intersect a specified window, overlap this specified  
> window or are completely in this window. Please see the picture at 
> http://home.arcor.de/schwar_s/images/polygons.jpg 
> . The idea is to find all the polygons are in the neighbor hood to  
> the polygon in the center of the window. The polygons in the  
> neighborhood are never diagonal but some of them are vertically  
> oriented, some of them are horizontally oriented.

SELECT * FROM LDB_RtreePolygons WHERE
   x1 <= window.x2 AND x2 >= window.x1 AND
   y1 <= window.y2 AND y2 >= window.y1






>
>
> I could not find any possibilities to find all these polygons by  
> using "just" one SQL query, so that I have to execute 6 different  
> queries. These here:
>
> //OVERLAP POLYGONS : horizontal overlap
> SELECT PolyID, X1, X2, Y1, Y2 FROM LDB_RtreePolygons
>  WHERE PolyID != target.PolygonID
>  AND X1<  window.x1  AND X2>  window.x2
>  AND Y1>= window.y1  AND Y2<= window.y2
>
> //OVERLAP POLYGONS : vertical overlap
> SELECT PolyID, X1, X2, Y1, Y2 FROM LDB_RtreePolygons
>  WHERE PolyID != target.PolygonID
>  AND Y1<  window.x1  AND Y2>  window.y2
>  AND X1>= window.x1  AND X2<= window.x2
>
> //POLYGONS INTERSECT top/left corner
> SELECT PolyID, X1, X2, Y1, Y2 FROM LDB_RtreePolygons
>  WHERE PolyID != target.PolygonID
>  AND X2>= window.x1  AND X2<= window.x2
>  AND Y1>= window.y1  AND Y1<= window.y2
>
> //POLYGONS INTERSECT top/right corner
> SELECT PolyID, X1, X2, Y1, Y2 FROM LDB_RtreePolygons
>  WHERE PolyID != target.PolygonID
>  AND X1>= window.x1  AND X1<= window.x2
>  AND Y1>= window.y1  AND Y1<= window.y2
>
> //POLYGONS INTERSECT bottom/left corner
> SELECT PolyID, X1, X2, Y1, Y2 FROM LDB_RtreePolygons
>  WHERE PolyID != target.PolygonID
>  AND X2>= window.x1  AND X2<= window.x2
>  AND Y2>= window.y1  AND Y2<= window.y2
>
> //POLYGONS INTERSECT bottom/right corner
> SELECT PolyID, X1, X2, Y1, Y2 FROM LDB_RtreePolygons
>  WHERE PolyID != target.PolygonID
>  AND X1>= window.x1  AND X1<= window.x2
>  AND Y2>= window.y1  AND Y2<= window.y2
>
> My 1st question is:
> ----------------------
> Is this the most effective way to find the neighborhood?. Do I  
> really have to specify these 6 queries?
>
> The second question (or problem):
> ----------------------------------------
> As long the database file is located locally (at the same computer  
> on which the program is executed) the performance is OK. If the  
> database is placed on another server (in really fast LAN) the  
> performance goes down dramatically (by factor 20x).
> Even if I "just" extract all existing polygons (without RTree) from  
> the database and then clarify neighborhood  by own simple  
> implementation, the performace such solution (in my LAN) is faster  
> by factor 2 in comparation to the RTree-Concept. Are there some  
> RTree-Caching concepts? Any ideas?
>
> Thanks in advance!
>
> S
> -- 
> Psssst! Schon vom neuen GMX MultiMessenger gehört? Der kann`s mit  
> allen: http://www.gmx.net/de/go/multimessenger
> _______________________________________________
> sqlite-users mailing list
> sqlite-users@sqlite.org
> http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

_______________________________________________
sqlite-users mailing list
sqlite-users@sqlite.org
http://sqlite.org:8080/cgi-bin/mailman/listinfo/sqlite-users

Reply via email to