a
    J5d`                     @   s  d dl Z d dlZd dlZ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 d dlmZ d dlmZ ddlmZmZmZmZmZ dedd	d	 Zed
edZded  Zded  Zded  Zded  Zded  Zded  Zded  Z ded  Z!dZ"e j#dddgdddZ$e j#ddddgdddidddZ%e j#d ddd!d"gdd#d$iddd%d!d&gd'd	gd(d&gd)d	ggdd&d$d*ddd+d,d&gd-d&gd-d	gd,d	gd,d&gggdd.d/id$d*dgd0ddZ&e'ddZ(e'd!d"ge)d!d&gd'd	gd(d&gd)d	gge*d,d&gd-d&gd-d	gd,d	gd,d&gggZ+d1d2 Z,d3d4 Z-d5d6 Z.d7d8 Z/d9d: Z0d;d< Z1ej23d=ed>d? Z4ej23d@dAdBdC Z5dDdE Z6dFdG Z7dHdI Z8dJdK Z9dLdM Z:dNdO Z;dPdQ Z<ej23d=eej23dRdSdTgej23dUd dgdVdW Z=ej23d=e
 e	 e e fdXdY Z>dZd[ Z?d\d] Z@d^d_ ZAd`da ZBdbdc ZCej2jDejEddk dedfej23d@g dgdhdi ZFdjdk ZGej2jDejEddk dldfdmdn ZHej2jDejEddkdodfdpdq ZIdrds ZJdtdu ZKej2jDejEddkdvdfdwdx ZLej2jDejEddk dedfdydz ZMd{d| ZNd}d~ ZOdd ZPdd ZQdd ZRdd ZSdd ZTej2jDejEdk ddfdd ZUej2jDejEdk ddfdd ZVej2jDejEdkddfdd ZWej23deefeefeXegefeXegefeYegefeYegefeYeXegge feYeXegge fgdd ZZej2j[ejEdd dkddfej23deefeXegefeYegefeYeXegge!fgdd Z\ej2j[ejEdk ddfej23deefeXegefeYegefeYeXegge fgdd Z]ej23ded dfed dfeddfeddfeddfeddfe ddfe!ddfgdd Z^dd Z_ej23d=eeef dd Z`ej23d=eeef dd Zaej2jDejEdk ddfej23de$e(fe%e(fe&eYe+fe$gd e(gd fde$dge(dgfgdd Zbej2jDejEdk ddfdd Zcej2jDejEdk ddfdd Zdej2jDejEdk ddfdd Zeej2jDejEdk ddfdd Zfej2jDejEdk ddfej23de$e(fe$gd e(gd fde$dge(dgfgdd Zgej2jDejEdk ddfej23dg ddd Zhej2jDejEdk ddfdd Ziej2jDejEdk ddfej23d=eeXeegeYeegeYeYegeggdd Zjej2jDejEdk ddfej23d=edd ZkdS )    N)GeometryCollection
LineStringPointPolygon)UnsupportedGEOSVersionError)assert_geometries_equal   )	all_typesempty_pointempty_point_zpointpoint_zs      <2d      ?z<dnan   s        s            s          s            s          s                  s               ZZ01030000000100000002000000507daec600b1354100de02498e5e3d41306ea321fcb03541a011a53d905e3d41r   gffffff_@g333333$@)typeZcoordinates   indentZFeaturenamezDinagat Islands)r   geometry
propertiesZFeatureCollectiong     Y@g333333?prop0Zvalue0r   g        g     Y@g      Z@g     @Z@)Zprop1r   r   g      Y@g     @Y@thisthat)r   featuresc                  C   s8   t dd} t d}t||  t d}t||  d S )Nr   POINT (1 1)s   POINT (1 1))shapelypointsfrom_wktr   expectedactual r%   Q/var/www/html/django/DPS/env/lib/python3.9/site-packages/shapely/tests/test_io.pytest_from_wkt]   s
    


r'   c                   C   s   t d d u sJ d S N)r   r!   r%   r%   r%   r&   test_from_wkt_nonef   s    r)   c                   C   s   t jtdd td W d    n1 s.0    Y  t jtjdd td W d    n1 sh0    Y  t jtjdd td W d    n1 s0    Y  d S )N!Expected bytes or string, got intmatchr   z+Expected word but encountered end of stream zUnknown type: 'NOT'NOT A WKT STRING)pytestraises	TypeErrorr   r!   GEOSExceptionr%   r%   r%   r&   test_from_wkt_exceptionsk   s    ((r3   c                   C   s|   t jtdd tjddd W d    n1 s20    Y  t jtdd tjddd W d    n1 sn0    Y  d S )NzInvalid WKTr+   r-   warnZ
on_invalidr.   )r/   warnsWarningr   r!   r%   r%   r%   r&   test_from_wkt_warn_on_invalidx   s    ,r8   c                   C   s   t  ( t d tjddd W d    n1 s60    Y  t  ( t d tjddd W d    n1 sv0    Y  d S )Nerrorr-   ignorer5   r.   )warningscatch_warningssimplefilterr   r!   r%   r%   r%   r&   test_from_wkb_ignore_on_invalid   s    

,

r>   c                   C   s@   t jtdd tjddd W d    n1 s20    Y  d S Nnot a valid optionr+          unsupported_optionr5   )r/   r0   
ValueErrorr   r!   r%   r%   r%   r&   +test_from_wkt_on_invalid_unsupported_option   s    rD   geomc                 C   s"   t | }t |}t||  d S r(   )r   to_wktr!   r   )rE   wktr$   r%   r%   r&   test_from_wkt_all_types   s    

rH   rG   )POINT EMPTYzLINESTRING EMPTYzPOLYGON EMPTYzGEOMETRYCOLLECTION EMPTYc                 C   sD   t | }t | sJ t | s.J t || ks@J d S r(   )r   r!   is_geometryallis_emptyrF   )rG   rE   r%   r%   r&   test_from_wkt_empty   s    
rM   c                  C   s$   t dd} t t}t||  d S Nr   )r   r    from_wkbPOINT11_WKBr   r"   r%   r%   r&   test_from_wkb   s    
rQ   c                  C   s8   t dd} t d}t||  t d}t||  d S )Nr   Z*0101000000000000000000F03F000000000000F03Fs*   0101000000000000000000F03F000000000000F03F)r   r    rO   r   r"   r%   r%   r&   test_from_wkb_hex   s
    


rR   c                   C   s   t d d u sJ d S r(   )r   rO   r%   r%   r%   r&   test_from_wkb_none   s    rS   c                  C   s   t jtdd td W d    n1 s.0    Y  t jtjdd& td} | d u s`J W d    n1 st0    Y  t jtjdd& tt} | d u sJ W d    n1 s0    Y  d S )Nr*   r+   r   z]Unexpected EOF parsing WKB|ParseException: Input buffer is smaller than requested object sizerA   z4Points of LinearRing do not form a closed linestring)r/   r0   r1   r   rO   r2   INVALID_WKBresultr%   r%   r&   test_from_wkb_exceptions   s    (
*
rW   c                  C   s   t jtdd* tjddd} | d u s*J W d    n1 s>0    Y  t jtdd* tjtdd} | d u srJ W d    n1 s0    Y  d S )NzInvalid WKBr+   rA   r4   r5   )r/   r6   r7   r   rO   rT   rU   r%   r%   r&   "test_from_wkb_warn_on_invalid_warn   s    *rX   c                  C   s   t  4 t d tjddd} | d u s.J W d    n1 sB0    Y  t  4 t d tjtdd} | d u szJ W d    n1 s0    Y  d S )Nr9   rA   r:   r5   )r;   r<   r=   r   rO   rT   rU   r%   r%   r&   &test_from_wkb_ignore_on_invalid_ignore   s    

