Shapely: рдЯрд╛рдЗрдк рд╕рдВрдХреЗрдд рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ?

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

рдЬреИрд╕рд╛ рдХрд┐ рд╢реЗрдкрд▓реА рдореЗрдВ рд╡рд░реНрддрдорд╛рди рдореЗрдВ рдЯрд╛рдЗрдк рд╕рдВрдХреЗрдд рдирд╣реАрдВ рд╣реИрдВ, рдЯрд╛рдЗрдк рдЪреЗрдХрд░реНрд╕ рджреНрд╡рд╛рд░рд╛ рдЙрддреНрдкрд╛рджрд┐рдд рдкрд░рд┐рдгрд╛рдо рдПрдХрджрдо рд╕рд╣реА рд╣реИрдВред рдХреБрдЫ рдЙрджрд╛рд╣рд░рдг:

from shapely.geometry import Polygon, LineString, Point

area = Polygon().area  # Inferred type: Any. Should be: float
geom_type = LineString().geom_type  # Inferred type: Union[str, List[str]]
# Should be LineString in this case
representative_point = Polygon().representative_point()
# Inferred type: Union[Polygon, Any]. Should be: Point
x = Point(1, 1).x  # Inferred type: Union[object, Tuple[object, object, object], Tuple[object, object]]
# Should be: float

рдФрд░ рдЗрд╕реА рддрд░рд╣ред

рддреЛ, рдХрдо рд╕реЗ рдХрдо рджрд╕реНрддрд╛рд╡реЗрдЬрд╝реЛрдВ рд╕реЗ рд╕рдмрд╕реЗ рдмреБрдирд┐рдпрд╛рджреА рдХрд╛рд░реНрдпрдХреНрд╖рдорддрд╛ рдХреЗ рд▓рд┐рдП рдЯрд╛рдЗрдк рд╕рдВрдХреЗрддреЛрдВ рдХреЗ рд╕рд╛рде рд╕реНрдЯрдм рдлрд╝рд╛рдЗрд▓реЛрдВ рдХреЛ рдЬреЛрдбрд╝рдиреЗ рдХреЗ рдмрд╛рд░реЗ рдореЗрдВ рдХреИрд╕реЗ?


рд╕реБрдбреМрд▓ рд╕рдВрд╕реНрдХрд░рдг: 1.6.4.post1, рдХреЛрдВрдбрд╛ рд╕реЗ рд╕реНрдерд╛рдкрд┐рддред

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

рдореБрдЭреЗ рд╢реЗрдкрд▓реА рдореЗрдВ рдЯрд╛рдЗрдк рдПрдиреЛрдЯреЗрд╢рди рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред

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

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

рдореБрдЭреЗ рд╢реЗрдкрд▓реА рдореЗрдВ рдЯрд╛рдЗрдк рдПрдиреЛрдЯреЗрд╢рди рджреЗрдЦрдирд╛ рдЕрдЪреНрдЫрд╛ рд▓рдЧреЗрдЧрд╛ред

рдПрдиреЛрдЯреЗрд╢рди рдЕрдЪреНрдЫрд╛ рд╣реЛрдЧрд╛, рд╢рд╛рдпрдж 1.8 рдореАрд▓ рдХрд╛ рдкрддреНрдерд░ (?)

рдЗрд╕ рд╕реБрд╡рд┐рдзрд╛ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдиреЗ рдкрд░ рд╡рд┐рдЪрд╛рд░ рдХрд░рдиреЗ рд╡рд╛рд▓реА рдПрдХ рдмрд╛рдд рдпрд╣ рд╣реИ рдХрд┐ рдХреНрдпрд╛ рднрд╡рд┐рд╖реНрдп рдХреЗ рд╕рдВрд╕реНрдХрд░рдгреЛрдВ рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди 2.7 рд╕рдВрдЧрддрддрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреЗ рд▓рд┐рдП рдПрдиреЛрдЯреЗрд╢рди рдХреЛ рд╕реНрдЯрдм рдлрд╛рдЗрд▓реЛрдВ рдореЗрдВ рд░рдЦрд╛ рдЬрд╛рдПред рдпрд╛, рдЕрдЧрд▓рд╛ рдореАрд▓ рдХрд╛ рдкрддреНрдерд░ рдмрдирд╛рдПрдВ (рдЬреИрд╕реЗ 1.8) рдХреЗрд╡рд▓ рдкрд╛рдпрдерди 3+ рдЬрд╛рд░реА рдХрд░реЗрдВ, рдФрд░ рдкрд╛рдпрдерди 2.7 рдмрдЧ рдХреЗ рд▓рд┐рдП рдПрдХ рдЕрд▓рдЧ рд╢рд╛рдЦрд╛ рдмрдирд╛рдП рд░рдЦреЗрдВред

