o
    hIW                     @   s  d Z 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	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 dd Zd	d
 Zdd Zdd Zdd Z ej!j"ej#dd dvdddd Z$ej!j"ej#dd dvdddd Z%ej!j"ej#dd dkdddd Z&ej!j"ej#dk d dej!'d!ej(ej)ej)gd"ej!j"ej#d#k d$dd%ej(ej)ej)ej)gd&ej!j"ej#d#k d$dd%d'ej)gd(fej)d'gd)fej)d'ej)gd*fej)ej)d'gd+fgd,d- Z*ej!'d.dej)gd/d0fej)dgd/d0fdej)d'gd/d1fdd'ej)gd/d1fdd'gd2d3fg d4d2d5fdej+gd/d0fgd6d7 Z,ej!'d8dej)gej)dgddej)gdej+gdej+ ggd9d: Z-d;d< Z.d=d> Z/d?d@ Z0dAdB Z1ej!'dCddDgdEdF Z2dGdH Z3dIdJ Z4ej!'dKg dLdMdN Z5dOdP Z6ej!'d8dd'gde7dQggdd'e7dQgdde7dQggg d4dde7dQggdd'e7dQgg dRge7dQe7dQge7dQe7dQgggdSdT Z8ej!'d8de7dQgdd'gddDggdd'gde7dQgddDggdd'gddDgde7dQgggdUdV Z9dWdX Z:dYdZ Z;d[d\ Z<d]d^ Z=d_d` Z>dadb Z?dcdd Z@dedf ZAdgdh ZBej!'dKg didjdk ZCdldm ZDdndo ZEej!'dCddDgej!'dpdqdrgdsdt ZFej!'d8ddgd'e7dQgd'dDgddggddge7dQdgd'dDgddggg due7dQddvgg dwg dugg dud'de7dQgg dwg duggdxdy ZGej!'dzdd'e7dQddgg d{fg d|dDd}e7dQdvdDgfdd'dde7dQgg d~fe7dQdd'ddgg dfgdd ZHdd ZIdd ZJdd ZKdd ZLdd ZMdd ZNdd ZOdd ZPdd ZQdd ZRdd ZSdd ZTdd ZUdd ZVdd ZWdd ZXdd ZYej!'dKg didd ZZdd Z[ej!'dKg didd Z\ej!'dej]e fej^e fej_e fej`e fgdd Zaej!'dej]efej^efej^efej_efej`efej`efej`efej`efej`efej`efej`efej`efgdd Zbej!'dej]efej^efej_efej`efgdd Zcej!'dej]efej]efej]efej^efej^efej^efej_efej_efej_efg	dd Zdej!'dddeg dfddeg dfgdd Zeej!'dddd'dgd'dgfdeg deg dgfddd'dgd'dgfddgeg deg dgfgdd Zfej!'d8ej)ej)ej)ej)gej)dd'd'gdej)d'd'gddej)d'gddd'ej)ggdd ZgddÄ Zhddń ZiddǄ Zjej!'ddejkdgdd˄ Zlej!'demd̃dd΄ ZndS )z@See test_creation_indices.py for tests with 'indices' parameter.    N)assert_array_equal)GeometryCollectionGeometryType
