o
    eo                     @   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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 ejejejejejej j!ej"dk ddd	ej#ej$ej%ej&ej'f	Z(ej)ej*ej+ej,ej-fZ.ej /d
eej /de(dd Z0ej /d
eej /de.dd Z1ej /d
eej /dedd Z2ej /de(dd Z3ej /de.dd Z4ej /d
eej /de.dd Z5dd Z6dd Z7dd Z8ej /d
edd  Z9ej j!ej"d!k d"dd#d$ Z:ej j!ej"d!k d"dej /d%eefeefeeg d&eg d'geg d&g d'gd(feefegegfgd)d* Z;ej j!ej"d!k d"dd+d, Z<ej j!ej"d!k d"dej /d%eefeg d-e	d.d/gfeg d0eeg d1eg d2gfeefegegfgd3d4 Z=ej j!ej"d!k d"dej /d%eefeg d5eg d0geg d5eeg d6eg d1ggfedegedegfgd7d8 Z>ej /d%eefe	d9d.ge	d.d/gfgd:d; Z?d<d= Z@d>d? ZAd@dA ZBdBdC ZCdDdE ZDej j!ej"dk ddej /d%eg dFedGdHgfeg dIeg dJfeg dKeg dLfeg dMg dNgd(eg dMg dOgd(feeg dPeg dQgeeg dReg dSgfeefeefeefeefeefeefeefgdTdU ZEej j!ej"dVk dWdej /dXeg dRdYggdZd[ ZFej j!ej"dk ddd\d] ZGej j!ej"dk ddej /dXd^d_gd`da ZHej j!ej"dbk dcdej /d%edGddgedddGgfeg dJeg defeg dReg dffeg dMg dOgd(eg dgg dhgd(feje	dGddgdidjgge	dddGgdjdiggej j!ej"dkk dldd	eeg dReg dSgeeg dfeg dmgfeefeefeefeefeefeefeefgdndo ZIej j!ej"dbk dcddpdq ZJej j!ej"dbk dcdej /drdsdgdtdu ZKej /d%ed d e fedvdvedvdvfedvdwe fedGdxge fedydzgedydzgfeg d{e fed|d}ged~dgfgdd ZLej /deddgd(de feddgd(de feddgd(deddgd(feg dg dgd(deg dfgdd ZMej /d
edd ZNdd ZOej /dreeegdd ZPdd ZQdd ZRdd ZSej j!ejTdk dddd ZUdd ZVdd ZWdd ZXej j!ejTdk dddd ZYdd ZZej j!ej"dk ddej /d
eej /ddd gdd Z[ej j!ej"dk ddej /d
edd Z\ej j!ej"dk ddej /d
eeeegdd Z]ej j!ej"dk ddej /d
eeegdd Z^ej j!ej"dk dddd Z_ej j!ej"dk ddej /dedGdgdedGdgfeg dMdeg dMfedGdgdeg dfeg dMdeg dfedGdgedGdggdeg dedGdggfedGdgedGdggdgeg dedGdggfedGdgedGdggddgeg deg dgfgdd Z`ej j!ej"d!k d"dej /d
edd Zaej j!ej"d!k d"dej /deg dâe)edddfedHdge)edddfe
ddge)eddYdfedYdYedYdYfe e fgddɄ Zbej j!ej"dk ddej /d
edd̈́ Zcej j!ej"dk ddej /de
g d΢eg dϢfeg dТeg dѢfeg dҢeg dӢfed_dged_dgfedYdYedYdYfe e fgddք Zdej j!ej"dk ddej /de
g d΢eg dϢfeg dТeg dѢfeg dҢeg dӢfed_dged_dgfedYdYedYdYfe e fgdd؄ Zeej j!ej"dk ddddڄ ZfdS )    N)
GeometryGeometryCollectionGEOSException
LinearRing
LineStringMultiLineString
MultiPointMultiPolygonPointPolygon)assert_geometries_equal   )
	all_typesemptyempty_line_stringempty_pointempty_polygonignore_invalidline_stringmulti_pointpointpoint_z      r   zGEOS < 3.11)reason)Zmarksgeometryfuncc                 C   s@   || | g}|j dksJ |d d u st|d tsJ d S d S N   r   )shape
isinstancer   r   r   actual r%   OD:\Projects\ConvertPro\env\Lib\site-packages\shapely/tests/test_constructive.pytest_no_args_array:   s   &r'   c                 C   s   |t ju r2t | dvr2t jdk r2tjtdd || | gd W d    d S 1 s+w   Y  d S t|t ju oCt | dkoCt jdk  || | gd}W d    n1 sWw   Y  |j	dkscJ t
|d tslJ d S )	Nr   r    r   zonly accept linestringsmatch        r   r      r   r   )shapelyoffset_curveget_type_idgeos_versionpytestraisesr   r   voronoi_polygonsr!   r"   r   r#   r%   r%   r&   test_float_arg_arrayB   s&   



r5   	referencec                 C   s<   t j| | g||gdd}|jdksJ t|d tsJ d S )N      ?	tolerancer   r   )r.   snapr!   r"   r   )r   r6   r$   r%   r%   r&   test_snap_arrayY   s   r;   c                 C   s   | d }|d u s
J d S Nr%   r   r$   r%   r%   r&   test_no_args_missinga   s   r>   c                 C   s   | d d}|d u sJ d S )Nr7   r%   r=   r%   r%   r&   test_float_arg_missingg      
r?   c                 C   s   || t d}|d u sJ d S )Nnan)floatr#   r%   r%   r&   test_float_arg_nanm   s   rC   c                   C   D   t jtdd tjtddd W d    d S 1 sw   Y  d S )N'invalid' is not a valid optionr)   r   invalid)Z	cap_styler2   r3   
ValueErrorr.   bufferr   r%   r%   r%   r&   test_buffer_cap_style_invalidt      "rJ   c                   C   rD   )NrE   r)   r   rF   
join_stylerG   r%   r%   r%   r&   test_buffer_join_style_invalidy   rK   rN   c                  C   s    t jd tdd} | d u sJ d S )Nr7   r8   )r.   r:   r   r$   r%   r%   r&   test_snap_none~   s   rP   c                 C   s"   t j| ttjd}|d u sJ d S )Nr8   )r.   r:   r   nprA   r   r$   r%   r%   r&   test_snap_nan_float   s   rS   )r      r   z
GEOS < 3.8c                  C      t d } | d u sJ d S r<   r.   Z
build_arearO   r%   r%   r&   test_build_area_none   r@   rW   zgeom,expected)r   r   )r   r   r   r   )r   r   rX   )r   r   r    r    r(   rZ   )Zholesc                 C   s&   t | }||usJ ||ksJ d S r<   rV   geomexpectedr$   r%   r%   r&   test_build_area   s   
r_   c                  C   rU   r<   )r.   
make_validrO   r%   r%   r&   test_make_valid_none   r@   ra   )rX   rZ   r(   rZ   rX   )rZ   r(   )rX   rZ   )rX   r[   r    r   r   r    rX   )rZ   r[   rb   rZ   )rX   rc   rZ   rX   c                 C   s,   t | }||usJ t ||ksJ d S r<   )r.   r`   	normalizer\   r%   r%   r&   test_make_valid   s   
re   )rX   r[   rc   rX   )rZ   rX   rc   rZ   c                 C   s,   t | }tt |t |ksJ d S r<   )r.   r`   rQ   allrd   r\   r%   r%   r&   test_make_valid_1d   s   
"rg   )rZ   rX   c                 C   s   t | }||ksJ d S r<   )r.   rd   r\   r%   r%   r&   test_normalize   s   
rh   c                  C   sL   t tjdk  ttd} W d    n1 sw   Y  t| s$J d S )Nr,          @)r   r.   r1   r/   r   Zis_emptyrO   r%   r%   r&   test_offset_curve_empty   s   rj   c                  C   sH   t ttgddg} | d t tdksJ | d t tdks"J d S )N       g      r   r   r.   r/   r   resultr%   r%   r&    test_offset_curve_distance_array  s   ro   c                  C   s0   t jtddddd} t td}| |ksJ d S )Nrk   r    Zmitreri   )	quad_segsrM   mitre_limitrl   )result1result2r%   r%   r&   test_offset_curve_kwargs  s
   
rt   c                  C   s   d} t jt| d tjttgdtddgd W d    n1 s#w   Y  t jt| d tjttgdddgd	 W d    n1 sFw   Y  t jt| d tjttgdd
dgd W d    d S 1 sjw   Y  d S )Nonly accepts scalar valuesr)   r   rT   	   )rp   roundZbevelrL   g      @g      @)rq   )r2   r3   	TypeErrorr.   r/   r   rQ   arraymsgr%   r%   r&   #test_offset_curve_non_scalar_kwargs  s    "r|   c                   C   rD   )NrE   r)   r7   rF   rL   )r2   r3   rH   r.   r/   r   r%   r%   r%   r&   $test_offset_curve_join_style_invalid%  rK   r}   )rX   rX   r   r   rX   r~   )rX   r(   r(   r   r   rX   )rX   r(   r   rX   )rX   rX   r~   rZ   r~   rX   )rX   r~   rZ   r~   rX   )rX   
   r   r   r   r   r   rX   )r[   r[   r       r   r   r   r    r[   )r[   r   r   r   r[   )rX   rX   r~   rZ   r   r   rX   )r[   r[   r    r   rY   r   r    r[   rX   r~   rZ   r   rX   )r[   r   rY   r   r[   c                 C   s   t t| d| d S )Nr   )r   r.   remove_repeated_pointsr]   r^   r%   r%   r&   test_remove_repeated_points*  s   1r   r,   zGEOS < 3.12zgeom, tolerancer    c                 C   sB   t jtjdd t| | W d    d S 1 sw   Y  d S )NzInvalid number of pointsr)   )r2   r3   r.   r   r   r]   r9   r%   r%   r&   *test_remove_repeated_points_invalid_result^  s   "r   c                  C   sz   t d dd u s
J t d gd d gksJ tg d} tddg}t d | gd}|d d u s4J t|d | d S )Nr   )rX   rX   rZ   rX   rZ   r   )r.   r   tolistr   r   r   r^   rn   r%   r%   r&    test_remove_repeated_points_nonei  s   r   )Not a geometryr   rZ   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 typer)   )r2   r3   rx   r.   r   r   r%   r%   r&   (test_remove_repeated_points_invalid_typeu  s   "r   )r      r   z
GEOS < 3.7r(   )rX   r   r(   rX   rX   r   rZ   r~   rX   )rX   r   r   r   rX   )r[   r   r   r   r[   rY   r   )r   rT   r   zGEOS < 3.8.1)r[   r   rY   r   r[   c                 C   s   t t| | d S r<   )r   r.   reverser   r%   r%   r&   test_reverse|  s   8r   c                  C   st   t d d u s	J t d g d gksJ tg d} tg d}t d | g}|d d u s1J t|d | d S )Nr   r   r   r   )r.   r   r   r   r   r   r%   r%   r&   test_reverse_none  s   r   r]   r   c                 C   s>   t jtdd t|  W d    d S 1 sw   Y  d S r   )r2   r3   rx   r.   r   )r]   r%   r%   r&   test_reverse_invalid_type  s   "r      r   )   )r   r   )   r   )r   r   r   r   r   r   r   )      r   )r   r   c                 C   s    t | dddd}t|| d S )Nr   r   r.   clip_by_rectr   r\   r%   r%   r&   test_clip_by_rect  s   r   zgeom, rect, expected)rX   )r      r   r   )r   r   rX   )r   r   r   r   r   r   r   r   )r   r   r   r   )r   r   r   r   r   )rZ   )r   r   r   )r   r   rZ   )r   r   (   r   )r   r   r   r   )r   r   )r   r   r   r   r   r   r   r   c                 C   s    t j| g|R  }t|| d S r<   r   )r]   rectr^   r$   r%   r%   r&   test_clip_by_rect_polygon  s   -r   c                 C   sJ   t | | gdddd}|jdksJ |d d u s!t|d ts#J d S d S )Nr+   r7   r   r   )r.   r   r!   r"   r   rR   r%   r%   r&   test_clip_by_rect_array  s   &r   c                  C   s"   t d dddd} | d u sJ d S Nr   r   )r.   r   rO   r%   r%   r&   test_clip_by_rect_missing  s   r   c                 C   s$   t | dddd}|t ksJ d S r   )r.   r   r   )r]   r$   r%   r%   r&   test_clip_by_rect_empty  s   r   c                  C   sX   d} t jt| d tttgdddtddg W d    d S 1 s%w   Y  d S )Nru   r)   r   r   )r2   r3   rx   r.   r   r   rQ   ry   rz   r%   r%   r&   #test_clip_by_rect_non_scalar_kwargs&  s   ""r   c               	   C   s   t ddgt ddgt ddgt ddgt ddgt ddgtddd g} t| }t|dks3J ttg d	tg d
g}||ksGJ d S )NrX   rZ   r   r~   r      r   r   r   rX   rZ   r~   rX   rZ   rX   r   rZ   )r   r
   r.   
polygonizer0   r   r   )linesrn   r^   r%   r%   r&   test_polygonize,  s"   









r   c                  C   st  t ddgt ddgt ddgg} ttg dg}tt| }t|tjs*J ||ks0J tt| g}t|tj	sAJ |j
dksHJ |d |ksPJ t| | g}|j
dks^J t|}t|tj	skJ |j
dksrJ |d |kszJ |d	 |ksJ t| | g| | g| | gg}|j
d
ksJ t|}t|tj	sJ |j
dksJ | D ]}||ksJ qd S )NrX   rZ   r   r   r   r   r   r   r   r   r    r   r   )r   r   r   r.   r   rQ   ry   r"   r   ndarrayr!   flattenr   r^   rn   arrresr%   r%   r&   test_polygonize_arrayB  s6   




r   z1.15z8axis keyword for generalized ufunc introduced in np 1.15c                  C   sl   t ddgt ddgt ddgg} t| | g}tj|dd}|jdks&J tj|dd}|jdks4J d S )	NrX   rZ   r   r   Zaxisr   r   r   )r   rQ   ry   r.   r   r!   r   r   rn   r%   r%   r&   test_polygonize_array_axisc  s   


r   c                  C   s    t d d g} | t ksJ d S r<   )r.   r   r   rm   r%   r%   r&   test_polygonize_missingt  s   r   c                  C   s  d t ddgt ddgt ddgt ddgd t ddgt ddgt ddgtddd g} t| }t|d	ks9J td
d |D sDJ |\}}}}ttg dtg dg}||ks^J |t kseJ tt ddgt ddgg}||ksyJ |t ksJ d S )NrX   rZ   r   r~   r   r   )d   r   r   r   c                 s   s    | ]
}t |d kV  qdS )r   N)r.   r0   .0r]   r%   r%   r&   	<genexpr>      z'test_polygonize_full.<locals>.<genexpr>r   r   )r   r
   r.   polygonize_fulllenrf   r   r   )r   rn   ZpolygonscutsZdanglesrF   Zexpected_polygonsZexpected_danglesr%   r%   r&   test_polygonize_fullz  s8   









r   c                  C   s  t ddgt ddgt ddgg} ttg dg}tt| }t|dks*J tdd |D s5J |d |ks=J td	d |d
d  D sLJ tt| g}t|dks]J tdd |D shJ tdd |D ssJ |d d |ks}J tdd |d
d  D sJ t| | g}|j	dksJ t|}t|dksJ tdd |D sJ tdd |D sJ |d d |ksJ |d d
 |ksJ tdd |d
d  D sJ t| | g| | g| | gg}|j	dksJ t|}t|dksJ tdd |D sJ tdd |D sJ |d 
 D ]
}||ks*J q!|d
d  D ]}|
 D ]}|t ksBJ q8q2d S )NrX   rZ   r   r   r   c                 s       | ]	}t |tjV  qd S r<   )r"   r.   r   r   r%   r%   r&   r         z-test_polygonize_full_array.<locals>.<genexpr>r   c                 s       | ]}|t  kV  qd S r<   r   r   r%   r%   r&   r         r   c                 s   r   r<   r"   rQ   r   r   r%   r%   r&   r     r   c                 s       | ]}|j d kV  qdS )r   Nr!   r   r%   r%   r&   r     r   c                 s   s    | ]
}|d  t  kV  qdS )r   Nr   r   r%   r%   r&   r     r   r   c                 s   r   r<   r   r   r   r%   r%   r&   r     r   c                 s   r   r   Nr   r   r%   r%   r&   r     r   c                 s   s$    | ]}|D ]}|t  kV  qqd S r<   r   )r   r]   gr%   r%   r&   r     s   " r   c                 s   r   r<   r   r   r%   r%   r&   r     r   c                 s   r   )r   Nr   r   r%   r%   r&   r     r   )r   r   r   r.   r   rQ   ry   r   rf   r!   r   r   r%   r%   r&   test_polygonize_full_array  sL   




r   c                  C   s   t ddgt ddgt ddgg} t| | g}tj|dd}t|dks'J tdd |D s2J tj|d	d}t|dksAJ td
d |D sLJ d S )NrX   rZ   r   r   r   r   c                 s   r   r   r   r   r%   r%   r&   r     r   z2test_polygonize_full_array_axis.<locals>.<genexpr>r   c                 s   r   )r   Nr   r   r%   r%   r&   r     r   )r   rQ   ry   r.   r   r   rf   r   r%   r%   r&   test_polygonize_full_array_axis  s   


r   c                  C   s8   t d d g} t| dksJ tdd | D sJ d S )Nr   c                 s   r   r<   r   r   r%   r%   r&   r     r   z/test_polygonize_full_missing.<locals>.<genexpr>)r.   r   r   rf   rm   r%   r%   r&   test_polygonize_full_missing  s   r   )r   r   r   zGEOS < 3.10max_segment_lengthc                 C   sB   t jtdd tj| |d W d    d S 1 sw   Y  d S )NZIllegalArgumentExceptionr)   r   )r2   r3   r   r.   
segmentize)r   r   r%   r%   r&   *test_segmentize_invalid_max_segment_length  s   "r   c                 C   s    t j| tjd}|d u sJ d S )Nr   )r.   r   rQ   rA   rR   r%   r%   r&   &test_segmentize_max_segment_length_nan  s   r   c                 C      t j| dd}t||  d S Nr   r   r.   r   r   rR   r%   r%   r&   test_segmentize_empty  s   r   c                 C   r   r   r   rR   r%   r%   r&   test_segmentize_no_change  s   r   c                   C   s   t jd ddd u sJ d S r   )r.   r   r%   r%   r%   r&   test_segmentize_none  s   r   zgeometry,tolerance, expectedr   r   r   )rX   r   r   r   )	rX   r   r   r   r   r   r   r   r   r   rX   rc   g      ?)rX   r   rc   c                 C   s   t | |}t|| d S r<   r   )r   r9   r^   r$   r%   r%   r&   test_segmentize  s   Kr   c                 C   T   t | | g}|jdksJ |d d u st|d tsJ t d }|d u s(J d S r   )r.   minimum_bounding_circler!   r"   r   rR   r%   r%   r&   &test_minimum_bounding_circle_all_typesS  
   
r   zgeometry, expected)r   r   r   r   r   r   r   r[   r   r   c                 C   s   t | }t|| d S r<   )r.   r   r   r   r^   r$   r%   r%   r&   test_minimum_bounding_circle^  s   
r   )r   r   r   z
GEOS < 3.6c                 C   r   r   )r.   oriented_enveloper!   r"   r   rR   r%   r%   r&    test_oriented_envelope_all_types}  r   r   )rX   r   r   )rX   )r   r   r   r   rX   )rZ   )r   r   r   )rZ   )r   r   )r-   rT   r   rZ   )rZ   r   r   r   rZ   )r   r   r   rZ   r   )r   r   c                 C   "   t | }t || sJ d S r<   )r.   r   equalsrf   r   r%   r%   r&   test_oriented_envelope     
r   c                 C   r   r<   )r.   Zminimum_rotated_rectangler   rf   r   r%   r%   r&   test_minimum_rotated_rectangle  r   r  c                  C   s   t dd} t| djjd d  | djjd d   }tj|dd}t|jdks-J tj|ddd}t|jd	ks>J tj|dd}tj|d	d}t	|t	|k sXJ d S )
Nr   r   r   g      ?)ratior   T)r  Zallow_holesr   )
r
   r   rI   Zexteriorcoordsr.   concave_hullr   Z	interiorsZget_num_coordinates)pmprr   rs   Zresult3Zresult4r%   r%   r&   test_concave_hull_kwargs  s   
0r  )gnumpyrQ   r2   r.   r   r   r   r   r   r   r   r	   r
   r   Zshapely.testingr   commonr   r   r   r   r   r   r   r   r   r   boundaryZcentroidZconvex_hullparamr  markZskipifr1   envelopeZextract_unique_pointsnoderd   Zpoint_on_surfaceZCONSTRUCTIVE_NO_ARGSrI   r/   Zdelaunay_trianglessimplifyr4   ZCONSTRUCTIVE_FLOAT_ARGZparametrizer'   r5   r;   r>   r?   rC   rJ   rN   rP   rS   rW   r_   ra   re   rg   rh   rj   ro   rt   r|   r}   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   __version__r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r%   r%   r%   r&   <module>   sl   00
	












	








	







/










6





,

!
!+




















I	


	















