Shapely: ops.split рд▓рд╛рдЗрдирд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдФрд░ рдорд▓реНрдЯреАрд▓рд╛рдЗрдирд╕реНрдЯреНрд░рд┐рдВрдЧреНрд╕ рдХреЗ рд╕рд╛рде рдЕрд╕рдВрдЧрдд рд╡реНрдпрд╡рд╣рд╛рд░

рдХреЛ рдирд┐рд░реНрдорд┐рдд 11 рдЕрдкреНрд░реИрд▓ 2019  ┬╖  5рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ  ┬╖  рд╕реНрд░реЛрдд: Toblerity/Shapely

рдЕрдкреЗрдХреНрд╖рд┐рдд рд╡реНрдпрд╡рд╣рд╛рд░ рдФрд░ рд╡рд╛рд╕реНрддрд╡рд┐рдХ рд╡реНрдпрд╡рд╣рд╛рд░ рдФрд░ рд╕рдорд╕реНрдпрд╛ рдХреЛ рдкреБрди: рдЙрддреНрдкрдиреНрди рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП рдХрджрдо

рдПрдХ рд▓рд┐рдиреЗрд╕реНрдЯреНрд░рд┐рдВрдЧ рдП рдХреЛ рдПрдХ рдЗрдВрдЯрд░рд╕реЗрдХреНрдЯрд┐рдВрдЧ рд▓рд┐рдиреЗрд╕реНрдЯреНрд░рд┐рдВрдЧ рдмреА рдХреЗ рд╕рд╛рде рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдиреЗ рд╕реЗ рдЕрдкреЗрдХреНрд╖рд┐рдд рдЖрдЙрдЯрдкреБрдЯ (рд░рд┐рдЯрд░реНрди рдП) рдЙрддреНрдкрдиреНрди рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рдмреА рдФрд░ рд╕реА рдпреБрдХреНрдд рдПрдХ рдорд▓реНрдЯреАрд▓рд╛рдЗрдирд╕реНрдЯреНрд░рд┐рдВрдЧ рдХреЗ рд╕рд╛рде рдП рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ (рд╕реА рднреА рдП рдХреЛ рдкреНрд░рддрд┐рдЪреНрдЫреЗрдж рдХрд░рдирд╛) рд╡рд╛рдВрдЫрд┐рдд рдЖрдЙрдЯрдкреБрдЯ (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 (рдкрд╛рдЗрдк рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдкреАрдИрдкреАрдЖрдИ рд╕реЗ рд╕реНрдерд╛рдкрд┐рдд)

рд╕рдмрд╕реЗ рдЙрдкрдпреЛрдЧреА рдЯрд┐рдкреНрдкрдгреА

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдпрд╣ рдареАрдХ рдХрд╛рдо рдХрд░реЗрдЧрд╛, рд╣рд╛рдБред рдФрд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдореБрдЭреЗ рд╕рдордЭ рдореЗрдВ рдЖрддрд╛ рд╣реИред

рдереЛрдбрд╝рд╛ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд╕реЛрдЪрд╛ рдерд╛ рдХрд┐ рд╣рдо рдПрдХ MultiLineString рдореЗрдВ goems рдлрд╝рд┐рд▓реНрдЯрд░ рдХрд░ рд╕рдХрддреЗ рд╣реИрдВ splitter рдкрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реЛрдВ рдХреЗ рд▓рд┐рдП line рдФрд░ рдХреЗрд╡рд▓ рдЙрдиреНрд╣реАрдВ рдХреЗ рдЕрдВрддрд░ рд╕реЗ рд▓реЗрддреЗ рд╣реИрдВред рд▓реЗрдХрд┐рди рдпрд╣ рдЙрд╕ рдорд╛рдорд▓реЗ рдХреЛ рд╣рд▓ рдирд╣реАрдВ рдХрд░реЗрдЧрд╛ рдЬрд╣рд╛рдВ рдПрдХ рд▓рд╛рдЗрдирд╕реНрдЯреНрд░рд┐рдВрдЧ splitter line рдХреЛ рдЫреВрдиреЗ рдХреЗ рд▓рд┐рдП рд╡рд╛рдкрд╕ рд╣реБрдХ рдХрд░рддрд╛ рд╣реИ рдЬреЛ рдЗрд╕реЗ рджреВрд╕рд░реЗ рдмрд┐рдВрджреБ рдкрд░ рдкрд╛рд░ рдХрд░рддрд╛ рд╣реИред рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рднрд╛рд░реА рднрд╛рд░реЛрддреНрддреЛрд▓рди рдХреЗ рд▓рд┐рдП difference рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддреЗ рд╕рдордп рд▓рдЧрд╛рддрд╛рд░ рд╡реНрдпрд╡рд╣рд╛рд░ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдПрдХрдорд╛рддреНрд░ рддрд░реАрдХрд╛ рд╕реНрдкрд░реНрд╢ рд░реИрдЦрд┐рдХ рдЬреНрдпрд╛рдорд┐рддрд┐ рдХреЛ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рдирд╛ рд╣реИред

рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рд╣реЛ рд╕рдХрддрд╛ рд╣реИ crosses рдЗрддрдирд╛ рд╕рдорд╛рд░реЛрд╣ рдЬрд▓реНрджреА рд▓реМрдЯ рдЖрдП рдЬрдм рдХреЗрд╡рд▓ рдХреА рд╕реАрдорд╛ рдЗрд╕реНрддреЗрдорд╛рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ line рдЫреВ рд▓реЗрддреА splitter ред рджрд░рдЕрд╕рд▓ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреА рдЬрд╛рдВрдЪ рдХреА рдЬрд╛ рд░рд╣реА рд╣реИ ред рд▓реЗрдХрд┐рди рд╣рдорд╛рд░реЗ рд╡рд░реНрддрдорд╛рди рдорд╛рдорд▓реЗ рдореЗрдВ, рдЬрд╣рд╛рдВ рдХреА рд╕реАрдорд╛ splitter рдЫреВрддрд╛ line , рдкрд░реАрдХреНрд╖рдг рдореЗрдВ рдирд╣реАрдВ рд╣реИ, рдФрд░ рдПрдХ рдмреНрд▓рд╛рдЗрдВрдб рд╕реНрдкреЙрдЯ рд╣реЛ рд╕рдХрддрд╛ рд╣реИред рд╣рд╛рд▓рд╛рдВрдХрд┐, рдореИрдВ рдЕрдиреНрдп рд╕рд╛рдзрд╛рд░рдг рдлреАрдЪрд░ рдкреБрд╕реНрддрдХрд╛рд▓рдпреЛрдВ рдХреЗ рд╕рд╛рде рдЕрдзрд┐рдХ рдЕрдиреБрднрд╡ рдХреЗ рдмрд┐рдирд╛ рдПрдХ рд╕реБрдбреМрд▓ рдореВрд▓ рдирд┐рд╡рд╛рд╕реА рд╣реВрдВред рдФрд░ рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреЗрд╡рд▓ рдХреНрд░реЙрд╕рд┐рдВрдЧ рдХрд░рддреЗ рд╕рдордп рд╡рд┐рднрд╛рдЬрди рд░реИрдЦрд┐рдХ рдЬреНрдпрд╛рдорд┐рддрд┐ рдХреЗ рд▓рд┐рдП рдорд╛рдирдХ рд╡реНрдпрд╡рд╣рд╛рд░ рд╣реИ рдпрд╛ рдирд╣реАрдВред

рдпрд╣ 5 рд╕рд╛рд▓ рдкрд╣рд▓реЗ рдХреА рдмрд╛рдд рд╣реИ, рд▓реЗрдХрд┐рди рдЕрдЧрд░ @georgeouzou рдХреЛ рдпрд╛рдж рд╣реИ рддреЛ рд╢рд╛рдпрдж рд╡рд╣ рдкреБрд╖реНрдЯрд┐ рдХрд░ рд╕рдХрддрд╛ рд╣реИ рдпрд╛ рд╕рдордЭрд╛ рд╕рдХрддрд╛ рд╣реИ рдХрд┐ crosses рдХрд╛ рдЙрдкрдпреЛрдЧ рдХреНрдпреЛрдВ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛?

рд╣рдо рдЕрдкрдирд╛ рдХреЗрдХ рд▓реЗ рд╕рдХрддреЗ рд╣реИрдВ рдФрд░ рдЗрд╕реЗ рдЦрд╛ рднреА рд╕рдХрддреЗ рд╣реИрдВ рдпрджрд┐ рд╣рдо рдкрд░реАрдХреНрд╖рдг рдХрд┐рдП рдЧрдП рдорд╛рдорд▓реЗ рдореЗрдВ рдЬрд▓реНрджреА рд▓реМрдЯрдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдЗрд╕ рдореБрджреНрджреЗ рдХреЗ рдорд╛рдорд▓реЗ рдореЗрдВ рдмрдВрдЯрд╡рд╛рд░реЗ рдХреЗ рд╕рд╛рде рдЬрд╛рд░реА рд░рдЦреЗрдВред рдЗрд╕рдХреЗ рд▓рд┐рдП рд╕реАрдзреЗ relate рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рд╣реЛрдЧрд╛ред рд▓реЗрдХрд┐рди рдореБрдЭреЗ рд╕рдВрджреЗрд╣ рд╣реИ рдХрд┐ рдХрд┐рд╕реА рднреА рддрд░рд╣ рд╕реЗ рдПрдХ рдмрдбрд╝рд╛ рдкреНрд░рджрд░реНрд╢рди рдЕрдВрддрд░ рд╣реЛрдЧрд╛ред

рд╕рднреА 5 рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

рдареАрдХред рдореИрдВ рдпрд╣рд╛рдВ рд╕рдорд╕реНрдпрд╛ рджреЗрдЦрддрд╛ рд╣реВрдВред

рдиреЗрддреНрд░рд╣реАрди, рд╡реЗ рд▓рд┐рдиреЗрд╕реНрдЯреНрд░рд┐рдВрдЧ рдЗрд╕ рддрд░рд╣ рджрд┐рдЦрддреЗ рд╣реИрдВ:

image

рдЬрдм рдЖрдк рдХреНрд╖реИрддрд┐рдЬ ( рдП ) рдХреЛ рд╢реАрд░реНрд╖ рдкрд░ рдмрдбрд╝реЗ рд▓рдВрдмрд╡рдд ( рдмреА ) рд╕реЗ рд╡рд┐рднрд╛рдЬрд┐рдд рдХрд░рддреЗ рд╣реИрдВ рдЬреЛ рдХреЗрд╡рд▓ рдП рдХреЛ рдЫреВрддрд╛ рд╣реИ , рдХреБрдЫ рднреА рдирд╣реАрдВ рд╣реЛрддрд╛ рд╣реИред рд▓реЗрдХрд┐рди 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 , рдЗрд╕реЗ рджреЗрдЦрдиреЗ рдХреЗ рд▓рд┐рдП рд╕рдордп рдирд┐рдХрд╛рд▓рдиреЗ рдХреЗ рд▓рд┐рдП рдзрдиреНрдпрд╡рд╛рдж!

рдФрд░, рд╣рд╛рдБ, рдЕрдЧрд░ рдпрд╣ рд╕рднреА рдХреЗ рд╕рд╛рде рдареАрдХ рд╣реИ, рддреЛ рдореИрдВ рдЗрд╕ рдорд╛рдорд▓реЗ рдХреЛ рд╕реБрд▓рдЭрд╛рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБ рдФрд░ рдХрд┐рд╕реА рдмрд┐рдВрджреБ рдкрд░ рдПрдХ рдкреАрдЖрд░ рдЬрдорд╛ рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдБред

рдХреНрдпрд╛ рдпрд╣ рдкреГрд╖реНрда рдЙрдкрдпреЛрдЧреА рдерд╛?
0 / 5 - 0 рд░реЗрдЯрд┐рдВрдЧреНрд╕