LinearRing
LineStringMultiLineString
MultiPointMultiPolygonPolygon)assert_geometries_equal)
empty_polygongeometry_collectionignore_invalidline_stringlinear_ringmulti_line_stringmulti_pointmulti_polygonpointpolygonc                 C   s"   ||f||f| |f| |f||ffS N )x1y1x2y2r   r   V/var/www/html/scripts/venv/lib/python3.10/site-packages/shapely/tests/test_creation.pybox_tpl#   s   "r   c                  C   s8   t ddgddgg} t| t ddt ddg d S )Nr      shapelypointsr   Pointactualr   r   r   test_points_from_coords'   s   "r%   c                  C   s2   t dddg} t| t ddt ddg d S )Nr   r      r   r#   r   r   r   test_points_from_xy,   s   "r'   c                  C   s8   t ddddg} t| t dddt dddg d S )Nr&   r   r   r#   r   r   r   test_points_from_xyz1   s   &r(   c                   C   s|   t jtdd tg d W d    n1 sw   Y  t jtdd tdg W d    d S 1 s7w   Y  d S )Nz!dimension should be 2 or 3, got 4match)r   r&   r      z!dimension should be 2 or 3, got 1r   pytestraises
ValueErrorr    r!   r   r   r   r   test_points_invalid_ndim6   s   "r0   r   )r+   
   r+      r+      zGEOS not in 3.10, 3.11, 3.12)reasonc                  C   s"   t tjtj} | jdksJ d S NPOINT EMPTYr    r!   npnanwktr#   r   r   r   %test_points_nan_all_nan_becomes_empty>   s   r>   )r1   r3   zGEOS not in 3.10, 3.11c                  C   &   t tjtjtj} | jdksJ d S r8   r:   r#   r   r   r   +test_points_nan_3D_all_nan_becomes_empty_2DG   s   r@   r5   zGEOS != 3.12c                  C   r?   )NPOINT Z EMPTYr:   r#   r   r   r   (test_points_nan_3D_all_nan_becomes_emptyP   s   rB   )r+   r6   r   zGEOS < 3.12zcoords,expected_wktzPOINT (NaN NaN))r+      r   zGEOS < 3.13)markszPOINT Z (NaN NaN NaN)r&   zPOINT (1 NaN)zPOINT (NaN 1)zPOINT Z (NaN 1 NaN)zPOINT Z (NaN NaN 1)c                 C   s    t j| dd}|j|ksJ d S )Nallow
handle_nanr    r!   r=   )coordsexpected_wktr$   r   r   r   test_points_handle_nan_allowV   s   rK   zcoords,handle_nan,expected_wktskipr9   rA   errorzPOINT (0 1))r   r&   r   zPOINT Z (0 1 2)c                 C   s    t j| |d}|j|v sJ d S )NrF   rH   )rI   rG   rJ   r$   r   r   r   test_points_handle_nans   s   rN   rI   c                 C   sB   t jtdd tj| dd W d    d S 1 sw   Y  d S )N.*NaN.*r)   rM   rF   r,   rI   r   r   r   test_points_handle_nan_error   s   "rQ   c                  C   sH   t ddgddggddgddggg} t| tddgtddgg d S )Nr   r&   r   r   r   r&   r&   r   r   r    linestringsr   r   r#   r   r   r   test_linestrings_from_coords   s   &

rW   c                  C   s*   t ddgddg} t| tddg d S )Nr   r&   r   r+   r   r   r&   r+   rU   r#   r   r   r   test_linestrings_from_xy      rZ   c                  C   sF   ddg} ddgddgf}t | |}t|tddgtd	d
gg d S )Nr   r&   r   r+         rX   rY   )r   r\   )r&   r]   rU   xyr$   r   r   r   "test_linestrings_from_xy_broadcast   s   

ra   c                  C   s,   t ddgddgd} t| tddg d S )Nr   r&   r   r+   )r   r   r   )r&   r+   r   rU   r#   r   r   r   test_linestrings_from_xyz   s   rb   dimr+   c                 C   s   t jdd| }t j|dd}t|}t j|dd}t|}t|| t jt t |dddddd}t t |dddd}t|}t|| d S )	Nr2   r+   CorderFr   r   r&   )r;   randomrandnasarrayr    rV   r   swapaxes)rc   rI   coords1result1coords2result2coords3result3r   r   r   test_linestrings_buffer   s   