рдзреНрдпрд╛рди рджреЗрдВ рдХрд┐ Python 2.7 рдХреЛ 2020 ( рдЕрдм рд╕реЗ рд▓рдЧрднрдЧ 7 рдорд╣реАрдиреЗ )

рдЗрдирд▓рд╛рдЗрди рдкреНрд░рдХрд╛рд░ рдХреЗ рдПрдиреЛрдЯреЗрд╢рди рдЖрдЧреЗ рдмрдврд╝рддреЗ рд░рд╣рдиреЗ рдХреЗ рд▓рд┐рдП рдмрд╣реБрдд рдЖрд╕рд╛рди рд╣реЛрдВрдЧреЗред

рдпрджрд┐ рд╣рдо рдирдП рдПрдиреЛрдЯреЗрд╢рди рд╕рд┐рдВрдЯреИрдХреНрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдирд╛ рдЪрд╛рд╣рддреЗ рд╣реИрдВ рддреЛ рдЗрд╕рдХреЗ рд▓рд┐рдП рдиреНрдпреВрдирддрдо рд╕рдВрд╕реНрдХрд░рдг рдХреЗ рд░реВрдк рдореЗрдВ 3.5 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА, рдЬрдмрдХрд┐ рд╣рдо рд╡рд░реНрддрдорд╛рди рдореЗрдВ 3.4 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддреЗ рд╣реИрдВред рдореБрдЭреЗ рдирд╣реАрдВ рдкрддрд╛ рдХрд┐ рдХреНрдпрд╛ рд╣рдо рдЕрднреА рддрдХ рдЗрд╕ рдкрд░ рд╕рд╣рдордд рд╣реБрдП рд╣реИрдВ?

рдЯрд╛рдЗрдк рдПрдиреЛрдЯреЗрд╢рди рдЗрд╕ рддрд░рд╣ рджрд┐рдЦреЗрдЧрд╛:

def nearest_points(g1: Geometry, g2: Geometry) -> Tuple[Geometry, Geometry]:

рдЬрдм рддрдХ рд╣рдореЗрдВ 3.4 рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рдирд╣реАрдВ рд╣реИ, рдЙрд╕ рд╕реНрдерд┐рддрд┐ рдореЗрдВ рдЙрдиреНрд╣реЗрдВ рдЯрд┐рдкреНрдкрдгрд┐рдпреЛрдВ рдХреЗ рд░реВрдк рдореЗрдВ рдХрд░рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреА (рдЙрддрдирд╛ рдЕрдЪреНрдЫрд╛ рдирд╣реАрдВ!):

def nearest_points(g1, g2): # type: (Geometry, Geometry) -> Tuple[Geometry, Geometry]

рдореЗрд░реА рдкреНрд░рд╛рдердорд┐рдХрддрд╛ рд╢реЗрдкрд▓реА 1.8 рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди 3.5 рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

рдорд╛рд░реНрдЪ 2019 рдореЗрдВ рдкрд╛рдпрдерди 3.4 рдЕрдкрдиреЗ рдЕрдВрдд рддрдХ рдкрд╣реБрдВрдЪ рдЧрдпрд╛, рдФрд░ #680 рдиреЗ рдЯреНрд░реИрд╡рд┐рд╕ рд╕реАрдЖрдИ рдкрд░реАрдХреНрд╖рдгреЛрдВ рдХреЗ рд▓рд┐рдП рд╕рдВрдмреЛрдзрд┐рдд рдХрд┐рдпрд╛, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд▓рдЧрддрд╛ рд╣реИ рдХрд┐ рдЕрдЧрд▓реЗ рдореАрд▓ рдХреЗ рдкрддреНрдерд░ (1.8?) рдХреЗ рд▓рд┐рдП рдкрд╛рдпрдерди 3.5+ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИред

рд▓реЗрдХрд┐рди рдЗрд╕рдХрд╛ рдорддрд▓рдм рд╣реИ рдХрд┐ рд╣рдореЗрдВ рдкрд╛рдпрдерди 2.7 рдЙрдкрдпреЛрдЧрдХрд░реНрддрд╛рдУрдВ (рднреА <=3.4) рдХреЗ рд▓рд┐рдП 1.7 рд╢рд╛рдЦрд╛ рдмрдирд╛рдП рд░рдЦрдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реЛрдЧреАред

@sgillies рдХреНрдпрд╛ рдпрд╣ рд╕рдордп Python 2.x рдпреБрдЧ рд╕реЗ рдЕрд▓рдЧ рд╣реЛрдиреЗ рдХрд╛ рд╣реИ?

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

рд╕рдВрдмрдВрдзрд┐рдд рдореБрджреНрджреЛрдВ

ispmarin picture ispmarin  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

pvalsecc picture pvalsecc  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

LostFan123 picture LostFan123  ┬╖  3рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

kannes picture kannes  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ

doctor-ian picture doctor-ian  ┬╖  4рдЯрд┐рдкреНрдкрдгрд┐рдпрд╛рдБ