By Rupert
Using SDO_WITHIN_GEOM
Experiment 1: Two POIs
SELECT p1.poi_id, p1.en_name, p1.py_fullpoiadd, p1.py_rdname, p2.poi_id, p2.en_name, p2.py_fullpoiadd, p2.py_rdname, SDO_GEOM.SDO_DISTANCE(p1.geom, p2.geom, 0.5) AS dist FROM poi_test p1, poi_test p2 WHERE Upper(p1.en_name) LIKE '%PARKSON%' AND Upper(p2.en_name) LIKE '%KFC%' AND SDO_WITHIN_DISTANCE(p1.geom, p2.geom, 'DISTANCE=500 UNIT=METER' )='TRUE' ORDER BY dist
Experiment 2: Road + Two POIs
SELECT p1.poi_id, p1.en_name, p1.py_fullpoiadd, p1.py_rdname, p2.poi_id, p2.en_name, p2.py_fullpoiadd, p2.py_rdname, SDO_GEOM.SDO_DISTANCE(p1.geom, p2.geom, 0.5) AS dist FROM poi_app p1, poi_app p2, geo_entities g WHERE Upper(p1.en_name) LIKE '%BAR BLU%' AND Upper(p2.en_name) LIKE '%KOKOMO%' AND Upper(g.meta_name) LIKE '%SANLITUN%' AND SDO_WITHIN_DISTANCE(p1.geom, p2.geom, 'DISTANCE=500 UNIT=METER' )='TRUE' AND SDO_WITHIN_DISTANCE(p1.geom, g.the_geom, 'DISTANCE=500 UNIT=METER' )='TRUE' AND SDO_WITHIN_DISTANCE(p2.geom, g.the_geom, 'DISTANCE=500 UNIT=METER' )='TRUE'
Notes:
1. Significant improvement when Sorting is removed.
2. SDO_WITHIN_DISTANCE vs NN? The first finds the nearest geometry within a given distance while NN finds the nearest geometry regardless of the distance. NN could be costly when unused properly.
| Print article | This entry was posted by rupert on August 27, 2008 at 9:00 pm, and is filed under Uncategorized. Follow any responses to this post through RSS 2.0. You can skip to the end and leave a response. Pinging is currently not allowed. |