"
rr   c                  C      t td} | jsJ d S NrX   )r    rV   r;   emptyis_emptyr#   r   r   r   test_linestrings_empty      rw   c                   C   :   t t td W d    d S 1 sw   Y  d S NrS   )r-   r.   r/   r    rV   r   r   r   r   %test_linestrings_invalid_shape_scalar      "r{   shape)r   r&   r   r&   r&   r   r&   r   c                 C   sB   t tj tt|  W d    d S 1 sw   Y  d S r   )r-   r.   r    GEOSExceptionrV   r;   ones)r}   r   r   r   test_linestrings_invalid_shape   s   	"r   c                  C   sh  d} t jddd}tjt| dd t| W d    n1 s#w   Y  t jddd}tjt| dd t| W d    n1 sIw   Y  t t t ddd	d
d}t t t j	|dddd	d
d	}tjt| dd t| W d    n1 sw   Y  t d}tjt| d
d t| W d    d S 1 sw   Y  d S )N8The ordinate \(last\) dimension should be 2 or 3, got {})r2   r   r\   rd   re   r\   r)   rg   r   r   r&   )r2   r   r&   )
r;   r   r-   r.   r/   formatr    rV   rk   rj   )msgrI   r   r   r   test_linestrings_invalid_ndim   s$   "
"r   r<   )r   r   r+   c                 C   \   t   tj| dd}W d    n1 sw   Y  tj|t| d dkd}t||  d S NrE   rF   r   r+   )	include_z)r   r    rV   get_coordinateslenr   rI   r$   r   r   r   !test_linestrings_handle_nan_allow   s
   r   c                 C   s$   t j| dd}t|tddg d S )NrL   rF   r   r&   )r   r+   rU   r   r   r   r    test_linestrings_handle_nan_skip  s   	r   c                   C   sP   t tj tjddgdtdggdd W d    d S 1 s!w   Y  d S )Nr   r&   r   r<   rL   rF   )r-   r.   r    r   rV   floatr   r   r   r   (test_linestrings_handle_nan_skip_invalid  s    "r   c                  C   (   t jtjdtjddd} | jsJ d S )N)r+   r   
fill_valuerL   rF   )r    rV   r;   fullr<   rv   r#   r   r   r   )test_linestrings_handle_nan_skip_only_nan  s   r   c                   C   sX   t jtdd tjddgdtdgddggdd	 W d    d S 1 s%w   Y  d S )
NrO   r)   r   r&   r   r<   r+   rM   rF   )r-   r.   r/   r    rV   r   r   r   r   r   !test_linestrings_handle_nan_error  s   &"r   c                  C   *   t tdddd} t| tg d d S Nr   r&   r&   r   rS   r   rR   r   r    linearringsr   r   r   r#   r   r   r   test_linearrings"  s   r   c                  C   rs   rt   )r    r   r;   ru   rv   r#   r   r   r   test_linearrings_empty)  rx   r   c                  C   s*   t g dg 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#   r   r   r   test_linearrings_from_xy.  r[   r   c                  C   s2   t tddddd d } t| tg d d S )Nr   r&   r   r   r#   r   r   r   test_linearrings_unclosed3  s   r   c                  C   s$   t g d} t| tg d d S )N)rR   rR   rR   )rR   rR   rR   rR   r   r#   r   r   r   *test_linearrings_unclosed_all_coords_equal:  s   r   c                   C   ry   rz   )r-   r.   r/   r    r   r   r   r   r   %test_linearrings_invalid_shape_scalar?  r|   r   )r~   r   r   )r   r   r   )r&   r   r   rT   c                 C      t | }tt t| W d    n1 sw   Y  |d  d7  < tt t| W d    d S 1 s=w   Y  d S N.r&   r&   )r;   r   r-   r.   r/   r    r   r}   rI   r   r   r   test_linearrings_invalid_shapeD     
"r   c                  C   s  d} t jddd}tjt| dd t| W d    n1 s$w   Y  t 	||d d dgd d f f}tjt| dd t| W d    n1 sTw   Y  t jddd}tjt| dd t| W d    d S 1 s|w   Y  d S )Nr   r2   r+   r\   r)   r   r&   )
r;   rh   ri   r-   r.   r/   r   r    r   hstack)r   rl   rn   rp   r   r   r   test_linearrings_invalid_ndimZ  s   ""r   c                  C   sJ   t dt j} ttj t|  W d    d S 1 sw   Y  d S )N)r\   r   )r;   r   r<   r-   r.   r    r   r   rP   r   r   r   test_linearrings_all_nank  s   "r   rf   rd   rg   c                 C   s   t jdd| }t j||d}t|}t ||d d dgd d f f}t j||d}t|}t|| t j|d |d}t|}t||d  d S )Nr2   r\   re   r   )r;   rh   ri   rj   r    r   r   r   )rc   rf   rl   rm   rn   ro   rp   rq   r   r   r   test_linearrings_bufferq  s   
"


