
    Ogs                        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j,                  ddd      z   Z ej,                  d	 ed
            Zdedz  z   Zdedz  z   Zdedz  z   Zdedz  z   Zdedz  z   Zdedz  z   Zdedz  z   Z dedz  z   Z!dZ" e jF                  dddgdd      Z$ e jF                  ddddgdddidd      Z% e jF                  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d/d      Z& ejN                  dd      Z( ejN                  d d!g       ejR                  d d%gd&dgd'd%gd(dgg       ejT                  d+d%gd,d%gd,dgd+dgd+d%gg      gZ+d0 Z,d1 Z-d2 Z.d3 Z/d4 Z0d5 Z1ejd                  jg                  d6e      d7        Z4ejd                  jg                  d8d9      d:        Z5ejd                  jg                  d8d;      d<        Z6d= Z7d> Z8d? Z9d@ Z:dA Z;dB Z<dC Z=ejd                  jg                  d6e      ejd                  jg                  dDdEdFg      ejd                  jg                  dGd dHg      dI                      Z>ejd                  jg                  d6 e
        e	        e        e       f      dJ        Z?ejd                  jg                  dKdL      dM        Z@dN ZAdO ZBdP ZCdQ ZDdR ZEdS ZFejd                  j                  ej                  dTk  dUV      ejd                  jg                  d8g dW      dX               ZIdY ZJejd                  j                  ej                  dTk  dZV      d[        ZKejd                  j                  ej                  dTk\  d\V      d]        ZLd^ ZMd_ ZNejd                  j                  ej                  dTk\  d`V      da        ZOejd                  j                  ej                  dTk  dUV      db        ZPdc ZQdd ZRde ZSdf ZTdg ZUdh ZVdi ZWejd                  j                  ej                  djk  dkV      dl        ZXejd                  j                  ej                  djk  dkV      dm        ZYejd                  j                  ej                  djk\  dkV      dn        ZZejd                  jg                  doeefeef ej                  eg      ef ej                  eg      ef ej                  eg      ef ej                  eg      ef ej                   ej                  eg      g      e f ej                   ej                  eg      g      e fg      dp        Z]ejd                  j                  ej                  dd dqk(  drV      ejd                  jg                  doeef ej                  eg      ef ej                  eg      ef ej                   ej                  eg      g      e!fg      ds               Z_ejd                  j                  ej                  dtk  duV      ejd                  jg                  doeef ej                  eg      ef ej                  eg      ef ej                   ej                  eg      g      e fg      dv               Z`ejd                  jg                  dwed dfed dfeddfeddfedxdfedxdfe dxdfe!dxdfg      dy        Zadz Zbejd                  jg                  d6eeefz         d{        Zcejd                  jg                  d6eeefz         d|        Zdejd                  j                  ej                  d}k  d~V      ejd                  jg                  de$e(fe%e(fe& ej                  e+      fe$gdz  e(gdz  fde$dge(dgfg      d               Zeejd                  j                  ej                  d}k  d~V      d        Zfejd                  j                  ej                  d}k  d~V      d        Zgejd                  j                  ej                  d}k  d~V      d        Zhejd                  j                  ej                  d}k  d~V      d        Ziejd                  j                  ej                  djk  dV      ejd                  jg                  de$e(fe$gdz  e(gdz  fde$dge(dgfg      d               Zjejd                  j                  ej                  djk  dV      ejd                  jg                  dg d      d               Zkejd                  j                  ej                  djk  dV      d        Zlejd                  j                  ej                  djk  dV      ejd                  jg                  d6e ej                  eeg       ej                  eeg       ej                   ej                  eg      eg      g      d               Zmejd                  j                  ej                  d}k  d~V      ejd                  jg                  d6e      d               Zny)    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               Z01030000000100000002000000507daec600b1354100de02498e5e3d41306ea321fcb03541a011a53d905e3d41r   gffffff_@g333333$@)typecoordinates   indentFeaturenamezDinagat Islands)r   geometry
