Sorun bildirimi: Bir otobüs yolu (ln.the_geom linestring olarak tanımlanır) ve bir dizi otobüs durağı konumu (pt1.the_geom, pt2.the_geom, ... ptn.the_geom) olarak tanımlandığında, otobüs yolunu otobüs durakları arasında bölümlere ayırın . İki postgis işlevi kullanıyorum
ST_line_substring(ln.the_geom,ST_line_locate_point
ln.the_geom,pt1.the_geom),ST_line_locate_point(ln.the_geom,pt2.the_geom))
Otobüs güzergahında üst üste binen bölüm yoksa yukarıdakiler işe yarar. Ancak, çakışan bölümler varsa, ST_line_locate_point, linestring'in diğer ucuna bir nokta ekleyecektir. Örnek olarak: Otobüs A'dan B'ye gider, bir döngü oluşturur, sonra B'den A'ya gider. "A'dan B'ye" ve "B'den A'ya", tüm noktaları üst üste binen paralel rotalardır. Otobüs durakları P1 ve P2 durumunda, P2 bunun yerine P2 'noktasına (ters yönde) eşlenir. Bu durumda segment yanlış çıkarılır (fazladan segmentlerin dahil edildiği yerlerde).
Böyle problemler nasıl çözülür? Üst üste binen otobüs güzergahları, güzergahın herhangi bir bölümünde olabilir ...