a
    J5d;                     @   s8  d Z ddlZddlZddlmZmZmZmZ ddl	m
Z
 ddlmZ ddlm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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-d. Z#d/d0 Z$d1d2 Z%d3d4 Z&d5d6 Z'G d7d8 d8Z(d9d: Z)G d;d< d<Z*dS )=zPolygons and Linear Rings
    N)
LinearRing
LineStringPointPolygon)CoordinateSequence)TopologicalError)loadsc                   C   s   t  jd d  g ksJ d S Nr   coords r   r   _/var/www/html/django/DPS/env/lib/python3.9/site-packages/shapely/tests/geometry/test_polygon.pytest_empty_linearring_coords   s    r   c                  C   sP   g d} t g d}|jd d  | ks*J t g d}|jd d  | ksLJ d S )N        r   r         ?r   r   r   r   r   r   r
   expected_coordsringr   r   r   (test_linearring_from_coordinate_sequence   s
    r   c                  C   sB   g d} t tddtddtddg}|jd d  | ks>J d S )Nr   r   r   )r   r   r   r   r   r   r   test_linearring_from_points   s     r   c                  C   sR   g d} t | }t|}t|jdks*J |jd d  | ks@J |jdksNJ d S )Nr   r   r   r   r      r   r   r   lenr   Z	geom_typer   liner   r   r   r   &test_linearring_from_closed_linestring"   s    r"   c                  C   sZ   g d} t | d d }t|}t|jdks2J |jd d  | ksHJ |jdksVJ d S )Nr   r   r   r   r    r   r   r   (test_linearring_from_unclosed_linestring+   s    r$   c                  C   sP   g d} t | }|jrJ tt t| W d    n1 sB0    Y  d S )N)r   r   r   )r   Zis_validpytestraisesr   r   r   r!   r   r   r   test_linearring_from_invalid4   s
    
r(   c                  C   sJ   ddg} t | }tjtdd t| W d    n1 s<0    Y  d S )Nr   r   zrequires at least 4 coordinates)match)r   r%   r&   
ValueErrorr   r'   r   r   r   )test_linearring_from_too_short_linestring<   s    r+   c                  C   s*   g d} t | }|jd d  | ks&J d S )Nr   r
   r   r   r   r   r   test_linearring_from_linearringE   s    r-   c                  C   s8   g d} dd | D }t |}|jd d  | ks4J d S )Nr   c                 s   s   | ]
}|V  qd S r	   r   .0Zcoordr   r   r   	<genexpr>M       z1test_linearring_from_generator.<locals>.<genexpr>r
   )r   genr   r   r   r   test_linearring_from_generatorK   s    r3   c                  C   sr   t  } | jsJ t| jts J | jd d  g ks6J t g } | jsHJ t| jtsXJ | jd d  g ksnJ d S r	   )r   is_empty
isinstancer   r   r   r   r   r   test_linearring_from_emptyR   s    

r7   c                  C   s4   g d} t t| }|jd d  g dks0J d S )Nr   )r   nparrayr   r,   r   r   r   test_linearring_from_numpy^   s    r:   c                  C   s@   ddl m}  tg d}t|j}tg d}| || d S )Nr   )assert_array_equalr   r   )Znumpy.testingr;   r   r8   asarrayr   )r;   r   raexpectedr   r   r   test_numpy_linearring_coordsf   s
    r?   c                  C   s    t  } t| jjdksJ d S )N)r      )r   r8   r<   r   shaper6   r   r   r   "test_numpy_empty_linearring_coordso   s    rB   c                  C   s:   t g d} tdt}| g|d d < |d | ks6J d S )Nr      r   )r   r8   emptyobject)Zgeomarr   r   r   test_numpy_object_arrayt   s    rG   c                  C   sx   g d} t g d}|jjd d  | ks,J t|jdks>J t g d}|jjd d  | ksbJ t|jdkstJ d S )Nr   r   r   r   exteriorr   r   	interiors)r   polygonr   r   r   %test_polygon_from_coordinate_sequence{   s    rL   c                  C   s   g d} t | g dg}|jjd d  | ks0J t|jdksBJ t|jd jdksZJ g d} g dg dg}t | |}|jjd d  | ksJ t|jd	ksJ t|jd jdksJ t|jd jd