r   )r   r   r]   r]   )r&   r+   r]   c                 C   r   r   )r   r    r   r   r   r   r   r   r   r   !test_linearrings_handle_nan_allow  s
   
r   zx,yr+   r\   r]   r]   r+   )r   r&   r&   r   r   r\   )r+   r\   r]   r+   r+   )r+   r+   r\   r]   r+   c                 C   s&   t j| |dd}t|tg d d S )NrL   rF   r   r   r^   r   r   r    test_linearrings_handle_nan_skip     
r   c                   C   sN   t t tjdtddgg ddd W d    d S 1 s w   Y  d S )Nr   r<   )r+   r\   r+   rL   rF   r-   r.   r/   r    r   r   r   r   r   r   (test_linearrings_handle_nan_skip_invalid  s    "r   c                  C   r   )N)r]   r   r   rL   rF   )r    r   r;   r   r<   rv   r#   r   r   r   )test_linearrings_handle_nan_skip_only_nan  s   r   c                   C   sV   t jtdd tjddtdddgg ddd	 W d    d S 1 s$w   Y  d S )
NrO   r)   r   r&   r<   r   r   rM   rF   r   r   r   r   r   !test_linearrings_handle_nan_error  s
   "r   c               	   C   s0   t t tdddd} t| tg d d S r   )r    polygonsr   r   r   r
   r#   r   r   r   test_polygon_from_linearring  s   r   c                   C   s*   t td t t tjd tgdt d S )N)holes)r   r    r   r   r   r   r   r   r   test_polygons_none  s   r   c                  C   r   r   )r    r   r   r   r
   r#   r   r   r   test_polygons  r[   r   c                	   C   sP   t t ttddddtdddd W d    d S 1 s!w   Y  d S )Nr   r2   r&   r   )r-   r.   r/   r    r   r   r   r   r   r    test_polygon_no_hole_list_raises  s   ""r   c                   C   s@   t ttjf tt W d    d S 1 sw   Y  d S r   )r-   r.   	TypeErrorr    r   r   r   r   r   r   r   test_polygon_no_hole_wrong_type  s   "r   c                   C   D   t ttjf tttg W d    d S 1 sw   Y  d S r   )r-   r.   r   r    r   r   r   r   r   r   r   r   !test_polygon_with_hole_wrong_type     "r   c                   C   r   r   )r-   r.   r   r    r   r   r   r   r   r   r   r   test_polygon_wrong_hole_type  r   r   c                  C   s8   t tddddtddddg} t | dksJ d S )Nr   r2   r&   r        X@r    r   r   arear#   r   r   r   test_polygon_with_1_hole  s   "r   c               	   C   sD   t tddddtddddtddddg} t | dks J d S Nr   r2   r&   r   r+   r\        X@r   r#   r   r   r   test_polygon_with_2_holes  s   &r   c                  C   sX   t t tddddt tddddd t tddddg} t | dks*J d S r   )r    r   r   r   r   r#   r   r   r   test_polygon_with_none_hole  s   r   c                  C   sN   t tddddtddddgtddddg} t |  ddgks%J d S )Nr   r2   r]   r&   r   r         8@r    r   r   r   tolistr#   r   r   r   test_2_polygons_with_same_hole  s   (r   c               	   C   sZ   t tddddtddddgtddddtddddg} t |  dd	gks+J d S )