*

rY   c                   C   s@   t jtdd tjddd W d    n1 s20    Y  d S r?   )r/   r0   rC   r   rO   r%   r%   r%   r&   +test_from_wkb_on_invalid_unsupported_option   s    rZ   use_hexFT
byte_orderc                 C   sD   t | t jjkrtd t j| ||d}t |}t||  d S )Nz$Linearrings are not preserved in WKBhexr\   )	r   get_type_idGeometryType
LINEARRINGr/   skipto_wkbrO   r   )rE   r[   r\   wkbr$   r%   r%   r&   test_from_wkb_all_types   s
    

re   c                 C   sN   t | }t |} t |  s&J t |  s8J t | |ksJJ d S r(   )r   rc   rO   rJ   rK   rL   )rE   rd   r%   r%   r&   test_from_wkb_empty   s
    

rf   c                  C   s\   t dd} t | }|dks"J t j| dd}|dks<J t j| ddd}|dksXJ d S )	Nr   r   FtrimzPOINT (1.000000 1.000000)r   )Zrounding_precisionrh   zPOINT (1.000 1.000)r   r    rF   r   r$   r%   r%   r&   test_to_wkt  s    
rk   c                  C   sv   t ddd} t | }|dks$J t j| dd}|dks>J t j| dd}|dksXJ t j| dd}|d	ksrJ d S )
Nr   zPOINT Z (1 1 1)r   output_dimensionr   r   T)Zold_3dzPOINT (1 1 1)ri   r   r$   r%   r%   r&   test_to_wkt_3D  s    
ro   c                   C   s   t d d u sJ d S r(   )r   rF   r%   r%   r%   r&   test_to_wkt_none  s    rp   c                   C   sr   t t td W d    n1 s*0    Y  t tj tjtdd W d    n1 sd0    Y  d S )Nr      rl   )r/   r0   r1   r   rF   r2   r   r%   r%   r%   r&   test_to_wkt_exceptions#  s    (rr   c                   C   s   t tdksJ d S )NrI   )r   rF   r
   r%   r%   r%   r&   test_to_wkt_point_empty+  s    rs   r   	   r   z5Empty geometries have no dimensionality on GEOS < 3.9)reason)zPOINT Z EMPTYzLINESTRING Z EMPTYzLINEARRING Z EMPTYzPOLYGON Z EMPTYc                 C   s   t t | | ksJ d S r(   )r   rF   r!   )rG   r%   r%   r&   test_to_wkt_empty_z/  s    rw   c                  C   s&   t ttg} t | ds"J d S )Nz(POINT EMPTY, POINT (2 3)))r   geometrycollectionsr
   r   rF   endswith)Z
