рдПрдХ рд▓рд┐рдиреЗрд╕реНрдЯреНрд░рд┐рдВрдЧ рдП рдХреЛ рдПрдХ рдЗрдВрдЯрд░рд╕реЗрдХреНрдЯрд┐рдВрдЧ рд▓рд┐рдиреЗрд╕реНрдЯреНрд░рд┐рдВрдЧ рдмреА рдХреЗ рд╕рд╛рде рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рдЖрдЙрдЯрдкреБрдЯ (рд░рд┐рдЯрд░реНрди рдП) рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдмреА рдФрд░ рд╕реА рдпреБрдХреНрдд рдПрдХ рдорд▓реНрдЯреАрд▓рд╛рдЗрдирд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдП рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ (рд╕реА рднреА рдП рдХреЛ рдкреНрд░рддрд┐рдЪреНрдЫреЗрдж рдХрд░рдирд╛) рд╡рд╛рдВрдЫрд┐рдд рдЖрдЙрдЯрдкреБрдЯ (3 рд╕реЗрдЧрдореЗрдВрдЯ) рдЙрддреНрдкрдиреНрди рдХрд░рддрд╛ рд╣реИред рдпрд╣ рдЕрд╕рдВрдЧрдд рд▓рдЧрддрд╛ рд╣реИред
from shapely.ops import split
from shapely.geometry import LineString, MultiLineString
A = LineString([(0, 0), (10, 0)])
B = LineString([(5, 0), (5, 5)])
C = LineString([(1, -1), (1, 1)])
assert (split(A, B).wkt == "GEOMETRYCOLLECTION (LINESTRING (0 0, 10 0))")
# Does not split
# Expected: "GEOMETRYCOLLECTION (LINESTRING (0 0, 5 0), LINESTRING (5 0, 10 0))"
assert (A.intersection(B).wkt == "POINT (5 0)")
# Although A and B do intersect
assert (split(A, MultiLineString([B, C])).wkt ==
"GEOMETRYCOLLECTION (LINESTRING (0 0, 1 0), LINESTRING (1 0, 5 0), LINESTRING (5 0, 10 0))")
# OK - A is split by both B and C - but A was not split by B in the previous example.
рдЙрдмрдВрдЯреВ 18.04.2 рдПрд▓рдЯреАрдПрд╕
рдкрд╛рдпрдерди 3.6.7 - рд╕реБрдбреМрд▓ 1.6.4.post2 (рдкрд╛рдЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреАрдИрдкреАрдЖрдИ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд)
рдареАрдХред рдореИрдВ рдпрд╣рд╛рдВ рд╕рдорд╕реНрдпрд╛ рджреЗрдЦрддрд╛ рд╣реВрдВред
рдиреЗрддреНрд░рд╣реАрди, рд╡реЗ рд▓рд┐рдиреЗрд╕реНрдЯреНрд░рд┐рдВрдЧ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ:
рдЬрдм рдЖрдк рдХреНрд╖реИрддрд┐рдЬ ( рдП ) рдХреЛ рд╢реАрд░реНрд╖ рдкрд░ рдмрдбрд╝реЗ рд▓рдВрдмрд╡рдд ( рдмреА ) рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХреЗрд╡рд▓ рдП рдХреЛ рдЫреВрддрд╛ рд╣реИ , рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди A рдХреЛ C рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдХрд╛рдо рдЪрд▓ C, A рдХреЛ рдкрд╛рд░ рдХрд░ рдЬрд╛рддрд╛ рд╣реИ ред
рдЕрдм, рдЬрдм рдЖрдк A рдХреЛ MultiLineString([B, C])
рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ, рддреЛ рдпрд╣ рддреАрди рд▓рд┐рдиреЗрд╕реНрдЯреНрд░рд┐рдВрдЧ рдореЗрдВ рд╡рд┐рднрд╛рдЬрд┐рдд рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рджреЛ рдирд╣реАрдВ рдЬреИрд╕рд╛ рдХрд┐ рдЖрдк рдЙрдореНрдореАрдж рдХрд░реЗрдВрдЧреЗред рдореИрдВ рдорд╛рдирддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдЕрд╕рдВрдЧрдд рд▓рдЧрддрд╛ рд╣реИред
рдЗрд╕рдХрд╛ рдХрд╛рд░рдг рдмрдирдиреЗ рд╡рд╛рд▓рд╛ рдХреЛрдб рд╡рд╛рд╕реНрддрд╡ рдореЗрдВ рдмрд╣реБрдд рд╕реБрд▓рдн рд╣реИ ( Permalink )ред
<strong i="26">@staticmethod</strong>
def _split_line_with_line(line, splitter):
"""Split a LineString with another (Multi)LineString or (Multi)Polygon"""
# if splitter is a polygon, pick it's boundary
if splitter.type in ('Polygon', 'MultiPolygon'):
splitter = splitter.boundary
assert(isinstance(line, LineString))
assert(isinstance(splitter, LineString) or isinstance(splitter, MultiLineString))
if splitter.crosses(line):
# The lines cross --> return multilinestring from the split
return line.difference(splitter)
elif splitter.relate_pattern(line, '1********'):
# The lines overlap at some segment (linear intersection of interiors)
raise ValueError('Input geometry segment overlaps with the splitter.')
else:
# The lines do not cross --> return collection with identity line
return [line]
рдЖрдк рджреЗрдЦ рд╕рдХрддреЗ рд╣реИрдВ рдХрд┐ рдХрд┐рд╕реА рднреА рд╡рд┐рднрд╛рдЬрди рдХреЛ рд╢реБрд░реВ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП splitter
рдХреЛ line
рдХреЛ рдкрд╛рд░ рдХрд░рдирд╛ рдЖрд╡рд╢реНрдпрдХ рд╣реИред рд▓реЗрдХрд┐рди рдПрдХ рдмрд╛рд░ рдЬрдм рд╡рд╣ рдЪреЗрдХрдкреЙрдЗрдВрдЯ рдкрд╛рд╕ рд╣реЛ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдЬреНрдпрд╛рдорд┐рддрд┐ рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП difference
рдПрдХ рд╕рд╛рдзрд╛рд░рдг рдХреЙрд▓ рдХреА рдЬрд╛рддреА рд╣реИред рд▓реЗрдХрд┐рди difference
рдкрд╛рд░ рдХрд░рдиреЗ рдФрд░ рдХреЗрд╡рд▓ рдЫреВрдиреЗ рдХреЗ рдмреАрдЪ рднреЗрджрднрд╛рд╡ рдирд╣реАрдВ рдХрд░рддрд╛ рд╣реИ! рдЗрд╕рд▓рд┐рдП рдпрджрд┐ рдХрд┐рд╕реА рднреА рдмрд┐рдВрджреБ рдкрд░ splitter
line
рдкрд╛рд░ рдХрд░ рдЬрд╛рддрд╛ рд╣реИ, рддреЛ рд╕рднреА рдХреЗрд╡рд▓ рд╕реНрдкрд░реНрд╢ рдХрд░рдиреЗ рд╡рд╛рд▓реЗ рдмрд┐рдВрджреБрдУрдВ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░ рджрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред
@ рдпрд┐рд░реНрдордпрд╛рд╣-рдЗрдВрдЧреНрд▓реИрдВрдб рдЗрд╕рдореЗрдВ рдЦреБрджрд╛рдИ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж! рдРрд╕рд╛ рд▓рдЧрддрд╛ рд╣реИ, рдХрдо рд╕реЗ рдХрдо рд▓рд╛рдЗрдиреЛрдВ рдХреЗ рд▓рд┐рдП, рд╣рдо рдХреНрд░реЙрд╕ рдЯреЗрд╕реНрдЯ рдХреЛ рдЯрдЪ рдЯреЗрд╕реНрдЯ рдореЗрдВ рдмрджрд▓ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдХрдо рдЖрд╢реНрдЪрд░реНрдпрдЬрдирдХ рдкрд░рд┐рдгрд╛рдо рдкреНрд░рд╛рдкреНрдд рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ? рддреБрдо рдЙрд╕рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреНрдпрд╛ рд╕реЛрдЪрддреЗ рд╣реЛ?
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд╣рд╛рдБред рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред
рдереЛрдбрд╝рд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рд╣рдо рдПрдХ MultiLineString рдореЗрдВ goems рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ splitter
рдкрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП line
рдФрд░ рдХреЗрд╡рд▓ рдЙрдиреНрд╣реАрдВ рдХреЗ рдЕрдВрддрд░ рд╕реЗ рд▓реЗрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЬрд╣рд╛рдВ рдПрдХ рд▓рд╛рдЗрдирд╕реНрдЯреНрд░рд┐рдВрдЧ splitter
line
рдХреЛ рдЫреВрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рд╣реБрдХ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рджреВрд╕рд░реЗ рдмрд┐рдВрджреБ рдкрд░ рдкрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рднрд╛рд░реА рднрд╛рд░реЛрддреНрддреЛрд▓рди рдХреЗ рд▓рд┐рдП difference
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд▓рдЧрд╛рддрд╛рд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╕реНрдкрд░реНрд╢ рд░реИрдЦрд┐рдХ рдЬреНрдпрд╛рдорд┐рддрд┐ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рд╣реИред
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ crosses
рдЗрддрдирд╛ рд╕рдорд╛рд░реЛрд╣ рдЬрд▓реНрджреА рд▓реМрдЯ рдЖрдП рдЬрдм рдХреЗрд╡рд▓ рдХреА рд╕реАрдорд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ line
рдЫреВ рд▓реЗрддреА splitter
ред рджрд░рдЕрд╕рд▓ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ ред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рд╡рд░реНрддрдорд╛рди рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬрд╣рд╛рдВ рдХреА рд╕реАрдорд╛ splitter
рдЫреВрддрд╛ line
, рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдПрдХ рдмреНрд▓рд╛рдЗрдВрдб рд╕реНрдкреЙрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдЕрдиреНрдп рд╕рд╛рдзрд╛рд░рдг рдлреАрдЪрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдЕрдиреБрднрд╡ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╕реБрдбреМрд▓ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА рд╣реВрдВред рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреЗрд╡рд▓ рдХреНрд░реЙрд╕рд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп рд╡рд┐рднрд╛рдЬрди рд░реИрдЦрд┐рдХ рдЬреНрдпрд╛рдорд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ рдпрд╛ рдирд╣реАрдВред
рдпрд╣ 5 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдХреА рдмрд╛рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ @georgeouzou рдХреЛ рдпрд╛рдж рд╣реИ рддреЛ рд╢рд╛рдпрдж рд╡рд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рд╕рдордЭрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ crosses
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛?
рд╣рдо рдЕрдкрдирд╛ рдХреЗрдХ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЦрд╛ рднреА рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рд╣рдо рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрд▓реНрджреА рд▓реМрдЯрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрдВрдЯрд╡рд╛рд░реЗ рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рд░рдЦреЗрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ relate
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдПрдХ рдмрдбрд╝рд╛ рдкреНрд░рджрд░реНрд╢рди рдЕрдВрддрд░ рд╣реЛрдЧрд╛ред
@ рдпрд┐рд░реНрдордпрд╛рд╣-рдЗрдВрдЧреНрд▓реИрдВрдб рдореЗрд░реА рдпрд╛рджрджрд╛рд╢реНрдд рдЗрд╕ рдкрд░ рдереЛрдбрд╝реА рдзреБрдВрдзрд▓реА рд╣реИ, рд▓реЗрдХрд┐рди рдХреЛрдб рдХреЛ рдлрд┐рд░ рд╕реЗ рджреЗрдЦрдХрд░ рдореИрдВ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реВрдВ рдХрд┐ рдпрд╣ рдПрдХ рдЕрдВрдзрд╛ рд╕реНрдерд╛рди рдерд╛ред рд╡рд░реНрддрдорд╛рди рдорд╛рдорд▓реЗ рдХреЛ рдкреВрд░рд╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХреЛрдб рдХреЛ рднреА рдкрд░реАрдХреНрд╖рдг рдХрд░рдирд╛ рдЪрд╛рд╣рд┐рдПред рдХреНрдпрд╛ рдЖрдк рдкрд░рд┐рд╡рд░реНрддрдиреЛрдВ рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рд░рдЦ рд╕рдХрддреЗ рд╣реИрдВ?
рдЕрд░реЗ @georgeouzou , рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!
рдФрд░, рд╣рд╛рдБ, рдЕрдЧрд░ рдпрд╣ рд╕рднреА рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реИ, рддреЛ рдореИрдВ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ рд╕реБрд▓рдЭрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБ рдФрд░ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдПрдХ рдкреАрдЖрд░ рдЬрдорд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБред
рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА
рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд╣рд╛рдБред рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред
рдереЛрдбрд╝рд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рд╣рдо рдПрдХ MultiLineString рдореЗрдВ goems рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ
splitter
рдкрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдПline
рдФрд░ рдХреЗрд╡рд▓ рдЙрдиреНрд╣реАрдВ рдХреЗ рдЕрдВрддрд░ рд╕реЗ рд▓реЗрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЬрд╣рд╛рдВ рдПрдХ рд▓рд╛рдЗрдирд╕реНрдЯреНрд░рд┐рдВрдЧsplitter
line
рдХреЛ рдЫреВрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рд╣реБрдХ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рджреВрд╕рд░реЗ рдмрд┐рдВрджреБ рдкрд░ рдкрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рднрд╛рд░реА рднрд╛рд░реЛрддреНрддреЛрд▓рди рдХреЗ рд▓рд┐рдПdifference
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд▓рдЧрд╛рддрд╛рд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╕реНрдкрд░реНрд╢ рд░реИрдЦрд┐рдХ рдЬреНрдпрд╛рдорд┐рддрд┐ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рд╣реИредрдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ
crosses
рдЗрддрдирд╛ рд╕рдорд╛рд░реЛрд╣ рдЬрд▓реНрджреА рд▓реМрдЯ рдЖрдП рдЬрдм рдХреЗрд╡рд▓ рдХреА рд╕реАрдорд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛line
рдЫреВ рд▓реЗрддреАsplitter
ред рджрд░рдЕрд╕рд▓ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ ред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рд╡рд░реНрддрдорд╛рди рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬрд╣рд╛рдВ рдХреА рд╕реАрдорд╛splitter
рдЫреВрддрд╛line
, рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдПрдХ рдмреНрд▓рд╛рдЗрдВрдб рд╕реНрдкреЙрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдЕрдиреНрдп рд╕рд╛рдзрд╛рд░рдг рдлреАрдЪрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдЕрдиреБрднрд╡ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╕реБрдбреМрд▓ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА рд╣реВрдВред рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреЗрд╡рд▓ рдХреНрд░реЙрд╕рд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп рд╡рд┐рднрд╛рдЬрди рд░реИрдЦрд┐рдХ рдЬреНрдпрд╛рдорд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ рдпрд╛ рдирд╣реАрдВредрдпрд╣ 5 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдХреА рдмрд╛рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ @georgeouzou рдХреЛ рдпрд╛рдж рд╣реИ рддреЛ рд╢рд╛рдпрдж рд╡рд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рд╕рдордЭрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐
crosses
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛?рд╣рдо рдЕрдкрдирд╛ рдХреЗрдХ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЦрд╛ рднреА рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рд╣рдо рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрд▓реНрджреА рд▓реМрдЯрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрдВрдЯрд╡рд╛рд░реЗ рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рд░рдЦреЗрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ
relate
рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдПрдХ рдмрдбрд╝рд╛ рдкреНрд░рджрд░реНрд╢рди рдЕрдВрддрд░ рд╣реЛрдЧрд╛ред