Nr   r2   r]   r&   r   r+   r\   r   g      7@r   r#   r   r   r   !test_2_polygons_with_2_same_holes  s
   r   c               	   C   s^   t tddddtddddgtddddgtddddgg} t |  ddgks-J d S )	Nr   r2   r]   r&   r+   r   g      X@r   r   r#   r   r   r   $test_2_polygons_with_different_holes  s
   r   c                   C   ry   rz   )r-   r.   r/   r    r   r   r   r   r   /test_polygons_not_enough_points_in_shell_scalar  r|   r   c                 C   r   r   r;   r   r-   r.   r/   r    r   r   r   r   r   (test_polygons_not_enough_points_in_shell  r   r   c                   C   sB   t t ttdd W d    d S 1 sw   Y  d S )Nr&   r\   r   rS   )r-   r.   r/   r    r   r;   r   r   r   r   r   /test_polygons_not_enough_points_in_holes_scalar!  s   "r   c                 C   s   t | }tt tt d| W d    n1 sw   Y  |d  d7  < tt tt d| W d    d S 1 sEw   Y  d S )Nr   r   r&   r   r   r   r   r   (test_polygons_not_enough_points_in_holes&  s   
"r   zfunc,expectedc                 C   s"   | t jd gtd}t|| d S )N)dtype)r;   arrayobjectr   )funcexpectedr$   r   r   r    test_create_collection_only_none<  s   
r   zfunc,sub_geomc                 C   s"   | ||g}t |dksJ d S Nr   r    get_num_geometriesr   sub_geomr$   r   r   r   test_create_collectionJ  s   r   c                 C   s&   | |d d |g}t |dksJ d S r   r   r   r   r   r   !test_create_collection_skips_none`  r   r   c                 C   s:   t t | |g W d    d S 1 sw   Y  d S r   )r-   r.   r   )r   r   r   r   r   &test_create_collection_wrong_geom_typen  s   "r   zcoords,ccw,expected)r   r   r&   r&   Tr   F)rR   r   rS   r   rR   c                 C      t j| d|i}t|| d S Nccwr    boxr   rI   r   r   r$   r   r   r   test_box  s   r   )r   r   rT   rX   rR   r   )rR   rX   rT   r   rR   c                 C   r   r   r   r   r   r   r   test_box_array  s   r   c                 C   s   t j|  d u s	J d S r   )r    r   rP   r   r   r   test_box_nan  s   r   c                   C   sD   t jdd tddddd W d    d S 1 sw   Y  d S )Nz1positional argument `ccw` for `box` is deprecatedr)   r   r&   T)r-   deprecated_callr    r   r   r   r   r   test_box_deprecate_positional  s
   "r   c               
   C   s   t tddd tddddg} | d jdksJ | d jdks$J t|  | d jdks2J | d d u s:J | d jdksCJ | d j}t|  | d j|ksVJ d S Nr&   r   r   )r;   r   r    r!   r   _geom_preparedprepare)arroriginalr   r   r   test_prepare  s   $


r   c               
   C   s   t tddd tddddg} t|  | d jdks J | d jdks)J t|  | d jdks7J | d d u s?J | d jdksHJ t|  d S r   )r;   r   r    r!   r   r   r   destroy_prepared)r   r   r   r   test_destroy_prepared  s   $

r   	geom_typer   c                 C   s$   t jd| d}t | sJ d S N)r   )r   )r    ru   
is_missingallr   r$   r   r   r   test_empty_missing  s   r     c                 C   sN   t jd| d}t |  sJ t | sJ t || k s%J d S r   )r    ru   r   r   rv   get_type_idr  r   r   r   
test_empty  s   r  )o__doc__numpyr;   r-   numpy.testingr   r    r   r   r   r   r   r   r	   r
   shapely.testingr   shapely.tests.commonr   r   r   r   r   r   r   r   r   r   r   r%   r'   r(   r0   markskipifgeos_versionr>   r@   rB   parametrizeparamr<   rK   infrN   rQ   rW   rZ   ra   rb   rr   rw   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   r   r   r   r   r   r   multipointsmultilinestringsmultipolygonsgeometrycollectionsr   r   r   r   r   r   r   r   r   r   MISSINGr  ranger  r   r   r   r   <module>   s
   (
0
















  
	
	






	

	




	