propertiesFeatureCollectiong     Y@g333333?prop0value0r   g        g     Y@g      Z@g     @Z@)prop1r   r   g      Y@g     @Y@thisthat)r   featuresc                      t        j                  dd      } t        j                  d      }t        ||        t        j                  d      }t        ||        y )N   POINT (1 1)s   POINT (1 1))shapelypointsfrom_wktr   expectedactuals     Z/var/www/html/public_html/myphp/venv/lib/python3.12/site-packages/shapely/tests/test_io.pytest_from_wktr.   \   sF    ~~a#Hm,FFH-n-FFH-    c                  2    t        j                  d       J y N)r'   r)    r/   r-   test_from_wkt_noner3   e       D!)))r/   c                     t        j                  t        d      5  t        j                  d       d d d        t        j                  t        j
                  d      5  t        j                  d       d d d        t        j                  t        j
                  d      5  t        j                  d       d d d        y # 1 sw Y   xY w# 1 sw Y   YxY w# 1 sw Y   y xY w)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)   GEOSExceptionr2   r/   r-   test_from_wkt_exceptionsr?   j   s    	y(K	L  
%R
  	
 
w,,4I	J -+,- -  
- -s#   CC"CC
CC"c                      t        j                  t        d      5  t        j                  dd       d d d        t        j                  t        d      5  t        j                  dd       d d d        y # 1 sw Y   ExY w# 1 sw Y   y xY w)NzInvalid WKTr7   r9   warn
on_invalidr:   )r;   warnsWarningr'   r)   r2   r/   r-   test_from_wkt_warn_on_invalidrF   w   su    	g]	3 0/0 
g]	3 @+?@ @0 0@ @s   A8B8BBc                  X   t        j                         5  t        j                  d       t        j                  dd       d d d        t        j                         5  t        j                  d       t        j                  dd       d d d        y # 1 sw Y   SxY w# 1 sw Y   y xY w)Nerrorr9   ignorerB   r:   )warningscatch_warningssimplefilterr'   r)   r2   r/   r-   test_from_wkb_ignore_on_invalidrM      s    		 	 	" 2g&12 
	 	 	" Bg&+AB B	2 2B Bs   -B-B B B)c                      t        j                  t        d      5  t        j                  dd       d d d        y # 1 sw Y   y xY wNnot a valid optionr7          unsupported_optionrB   )r;   r<   