collectionr%   r%   r&   /test_to_wkt_geometrycollection_with_point_empty@  s    rz   z2MULTIPOINT (EMPTY, 2 3) only works for GEOS >= 3.9c                  C   s$   t ttg} t | dks J d S )NzMULTIPOINT (EMPTY, 2 3))r   multipointsr
   r   rF   rE   r%   r%   r&   'test_to_wkt_multipoint_with_point_emptyG  s    r}   z6MULTIPOINT (EMPTY, 2 3) gives ValueError on GEOS < 3.9c                  C   sF   t ttg} tt t |  W d    n1 s80    Y  d S r(   )r   r{   r
   r   r/   r0   rC   rF   r|   r%   r%   r&   .test_to_wkt_multipoint_with_point_empty_errorsP  s    r~   c                   C   s   t tdksJ d S )Nz<POINT (2 3)>)reprr   r%   r%   r%   r&   	test_repr[  s    r   c                  C   sB   t tdtd} t| }t|dks0J |ds>J d S )Ni  P   z...>)r   linestringsnpZaranger   lenry   )rE   Zrepresentationr%   r%   r&   test_repr_max_length_  s    r   z5MULTIPOINT (EMPTY, 2 3) gives Exception on GEOS < 3.9c                  C   s"   t ttg} t| dksJ d S )Nz,<shapely.MultiPoint Exception in WKT writer>)r   r{   r   r
   r   r|   r%   r%   r&   %test_repr_multipoint_with_point_emptyg  s    r   c                   C   s   t tdksJ d S )Nz<POINT Z EMPTY>)r   r   r%   r%   r%   r&   test_repr_point_z_emptyq  s    r   c                  C   s*   t dd} t j| dd}|tks&J d S )Nr   r\   r   r    rc   rP   rj   r%   r%   r&   test_to_wkby  s    r   c                  C   sD   t dd} t j| ddd}d}d}d}||| d|  ks@J d S )Nr   Tr]   Z01Z01000000Z000000000000F03Fr   r   r    rc   )r   r$   le
