o
    e<B                     @   s  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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 dd Zdd	 Zd
d Zdd Zdd Zejjejdk dddd Z dd Z!dd Z"dd Z#dd Z$ej%dddgd d! Z&d"d# Z'ej%d$g d%d&d' Z(d(d) Z)d*d+ Z*d,d- Z+d.d/ Z,d0d1 Z-d2d3 Z.ej%d$g d4d5d6 Z/d7d8 Z0d9d: Z1ej%dddgej%d;d<d=gd>d? Z2d@dA Z3dBdC Z4dDdE Z5dFdG Z6dHdI Z7dJdK Z8dLdM Z9dNdO Z:dPdQ Z;dRdS Z<dTdU Z=dVdW Z>dXdY Z?dZd[ Z@ej%d$g d4d\d] ZAd^d_ ZBej%d$g d4d`da ZCej%dbejDe	 fejEe fejFe
 fejGe fgdcdd ZHej%deejDefejEefejEefejFefejGefejGefejGefejGefejGefejGefejGefejGefgdfdg ZIej%deejDefejEefejFefejGefgdhdi ZJej%deejDefejDefejDefejEefejEefejEefejFefejFefejFefg	djdk ZKej%dldmdneg dofdmdpeg dqfgdrds ZLej%dld d ddgddgfdneg doeg dtgfd d ddgddgfdndpgeg doeg dugfgdvdw ZMej%dxejNejNejNejNgejNd ddgd ejNddgd d ejNdgd d dejNggdydz ZOd{d| ZPd}d~ ZQej%ddejRdgdd ZSej%deTddd ZUdS )    N)GeometryCollectionGeometryType
LinearRing
LineStringMultiLineString
MultiPointMultiPolygonPolygon)assert_geometries_equal   )	empty_polygongeometry_collectionline_stringlinear_ringmulti_line_stringmulti_pointmulti_polygonpointpolygonc                 C   s"   ||f||f| |f| |f||ffS N )x1y1Zx2y2r   r   KD:\Projects\ConvertPro\env\Lib\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   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_xyz.   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_ndim3   s   "r,   )r(   
   r   zGEOS < 3.10)reasonc                  C   s"   t tjtj} t| t   d S r   )r   r   npnanr
   r    r!   r   r   r   test_points_nan_becomes_empty;   s   r1   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_coordsA   s   &

r7   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(   r5   r!   r   r   r   test_linestrings_from_xyL      r:   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(         r8   r9   )r   r<   )r   r=   r5   )xyr"   r   r   r   "test_linestrings_from_xy_broadcastQ   s   

r@   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   r5   r!   r   r   r   test_linestrings_from_xyz^   s   rA   dimr   r(   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 )	Nr-   r(   CorderFr   r   r   )r/   randomrandnasarrayr   r6   r
   swapaxes)rB   coordscoords1result1coords2result2coords3result3r   r   r   test_linestrings_bufferc   s   


"
rR   c                   C   :   t t td W d    d S 1 sw   Y  d S Nr3   )r)   r*   r+   r   r6   r   r   r   r   %test_linestrings_invalid_shape_scalart      "rU   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   GEOSExceptionr6   r/   ones)rW   r   r   r   test_linestrings_invalid_shapey   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 {})r-   r   r<   rC   rD   r<   r&   rF   r   r   r   )r-   r   r   )
r/   r\   r)   r*   r+   formatr   r6   rJ   rI   )msgrK   r   r   r   test_linestrings_invalid_ndim   s$   "
"ra   c                  C   *   t tdddd} t| tg d d S Nr   r   r   r   r3   r   r   r2   re   r   linearringsr   r
   r   r!   r   r   r   test_linearrings   s   ri   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=   rj   r   rh   r
   r   r!   r   r   r   test_linearrings_from_xy   r;   rl   c                  C   s2   t tddddd d } t| tg d d S )Nr   r   rd   rg   r!   r   r   r   test_linearrings_unclosed   s   rn   c                  C   s$   t g d} t| tg d d S )N)r2   r2   r2   )r2   r2   r2   r2   rk   r!   r   r   r   *test_linearrings_unclosed_all_coords_equal   s   ro   c                   C   rS   rT   )r)   r*   r+   r   rh   r   r   r   r   %test_linearrings_invalid_shape_scalar   rV   rp   )rX   rY   rZ   )r   r   r   )r   r   r   r4   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   rh   rW   rK   r   r   r   test_linearrings_invalid_shape      