ksJ d S )Nr         ?rO   rO         ?rQ   rQ   rQ   rO   rC   r      )r   r   )r   
   )rV   rV   )rV   r   rU   )rC   rC   )r@   rC   )r@   r@   )rC   r@   rW   )   rY   )rY   r   )r   rT   )rT   r   )rT   rY   rX   r@      rH   )r   rK   holesr   r   r   0test_polygon_from_coordinate_sequence_with_holes   s    
r\   c                  C   s   g d} t | }t|}|jjd d  | ks0J t|jdksBJ t g d}t g dt g dt g dg}t||}|jjd d  |jd d  ksJ t|jdksJ tdD ].}|j| jd d  || jd d  ksJ qd S )Nr   r   r   )     Q@g      ^@)g     a@r   r         N@      T@)rb   rb   )r^   ra   r`         >@      $@)g      I@rf   )g      D@re   rd   )     V@rV   )g     [@rf   )g      Y@re   )rh   rf   rY   )r   r   rI   r   r   rJ   range)r   r   rK   shellr[   ir   r   r   test_polygon_from_linearring   s    



"rl   c                  C   sd   g d} t | }t|}|jjd d  | ks0J t | d d }t|}|jjd d  | ks`J d S )Nr   r#   )r   r   rI   r   )r   r!   rK   r   r   r   test_polygon_from_linestring   s    rm   c                  C   sD   t tddtddtddg} g d}| jjd d  |ks@J d S )Nr   r   r   )r   r   rI   r   )rK   r   r   r   r   test_polygon_from_points   s     rn   c                  C   sb   g d} t | g dg}t |}t|jjdks4J t|jdksFJ t|jd jdks^J d S )Nr   r   r   r   rM   rT   rC   r   )r   r   rI   r   rJ   )r   rK   copyr   r   r   test_polygon_from_polygon   s    rq   c                   C   sB   t t$ tddgddgg W d    n1 s40    Y  d S )NrC   r@   rY   )r%   r&   r*   r   r   r   r   r   test_polygon_from_invalid   s    rr   c                  C   sV   t  } | jsJ | jjd d  g ks(J t g } | js:J | jjd d  g ksRJ d S r	   )r   r4   rI   r   )rK   r   r   r   test_polygon_from_empty   s    

rs   c                  C   sX   t d} t| }t|jjdks&J |jjd d  g dksBJ t|jdksTJ d S )Nr   r   r   r   r   rT   r   )r8   r9   r   r   rI   r   rJ   )arK   r   r   r   test_polygon_from_numpy   s
    