point_typecoordr%   r%   r&   test_to_wkb_hex  s    r   c                  C   sH   t ddd} t j| dd}|dks(J t j| ddd}|tksDJ d S )Nr   r   s           ?      ?      ?r   rm   r\   r   rn   r%   r%   r&   test_to_wkb_3D  s
    r   c                   C   s   t d d u sJ d S r(   )r   rc   r%   r%   r%   r&   test_to_wkb_none  s    r   c                   C   s   t t td W d    n1 s*0    Y  t tj tjtdd W d    n1 sd0    Y  t t tjtdd W d    n1 s0    Y  d S )Nr   rq   rl   otherflavor)r/   r0   r1   r   rc   r2   r   rC   r%   r%   r%   r&   test_to_wkb_exceptions  s    (,r   c                  C   sx   t dd} d}d}d}d}t j| dd|| d|  ks>J t j| d	d||d d d
  d|d d d
   kstJ d S )Nr          s      s         ?r   r   r   r   r   )r   ber   r   r   r%   r%   r&   test_to_wkb_byte_order  s    "0r   c                  C   s   d} d}t | }t j|dddks(J t j|ddd|ks@J t j|dddd| ksZJ t dd}t |td	}t j|ddd
}t|dd d	 d	ksJ d S )NZ201010000200400000000000000000000000000000000000000Z*010100000000000000000000000000000000000000Trg   zPOINT (0 0)r   r]   )r^   include_sridr\     )r   r\   rq   ru   z<u4)
r   rO   rF   rc   r    set_sridr   Zint32Z
frombufferitem)Zewkbrd   r$   r   Zpoint_with_sridrV   r%   r%   r&   test_to_wkb_srid  s    
r   )r   
   r   zGEOS < 3.10.0c                  C   sz   t jtdd} |  dd dks&J t jtddd} |  dd dksNJ t jtddd} |  dd d	ksvJ d S )
Nr   r   r   r   Z01000080extended)r\   r   isoZe9030000)r   rc   r   r^   )r$   r%   r%   r&   test_to_wkb_flavor  s    r   c                   C   sB   t jtdd  tjtddd W d    n1 s40    Y  d S )Nzcannot be used togetherr+   Tr   )r   r   )r/   r0   rC   r   rc   r   r%   r%   r%   r&   test_to_wkb_flavor_srid  s    r   c                   C   s<   t t tjtdd W d    n1 s.0    Y  d S )Nr   r   )r/   r0   r   r   rc   r   r%   r%   r%   r&   #test_to_wkb_flavor_unsupported_geos  s    r   zgeom,expectedc                 C   sv   t j| ddd}d}t|| }t||| ks4J |d | |d | ksPJ ttd||d   srJ d S )Nr   r   r      r   r   rc   r   r   isnanstructunpackrK   rE   r#   r$   Zcoordinate_lengthheader_lengthr%   r%   r&   test_to_wkb_point_empty_2d  s    r   )r      z'GEOS==3.8 never outputs 3D empty pointsc                 C   sv   t j| ddd}d}t|| }t||| ks4J |d | |d | ksPJ ttd||d   srJ d S )Nr   r   r      z<3dr   r   r%   r%   r&   test_to_wkb_point_empty_3d  s    r   )r   r   r   z=GEOS<3.8 always outputs 3D empty points if output_dimension=3c                 C   sv   t j| ddd}d}t|| }t||| ks4J |d | |d | ksPJ ttd||d   srJ d S )Nr   r   r   r   r   r   r   r%   r%   r&   'test_to_wkb_point_empty_2d_output_dim_3  s    r   zwkb,expected_type,expected_dim   c                 C   sJ   t | }t |sJ t ||ks*J t jdkrFt ||ksFJ d S )Nrt   )r   rO   rL   r_   geos_versionZget_coordinate_dimension)rd   expected_typeZexpected_dimrE   r%   r%   r&   test_from_wkb_point_empty0  s
    

r   c                  C   s:   t td} t j| dd}t |}t |dks6J d S )Ni  T)r   )r   r   r
   rc   rO   get_srid)r#   rd   r$   r%   r%   r&   test_to_wkb_point_empty_sridG  s    
r   c                 C   s"   t | }tt || dd d S )Nr   )Z	tolerance)pickledumpsr   loadsrE   Zpickledr%   r%   r&   test_pickleN  s    
r   c                 C   s2   t | d} t| }t t|dks.J d S )Nr   )r   r   r   r   r   r   r   r%   r%   r&   test_pickle_with_sridT  s    
r   )r   r   r   zGEOS < 3.10.1zgeojson,expected)NNc                 C   s   t | }t|| d S r(   )r   from_geojsonr   )geojsonr#   r$   r%   r%   r&   test_from_geojson[  s    
r   c                   C   sb  t jtdd td W d    n1 s.0    Y  t jtjdd td W d    n1 sh0    Y  t jtjdd td W d    n1 s0    Y  t jtjdd td	 W d    n1 s0    Y  t jtjd
d td W d    n1 s0    Y  t jtjd
d td W d    n1 sT0    Y  d S )Nr*   r+   r   zError parsing JSONr-   zUnknown geometry typez){"type": "NoGeometry", "coordinates": []}ztype must be array, but is nullz+{"type": "LineString", "coordinates": null}zkey 'type' not foundz${"geometry": null, "properties": []}z{"no": "geojson"})r/   r0   r1   r   r   r2   r%   r%   r%   r&   test_from_geojson_exceptionso  s    ((((*r   c                   C   sH   t jtdd& tjdddd u s&J W d    n1 s:0    Y  d S )NzInvalid GeoJSONr+   r-   r4   r5   )r/   r6   r7   r   r   r%   r%   r%   r&   !test_from_geojson_warn_on_invalid  s    r   c                   C   sL   t  0 t d tjdddd u s*J W d    n1 s>0    Y  d S )Nr9   r-   r:   r5   )r;   r<   r=   r   r   r%   r%   r%   r&   #test_from_geojson_ignore_on_invalid  s    

r   c                   C   s@   t jtdd tjtdd W d    n1 s20    Y  d S )Nr@   r+   rB   r5   )r/   r0   rC   r   r   GEOJSON_GEOMETRYr%   r%   r%   r&   /test_from_geojson_on_invalid_unsupported_option  s    r   zGEOS < 3.10zexpected,geometryc                 C   s*   t j| dd}t|t|ks&J d S )Nr   r   )r   
to_geojsonr   rK   Zasarray)r   r#   r$   r%   r%   r&   test_to_geojson  s    r   r   )Nr   r   c                 C   sD   | d u rdnd}t jt t| |d}tjt| d}||ks@J d S )N),:)r   z: )r   
separatorsr   )jsonr   r   r   r   r   GEOJSON_GEOMETRY_EXPECTED)r   r   r#   r$   r%   r%   r&   test_to_geojson_indent  s    r   c                   C   s8   t t td W d    n1 s*0    Y  d S rN   )r/   r0   r1   r   r   r%   r%   r%   r&   test_to_geojson_exceptions  s    r   c                 C   s<   t t t| sJ W d    n1 s.0    Y  d S r(   )r/   r0   rC   r   r   r|   r%   r%   r&   test_to_geojson_point_empty  s    r   c                 C   s>   t | t jjkrtd t | }t |}t||  d S )Nz(Linearrings are not preserved in GeoJSON)	r   r_   r`   ra   r/   rb   r   r   r   )rE   r   r$   r%   r%   r&   test_geojson_all_types  s
    


r   )lr   r   r   r;   numpyr   r/   r   r   r   r   r   Zshapely.errorsr   Zshapely.testingr   commonr	   r
   r   r   r   packrP   floatZNANZPOINT_NAN_WKBZPOINTZ_NAN_WKBZMULTIPOINT_NAN_WKBZMULTIPOINTZ_NAN_WKBZGEOMETRYCOLLECTION_NAN_WKBZGEOMETRYCOLLECTIONZ_NAN_WKBZNESTED_COLLECTION_NAN_WKBZNESTED_COLLECTIONZ_NAN_WKBrT   r   r   ZGEOJSON_FEATUREZGEOJSON_FEATURECOLECTIONr    r   r   ZpolygonsZGEOJSON_COLLECTION_EXPECTEDr'   r)   r3   r8   r>   rD   markZparametrizerH   rM   rQ   rR   rS   rW   rX   rY   rZ   re   rf   rk   ro   rp   rr   rs   Zskipifr   rw   rz   r}   r~   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r{   rx   r   Zxfailr   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r%   r%   r%   r&   <module>   s  	'+  		


	
	



	













		
