o
    h]                     @   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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%m&Z&m'Z'm(Z(m)Z)m*Z*m+Z+ dd Z,dd Z-d	d
 Z.ej/0de$e(e ee"egdd Z1ej/0deegdd Z2ej/0de$eee ee"egdd Z3dd Z4ej/0de$eee ee"egdd Z5dd Z6ej/0de$eee(gdd Z7ej/0de ee"egdd Z8dd Z9dd Z:d d! Z;d"d# Z<d$d% Z=d&d' Z>ej/0d(ej?ej@ejAejBejCej/jDejEd)k d*d+d,gej/0deFeeGeejHjIk d-d. ZJd/d0 ZKd1d2 ZLd3d4 ZMd5d6 ZNej/jDejEd)k d7d+d8d9 ZOej/0ded:d; ZPd<d= ZQej/0ded>d? ZRd@dA ZSdBdC ZTej/0de$e eee(e"eeeeeeFdgeUeFdggdDdE ZVdFdG ZWdHdI ZXdJdK ZYej/0ddggegge gge eggfdLdM ZZej/0de$ee(gdNdO Z[ej/0dddgg gdPdQ Z\ej/0ddRdRgdSgdTdU Z]dVdW Z^ej/0de$e eee(e"eeeeedgdXdY Z_dZd[ Z`d\d] Zaej/0ddgge(gggd^d_ Zbd`da Zcdbdc Zdddde Zeej/0dfdgdhdi Zfdjdk Zgej/0dfdgdldm Zhej/0dfdgdndo Zidpdq Zjdrds Zkej/0dte	g dudvee	g dwe	g dxgfejBe	g dudye	g dzej/jDejEd{k d|d+d,e	g dud}ee	g dwe	g dxgfed~dgdve fejBed~dgdyed~d~gej/jDejEd{k d|d+d,ed~dgd}ed~d~gfejBeg ddve ej/jDejEd{kdd+d,ejBeg ddyeg dej/jDejEd{k d|d+d,ejBeg dd}eg dej/jDejEd{k dd+d,e	g ddve	 fejBe	g ddye	g dej/jDejEd{k d|d+d,e	g dd}e	 fgdd Zldd Zmej/0dddgdd Znej/jDejEd{kdd+dd Zoej/0deFd dgddRgdd Zpdd Zqere$egZsej/0de$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e)e)fe*e)fe e fe!e feefeefe"e"fe#e"fesesfeesfgdd Ztej/0de$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e)e*fe*e*fe e!fe!e!feefeefe"e#fe#e#fesefeefgdd Zud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)equal_geometries_abnormally_yield_unequalgeometry_collectiongeometry_collection_zignore_invalidignore_warnings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_mpoint_zpoint_zmpolygonpolygon_with_holepolygon_with_hole_z	polygon_zc                  C   &   t td  } | g dksJ d S )NN)r         r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )shapelyget_num_pointsr   tolistactual r/   V/var/www/html/scripts/venv/lib/python3.10/site-packages/shapely/tests/test_geometry.pytest_get_num_points+      r1   c                  C   r&   )Nr'   )r   r   r   r      r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   )r*   get_num_interior_ringsr   r,   r-   r/   r/   r0   test_get_num_interior_rings0   r2   r5   c                  C   r&   )Nr'   )r3   r3   r3   r3   r3      r3   r6   r6   r   r3   r3   r3   r   r   r   r3   r3   r3   r3   r   )r*   get_num_geometriesr   r,   r-   r/   r/   r0   test_get_num_geometries5   r2   r8   geomc                 C   &   t | g d}t | sJ d S N)r   r6   )r*   	get_point
is_missingallr9   r.   r/   r/   r0   test_get_point_non_linestring:   s   rA   c                 C   V   t | }t | d| ||d  g}t|d |d  t |dd  s)J d S Nr   r3   r6      )r*   r+   r=   r   r>   r?   r9   nr.   r/   r/   r0   test_get_pointJ   s   
rG   c                 C   s    t | }t | sJ d S r'   )r*   get_exterior_ringr>   r?   r@   r/   r/   r0   "test_get_exterior_ring_non_polygonR   s   
rI   c                  C   s,   t ttg} t | t jjk sJ d S r'   )r*   rH   r"   r#   get_type_idGeometryType
LINEARRINGr?   r-   r/   r/   r0   test_get_exterior_ringc   s   rM   c                 C   r:   r;   )r*   get_interior_ringr>   r?   r@   r/   r/   r0   "test_get_interior_ring_non_polygonh   s   rO   c                  C   s@   t tg d} t| d | d  t | dd  sJ d S N)r   r<   r3   r   r3   r6   rD   )r*   rN   r#   r   r>   r?   r-   r/   r/   r0   test_get_interior_ringy   s   rR   c                 C   s@   t | g d}t|d |d  t |dd  sJ d S rP   )r*   get_geometryr   r>   r?   r@   r/   r/   r0   test_get_geometry_simple   s   rT   c                 C   rB   rC   )r*   r7   rS   r   r>   r?   rE   r/   r/   r0   test_get_geometry_collection   s   
rU   c                  C   r&   )Nr'   )r   r3   r6   r(   r(   rD   r)         rW   r   r3   r(   rD   r)   rV   rD   r)   rV   rW   r<   )r*   rJ   r   r,   r-   r/   r/   r0   test_get_type_id   r2   rX   c                  C   r&   )Nr'   )r   r3   r3   r6   r6   r   r3   r6   r3   r<   r   r3   r6   r   r3   r6   r   r3   r6   r3   r<   )r*   get_dimensionsr   r,   r-   r/   r/   r0   test_get_dimensions   r2   rZ   c                  C   s(   t ttd g } | g dksJ d S )N)r6   r(   r<   )r*   get_coordinate_dimensionr   r    r,   r-   r/   r/   r0   test_get_coordinate_dimension   s   r\   c                  C   r&   )Nr'   )r3   r(   r)   r)   
   r6   r6   r]   r(   r   r   r   r   r   r   r   r   r   r   r   r   )r*   get_num_coordinatesr   r,   r-   r/   r/   r0   test_get_num_coordinates   r2   r_   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   r   r   r   r   r   r   r   r   r   r   r   r<   N)r*   get_sridr   r,   r-   r/   r/   r0   test_get_srid   s   ra   c                  C   s4   t td} t tdksJ t | dksJ d S )Ni  r   )r*   set_sridr   r`   r-   r/   r/   r0   test_get_set_srid   s   rc   func)r(      r   zGEOS < 3.12)reason)marksc                 C   s   t | |s	J d S r'   )npisnan)rd   r9   r/   r/   r0   test_get_xyz_no_point   s   rj   c                   C   "   t ttg ddgksJ d S )Ng       @)r*   get_xr   r    r,   r/   r/   r/   r0   
test_get_x      "rm   c                   C   rk   )Ng      @)r*   get_yr   r    r,   r/   r/   r/   r0   
test_get_y   rn   rp   c                   C   s   t tg dgksJ d S )Ng      @)r*   get_zr    r,   r/   r/   r/   r0   
test_get_z   s   rr   c                   C   s   t tts
J d S r'   )rh   ri   r*   rq   r   r/   r/   r/   r0   test_get_z_2d      rs   z,M coordinates not supported with GEOS < 3.12c                   C   sJ   t ttg ddgksJ tt tsJ tt ts#J d S )Ng      @)	r*   get_mr   r!   r,   rh   ri   r   r    r/   r/   r/   r0   
test_get_m   s   rv   c                 C   s^   t t| }t| r(tt t||  W d    d S 1 s!w   Y  d S t||  d S r'   )r*   from_wktstrr   pytestraisesAssertionErrorr   r@   r/   r/   r0   test_new_from_wkt   s   "r|   c                  C   sH   t dd} tt |  jd7  _W d    d S 1 sw   Y  d S )Nr6   r3   )r   ry   rz   AttributeError_geom)r   r/   r/   r0   test_adapt_ptr_raises   s   
"r   c                 C   s(   | t | dd h}t|dksJ d S )Nc                 S   s   | S r'   r/   )xr/   r/   r0   <lambda>   s    z!test_set_unique.<locals>.<lambda>r3   )r*   	transformlen)r9   ar/   r/   r0   test_set_unique   s   r   c                  C   sb   t   tttjtjgtjtjgggd } W d    n1 s"w   Y  t| dks/J d S Nr]   r3   )r   setr*   linestringsrh   nanr   r   r/   r/   r0   test_set_nan   s   *r   c                  C   s"   t tgd } t| dksJ d S r   )r   r   r   r   r/   r/   r0   test_set_nan_same_objects   s   r   c                 C   sP   t | }|dkrg }nt | t|}t | }t||ks!J t|| d S Nr   )r*   r7   rS   range	get_partsr   r   )r9   expected_num_partsexpected_partspartsr/   r/   r0   test_get_parts  s   

r   c                  C   st   t d ttttg} g }| D ]}tt|D ]}|	t
|| qqt| }t|t|ks3J t|| d S r'   )rh   arrayr
   r   r   r   r   r*   r7   appendrS   r   r   r   )r9   r   gir   r/   r/   r0   test_get_parts_array%  s   
r   c                  C   s   t tttg} t | }t | t|}t | }t	||ks"J t
|| g }t|D ]}tt |D ]}|t || q7q.t |}t	|t	|ksSJ 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.
    N)r*   geometrycollectionsr   r   r   r7   rS   r   r   r   r   rh   asarrayr   )r9   r   r   r   expected_subpartsr   r   subpartsr/   r/   r0   (test_get_parts_geometry_collection_multi3  s   



r   c                  C   s   t tttg} g }g }t| D ]\}}tt|D ]}|	t
|| |	| qqtj| dd\}}t|t|ks@J t|| t ||sMJ d S NT)return_index)rh   r   r   r   r   	enumerater   r*   r7   r   rS   r   r   r   array_equalr9   r   expected_indexr   r   jr   indexr/   r/   r0   test_get_parts_return_indexJ  s   
r   c                 C   >   t jtdd t|  W d   dS 1 sw   Y  dS zOnly 1D inputs are supportedzArray should be one dimensionalmatchNry   rz   
ValueErrorr*   r   r9   r/   r/   r0   !test_get_parts_invalid_dimensionsY  s   "r   c                 C   s   t | t|  dS )z?Non-multipart geometries should be returned identical to inputsN)r   r*   r   r   r/   r/   r0   test_get_parts_non_multic  s   r   c                 C   s   t t| dksJ d S r   )r   r*   r   r   r/   r/   r0   test_get_parts_Nonei  s   r   foo*   c                 C   s>   t jtdd t|  W d    d S 1 sw   Y  d S )Nz*One of the arguments is of incorrect type.r   )ry   rz   	TypeErrorr*   r   r   r/   r/   r0   test_get_parts_invalid_geometryn  s   "r   c                   C   >   t jdd ttd W d    d S 1 sw   Y  d S )Nz@positional argument `return_index` for `get_parts` is deprecatedr   F)ry   deprecated_callr*   r   r   r/   r/   r/   r0   #test_get_parts_deprecate_positionalt  
   "r   c                 C   sn   t | t jjkst | rt | }t|dksJ d S t | }t|dks*J |d t | ks5J d S Nr   r3   )r*   rJ   rK   POLYGONis_empty	get_ringsr   rH   )r9   ringsr/   r/   r0   test_get_rings{  s   

r   c                  C   sL   t t} t| dksJ | d t tksJ | d t tdks$J d S )Nr6   r   r3   )r*   r   r#   r   rH   rN   )r   r/   r/   r0   test_get_rings_holes  s   
r   c                  C   s   t td ttg} g }g }t| D ]3\}}|d u st|rq|t	| || t
t|D ]}|t|| || q3qtj| dd\}}t|t|ksXJ t|| t ||seJ d S r   )rh   r   r"   r   r#   r   r*   r   r   rH   r   r4   rN   r   r   r   r   r   r/   r/   r0   test_get_rings_return_index  s    

r   c                 C   r   r   r   r   r/   r/   r0   !test_get_rings_invalid_dimensions  s   "r   c                   C   r   )Nz@positional argument `return_index` for `get_rings` is deprecatedr   F)ry   r   r*   r   r"   r/   r/   r/   r0   #test_get_rings_deprecate_positional  r   r   c                  C   sh   t ttttf } t|  }|dgt|  ksJ t	| d}t| }|dgt|  ks2J d S r   )
r   r    r   r
   r   r*   get_precisionr,   r   set_precision)
geometriesr.   geometryr/   r/   r0   test_get_precision  s   r   c                   C   s    t t td gsJ d S r'   )rh   r?   ri   r*   r   r/   r/   r/   r0   test_get_precision_none      r   mode)valid_output	pointwisekeep_collapsedc                 C   s   t dd}t|dksJ tdt tj|d| d}W d    n1 s&w   Y  t|dks4J t|| tdt tj|d| d}W d    n1 sQw   Y  t|dks_J t|t dd t|t dd d S )N?r   r(   r]   r   r   r3   )r   r*   r   r   UserWarningr   r   )r   initial_geometryr   r/   r/   r0   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   r3   r3   r3   r   r3   )r   r   r   )r*   r   r   r   )r   r/   r/   r0   test_set_precision_drop_coords  s   r   c                 C   sj   t dt tjtdddd| d}W d    n1 sw   Y  t|dks*J t|tddd d S )Nr   r   r3   r   )r   r   r*   r   r   r   r   )r   r   r/   r/   r0   test_set_precision_z  s
   r   c                 C   sR   t   t d tjtd| d}t|t W d    d S 1 s"w   Y  d S )Nignorer3   r   )warningscatch_warningssimplefilterr*   r   r   r   )r   r.   r/   r/   r0   test_set_precision_nan  s
   

"r   c                   C   s   t d dd u s
J d S r   )r*   r   r/   r/   r/   r0   test_set_precision_none  rt   r   c                   C   s    t tddtjd u sJ d S )Nr   )r*   r   r   rh   r   r/   r/   r/   r0    test_set_precision_grid_size_nan  r   r   zgeometry,mode,expected)r6   r6   rD   r6   )g	@r(   rD   rD   r6   rD   )gffffff@r(   r   r   )r   r   r(   r(   r   )r   r   r   r   r   )r   r   r   r   r   r   r   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   s.   t j| d|d}tt ||t jdkd dS )zILines and polygons collapse to empty geometries if vertices are too closer3   r   )r(   	   r   )	normalizeN)r*   r   r   force_2dgeos_version)r   r   expectedr.   r/   r/   r0   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s#J t | d} t |d}t | |}t |dks>J t|tddg d	S )
zHOperations should use the most precise precision grid size of the inputsr   r   g      ?g      ?g      ?r3   r   )r3   r   N)r*   r   boxr   intersectionr   r   r   )box1box2outr/   r/   r0   test_set_precision_intersectiono  s   r   preserve_topologyFTc                 C   sX   t t tjtddgd| d}W d    n1 sw   Y  tt|t  d S )Nr   r         ?)r   ry   warnsr   r*   r   r   r   r   )r   r.   r/   r/   r0   set_precision_preserve_topology     
r   zGEOS >= 3.10c                  C   sX   t t tjtddgddd} W d    n1 sw   Y  tt| t  d S )Nr   r   r   r   r   r   r-   r/   r/   r0   set_precision_pointwise_pre_310  r   r   flagsr3   rD   c                 C   sD   t ttf tjtd|  W d    d S 1 sw   Y  d S )Nr   )ry   rz   r   r   r*   libr   r   )r   r/   r/   r0   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)rh   
empty_liker   r*   r>   r?   )r   r/   r/   r0   
test_empty  s   r   zgeom,expectedc                 C   s*   t | }t |dksJ t|| d S )Nr6   )r*   r   r[   r   r9   r   r.   r/   r/   r0   test_force_2d  s   
r   c                 C   s.   t j| dd}t |dksJ t|| d S )NrD   )zr(   )r*   force_3dr[   r   r   r/   r/   r0   test_force_3d  s   r  )vr   numpyrh   ry   r*   r   r   r   r   r   shapely.testingr   shapely.tests.commonr   r	   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"   r#   r$   r%   r1   r5   r8   markparametrizerA   rG   rI   rM   rO   rR   rT   rU   rX   rZ   r\   r_   ra   rc   rl   ro   rq   paramru   skipifr   r   rJ   rK   POINTrj   rm   rp   rr   rs   rv   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   r   r   geometry_collection_2r   r  r/   r/   r/   r0   <module>   sf   "




















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

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

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

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

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