ValueErrorr'   r)   r2   r/   r-   +test_from_wkt_on_invalid_unsupported_optionrT      <    	z)=	> W4AUVW W W	   =Ageomc                 p    t        j                  |       }t        j                  |      }t        ||        y r1   )r'   to_wktr)   r   )rW   wktr,   s      r-   test_from_wkt_all_typesr[      s*    
..
Cc"FFD)r/   rZ   )POINT EMPTYzLINESTRING EMPTYPOLYGON EMPTYzGEOMETRYCOLLECTION EMPTYc                     t        j                  |       }t        j                  |      j                         sJ t        j                  |      j                         sJ t        j
                  |      | k(  sJ y r1   )r'   r)   is_geometryallis_emptyrY   )rZ   rW   s     r-   test_from_wkt_emptyrb      se    
 C Dt$((***D!%%'''>>$3&&&r/   )zCIRCULARSTRING(1 3,2 4,3 1)z4COMPOUNDCURVE(CIRCULARSTRING(1 3,2 4,3 1),(3 1,0 0))zCURVEPOLYGON(COMPOUNDCURVE(CIRCULARSTRING(0 0,2 0,2 1,2 3,4 3),(4 3,4 5,1 4,0 0)),CIRCULARSTRING(1.7 1,1.4 0.4,1.6 0.4,1.6 0.5,1.7 1))zhMULTICURVE((0 0,5 5),COMPOUNDCURVE((-1 -1,0 0),CIRCULARSTRING(0 0,1 1,2 0)),CIRCULARSTRING(4 0,4 4,8 4))zMULTISURFACE(CURVEPOLYGON(CIRCULARSTRING(0 0,4 0,4 4,0 4,0 0),(1 1,3 3,3 1,1 1)),((10 10,14 12,11 10,10 10),(11 11,11.5 11,11 11.5,11 11)))c                 h   t         j                  dk\  r:t        j                  t        d      5  t        j
                  |        d d d        y t        j                  t         j                  j                  d      5  t        j
                  |        d d d        y # 1 sw Y   y xY w# 1 sw Y   y xY w)Nr      r   4Nonlinear geometry types are not currently supportedr7   zUnknown type)r'   geos_versionr;   r<   NotImplementedErrorr)   errorsr>   rZ   s    r-   #test_from_wkt_nonlinear_unsupportedrk      s     z)]]H
 	" S!		" 	" ]]7>>77~N 	"S!	" 	"	" 	"	" 	"   B=B(B%(B1c                  z    t        j                  dd      } t        j                  t              }t	        ||        y Nr%   )r'   r(   from_wkbPOINT11_WKBr   r*   s     r-   test_from_wkbrq      s,    ~~a#Hk*FFH-r/   c                      t        j                  dd      } t        j                  d      }t        ||        t        j                  d      }t        ||        y )Nr%   *0101000000000000000000F03F000000000000F03Fs*   0101000000000000000000F03F000000000000F03F)r'   r(   ro   r   r*   s     r-   test_from_wkb_hexrt      sH    ~~a#HJKFFH-KLFFH-r/   c                  2    t        j                  d       J y r1   )r'   ro   r2   r/   r-   test_from_wkb_nonerv      r4   r/   c                     t        j                  t        d      5  t        j                  d       d d d        t        j                  t        j
                  d      5  t        j                  d      } | J 	 d d d        t        j                  t        j
                  d      5  t        j                  t              } | J 	 d d d        y # 1 sw Y   xY w# 1 sw Y   bxY w# 1 sw Y   y xY w)Nr6   r7   r%   z]Unexpected EOF parsing WKB|ParseException: Input buffer is smaller than requested object sizerQ   z4Points of LinearRing do not form a closed linestring)r;   r<   r=   r'   ro   r>   INVALID_WKBresults    r-   test_from_wkb_exceptionsr{      s    	y(K	L  
Q
  !!"=>~~ 
D
  !!+.~~    s#   CC'C'CC$'C0c                  <   t        j                  t        d      5  t        j                  dd      } | J 	 d d d        t        j                  t        d      5  t        j                  t
        d      } | J 	 d d d        y # 1 sw Y   NxY w# 1 sw Y   y xY w)NzInvalid WKBr7   rQ   rA   rB   )r;   rD   rE   r'   ro   rx   ry   s    r-   "test_from_wkb_warn_on_invalid_warnr}      s    	g]	3 !!"=&Q~~
 
g]	3 !!+&A~~  
 s   B BBBc                  t   t        j                         5  t        j                  d       t        j                  dd      } | J 	 d d d        t        j                         5  t        j                  d       t        j                  t
        d      } | J 	 d d d        y # 1 sw Y   \xY w# 1 sw Y   y xY w)NrH   rQ   rI   rB   )rJ   rK   rL   r'   ro   rx   ry   s    r-   &test_from_wkb_ignore_on_invalid_ignorer      s    		 	 	" g&!!"=(S~~ 
	 	 	" g&!!+(C~~   s   1B"#5B."B+.B7c                      t        j                  t        d      5  t        j                  dd       d d d        y # 1 sw Y   y xY wrO   )r;   r<   rS   r'   ro   r2   r/   r-   +test_from_wkb_on_invalid_unsupported_optionr      rU   rV   use_hexFT
byte_orderr%   c                     t        j                  |       t         j                  j                  k(  rt	        j
                  d       t        j                  | ||      }t        j                  |      }t        ||        y )Nz$Linearrings are not preserved in WKBhexr   )	r'   get_type_idGeometryType
LINEARRINGr;   skipto_wkbro   r   )rW   r   r   wkbr,   s        r-   test_from_wkb_all_typesr     s\     4 G$8$8$C$CC:;
..7z
BCc"FFD)r/   c                     t        j                  |       }t        j                  |      } t        j                  |       j	                         sJ t        j
                  |       j	                         sJ t        j                  |       |k(  sJ y r1   )r'   r   ro   r_   r`   ra   )rW   r   s     r-   test_from_wkb_emptyr     ss    
 ..
CC Dt$((***D!%%'''>>$3&&&r/   r   )r010800000003000000000000000000F03F0000000000000840000000000000004000000000000010400000000000000840000000000000F03F01090000200E16000002000000010800000003000000000000000000F03F0000000000000840000000000000004000000000000010400000000000000840000000000000F03F0102000000020000000000000000000840000000000000F03F00000000000000000000000000000000"  010A0000200E1600000200000001090000000200000001080000000500000000000000000000000000000000000000000000000000004000000000000000000000000000000040000000000000F03F00000000000000400000000000000840000000000000104000000000000008400102000000040000000000000000001040000000000000084000000000000010400000000000001440000000000000F03F000000000000104000000000000000000000000000000000010800000005000000333333333333FB3F000000000000F03F666666666666F63F9A9999999999D93F9A9999999999F93F9A9999999999D93F9A9999999999F93F000000000000E03F333333333333FB3F000000000000F03F  010B000000030000000102000000020000000000000000000000000000000000000000000000000014400000000000001440010900000002000000010200000002000000000000000000F0BF000000000000F0BF0000000000000000000000000000000001080000000300000000000000000000000000000000000000000000000000F03F000000000000F03F00000000000000400000000000000000010800000003000000000000000000104000000000000000000000000000001040000000000000104000000000000020400000000000001040  010C00000002000000010A000000020000000108000000050000000000000000000000000000000000000000000000000010400000000000000000000000000000104000000000000010400000000000000000000000000000104000000000000000000000000000000000010200000004000000000000000000F03F000000000000F03F000000000000084000000000000008400000000000000840000000000000F03F000000000000F03F000000000000F03F01030000000200000004000000000000000000244000000000000024400000000000002C40000000000000284000000000000026400000000000002440000000000000244000000000000024400400000000000000000026400000000000002640000000000000274000000000000026400000000000002640000000000000274000000000000026400000000000002640c                 h   t         j                  dk\  r:t        j                  t        d      5  t        j
                  |        d d d        y t        j                  t         j                  j                  d      5  t        j
                  |        d d d        y # 1 sw Y   y xY w# 1 sw Y   y xY w)Nrd   rf   r7   zUnknown WKB type)r'   rg   r;   r<   rh   ro   ri   r>   )r   s    r-   #test_from_wkb_nonlinear_unsupportedr     s      z)]]H
 	" S!		" 	" ]]7>>77?QR 	"S!	" 	"	" 	"	" 	"rl   c                      t        j                  dd      } t        j                  |       }|dk(  sJ t        j                  | d      }|dk(  sJ t        j                  | dd      }|dk(  sJ y )	Nr%   r&   FtrimzPOINT (1.000000 1.000000)r   )rounding_precisionr   zPOINT (1.000 1.000)r'   r(   rY   r   r,   s     r-   test_to_wktr   9  sn    NN1a E^^E"F]"""^^E.F0000^^EaeDF****r/   c                     t        j                  ddd      } t        j                  |       }|dk(  sJ t        j                  | d      }|dk(  sJ t        j                  | d      }|dk(  sJ t        j                  | d      }|d	k(  sJ y )
