Skip to content

Commit fb5ec3b

Browse files
committed
restrict to node
1 parent 33343d6 commit fb5ec3b

File tree

1 file changed

+8
-60
lines changed

1 file changed

+8
-60
lines changed

src/core/qgsgeometry.cpp

Lines changed: 8 additions & 60 deletions
Original file line numberDiff line numberDiff line change
@@ -4596,67 +4596,15 @@ GEOSGeometry* QgsGeometry::linePointDifference( GEOSGeometry* GEOSsplitPoint )
45964596
line = multiLine[i];
45974597
//For each segment
45984598
newline = QgsPolyline();
4599-
for ( int j = 1; j < line.size() ; ++j )
4600-
{
4601-
p1 = line[j-1];
4602-
p2 = line[j];
4603-
g = QgsGeometry::fromPolyline( QgsPolyline() << p1 << p2 );
4604-
QgsDebugMsg( g->exportToWkt() );
4605-
QgsDebugMsg( splitPoint.toString() );
4606-
4607-
newline.append( p1 );
4608-
4609-
double x1 = p1.x();
4610-
double y1 = p1.y();
4611-
double x2 = p2.x();
4612-
double y2 = p2.y();
4613-
double xt = splitPoint.x();
4614-
double yt = splitPoint.y();
4615-
double k;
4616-
double diff;
4617-
if ( x2 == x1 )
4618-
{
4619-
if ( y2 == y1 )
4620-
{
4621-
k = -1;
4622-
diff = 1e50;
4623-
}
4624-
else
4625-
{
4626-
k = ( yt - y1 ) / ( y2 - y1 );
4627-
diff = k * ( x2 - x1 ) - ( xt - x1 );
4628-
}
4629-
}
4630-
else
4631-
{
4632-
k = ( xt - x1 ) / ( x2 - x1 );
4633-
diff = k * ( y2 - y1 ) - ( yt - y1 );
4634-
}
4635-
if ( abs( diff ) < 1e-7 )
4599+
newline.append(line[0]);
4600+
for ( int j = 1; j < line.size()-1 ; ++j )
4601+
{
4602+
newline.append( line[j] );
4603+
if ( line[j] == splitPoint )
46364604
{
4637-
if ( k == 0 )
4638-
{
4639-
lines.append( newline );
4640-
newline = QgsPolyline();
4641-
newline.append( p1 );
4642-
}
4643-
if ( k == 1 )
4644-
{
4645-
newline.append( p2 );
4646-
lines.append( newline );
4647-
newline = QgsPolyline();
4648-
}
4649-
if ( k > 0 && k < 1 )
4650-
{
4651-
newline.append( splitPoint );
4652-
lines.append( newline );
4653-
newline = QgsPolyline();
4654-
newline.append( splitPoint );
4655-
}
4656-
if ( k < 0 || k > 1 )
4657-
{
4658-
//Nothing happens, we are on the line but not the segment
4659-
}
4605+
lines.append( newline );
4606+
newline = QgsPolyline();
4607+
newline.append( line[j] );
46604608
}
46614609
}
46624610
newline.append( line.last() );

0 commit comments

Comments
 (0)