"ru   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^   r-   r(   r<   r&   r   r   )r/   rG   rH   r)   r*   r+   r_   r   rh   hstackr6   )r`   rL   rN   rP   r   r   r   test_linearrings_invalid_ndim   s   ""rx   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/   fullr0   r)   r*   r   r[   rh   rK   r   r   r   test_linearrings_all_nan   s   "r{   rE   rC   rF   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 )Nr-   r<   rD   r   )r/   rG   rH   rI   r   rh   rw   r
   )rB   rE   rL   rM   rN   rO   rP   rQ   r   r   r   test_linearrings_buffer   s   
"


r|   c               	   C   s0   t t tdddd} t| tg d d S rc   )r   polygonsrh   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)Zholes)r
   r   r}   r   r   r   r   r   r   test_polygons_none   s   r   c                  C   rb   rc   )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   r-   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   r-   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   r-   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}   rh   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   r-   r=   r   r   r         8@r   r}   r   r   tolistr!   r   r   r   test_2_polygons_with_same_hole4  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   r-   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   r-   r=   r   r(   r   g      X@r   r   r!   r   r   r   $test_2_polygons_with_different_holesC  s
   r   c                   C   rS   rT   )r)   r*   r+   r   r}   r   r   r   r   /test_polygons_not_enough_points_in_shell_scalarK  rV   r   c                 C   rq   rr   r/   r\   r)   r*   r+   r   r}   rt   r   r   r   (test_polygons_not_enough_points_in_shellP  rv   r   c                   C   sB   t t ttdd W d    d S 1 sw   Y  d S )Nr   r<   r   r3   )r)   r*   r+   r   r}   r/   r\   r   r   r   r   /test_polygons_not_enough_points_in_holes_scalarf  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   rs   r   r   rt   r   r   r   (test_polygons_not_enough_points_in_holesk  s   
"r   zfunc,expectedc                 C   s"   | t jd gtd}t|| d S )N)Z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   Zget_num_geometriesr   sub_geomr"   r   r   r   test_create_collection  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  s   
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_type  s   "r   zcoords,ccw,expected)r   r   r   r   Trd   F)r2   rf   r3   re   r2   c                 C      t j| d|i}t|| d S Nccwr   boxr
   rK   r   r   r"   r   r   r   test_box  s   r   )r   r   r4   r8   r2   r   )r2   r8   r4   r   r2   c                 C   r   r   r   r   r   r   r   test_box_array  s   r   rK   c                 C   s   t j|  d u s	J d S r   )r   r   rz   r   r   r   test_box_nan  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   Zdestroy_prepared)r   r   r   r   test_destroy_prepared  s   $

r   	geom_typerm   c                 C   s$   t jd| d}t | sJ d S N)r   )r   )r   empty
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   r   r   r   Zis_emptyZget_type_idr   r   r   r   
test_empty  s   r   )Vnumpyr/   r)   r   r   r   r   r   r   r   r   r	   Zshapely.testingr
   commonr   r   r   r   r   r   r   r   r   r   r#   r$   r%   r,   markZskipifZgeos_versionr1   r7   r:   r@   rA   ZparametrizerR   rU   r]   ra   ri   rl   rn   ro   rp   ru   rx   r{   r|   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   ZmultipointsZmultilinestringsZmultipolygonsZgeometrycollectionsr   r   r   r   r   r   r0   r   r   r   MISSINGr   ranger   r   r   r   r   <module>   s<   (
,










	

	




	





