o
    e*                     @   sd  d dl Zd dlZd dlmZ d dlZd dlmZmZmZ d dl	m
Z
 ddlmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZmZ eeeeeefZeeeeeefZeefZej dee dd	 Z!ej ded
d Z"ej dedd Z#dd Z$ej dedd Z%dd Z&dd Z'dd Z(dd Z)dd Z*dd Z+dd Z,d d! Z-d"d# Z.dS )$    N)assert_allclose)MultiLineString
MultiPointMultiPolygon)assert_geometries_equal   )empty_line_stringempty_line_string_zgeometry_collectionline_stringline_string_zlinear_ringmulti_line_stringmulti_line_string_zmulti_pointmulti_point_zmulti_polygonmulti_polygon_zpointpoint_zpolygon	polygon_zgeomc                 C   s&   t jt | | g }t|| | g d S N)shapelyfrom_ragged_arrayto_ragged_arrayr   )r   actual r   OD:\Projects\ConvertPro\env\Lib\site-packages\shapely/tests/test_ragged_array.pytest_roundtrip4   s   r    c                 C   s:   t j| | gdd\}}}t|d d df  sJ d S )NTZ	include_z   )r   r   npisnanallr   _coordsr   r   r   test_include_z:   s   "r)   c                 C   s.   t j| | gdd\}}}|jd dksJ d S )NFr!   r   r"   )r   r   shaper&   r   r   r   test_include_z_falseA   s   r+   c                  C   s   t ttg\} }} |jd dksJ t tg\} }} |jd dks%J t tg\} }} |jd dks7J t t dg\} }} |jd dksLJ d S )Nr      r"   zMULTIPOLYGON Z EMPTY)r   r   r   r   r*   r   r	   from_wkt)r'   r(   r   r   r   test_include_z_defaultH   s   r.   c                 C   s>   t t t| | g W d    d S 1 sw   Y  d S r   )pytestZraises
ValueErrorr   r   )r   r   r   r   test_raise_geometry_typeY   s   "r1   c               	   C   s   t g d} t | \}}}tddgddgtjtjgtjtjgddgtjtjgg}|t jjks4J t|| t	|dksAJ t 
||}t||  d S )N)zPOINT (0 0)zPOINT (1 1)POINT EMPTYr2   zPOINT (4 4)r2   r   r      )r   r-   r   r#   arraynanGeometryTypePOINTr   lenr   r   )arrtypresultoffsetsexpectedZgeomsr   r   r   test_points_   s   
2
r>   c                  C   s   t g d} t | \}}}tddgddgddgddgddgddgddgddgddgddgg
}tg d}|t jjksAJ t|| t|dksNJ t|d | t 	|||}t
||  d S )	N)z LINESTRING (30 10, 10 30, 40 40)z'LINESTRING (40 40, 30 30, 40 20, 30 10)LINESTRING EMPTYr?   z LINESTRING (10 10, 20 20, 10 40)r?         >@      $@      D@      4@)r   r,      rD   rD   
   rE   r   r   )r   r-   r   r#   r4   r6   Z
LINESTRINGr   r8   r   r   r9   r:   r(   r<   r=   Zexpected_offsetsr;   r   r   r   test_linestringsv   s0   

rG   c                  C   s  t g d} t | \}}}tddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgg}tg d	}tg d
}|t jjkscJ t|| t|dkspJ t|d | t|d | t 	|||}t
||  d S )N)-POLYGON ((30 10, 40 40, 20 40, 10 20, 30 10))zKPOLYGON ((35 10, 45 45, 15 40, 10 20, 35 10), (20 30, 35 35, 30 20, 20 30))POLYGON EMPTYrI   rH   rI   r@   rA   rB   rC        A@     F@      .@)r      rE         r   r   r,   r,   r,   r3   r3   r"   r   r   )r   r-   r   r#   r4   r6   ZPOLYGONr   r8   r   r   r9   r:   r(   r<   r=   expected_offsets1expected_offsets2r;   r   r   r   test_polygons   sF   

rT   c                  C   s   t g d} t | \}}}tddgddgddgddgddgddgddgddgg}tg d}|t jjks;J t|| t|dksHJ t|d | t 	|||}t
||  d S )	N)z'MULTIPOINT (10 40, 40 30, 20 20, 30 10)zMULTIPOINT (30 10)MULTIPOINT EMPTYrU   z MULTIPOINT (30 10, 10 30, 40 40)rU   rA   rB   r@   rC   )r   r3   rM   rM   rM      rV   r   r   )r   r-   r   r#   r4   r6   
MULTIPOINTr   r8   r   r   rF   r   r   r   test_multipoints   s,   

rX   c                  C   s  t g d} t | \}}}tddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgg}tg d	}tg d
}|t jjks]J t|| t|dksjJ t|d | t|d | t 	|||}t
||  d S )N)z'MULTILINESTRING ((30 10, 10 30, 40 40))zDMULTILINESTRING ((10 10, 20 20, 10 40),(40 40, 30 30, 40 20, 30 10))MULTILINESTRING EMPTYrY   zGMULTILINESTRING ((35 10, 45 45), (15 40, 10 20), (30 10, 10 30, 40 40))rY   r@   rA   rB   rC   rJ   rK   rL   )r   r,      rE      rN      )r   r   r,   r,   r,   rZ   rZ   r"   r   r   )r   r-   r   r#   r4   r6   MULTILINESTRINGr   r8   r   r   rQ   r   r   r   test_multilinestrings   sB   

r^   c            	      C   sd  t g d} t | \}}}tddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgddgdd	gddgddgddgddgdd
gddgddgddgddgddgg}tg d}tg d}tg d}|t jjksJ t|| t|dksJ t|d | t|d | t|d | t 	|||}t
||  d S )N)zRMULTIPOLYGON (((35 10, 45 45, 15 40, 10 20, 35 10), (20 30, 35 35, 30 20, 20 30)))zvMULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)),((20 35, 10 30, 10 10, 30 5, 45 20, 20 35),(30 20, 20 15, 20 25, 30 20)))MULTIPOLYGON EMPTYr_   z-MULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)))r_   rJ   rA   rK   rL   rB   rC   r@   g      @g      9@)r   rM   	      rO         )r   r"   r,   rM   rZ   rP   r,   r   r   r"   )r   r-   r   r#   r4   r6   MULTIPOLYGONr   r8   r   r   )	r9   r:   r(   r<   r=   rR   rS   Zexpected_offsets3r;   r   r   r   test_multipolygons  sZ   

re   c                  C   T   t ttg\} }}| t jjksJ t | ||}tt	tgtg}t
|| d S r   )r   r   r   r   r6   rW   r   r#   r4   r   r   r:   r(   r<   r;   r=   r   r   r   test_mixture_point_multipointU  
   rh   c                  C   rf   r   )r   r   r   r   r6   r]   r   r#   r4   r   r   rg   r   r   r   'test_mixture_linestring_multilinestring]  ri   rj   c                  C   rf   r   )r   r   r   r   r6   rd   r   r#   r4   r   r   rg   r   r   r   !test_mixture_polygon_multipolygone  ri   rk   )/numpyr#   r/   Znumpy.testingr   r   r   r   r   Zshapely.testingr   commonr   r	   r
   r   r   r   r   r   r   r   r   r   r   r   r   r   Z	all_typesZall_types_3dZall_types_not_supportedmarkZparametrizer    r)   r+   r.   r1   r>   rG   rT   rX   r^   re   rh   rj   rk   r   r   r   r   <module>   sT    H





$0#.: