a
    J5d_                     @   s	  d dl Z d dlZd dlZd dlZd dlmZ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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m Z m!Z!m"Z"m#Z#m$Z$m%Z%m&Z& dd	 Z'd
d Z(dd Z)ej*+de!e#eeeegdd Z,ej*+deegdd Z-ej*+de!eeeeeegdd Z.dd Z/ej*+de!eeeeeegdd Z0dd Z1ej*+de!eee#gdd Z2ej*+deeeegdd Z3dd  Z4d!d" Z5d#d$ Z6d%d& Z7d'd( Z8d)d* Z9ej*+d+ej:ej;ej<ej=ej*j>ej?d,k d-d.d/gej*+dedd d0d1 Z@d2d3 ZAd4d5 ZBej*j>ej?d,k d-d.d6d7 ZCej*j>ej?d,k d-d.d8d9 ZDej*+ded:d; ZEd<d= ZFej*+deeGejHejHef d>d? ZIej*+dedd@ dAdB ZJej*+dedCdD ZKej*+dedd@ dEdF ZLej*+dedGdH ZMdIdJ ZNdKdL ZOdMdN ZPdOdP ZQej*+de!eeee#eeeeeeeRdgeSeRdggdQdR ZTdSdT ZUdUdV ZVdWdX ZWej*+ddggeggeggeeggfdYdZ ZXej*+de!ee#gd[d\ ZYej*+dddgg gd]d^ ZZej*+dd_d_gd`gdadb Z[ej*+de!eeee#eeeeeedgdcdd Z\dedf Z]dgdh Z^ej*+ddgge#gggdidj Z_ej*j>ej?dkk dld.dmdn Z`ej*j>ej?dkk dld.dodp Zaej*j>ej?dkk dld.ej*+dqdrdsdt Zbej*j>ej?dkk dld.dudv Zcej*j>ej?dkk dld.ej*+dqdrdwdx Zdej*j>ej?dkk dld.ej*+dqdrdydz Zeej*j>ej?dkk dld.d{d| Zfej*j>ej?dkk dld.d}d~ Zgej*+de	g ddee	g de	g dgfej<e	g dde	g dej*j>ej?dk dd.d/e	g ddee	g de	g dgfeddgde fej<eddgdeddgej*j>ej?dk dd.d/eddgdeddgfej<eg dde ej*j>ej?dkdd.d/ej<eg ddeg dej*j>ej?dk dd.d/ej<eg ddeg dej*j>ej?dk dd.d/e	g dde	 fej<e	g dde	g dej*j>ej?dk dd.d/e	g dde	 fgdd Zhej*j>ej?dkk dld.dd Ziej*+dddgdd Zjej*j>ej?dkdd.dd Zkej*+deRd dgdd_gdd Zldd Zmene!egZoej*j>ej?dk dd.Zpej*+de!e!fe"e!fej<eeepd/ej<eeepd/eefeefej<eeepd/ej<eeepd/e#e#fe&e#fe$e$fe%e$feefeefeefeefeefe efeoeofeeofgdd Zqej*+de!e"fe"e"fej<eeepd/ej<eeepd/eefeefej<eeepd/ej<eeepd/e#e&fe&e&fe$e%fe%e%feefeefeefeefee fe e feoefeefgdd ZrdS )    N)
LinearRing
LineStringMultiPolygonPointPolygon)assert_geometries_equal   )	all_types)empty)empty_line_stringempty_line_string_zempty_pointempty_point_zempty_polygongeometry_collectiongeometry_collection_zline_stringline_string_nan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_with_holepolygon_with_hole_z	polygon_zc                  C   s&   t td  } | g dks"J d S )NN)
r         r   r   r   r   r   r   r   )shapelyget_num_pointsr	   tolistactual r*   W/var/www/html/django/DPS/env/lib/python3.9/site-packages/shapely/tests/test_geometry.pytest_get_num_points'   s    r,   c                  C   s*   t ttd f } |  g dks&J d S )N)r   r   r   r   r   r   r   r   r   r   r   )r%   get_num_interior_ringsr	   r   r'   r(   r*   r*   r+   test_get_num_interior_rings,   s    r.   c                  C   s&   t td  } | g dks"J d S )Nr"   )
r   r   r   r      r   r/   r/   r   r   )r%   get_num_geometriesr	   r'   r(   r*   r*   r+   test_get_num_geometries1   s    r1   geomc                 C   s&   t | g d}t | s"J d S N)r   r/   )r%   	get_point
is_missingallr2   r)   r*   r*   r+   test_get_point_non_linestring6   s    r9   c                 C   sV   t | }t | d| ||d  g}t|d |d  t |dd  sRJ d S Nr   r   r/      )r%   r&   r5   r   r6   r7   r2   nr)   r*   r*   r+   test_get_pointF   s    
r>   c                 C   s    t | }t | sJ d S r"   )r%   get_exterior_ringr6   r7   r8   r*   r*   r+   "test_get_exterior_ring_non_polygonN   s    
r@   c                  C   s(   t ttg} t | dk s$J d S Nr/   )r%   r?   r   r   get_type_idr7   r(   r*   r*   r+   test_get_exterior_ring_   s    rC   c                 C   s&   t | g d}t | s"J d S r3   )r%   get_interior_ringr6   r7   r8   r*   r*   r+   "test_get_interior_ring_non_polygond   s    rE   c                  C   s@   t tg d} t| d | d  t | dd  s<J d S N)r   r4   r   r   r   r/   r;   )r%   rD   r   r   r6   r7   r(   r*   r*   r+   test_get_interior_ringu   s    rH   c                 C   s@   t | g d}t|d |d  t |dd  s<J d S rF   )r%   get_geometryr   r6   r7   r8   r*   r*   r+   test_get_geometry_simple{   s    rJ   c                 C   sV   t | }t | d| ||d  g}t|d |d  t |dd  sRJ d S r:   )r%   r0   rI   r   r6   r7   r<   r*   r*   r+   test_get_geometry_collection   s    
rK   c                  C   s"   t t } | g dksJ d S )N)	r   r   r/   r#   r;   r$         rM   )r%   rB   r	   r'   r(   r*   r*   r+   test_get_type_id   s    rN   c                  C   s"   t t } | g dksJ d S )N)	r   r   r   r/   r   r   r/   r   r4   )r%   Zget_dimensionsr	   r'   r(   r*   r*   r+   test_get_dimensions   s    rO   c                  C   s(   t ttd g } | g dks$J d S )N)r/   r#   r4   )r%   get_coordinate_dimensionr   r   r'   r(   r*   r*   r+   test_get_coordinate_dimension   s    rQ   c                  C   s&   t td  } | g dks"J d S )Nr"   )
r   r#   r$   r$   r/   r/   
   r#   r   r   )r%   Zget_num_coordinatesr	   r'   r(   r*   r*   r+   test_get_num_coordinates   s    rS   c                  C   s&   t td  } | g dks"J dS )z;All geometry types have no SRID by default; None returns -1r"   )