Nr%   zPOINT Z (1 1 1)r   output_dimensionr   r&   T)old_3dzPOINT (1 1 1)r   r   r,   s     r-   test_to_wkt_3Dr   E  s    nnQ1%G^^G$F&&&&^^Ga8F&&&&^^Ga8F]"""^^GD1F_$$$r/   c                  2    t        j                  d       J y r1   )r'   rY   r2   r/   r-   test_to_wkt_noner   T      >>$'''r/   c                      g d} t        j                  |       }t         j                  dk  rg d} t        t        j                  |            | k(  sJ y )N)POINT Z EMPTYNPOLYGON Z EMPTYr   	   r   )r\   Nr]   )r'   r)   rg   listrY   )	empty_wktempty_geomss     r-   test_to_wkt_array_with_empty_zr   Y  sF    :I""9-Ki':	{+,	999r/   c                  0   t        j                  t              5  t        j                  d       d d d        t        j                  t        j
                        5  t        j                  t        d       d d d        y # 1 sw Y   QxY w# 1 sw Y   y xY w)Nr%      r   )r;   r<   r=   r'   rY   r>   r   r2   r/   r-   test_to_wkt_exceptionsr   b  sk    	y	! q 
w,,	- 2uq12 2 2 2s   B B B	Bc                  @    t        j                  t              dk(  sJ y )Nr\   )r'   rY   r
   r2   r/   r-   test_to_wkt_point_emptyr   j  s    >>+&-777r/   r   z5Empty geometries have no dimensionality on GEOS < 3.9)reason)r   zLINESTRING Z EMPTYzLINEARRING Z EMPTYr   c                 ^    t        j                  t        j                  |             | k(  sJ y r1   )r'   rY   r)   rj   s    r-   test_to_wkt_empty_zr   n  s&     >>'**3/0C777r/   c                      t        j                  t        t        g      } t        j                  |       j                  d      sJ y )Nz(POINT EMPTY, POINT (2 3)))r'   geometrycollectionsr
   r   rY   endswith)
collections    r-   /test_to_wkt_geometrycollection_with_point_emptyr     s7    ,,k5-ABJ >>*%../KLLLr/   z4MULTIPOINT (EMPTY, (2 3)) only works for GEOS >= 3.9c                      t        j                  t        t        g      } t         j                  dk\  rd}nd}t        j
                  |       |k(  sJ y )N)r      r   zMULTIPOINT (EMPTY, (2 3))zMULTIPOINT (EMPTY, 2 3))r'   multipointsr
   r   rg   rY   )rW   r+   s     r-   'test_to_wkt_multipoint_with_point_emptyr     sJ    
 U34Dz). ->>$8+++r/   z6MULTIPOINT (EMPTY, 2 3) gives ValueError on GEOS < 3.9c                      t        j                  t        t        g      } t	        j
                  t              5  t        j                  |        d d d        y # 1 sw Y   y xY wr1   )r'   r   r
   r   r;   r<   rS   rY   rW   s    r-   .test_to_wkt_multipoint_with_point_empty_errorsr     sF     U34D	z	" t  s   AA!c                  ,    t        t              dk(  sJ y )Nz<POINT (2 3)>)reprr   r2   r/   r-   	test_reprr     s    ;/)))r/   c                      t        j                  t        j                  d      t        j                  d            } t	        |       }t        |      dk(  sJ |j                  d      sJ y )Ni  P   z...>)r'   linestringsnparanger   lenr   )rW   representations     r-   test_repr_max_lengthr     sT    ryy		$@D$ZN~"$$$""6***r/   z5MULTIPOINT (EMPTY, 2 3) gives Exception on GEOS < 3.9c                  b    t        j                  t        t        g      } t	        |       dk(  sJ y )Nz,<shapely.MultiPoint Exception in WKT writer>)r'   r   r   r
   r   r   s    r-   %test_repr_multipoint_with_point_emptyr     s,     {34D:GGGGr/   c                  ,    t        t              dk(  sJ y )Nz<POINT Z EMPTY>)r   r   r2   r/   r-   test_repr_point_z_emptyr     s    
 "3333r/   c                  t    t        j                  dd      } t        j                  | d      }|t        k(  sJ y )Nr%   r   r'   r(   r   rp   r   s     r-   test_to_wkbr     s0    NN1a E^^Ea0F[   r/   c                      t        j                  dd      } t        j                  | dd      }d}d}d}|||z   d|z  z   k(  sJ y )Nr%   Tr   0101000000000000000000F03Fr   r'   r(   r   )r   r,   le
point_typecoords        r-   test_to_wkb_hexr     sN    NN1a E^^Et:F	BJER*_q5y0000r/   c                      t        j                  ddd      } t        j                  | d      }|dk(  sJ t        j                  | dd      }|t        k(  sJ y )Nr%   r   s           ?      ?      ?r   r   r   r   r   s     r-   test_to_wkb_3Dr     s_    nnQ1%G^^G2F  D  D  D  D^^GaAFF[   r/   c                  2    t        j                  d       J y r1   )r'   r   r2   r/   r-   test_to_wkb_noner     r   r/   c                     t        j                  t              5  t        j                  d       d d d        t        j                  t        j
                        5  t        j                  t        d       d d d        t        j                  t              5  t        j                  t        d       d d d        y # 1 sw Y   xY w# 1 sw Y   SxY w# 1 sw Y   y xY w)Nr%   r   r   otherflavor)r;   r<   r=   r'   r   r>   r   rS   r2   r/   r-   test_to_wkb_exceptionsr     s    	y	! q 
w,,	- 2uq12 
z	" .uW-. . 2 2. .s#   B=C	C=C	CCc                      t        j                  dd      } d}d}d}d}t        j                  | d      ||z   d|z  z   k(  sJ t        j                  | d	      ||d d d
   z   d|d d d
   z  z   k(  sJ y )Nr          s      s         ?r%   r   r   r   r   )r   ber   r   r   s        r-   test_to_wkb_byte_orderr     s    NN3$E	B	B$J,E>>%A."z/AI2MMMMu+rJtt4D/Dq5QUSUQU;/VVVr/   c                     d} d}t        j                  |       }t        j                  |d      dk(  sJ t        j                  |dd      |k(  sJ t        j                  |ddd      | k(  sJ t        j                  dd      }t        j
                  |t        j                  d	            }t        j                  |dd
      }t        j                  |dd d      j                         d	k(  sJ y )N201010000200400000000000000000000000000000000000000*010100000000000000000000000000000000000000Tr   zPOINT (0 0)r%   r   )r   include_sridr     )r   r   r   r   z<u4)
r'   ro   rY   r   r(   set_sridr   int32
frombufferitem)ewkbr   r,   r   point_with_sridrz   s         r-   test_to_wkb_sridr     s    ?D
6Cd#F>>&t,===>>&dq9S@@@>>&d!LPTTTTNN1a E&&ubhhtn=O^^O$1MF==!e,113t;;;r/   )r   
   r   zGEOS < 3.10.0c                  :   t        j                  t        d      } | j                         dd dk(  sJ t        j                  t        dd      } | j                         dd dk(  sJ t        j                  t        dd      } | j                         dd d	k(  sJ y )
Nr%   r   r   r   01000080extended)r   r   isoe9030000)r'   r   r   r   )r,   s    r-   test_to_wkb_flavorr    s     ^^G2F::<"+++^^G*EF::<"+++^^G%@F::<"+++r/   c                      t        j                  t        d      5  t        j                  t
        dd       d d d        y # 1 sw Y   y xY w)Nzcannot be used togetherr7   Tr   )r   r   )r;   r<   rS   r'   r   r   r2   r/   r-   test_to_wkb_flavor_sridr    s:    	z)B	C AwT%@A A As   AAc                      t        j                  t              5  t        j                  t
        d       d d d        y # 1 sw Y   y xY w)Nr   r   )r;   r<   r   r'   r   r   r2   r/   r-   #test_to_wkb_flavor_unsupported_geosr    s2    	2	3 .wu-. . .s	   ?Azgeom,expectedc                    t        j                  | dd      }d}t        |      |z
  }t        |      ||z   k(  sJ |d | |d | k(  sJ t        j                  t        j                  d||d              j                         sJ y )Nr   r%   r      r   r'   r   r   r   isnanstructunpackr`   rW   r+   r,   coordinate_lengthheader_lengths        r-   test_to_wkb_point_empty_2dr    s    ( ^^D1CFM$55Mv;-*;;;;;.=!Xn}%====88FMM%)?@AEEGGGr/   )r      z'GEOS==3.8 never outputs 3D empty pointsc                    t        j                  | dd      }d}t        |      |z
  }t        |      ||z   k(  sJ |d | |d | k(  sJ t        j                  t        j                  d||d              j                         sJ y )Nr   r%   r      z<3dr	  r  s        r-   test_to_wkb_point_empty_3dr  ;  s      ^^D1CFM$55Mv;-*;;;;;.=!Xn}%====88FMM%)?@AEEGGGr/   )r   r  r   z=GEOS<3.8 always outputs 3D empty points if output_dimension=3c                    t        j                  | dd      }d}t        |      |z
  }t        |      ||z   k(  sJ |d | |d | k(  sJ t        j                  t        j                  d||d              j                         sJ y )Nr   r%   r   r  r   r	  r  s        r-   'test_to_wkb_point_empty_2d_output_dim_3r  W  s    " ^^D1CFM$55Mv;-*;;;;;.=!Xn}%====88FMM%)?@AEEGGGr/   zwkb,expected_type,expected_dim   c                     t        j                  |       }t        j                  |      sJ t        j                  |      |k(  sJ t         j                  dk\  rt        j
                  |      |k(  sJ y y )Nr   )r'   ro   ra   r   rg   get_coordinate_dimension)r   expected_typeexpected_dimrW   s       r-   test_from_wkb_point_emptyr  t  sm     C DD!!!t$555y(//5EEE )r/   c                      t        j                  t        d      } t        j                  | d      }t        j                  |      }t        j
                  |      dk(  sJ y )Ni  T)r   )r'   r   r
   r   ro   get_srid)r+   r   r,   s      r-   test_to_wkb_point_empty_sridr    sM    T2H
..
5Cc"FF#t+++r/   c                 p    t        j                  |       }t        t        j                  |      | d       y )Nr   )	tolerance)pickledumpsr   loadsrW   pickleds     r-   test_pickler'    s%    ll4 GFLL141Er/   c                     t        j                  | d      } t        j                  |       }t        j                  t        j
                  |            dk(  sJ y )Nr   )r'   r   r"  r#  r  r$  r%  s     r-   test_pickle_with_sridr)    sD    D$'Dll4 GFLL12d:::r/   )r   r   r%   zGEOS < 3.10.1zgeojson,expected)NNc                 F    t        j                  |       }t        ||       y r1   )r'   from_geojsonr   )geojsonr+   r,   s      r-   test_from_geojsonr-    s      !!'*FFH-r/   c                     t        j                  t        d      5  t        j                  d       d d d        t        j                  t        j
                  d      5  t        j                  d       d d d        t        j                  t        j
                  d      5  t        j                  d       d d d        t        j                  t        j
                  d      5  t        j                  d	       d d d        t        j                  t        j
                  d
      5  t        j                  d       d d d        t        j                  t        j
                  d
      5  t        j                  d       d d d        y # 1 sw Y   ZxY w# 1 sw Y   $xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   xY w# 1 sw Y   y xY w)Nr6   r7   r%   zError parsing JSONr9   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;   r<   r=   r'   r+  r>   r2   r/   r-   test_from_geojson_exceptionsr/    sk   	y(K	L  Q  
w,,4H	I !R ! 
w,,4K	L JHIJ 
w,,4U	V LJKL
 
w,,4J	K ECDE 
w,,4J	K 2012 2#   ! !J JL L
E E2 2sG   F
F"F$%F0(F<+G
FF!$F-0F9<GGc                      t        j                  t        d      5  t        j                  dd      J 	 d d d        y # 1 sw Y   y xY w)NzInvalid GeoJSONr7   r9   rA   rB   )r;   rD   rE   r'   r+  r2   r/   r-   !test_from_geojson_warn_on_invalidr1    sC    	g%6	7 C##B6:BBBC C Cs   A  A	c                      t        j                         5  t        j                  d       t        j                  dd      J 	 d d d        y # 1 sw Y   y xY w)NrH   r9   rI   rB   )rJ   rK   rL   r'   r+  r2   r/   r-   #test_from_geojson_ignore_on_invalidr3    sN    		 	 	" Eg&##B8<DDDE E Es   /AAc                      t        j                  t        d      5  t        j                  t
        d       d d d        y # 1 sw Y   y xY w)NrP   r7   rR   rB   )r;   r<   rS   r'   r+  GEOJSON_GEOMETRYr2   r/   r-   /test_from_geojson_on_invalid_unsupported_optionr6    s<    	z)=	> P-:NOP P Ps   AA
zGEOS < 3.10zexpected,geometryc                     t        j                  | d      }t        j                  |t        j                  |      k(        sJ y )Nr   r   )r'   
to_geojsonr   r`   asarray)r   r+   r,   s      r-   test_to_geojsonr:    s6     3F66&BJJx00111r/   r   )Nr   r   c                     | dnd}t        j                  t        j                  t              | |      }t	        j
                  t        |       }||k(  sJ y )N),:)r<  z: )r   
separatorsr   )jsonr#  r$  r5  r'   r8  GEOJSON_GEOMETRY_EXPECTED)r   r>  r+   r,   s       r-   test_to_geojson_indentrA    sQ      &~;Jzz

#$V
H  9&IFXr/   c                      t        j                  t              5  t        j                  d       d d d        y # 1 sw Y   y xY wrn   )r;   r<   r=   r'   r8  r2   r/   r-   test_to_geojson_exceptionsrC    s1    	y	! 1  s	   9Ac                     t        j                  t              5  t        j                  |       sJ 	 d d d        y # 1 sw Y   y xY wr1   )r;   r<   rS   r'   r8  r   s    r-   test_to_geojson_point_emptyrE    s9     
z	" (!!$'''( ( (s	   <Ac                     t        j                  |       t         j                  j                  k(  rt	        j
                  d       t        j                  |       }t        j                  |      }t        ||        y )Nz(Linearrings are not preserved in GeoJSON)	r'   r   r   r   r;   r   r8  r+  r   )rW   r,  r,   s      r-   test_geojson_all_typesrG    sZ     4 G$8$8$C$CC>?  &G!!'*FFD)r/   )or?  r"  r  rJ   numpyr   r;   r'   r   r   r   r   shapely.errorsr   shapely.testingr   shapely.tests.commonr	   r
   r   r   r   packrp   floatNANPOINT_NAN_WKBPOINTZ_NAN_WKBMULTIPOINT_NAN_WKBMULTIPOINTZ_NAN_WKBGEOMETRYCOLLECTION_NAN_WKBGEOMETRYCOLLECTIONZ_NAN_WKBNESTED_COLLECTION_NAN_WKBNESTED_COLLECTIONZ_NAN_WKBrx   r#  r5  GEOJSON_FEATUREGEOJSON_FEATURECOLECTIONr(   r@  r   polygonsGEOJSON_COLLECTION_EXPECTEDr.   r3   r?   rF   rM   rT   markparametrizer[   rb   rk   rq   rt   rv   r{   r}   r   r   r   r   r   r   r   r   r   r   r   skipifrg   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r   r  r  r  r   r   r  xfailr  r  r  r  r'  r)  r-  r/  r1  r3  r6  r:  rA  rC  rE  rG  r2   r/   r-   <module>r_     sL          B B 6 3 V V &E3(DDfkk$e%'373(C!G4PTWZ[T[\ QUX[\U\] X\_bc\cd Y]`cd]de {  @C  FG  @G  H |  AD  GH  AH  I j 4::wt}MVWX $**$eT]C01
  &4::# "%,eS\J&1 "(	$ ),h? "% #CL"CL"CL"CL"CL$ *0(88L'#
&N Q) V +GNN5$7 GNNE3< G%s|eS\E3<PQG
s|eS\E3<%N .*

-@BW
 +* ,* 	T'	' 		"	"..*
0	W
 +UDM21v.* / 3 ,* 

WjlGI'9';<'	' 	""	+%(
:28 9$B   	8	8M 9$A  ,	, I%C  	*+ I%B  H	H 9$B  4	4!1!(
.
<" G((:5oN, O, G((:5oNA OA
 G((J6O. P.
 	m$	&			k]	+-?@			m_	-/AB	$	$	$k]	35OP	$	$	$m_	57QR'G'')<)<)<k])K(LM%	

 (G'')<)<)<m_)M(NO%	
&
H'&
H !&/X   	'			m_	-/BC	$	$	$m_	57RS'G'')<)<)<m_)M(NO&	
	
H
H 9$J   	m$			k]	+-?@	$	$	$k]	35OP'G'')<)<)<k])K(LM%	
	
H	 
H $	1	A	Q"	a#	#Q*	$a+	"Aq)	#Q*	FF, g{-C!CDF EF
 g{-C!CD; E; G((:5oN	45	34$'G''(CD	
 	a	";!<q!@A
D	!$=t#DE
. O.
 G((:5oN2 O2, G((:5oNC OC
 G((:5oNE OE G((:5oNP OP
 G((:5mL	45
	a	";!<q!@A
D	!$=t#DE	2 M2
 G((:5mL<0 1 M G((:5mL M
 G((:5mL
[%01###[%$89###(W((+7?	
	
(
 M( G((:5oN+* , O*r/   