यहाँ एक विचार आता है
यदि आप तुलना करने और परीक्षण करने के लिए किसी एक लाइनस्टर को फाड़ते हैं, यदि वर्टेन्कोपाइंट्स अन्य linestring से कुछ दूरी के भीतर है तो तुलना करने के लिए आप कई तरीकों से परीक्षण को नियंत्रित कर सकते हैं।
वो उदाहरण PostGIS में काम करते हैं (जो अनुमान लगा सकते हैं :-))
सबसे पहले, अगर हम कहते हैं कि एक मैच है, यदि तालिका 1 में एक linestring के सभी शीर्ष बिंदु 0.5 मीटर (मानचित्र इकाइयाँ) हैं या table_2 में एक linestring के करीब हैं:
SELECT a.id, b.id FROM
(SELECT ST_NPoints(the_geom) as num_of_points,
(ST_Dumppoints(the_geom)).geom as p, id FROM table_1) a
INNER JOIN
table_2 b
ON ST_DWithin(a.p, b.the_geom, 0.5) GROUP BY a.id, b.id
HAVING COUNT(*)=num_of_points;
तब हम कह सकते हैं कि एक मैच है अगर एक तालिका में linestring में 60% से अधिक vertex_point तालिका 2 में एक linestring की दूरी के भीतर है
SELECT a.id, b.id FROM
(SELECT ST_NPoints(the_geom) as num_of_points,
(ST_Dumppoints(the_geom)).geom as p, id FROM table_1) a
INNER JOIN
table_2 b
ON ST_DWithin(a.p, b.the_geom, 0.5) GROUP BY a.id, b.id
HAVING COUNT(b.id)/num_of_points::float > 0.6
या हम स्वीकार कर सकते हैं कि एक बिंदु सीमा में नहीं है:
SELECT a.id, b.id FROM
(SELECT ST_NPoints(the_geom) as num_of_points,
(ST_Dumppoints(the_geom)).geom as p, id FROM table_1) a
INNER JOIN
table_2 b
ON ST_DWithin(a.p, b.the_geom, 0.5) GROUP BY a.id, b.id
HAVING COUNT(b.id)-num_of_points <= 1;
आपको उल्टा भूमिकाओं में तालिका 1 और तालिका 2 के साथ क्वेरी भी चलानी होगी।
मुझे नहीं पता कि यह कितनी तेजी से होगा। ST_Dumppoints वर्तमान में PostGIS में एक sql-function है न कि C-function जो इसे होने की तुलना में धीमा बनाता है। लेकिन मुझे लगता है कि यह वैसे भी काफी तेज होगा।
स्थानिक सूचकांक ST_Dwithin को प्रभावी बनाने में बहुत मदद करेगा।
HTH निकलस