r   r   r   r   r   r   r   r   r   r4   N)r%   get_sridr	   r'   r(   r*   r*   r+   test_get_srid   s    rU   c                  C   s4   t td} t tdksJ t | dks0J d S )Ni  r   )r%   Zset_sridr   rT   r(   r*   r*   r+   test_get_set_srid   s    rV   func)r#   rM   r   z
GEOS < 3.7)reason)Zmarksc                 C   s   t | |sJ d S r"   )npisnan)rW   r2   r*   r*   r+   test_get_xyz_no_point   s    r[   c                   C   s"   t ttg ddgksJ d S )Ng       @)r%   get_xr   r   r'   r*   r*   r*   r+   
test_get_x   s    r]   c                   C   s"   t ttg ddgksJ d S )Ng      @)r%   get_yr   r   r'   r*   r*   r*   r+   
test_get_y   s    r_   c                   C   s   t tg dgksJ d S )Ng      @)r%   get_zr   r'   r*   r*   r*   r+   
test_get_z   s    ra   c                   C   s   t ttsJ d S r"   )rY   rZ   r%   r`   r   r*   r*   r*   r+   test_get_z_2d   s    rb   c                 C   s   t t| }t||  d S r"   )r%   Zfrom_wktstrr   r8   r*   r*   r+   test_new_from_wkt   s    rd   c                  C   sF   t dd} tt |  jd7  _W d    n1 s80    Y  d S )Nr/   r   )r   pytestraisesAttributeErrorZ_geom)r   r*   r*   r+   test_adapt_ptr_raises   s    
rh   c                 C   s$   t | t t| dd ks J d S )Nc                 S   s   | S r"   r*   xr*   r*   r+   <lambda>       z&test_hash_same_equal.<locals>.<lambda>hashr%   	transformr2   r*   r*   r+   test_hash_same_equal   s    rq   r4   c                 C   s$   t | t t| dd ks J d S )Nc                 S   s   | d S Nr   r*   ri   r*   r*   r+   rk      rl   z*test_hash_same_not_equal.<locals>.<lambda>rm   rp   r*   r*   r+   test_hash_same_not_equal   s    rs   c                 C   s   | t | dd ksJ d S )Nc                 S   s   | S r"   r*   ri   r*   r*   r+   rk      rl   ztest_eq.<locals>.<lambda>r%   ro   rp   r*   r*   r+   test_eq   s    ru   c                 C   s   | t | dd ksJ d S )Nc                 S   s   | d S rr   r*   ri   r*   r*   r+   rk      rl   ztest_neq.<locals>.<lambda>rt   rp   r*   r*   r+   test_neq   s    rv   c                 C   s(   | t | dd h}t|dks$J d S )Nc                 S   s   | S r"   r*   ri   r*   r*   r+   rk      rl   z!test_set_unique.<locals>.<lambda>r   )r%   ro   len)r2   ar*   r*   r+   test_set_unique   s    ry   c                   C   s   t t ksJ d S r"   r   r*   r*   r*   r+   test_eq_nan   s    r{   c                   C   s   t t krJ d S r"   rz   r*   r*   r*   r+   test_neq_nan   s    r|   c                  C   s<   t ttjtjgtjtjgggd } t| dks8J d S )NrR   )setr%   ZlinestringsrY   nanrw   rx   r*   r*   r+   test_set_nan   s    (r   c                  C   s"   t tgd } t| dksJ d S )NrR   r   )r}   r   rw   r   r*   r*   r+   test_set_nan_same_objects  s    r   c                 C   sR   t | }|dkrg }nt | td|}t | }t||ksDJ t|| d S Nr   )r%   r0   rI   range	get_partsrw   r   )r2   expected_num_partsexpected_partspartsr*   r*   r+   test_get_parts  s    