rv   c                  C   s:   g d} dd | D }t |}|jjd d  | ks6J d S )Nr   c                 s   s   | ]
}|V  qd S r	   r   r.   r   r   r   r0      r1   z.test_polygon_from_generator.<locals>.<genexpr>)r   rI   r   )r   r2   rK   r   r   r   test_polygon_from_generator   s    rw   c                   @   sL   e Z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 )TestPolygonc                 C   s`   d}t |}t|jdksJ |jd |jd ks6J |jd |jd ksNJ |jdu s\J d S )Nro   rT   r   r   r#   T)r   r   r   is_ring)selfr   r   r   r   r   test_linearring   s    zTestPolygon.test_linearringc                 C   s  d}t |}t|jjdks J t|jts0J |j}t|jdksHJ |jd |jd ks`J |jd dksrJ |jdu sJ t|jdksJ |j}d }d }t	|}|j}t|jdksJ |jd |jd ksJ |jd dksJ |jdu sJ d }t |dg}t|jjdksJ t|jd jdks8J t
t |jd  W d    n1 sd0    Y  t
t |j W d    n1 s0    Y  |jd	d
dksJ d S )Nro   rT   r   r   r   TrM   rC   r   )rt   )rN   rP   rR   rS   rN   )typecoordinates)r   r   rI   r   r5   r   ry   rJ   Zwkbload_wkbr%   r&   
IndexErrorNotImplementedError__geo_interface__)rz   r   rK   r   datar   r   r   test_polygon  sB    *&zTestPolygon.test_polygonc                 C   s&   t  }|jdksJ |jdks"J d S )NzLINEARRING EMPTYr   )r   Zwktlength)rz   Zr_nullr   r   r   test_linearring_empty5  s    z!TestPolygon.test_linearring_emptyc                 C   s^   d}t |}|jdksJ |j}|d dks0J |j}|jdksDJ |j}|d dksZJ d S )N)r   r   r   r   r   r   r   r   r   r   r   r   rY   r}   )r   r   r   r   r   r   )r   Z_ndimr   rI   )rz   r   rK   gier   r   r   test_dimensions;  s    
zTestPolygon.test_dimensionsc                 C   s   t g d}t|jjg dks$J ttddddjj}t|tsLJ t g dg dg}|jdksnJ t|j	d jg d	ksJ t|j	d djjd }t
|d
ksJ t|djj}t|tsJ d S )Nr   r         r   r   r   )r   r   r   r   r   r   r   rC   )      пrO   r         ?      r   r   rO   r   r   )r   r   r   r   r   r@   )r   listboundaryr   r   bufferrI   r5   ZarearJ   r   )rz   pecZxyr   r   r   test_attribute_chainsY  s    z!TestPolygon.test_attribute_chainsc                 C   sn   t dd}tg d}tg d}t }t }||ks:J ||ksFJ ||ksRJ ||ks^J |d usjJ d S )Nr   r   )r   r   )rz   Zpoint1Zpolygon1Zpolygon2Zpolygon_empty1Zpolygon_empty2r   r   r   test_empty_equality  s    
zTestPolygon.test_empty_equalityc                 C   sH   d\}}}}||f||f||f||fg}t |t ||||ksDJ d S )N)iLi   Z   )r   Zfrom_bounds)rz   ZxminZyminZxmaxZymaxr   r   r   r   test_from_bounds  s    zTestPolygon.test_from_boundsc                 C   s   t  }|jt ksJ d S r	   )r   rI   r   )rz   r   r   r   r   test_empty_polygon_exterior  s    z'TestPolygon.test_empty_polygon_exteriorN)__name__
__module____qualname__r{   r   r   r   r   r   r   r   r   r   r   r   rx      s   2)rx   c                  C   sx   t g d} tt g d| _W d    n1 s60    Y  tt d| jd< W d    n1 sj0    Y  d S )Nro   )r   )       @r   )r   r   r   r   )r   r%   r&   AttributeErrorr   	TypeErrorr6   r   r   r   test_linearring_immutable  s
    (r   c                   @   s$   e Zd Zdd Zdd Zdd ZdS )TestLinearRingGetItemc                 C   s   t g d}t g dt g dt g dg}t||}tddD ]}|j| || sBJ qBtt |jd  W d    n1 s0    Y  tt |jd  W d    n1 s0    Y  d S )Nr]   r_   rc   rg   rY   )r   r   ri   rJ   equalsr%   r&   r   )rz   rj   r[   grk   r   r   r   test_index_linearring  s    



(z+TestLinearRingGetItem.test_index_linearringc                 C   sr   t  }tt |jd  W d    n1 s00    Y  tt |jd  W d    n1 sd0    Y  d S )Nr   r   )r   r%   r&   r   rJ   r   )rz   r   r   r   r   test_index_linearring_misc  s
    (z0TestLinearRingGetItem.test_index_linearring_miscc                 C   sr  t g d}t g dt g dt g dg}t||}dd t|jdd  |dd  D }t|sjJ dd t|jd d	 |d d	 D }t|sJ d
d t|jd d d	 |d d d	 D }t|sJ dd t|jd d d |d d d D }t|s
J dd t|jd d |d d D }t|s>J |jdd  |dd    krhg ksnn J d S )Nr]   r_   rc   rg   c                 S   s   g | ]\}}| |qS r   r   r/   ru   br   r   r   
<listcomp>  r1   z?TestLinearRingGetItem.test_slice_linearring.<locals>.<listcomp>rC   c                 S   s   g | ]\}}| |qS r   r   r   r   r   r   r     r1   r#   c                 S   s   g | ]\}}| |qS r   r   r   r   r   r   r     r1   c                 S   s   g | ]\}}| |qS r   r   r   r   r   r   r     r1   r@   c                 S   s   g | ]\}}| |qS r   r   r   r   r   r   r     r1   rY   )r   r   ziprJ   all)rz   rj   r[   r   tr   r   r   test_slice_linearring  s"    



&&**&z+TestLinearRingGetItem.test_slice_linearringN)r   r   r   r   r   r   r   r   r   r   r     s   r   )+__doc__numpyr8   r%   Zshapelyr   r   r   r   Zshapely.coordsr   Zshapely.errorsr   Zshapely.wkbr   r~   r   r   r   r"   r$   r(   r+   r-   r3   r7   r:   r?   rB   rG   rL   r\   rl   rm   rn   rq   rr   rs   rv   rw   rx   r   r   r   r   r   r   <module>   sD   
				
 &