r   c                  C   sv   t d ttttg} g }| D ],}tdt|D ]}|	t
|| q0qt| }t|t|kshJ t|| d S r   )rY   arrayr   r   r   r   r   r%   r0   appendrI   r   rw   r   )r2   r   gir   r*   r*   r+   test_get_parts_array,  s    
r   c                  C   s   t tttg} t | }t | td|}t | }t	||ksFJ t
|| g }t|D ],}tdt |D ]}|t || qrq^t |}t	|t	|ksJ t
|| dS )zOn the first pass, the individual Multi* geometry objects are returned
    from the collection.  On the second pass, the individual singular geometry
    objects within those are returned.
    r   N)r%   geometrycollectionsr   r   r   r0   rI   r   r   rw   r   rY   Zasarrayr   )r2   r   r   r   Zexpected_subpartsr   r   subpartsr*   r*   r+   (test_get_parts_geometry_collection_multi:  s    



r   c                  C   s   t tttg} g }g }t| D ]:\}}tdt|D ] }|	t
|| |	| q8q tj| dd\}}t|t|ksJ t|| t ||sJ d S Nr   T)Zreturn_index)rY   r   r   r   r   	enumerater   r%   r0   r   rI   r   rw   r   array_equalr2   r   Zexpected_indexr   r   jr   indexr*   r*   r+   test_get_parts_return_indexQ  s    
r   c                 C   s<   t jtdd t|  W d   n1 s.0    Y  dS zOnly 1D inputs are supportedzArray should be one dimensionalmatchNre   rf   
ValueErrorr%   r   rp   r*   r*   r+   !test_get_parts_invalid_dimensions`  s    r   c                 C   s   t | t|  dS )z?Non-multipart geometries should be returned identical to inputsN)r   r%   r   rp   r*   r*   r+   test_get_parts_non_multij  s    r   c                 C   s   t t| dksJ d S r   )rw   r%   r   rp   r*   r*   r+   test_get_parts_Nonep  s    r   Zfoo*   c                 C   s<   t jtdd t|  W d    n1 s.0    Y  d S )Nz*One of the arguments is of incorrect type.r   )re   rf   	TypeErrorr%   r   rp   r*   r*   r+   test_get_parts_invalid_geometryu  s    r   c                 C   sl   t | t jjkst | r8t | }t|dkshJ n0t | }t|dksRJ |d t | kshJ d S Nr   r   )r%   rB   ZGeometryTypeZPOLYGONis_empty	get_ringsrw   r?   )r2   ringsr*   r*   r+   test_get_rings{  s    

r   c                  C   sL   t t} t| dksJ | d t tks0J | d t tdksHJ d S )Nr/   r   r   )r%   r   r   rw   r?   rD   )r   r*   r*   r+   test_get_rings_holes  s    
r   c                  C   s   t td ttg} g }g }t| D ]h\}}|d u s"t|r>q"|t	| || t
dt|D ] }|t|| || qhq"tj| dd\}}t|t|ksJ t|| t ||sJ d S r   )rY   r   r   r   r   r   r%   r   r   r?   r   r-   rD   r   rw   r   r   r   r*   r*   r+   test_get_rings_return_index  s    

r   c                 C   s<   t jtdd t|  W d   n1 s.0    Y  dS r   r   rp   r*   r*   r+   !test_get_rings_invalid_dimensions  s    r   )r#   rL   r   z
GEOS < 3.6c                  C   sh   t ttttf } t|  }|dgt|  ks4J t	| d}t| }|dgt|  ksdJ d S r   )
r	   r   r   r   r   r%   get_precisionr'   rw   set_precision)Z
geometriesr)   geometryr*   r*   r+   test_get_precision  s    r   c                   C   s    t t td gsJ d S r"   )rY   r7   rZ   r%   r   r*   r*   r*   r+   test_get_precision_none  s    r   mode)valid_output	pointwisekeep_collapsedc                 C   s   t dd}t|dksJ tj|d| d}t|dks>J t|| tj|d| d}t|dksjJ t|t dd t|t dd d S )N?r   r   r   )r   r%   r   r   r   )r   Zinitial_geometryr   r*   r*   r+   test_set_precision  s    

r   c                  C   sH   t tg dd} t| tg d t | d} t| tg d d S )N)r   r   r   r   r   r   r   r   r   )r   r   r   )r%   r   r   r   )r   r*   r*   r+   test_set_precision_drop_coords  s    r   c                 C   sr   t  V t d tjtdddd| d}t|dks>J t|tddd W d    n1 sd0    Y  d S )Nignorer   r   r   )warningscatch_warningssimplefilterr%   r   r   r   r   )r   r   r*   r*   r+   test_set_precision_z  s
    

r   c                 C   sP   t  4 t d tjtd| d}t|t W d    n1 sB0    Y  d S )Nr   r   r   )r   r   r   r%   r   r   r   )r   r)   r*   r*   r+   test_set_precision_nan  s    

r   c                   C   s   t d dd u sJ d S r   )r%   r   r*   r*   r*   r+   test_set_precision_none  s    r   c                   C   s    t tddtjd u sJ d S )Nr   )r%   r   r   rY   r~   r*   r*   r*   r+    test_set_precision_grid_size_nan  s    r   zgeometry,mode,expected)r/   r/   r;   r/   )g	@r#   r;   r;   r/   r;   )gffffff@r#   r   r   )r   r   r#   r#   r   )r   r   r   r   r   )r   r   r   r   r   r   r   )r#   rR   r   z%pointwise does not work pre-GEOS 3.10r   r   皙?r   )r   )r   r   r   )r   r   r   zSegfaults on GEOS 3.10.0)r   r   r   r   r   )r   r   r   z7this collapsed into an invalid linearring pre-GEOS 3.10c                 C   sT   t j| d|d}t jdk r@t t |t t |ksPJ ntt || dS )zILines and polygons collapse to empty geometries if vertices are too closer   r   r#   	   r   N)r%   r   geos_versionZto_wkt	normalizer   force_2d)r   r   expectedr)   r*   r*   r+   test_set_precision_collapse  s    a
r   c                  C   s   t t dddd} t t dddd}t t | |dksFJ t | d} t |d}t | |}t |dks|J t|tddg d	S )
zHOperations should use the most precise presision grid size of the inputsr   r   g      ?g      ?g      ?r   r   )r   r   N)r%   r   boxr   intersectionr   r   r   )Zbox1Zbox2outr*   r*   r+   test_set_precision_intersectionp  s    r   preserve_topologyFTc                 C   sX   t t( tjtddgd| d}W d    n1 s80    Y  tt|t  d S )Nr   r         ?)r   re   ZwarnsUserWarningr%   r   r   r   r   )r   r)   r*   r*   r+   set_precision_preserve_topology  s    
$r   zGEOS >= 3.10c                  C   sX   t t( tjtddgddd} W d    n1 s80    Y  tt| t  d S )Nr   r   r   r   r   r   r(   r*   r*   r+   set_precision_pointwise_pre_310  s    
$r   flagsr;   c                 C   sB   t ttf  tjtd|  W d    n1 s40    Y  d S )Nr   )re   rf   r   r   r%   libr   r   )r   r*   r*   r+   set_precision_illegal_flags  s    r   c                  C   s*   t t ddg} t|  s&J dS )z(Compatibility with empty_like, see GH373N)rY   
empty_liker   r%   r6   r7   )r   r*   r*   r+   
test_empty  s    r   r   z8Empty points don't have a dimensionality before GEOS 3.9zgeom,expectedc                 C   s*   t | }t |dksJ t|| d S rA   )r%   r   rP   r   r2   r   r)   r*   r*   r+   test_force_2d  s    
r   c                 C   s.   t j| dd}t |dks J t|| d S )Nr;   )zr#   )r%   Zforce_3drP   r   r   r*   r*   r+   test_force_3d  s    r   )sr   numpyrY   re   r%   r   r   r   r   r   Zshapely.testingr   commonr	   r
   Zempty_geometry_collectionr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r    r!   r,   r.   r1   markZparametrizer9   r>   r@   rC   rE   rH   rJ   rK   rN   rO   rQ   rS   rU   rV   r\   r^   paramr`   Zskipifr   r[   r]   r_   ra   rb   rd   rh   Zpointsr~   rq   rs   ru   rv   ry   r{   r|   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   Zgeometry_collection_2Zempty_geom_markr   r   r*   r*   r*   r+   <module>   s  d
















































	






_





