
    njͫ              +          S SK r S SKrS SKrS SKrS SKJrJr  S SKJrJ	r	J
r
  S SKJr  S SKJr  S rS rS rS	 rS
 r " S S\5      rS.S jrS rS rS rS rS rS rS r             S/S\\\      S\\   S\\   S\\   S\S\\\       S\\   S\\   S\\   S\\\      S\\\      S \S!\4S" jjr!                     S0S\\\      S\\   S\\   S#\S$\S%\S&\S'\S\\   S\S\\\       S(\\   S)\\   S*\\   S\\   S\\   S\\   S\\\      S\\\      S \S!\4*S+ jjr"\RF                  4S, jr$\%S-:X  a#  \RL                  " \$" \RF                  5      5        gg)1    N)OptionalSequence)gdalogrosr)PathLikeOrStr)GetOutputDriverForc                    U (       a  [         R                  O[         R                  n[        SUS9  [        SUS9  [        SUS9  [        SUS9  [        SUS9  [        SUS9  [        SUS9  [        S	US9  [        S
US9  [        SUS9  [        SUS9  [        SUS9  [        SUS9  [        S
US9  [        SUS9  [        SUS9  [        SUS9  [        SUS9  [        SUS9  [        SUS9  [        SUS9  [        SUS9  U (       a  S$ S$ )Nz,Usage: ogrmerge.py [--help] [--help-general]filez:            -o <out_dsname> <src_dsname> [<src_dsname>]...z@            [-f <format>] [-single] [-nln <layer_name_template>]zB            [-update | -overwrite_ds] [-append | -overwrite_layer]zC            [-src_geom_type <geom_type_name>[,<geom_type_name>]...]z>            [-dsco <NAME>=<VALUE>]... [-lco <NAME>=<VALUE>]...zB            [-s_srs <srs_def>] [-t_srs <srs_def>|-a_srs <srs_def>]z8            [-progress] [-skipfailures] [--help-general] zOptions specific to -single:z=            [-field_strategy {FirstLayer|Union|Intersection}]z*            [-src_layer_field_name <name>]z<            [-src_layer_field_content <layer_name_template>]zG* layer_name_template can contain the following substituable variables:zD     {AUTO_NAME}  : {DS_BASENAME}_{LAYER_NAME} if they are differentz9                    or {LAYER_NAME} if they are identicalz.     {DS_NAME}    : name of the source datasetz3     {DS_BASENAME}: base name of the source datasetz/     {DS_INDEX}   : index of the source datasetz,     {LAYER_NAME} : name of the source layerz-     {LAYER_INDEX}: index of the source layer   r   )sysstderrstdoutprint)isErrorfs     P/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/osgeo_utils/ogrmerge.pyUsager   ,   s    

3::A	
8qA	
FQO	
LSTU	
NUVW	
OVWX	
JQRS	
NUVW	
D1M	"1	
(q1	
IPQR	
6Q?	
HqQ	"1	T 
Q 

EAN	
:C	
?aH	
;!D	
8qA	
9B1Q    c                 H    [         R                  " US[        U5      U 5        g )N   )r   
VSIFWriteLlen)r   ss     r   _VSIFPrintfLr   Q   s    OOAq#a&!$r   c                 D    U R                  5       UR                  5       :H  $ N)lower)xys     r   EQUALr#   X   s    779	!!r   c                 D   [        U S5      (       a  [        R                  $  [        R                  n[        US-   5       H<  n[        U [        R                  " U5      R                  SS5      5      (       d  M:  Us  $    g ! [         a    [        R
                  n Nkf = f)NGEOMETRYr    r   )	r#   r   
wkbUnknownwkbTriangle	Exception
wkbSurfacerangeGeometryTypeToNamereplace)src_geom_type_namemax_geom_typeis      r   _GetGeomTyper1   _   s    ,,~~' =1$%#S%;%;A%>%F%FsB%OPPH &   ''s   B BBc                 j    [         R                  " U [         R                  5      R                  S5      $ )NzUTF-8)r   EscapeString	CPLES_XMLdecoder!   s    r   _Escr7   p   s$    Q/66w??r   c                   >    \ rS rSrS rS rS	S jrS	S jrS	S jrSr	g)
	XMLWritert   c                 ,    Xl         SU l        / U l        g )Nr   )r   incelements)selfr   s     r   __init__XMLWriter.__init__u   s    r   c                      SU R                   -  $ )Nz  )r<   r>   s    r   _indentXMLWriter._indentz   s    dhhr   Nc           
      R   SnUb1  U H+  nUSU< S[        X$   R                  S5      5      < S3-   nM-     U R                  5       < SU< U< S3nUR                  S5      n[        U R                  U5        U R
                  S-   U l        U R                  R                  U5        g )	Nr   r&   ="utf-8"<>
r   )r7   encoderC   r   r   r<   r=   append)r>   nameattrs	xml_attrskeyr!   s         r   open_elementXMLWriter.open_element}   s    	%**734) 	 
 !LLND)<HHWTVVQ88a<T"r   c           
      4   SnUb1  U H+  nUSU< S[        X5   R                  S5      5      < S3-   nM-     U R                  5       < SU< U< S[        UR                  S5      5      < SU< S	3	nUR                  S5      n[        U R                  U5        g )
Nr   r&   rF   rG   rH   rI   ></rJ   )r7   rK   rC   r   r   )r>   rM   valuerN   rO   rP   r!   s          r   write_element_valueXMLWriter.write_element_value   s    	%**734) 	  LLNg&'
 HHWTVVQr   c                     U R                   S-
  U l         U R                  S   nUb  X!:X  d   eU R                  SS U l        [        U R                  U R	                  5       < SU< S35        g )Nr   r   rU   rJ   )r<   r=   r   r   rC   )r>   closing_namerM   s      r   close_elementXMLWriter.close_element   s\    88a<}}R #'''a+TVVDLLNDABr   )r=   r   r<   r   )
__name__
__module____qualname____firstlineno__r?   rC   rQ   rW   r\   __static_attributes__ r   r   r9   r9   t   s    
# $Cr   r9   c                    U (       d	  [        SS9$ S nS n/ nSnSnSnSn	Sn
S nSn/ nS nS nS nS nS nS n/ n/ nSnU[        U 5      :  Ga  U U   nUS:X  a	  [        SS9$ US:X  d  US:X  a  US-   [        U 5      :  a  US-   nU U   nGOUS	:X  a  US-   [        U 5      :  a  US-   nU U   nGOUS
:X  a  [        R                  nS nGOUS:X  d  US:X  a  GOyUSS S:X  a  SnGOlUS:X  a  SnGObUS:X  a  SnGOXUS:X  a  SnSnGOLUS:X  a  Sn	SnGO@US:X  a  Sn
GO6US:X  a  US-   [        U 5      :  a  US-   nU U   nGOUS:X  a  US-   [        U 5      :  a  US-   nU U   nGOUS:X  a  US-   [        U 5      :  a  US-   nU U   nGOUS:X  a  US-   [        U 5      :  a  US-   nU U   nGOUS:X  a  US-   [        U 5      :  a  US-   nU U   nGOUS:X  a  US-   [        U 5      :  a  US-   nU U   nGO^US:X  a  US-   [        U 5      :  a  US-   nU U   nGO:US:X  a-  US-   [        U 5      :  a  US-   nUR	                  U U   5        GOUS:X  a,  US-   [        U 5      :  a  US-   nUR	                  U U   5        OUS:X  aq  US-   [        U 5      :  a_  US-   nU U   R                  S5      nU H?  n[        U5      nUc  [        SU-  [        R                  S 9    gUR	                  U5        MA     O^US   S!:X  a$  [        S"U-  [        R                  S 9  [        SS9$ S#U;   a  U[        R                  " U5      -  nOUR	                  U5        US-   nU[        U 5      :  a  GM  Uc  [        S$[        R                  S 9  g[        S:0 S%U_S&U_S'U_S(U_S)U_S*U_S+U	_S,U
_S-U_S.U_S/U_S0U_S1U_S2U_S3U_S4U_S5U_S6U_S7U_S8U_S9U_6$ );NT)r   Fr   z--helpz-fz-ofr   z-oz	-progressz-qz-quiet   z-skipz-updatez-overwrite_dsz-overwrite_layerz-appendz-singlez-a_srsz-s_srsz-t_srsz-nlnz-field_strategyz-src_layer_field_namez-src_layer_field_contentz-dscoz-lcoz-src_geom_type,z%ERROR: Unrecognized geometry type: %sr   -z!ERROR: Unrecognized argument : %s*z
Missing -osrc_datasetsdst_filenamedriver_nameoverwrite_dsoverwrite_layerupdaterL   single_layerlayer_name_templateskip_failuressrc_geom_typesfield_strategysrc_layer_field_namesrc_layer_field_contenta_srss_srst_srsdscolcoprogress_callbackprogress_argrc   )r   r   r   TermProgress_nocbrL   splitr1   r   r   r   globogrmerge)argvprogressr|   rj   rk   ri   rl   rm   rn   rL   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r0   argsrc_geom_type_namesr.   src_geom_types                              r   processr      s   T""LKLLOFFLMNN"EEED
C 	
A
c$i-1g(?''TkSE\q1us4y/@AAq'KD[QUSY.AA7LK,,HLD[C8O1X  MIFO#L&&"OFIFFILH_QT!2AAGEH_QT!2AAGEH_QT!2AAGEF]q1us4y0AA"&q'%%!a%#d)*;AA!!WN++AD	0AAA#'7 ..1q53t93DAA&*1g#G^AD	 1AAKKQ F]q1us4y0AAJJtAw$$QT):AA"&q'--"4&9" ,-? @ (?BTT ZZ %%m4 ': Vs]5;#**M&&cz		#.##C(EY c$i-\ l, !!   "	
 (   " 0 $ & & 2 !8   !" #$ %& '( #)* "+ r   c                    U nS n[         R                  R                  U5      (       aH  [         R                  R                  U5      nSU;   a#  SR	                  UR                  S5      SS 5      nXt:X  a  UR                  SU5      nO2Uc  UR                  SSX4-  5      nOUR                  SUS-   U-   5      nUb  UR                  SU5      nOKSU;   aE  U(       a  SU;  a  UR                  SS	U-  5      nO"[        S
U < SU< S3[        R                  S9  g UR                  SSU-  5      nUR                  SSU-  5      nUR                  SU5      nUR                  SSU-  5      nU$ )N.r   rZ   {AUTO_NAME}Dataset%d_%s_{DS_BASENAME}
{DS_INDEX}z	Dataset%dzERROR: Layer name template z includes {DS_BASENAME} but z is not a filer   	{DS_NAME}%s%d{LAYER_NAME}{LAYER_INDEX})
ospathexistsbasenamejoinr~   r-   r   r   r   )rp   
src_ds_idx
src_dsnamesrc_lyr_idxsrc_lyr_namerq   
layer_namer   s           r   !_build_layer_name_non_single_moder   4  sz    %JH	ww~~j!!77##J/(?xxs 3Ab 9:H''x@
		''>Z,FF

  ''x#~7TU
''B
	J	&:-'//#[:%=
  +>zK ZZ	 ##K
1BCJ##L$2CDJ##NLAJ##OTK5GHJr   c                 &    U R                  SS5      $ )N'z''r-   r6   s    r   _quote_literalr   f      99S$r   c                 &    U R                  SS5      $ )NrH   z""r   r6   s    r   	_quote_idr   m  r   r   c                      U R                  S[        U5      -  5      nUR                  5       nUR	                  S5      nU R                  U5        U$ ! [         a     U R                  S[        U5      -  5      n N]f = f)NzCSELECT pgsize FROM temp.stat WHERE name = '%s' AND aggregate = TRUEz3SELECT SUM(pgsize) FROM temp.stat WHERE name = '%s'r   )
ExecuteSQLr   r)   GetNextFeatureGetFieldReleaseResultSet)src_ds
table_namesql_lyrr   src_table_sizes        r   _gpkg_get_src_table_sizer   t  s    

##QZ()
 	 AZZ]N
G$  
##AZ()

s   A 'A=<A=c           	      B   SnUR                  5       [        R                  :w  az  U R                  S[	        UR                  5       5      < S[	        UR                  5       5      < S35      nUR                  5       nUR                  S5      nU R                  U5        U$ )NFzSELECT HasSpatialIndex('', '')r   )
GetGeomTyper   wkbNoner   r   GetNameGetGeometryColumnr   r   r   )dslyrhas_spatial_indexr   r   s        r   _gpkg_has_spatial_indexr     s    
CKK'--ckkm,nS=R=R=T.UW
 ""$JJqM
G$r   c                 X   SnU  GH  n[         R                  " U5      nUc  M  Sn UR                  S5        SnSnU(       aZ  U HT  nU(       a-  [         R                  " UR                  5       5      n	X;  a  Sn  O!U(       a  M@  [        XX5      (       d  MR  Sn  O   U(       a%  U[        R                  " U5      R                  -  nM  U H  nU(       a+  [         R                  " UR                  5       5      n	X;  a  M5  U[        XXR                  5       5      -  nU(       d  MZ  [        XX5      (       d  Ml  SUR                  5       < SUR                  5       < 3n
U[        XZS-   5      -  nU[        XZS-   5      -  nU[        XZS	-   5      -  nM     GM     U$ ! [         a     GNnf = f)
Nr   Fz1CREATE VIRTUAL TABLE temp.stat USING dbstat(main)Trtree_r   _node_rowid_parent)r   Openr   r)   
GT_Flattenr   r   r   VSIStatLsizer   r   r   )ri   rr   can_reuse_spatial_indexestimated_final_sizer   r   dbstat_availableuse_src_file_sizesrc_lyrgtsrc_rtree_prefixs              r   _gpkg_get_estimated_final_sizer     s    "
*%> 	QR# !!!(;(;(=>B/,1)..3J4 4 ).% "  DMM*$=$B$BB !!(;(;(=>B/ $(@OO-) $ +*/Fv/W/W)113($ ),D7 :- ( ),D8 ;- ( ),D9 <- () "? #n  ]  		s   F
F)(F)c                     S[        UR                  5       5      -  nU R                  U5      nUR                  5       nUR	                  S5      nU R                  U5        U$ )Nz@SELECT srs_id FROM gpkg_geometry_columns WHERE table_name = '%s'r   )r   r   r   r   r   r   )r   r   sqlr   r   srs_ids         r   _gpkg_get_srs_idr     s[    J

'	(  mmC G AZZ]F Mr   ri   rj   rk   rp   rq   rr   rv   rw   rx   ry   rz   r{   r|   c                   ^^ Sn[         R                  " U5      nUc  [        SU-  [        R                  S9  gUR                  USSS[         R                  U	5      nUc  g[        R                  " 5         [         R                  " 5         [        R                  " 5          " UU4S jS5      nSU
 Vs/ s H  nUR                  5       PM     sn;  nUS L =(       a    UnSnT(       a  [        XU5      n[        U 5       G	H  u  nn[        R                  " U5      nUc&  [        S	U-  [        R                  S9  U(       a  MD    g[        U5       G	H/  u  nnU(       a,  [        R                  " UR                  5       5      nUU;  a  M:  UR                  5       [        R                   :g  nU(       a/  [#        S
 U
 5       5      (       d  SUR%                  5       -   /U
-   nOU
nU(       a.  U(       a'  [        R&                  " 5       nUR)                  U5        OEU(       a.  U(       a'  [        R&                  " 5       nUR)                  U5        OUR+                  5       n[-        UUUUUR/                  5       U5      nUc      gUR1                  UUR                  5       UUS9n[3        UR5                  5       R7                  5       5       H1  nUR9                  UR5                  5       R;                  U5      5        M3     UR=                  5       n U (       a  UR?                  U 5        URA                  5         U(       a?  [C        UU5      n![C        UU5      n"SUR/                  5       < SUR%                  5       < 3n#OSn#Sn!Sn"S[E        U#5      < S[E        UR/                  5       5      < S[E        UR/                  5       5      < S3n$/ n%URG                  U$5      n&U& H9  n'U'S   n(URG                  S[I        U(5      -  5        U%RK                  U'S   5        M;     URM                  U&5        S n)U!U":X  a  Uc  Uc  U)" UU5      U)" UU5      :X  a  Sn*GO~S[I        URO                  5       5      -  n*U(       a  U!U":X  a   U*S[I        UR%                  5       5      -  -  n*OU(       a  U(       az  [        R&                  " 5       n+U+R)                  U5        U+RQ                  S 5      S:X  d   e[S        U+RU                  S 5      5      n!U*S[I        UR%                  5       5      U!U"4-  -  n*OCU*S[I        UR%                  5       5      U"4-  -  n*O!U*S[I        UR%                  5       5      U"4-  -  n*[3        UR5                  5       R7                  5       5       H?  nU*S[I        UR5                  5       R;                  U5      R/                  5       5      -  -  n*MA     URG                  S [E        U5      -  5        S n,T(       a	  U" UU5      n, URG                  S![I        UR/                  5       5      < S"U*< S#[I        UR/                  5       5      < S$35        U,(       a  U,RW                  5         URG                  S%5      n&U&RY                  5       n'U'R[                  S5      n-S n'URM                  U&5        UR]                  SS&9n.U.S:  a2  U-U.:w  a,  [        S'U-UR/                  5       U.4-  [        R                  S9  URG                  S([E        UR/                  5       5      U-4-  5        S)n/U(       Ga  U(       Ga  U(       Ga  [_        UU5      (       a  SUR/                  5       < SUR%                  5       < 3n0T(       a	  U" UU5      n, URG                  S*[I        U#5      -  5        URG                  S![I        U#5      < S+[I        U05      < S,35        URG                  S![I        U#5      < S-[I        U05      < S.35        URG                  S![I        U#5      < S/[I        U05      < S035        U,(       a  U,RW                  5         OS1n/URG                  S25        URG                  S35      n&U&R]                  5       S:H  n1URM                  U&5        U(       a  U1(       a  S4[E        UR/                  5       5      < S5[E        UR%                  5       5      < S63n$URG                  U$5      n&U& Hi  n'U'R[                  S5      [a        S75      S  n2URM                  URG                  S8UR/                  5       < S9UR%                  5       < S9U2< S35      5        Mk     URM                  U&5        U(       aP  URc                  SS1S:9n3U3(       a9  U3u  n4n5n6n7S;U4U6U5U7[E        UR/                  5       5      4-  n$URG                  U$5        U% H  n$URG                  U$5        M     U/(       d  GM  URM                  URG                  S<[E        UR/                  5       5      < S9[E        UR%                  5       5      < S35      5        URM                  URG                  S=[E        UR/                  5       5      < S9[E        UR%                  5       5      < S35      5        G	M2     G	M     T(       a
  T" S>S?T5        gs  snf ! U,(       a  U,RW                  5         f f = f! U,(       a  U,RW                  5         f f = f)@NGPKGERROR: Invalid driver: %sr   r   r   c                   *   > \ rS rSrU U4S jrS rSrg)(_gpkg_ogrmerge.<locals>.ThreadedProgressi  c                 r   >^ ^^^ ST l         SS KmSSKJn  UUUUU U4S jnU" US9nUR	                  5         g )NFr   )Threadc                     > TR                   (       d^  [        R                  " T5      R                  n [	        SU T-  5      nT" UST5        TR                  S5        TR                   (       d  M]  g g )N      ?r   g?)stop_threadr   r   r   minsleep)dst_file_sizepctrj   r   r|   r{   r>   times     r   myfuncA_gpkg_ogrmerge.<locals>.ThreadedProgress.__init__.<locals>.myfunc  sW    **$(MM,$?$D$DMc=3G#GHC%c2|<JJsO	 ***r   )target)r   r   	threadingr   start)	r>   rj   r   r   r   tr   r|   r{   s	   ```   @r   r?   1_gpkg_ogrmerge.<locals>.ThreadedProgress.__init__  s0    $D($ $ f%AGGIr   c                     SU l         g )NTr   rB   s    r   stop-_gpkg_ogrmerge.<locals>.ThreadedProgress.stop  s
    #Dr   r   N)r^   r_   r`   ra   r?   r   rb   )r|   r{   s   r   ThreadedProgressr     s    	 	$r   r   zSPATIAL_INDEX=NOERROR: Cannot open %sc              3   ^   #    U  H#  oR                  5       R                  S 5      v   M%     g7f)GEOMETRY_NAME=N)upper
startswith).0opts     r   	<genexpr>!_gpkg_ogrmerge.<locals>.<genexpr>:  s&      $DGS		&&'788Cs   +-r   )	geom_typesrsoptionsr   r   __invalid__rZ   zKSELECT name, sql FROM sqlite_master WHERE type = 'trigger' AND (name LIKE 'z/_%' OR name LIKE 'trigger_insert_feature_count_z-' OR name LIKE 'trigger_delete_feature_count_r   rM   zDROP TRIGGER "%s"r   c                 X   / nU R                  S[        UR                  5       5      -  5      nU He  nUS   nXQR                  5       :X  a  UR	                  S5        M.  XQR                  5       :X  a  UR	                  S5        MT  UR	                  U5        Mg     U R                  U5        U$ )NzPRAGMA table_info('%s')rM   __FID____GEOMETRY_COLUMN__)r   r   r   GetFIDColumnrL   r   r   )r   r   fieldsr   r   col_names         r   get_normalized_field_names2_gpkg_ogrmerge.<locals>.get_normalized_field_names~  s    ---s{{}0MM !A yH#3#3#55i0!%:%:%<<&;<h/ ! ##G,r   rh   z"%s"z, "%s"EPSGz%, ST_Transform(SetSRID("%s", %d), %d)z, ST_Transform("%s", %d)z, SetSRID("%s", %d)z!ATTACH DATABASE '%s' AS source_dbzINSERT INTO "z	" SELECT z FROM source_db."rH   zSELECT changes())forcez5Warning: %d rows inserted into %s whereas %d expectedz8INSERT OR REPLACE INTO gpkg_ogr_contents VALUES('%s',%d)FzDELETE FROM "%s_node" z _node" SELECT * FROM source_db."z_node"z!_rowid" SELECT * FROM source_db."z_rowid"z"_parent" SELECT * FROM source_db."z_parent"TzDETACH DATABASE source_dbzMSELECT 1 FROM sqlite_master WHERE type = 'table' AND name = 'gpkg_extensions'z?SELECT extension_name FROM gpkg_extensions WHERE table_name = 'z' AND column_name = 'z'' AND extension_name LIKE 'gpkg_geom_%'
gpkg_geom_z"SELECT RegisterGeometryExtension('r   )r   can_return_nullzcUPDATE gpkg_contents SET min_x=%.18g, min_y=%.18g, max_x=%.18g, max_y=%.18g WHERE table_name = '%s'zSELECT DisableSpatialIndex('zSELECT CreateSpatialIndex('r   r   )2r   GetDriverByNamer   r   r   CreateGDT_Unknownr   UseExceptionsr   r   r   	enumerater   r   r   r   anyr   SpatialReferenceSetFromUserInputGetSpatialRefr   r   CreateLayerr+   GetLayerDefnGetFieldCountCreateFieldGetFieldDefnGetMetadataSetMetadata
SyncToDiskr   r   r   r   rL   r   r   GetAuthorityNameintGetAuthorityCoder   r   r   GetFeatureCountr   r   	GetExtent)8ri   rj   rk   rp   rq   rr   rv   rw   rx   ry   rz   r{   r|   drvdst_dsr   r!   create_spatial_indexr   r   r   r   r   r   r   r   has_geommodified_lcor   r   r   	field_idxmd
src_srs_id
dst_srs_idrtree_prefixr   triggersr   r   trigger_namer   r   	s_srs_objthreaded_progressnum_rows_insertedsrc_feature_countrecreateSpatialIndexr   has_gpkg_extensionsr   resminxmaxxminymaxys8              ``                                           r   _gpkg_ogrmerger0    s	     K


{
+C
{)K7cjjIZZaAt/?/?FF~$ $( .5MAaggi5MM#tmD0D=*A 
 #,L"9
J*%>)J6SZZH$-f$5 K^^G$7$7$9:^+**,;H $DG$ ! ! !173L3L3N NORUU"**,$$U+8**,$$U+++-:#!J !$$!--/$	 % C #7#7#7#9#G#G#IJ	 4 4 6 C CI NO K $$&B#NN-fg>
-fc:
03s?T?T?VW,

 #<0"3;;=1"3;;=1	  H'',G y!!"5	,8O"OP%)  ##G,$ j(MM.vw?-fc:;
 )G,@,@,B"CC!Z/(Yw7P7P7R-S"SS (+(<(<(>I%66u=#,#=#=d#Cv#MM#M),Y-G-G-M)NJ"&M )'*C*C*E F * *Q ' F #&@ )'*C*C*E F *D ' F "7%g&?&?&AB&; #  "'w';';'='K'K'M!NIh,,.;;IFNNP*  F "O
 3nZ6PP !% $4\CW$X!-!! /7??CT9UW
 %%**, ''(:;G&&(A !

1A##G, ' 7 7a 7 @ A%*;?P*PK(#++-9JKL
 J!#++-02CDE
 $) 0*/Fvw/W/W  )113($
 ),<(*>-)5))4y7NN ))(6	BR8SU ))(6	BR8SU ))(6	BR8SU
 --224 ,0(9: ''_G #*"9"9";q"@##G,/ 'w'89&w'@'@'BC  !++C0 A !

1c,.?.A BI++))"{{}c.C.C.EyR ! ''0 ''a'F-0*D$d}tT>#++-3PQR  %%c*  !!#&   $#''%% +3;;=9*3+@+@+BC ''%% +3;;=9*3+@+@+BCO %6 #:r #r<0K	 6NP %%**, %h --224 -s    4j Aj!>B!j>!j;>krl   rm   rn   rL   ro   rs   rt   ru   c                   ^  T =(       d    / m U
=(       d    / n
U=(       d    / nU=(       d    / nU(       a?  Ub  [        S[        R                  S9  gU(       a  [        S[        R                  S9  gSnOUc
  [        USS9nUc  SnOUc  S	nU(       dC  US
:X  a=  UR	                  5       R                  S5      (       a  [        S[        R                  S9  gT (       d  [        S[        R                  S9  gUc  U(       a  SnOSnS nU(       d  [        US5      (       a  U" U5      c  [        [        R                  " SS5      S5      (       av  U 4S jnU" 5       nU(       aD  U(       a=  [        R                  " 5       nUR                  U5        UR                  S 5      S:w  a  SnU(       a  [        T UUUU	U
UUUUUUU5      $ S n[        US5      (       Gd  U" U5      nUb}  U(       d   U(       d  [        S[        R                  S9  gU(       aN  UR                  5       nS nUR                  5       S:X  a  [        R                   " U5        O2UR#                  U5        O U(       a  [        S[        R                  S9  gUc]  [        R$                  " U5      nUc  [        SU-  [        R                  S9  gUR'                  USSS[        R(                  U5      nUc  gSnO=[        R*                  " U5      (       a   U(       d  [        S[        R                  S9  gUn[        R,                  " US5      nUc  [        SU-  [        R                  S9  g[/        U5      nUR1                  S5        U(       Ga  Sn[3        T 5       GH  u  nn [4        R6                  " U 5      n!U!cR  [        S U -  [        R                  S9  U	(       a  MD  [        R8                  " U5        [        R                   " U5          g[3        U!5       GH	  u  n"n#U
(       a,  [4        R:                  " U#R=                  5       5      n$U$U
;  a  M:  U(       d>  S!nUR1                  S"S#U0S$9  Ub  UR?                  S%U5        Ub  UR?                  S&U5        Un%U#RA                  5       n& U&RC                  S'5      n&S n'[F        RH                  RK                  U 5      (       aH  [F        RH                  RM                  U 5      n'S(U';   a#  S(RO                  U'RQ                  S(5      SS) 5      n'U'U&:X  a  U%RS                  SU'5      n%O3U'c  U%RS                  SS*UU&4-  5      n%OU%RS                  SU'S+-   U&-   5      n%U'b  U%RS                  S,U'5      n%OU%RS                  S,U 5      n%U%RS                  S-S.U -  5      n%U%RS                  S/S0U-  5      n%U%RS                  S1U&5      n%U%RS                  S2S0U"-  5      n%Ub  UR1                  S35        UR1                  S4S#U%0S$9  0 n([        US5      (       aY  [F        RH                  RK                  U 5      (       a5  [F        RH                  RU                  U 5      (       d  S5U;  a  S6U;  a  S7U(S8'   U(       a  S7U(S9'   UR?                  S:U U(S$9  UR?                  S;U#RA                  5       5        Ub  UR?                  S<U5        URW                  S45        Uc  GM  Ub  UR?                  S=U5        UR?                  S>U5        URW                  S35        GM     GM     U(       a  URW                  S"5        GOc[3        T 5       GHS  u  nn [4        R6                  " U 5      n!U!cR  [        S U -  [        R                  S9  U	(       a  MD  [        R8                  " U5        [        R                   " U5          g[3        U!5       GH  u  n"n#U
(       a,  [4        R:                  " U#R=                  5       5      n$U$U
;  a  M:  U#RA                  5       n& U&RC                  S'5      n&[Y        UUU U"U#RA                  5       U	5      n%U%c/  [        R8                  " U5        [        R                   " U5            gUb  UR1                  S35        UR1                  S4S#U%0S$9  0 n([        US5      (       aY  [F        RH                  RK                  U 5      (       a5  [F        RH                  RU                  U 5      (       d  S5U;  a  S6U;  a  S7U(S8'   U(       a  S7U(S9'   UR?                  S:U U(S$9  UR?                  S;U&5        Ub  UR?                  S<U5        URW                  S45        Uc  GM  Ub  UR?                  S=U5        UR?                  S>U5        URW                  S35        GM     GMV     URW                  S5        [        R8                  " U5        Sn)[        US5      (       dP  S n*U(       a  S?n*O	U(       a  S@n*[        RZ                  " WUU*UU	UUSA9n)U)S:X  a  Sn)OSn)[        R                   " U5        U)$ ! [D         a     GNf = f! [D         a     GN)f = f)BNz#ERROR: -f incompatible with -updater   r   z&ERROR: -dsco incompatible with -updater   F)	is_rasterr   source_ds_lyrzESRI Shapefilez.shpzMERROR: Non-single layer mode incompatible with non-directory shapefile outputzERROR: No source datasetsmergedc                 >   [         R                  " SS9   [         R                  " 5          [         R                  " U [         R                  [         R
                  -  5      sS S S 5        sS S S 5        $ ! , (       d  f       O= fS S S 5        g ! , (       d  f       g = f)NF)useExceptions)r   ExceptionMgrquiet_errorsOpenEx	OF_VECTOR	OF_UPDATE)filenames    r   &get_vector_file_in_update_no_exception8ogrmerge.<locals>.get_vector_file_in_update_no_exception  sV    U3T5F5F5H;;x$..)HI 6I5H335H5H333s"   B6A4!	B4
B	>B
Br   OGR_MERGE_ENABLE_GPKG_OPTIMYESc                  &  > T H  n U R                  5       R                  S5      (       ac  [        R                  " U 5      nUc    gU H@  nUR	                  5       R                  5       S:  d  M'  [        S[        R                  S9      g   M    g   g)Nz.gpkgFr   z0Code is not ready for multi-geometry column GPKGr   T)	r    endswithr   r   r  GetGeomFieldCountr   r   r   )r   r   r   ri   s      r   are_sources_gpkg"ogrmerge.<locals>.are_sources_gpkg  s    *
##%..w77 XXj1F~$#)"//1CCEI! R%(ZZ $) $* ! + r   r   VRTzVERROR: Destination dataset already exists, but -update nor -overwrite_ds are specifiedOGR_VRTz)ERROR: Destination dataset does not existr   r   z/vsimem/_ogrmerge_.vrtzJERROR: Destination dataset already exists, but -overwrite_ds are specifiedwbzERROR: Cannot create %sOGRVRTDataSourcer   TOGRVRTUnionLayerrM   )rN   SourceLayerFieldNameFieldStrategyrG   r   rZ   r   r   r   r   r   r   r   r   r   OGRVRTWarpedLayerOGRVRTLayer/\1relativeToVRTsharedSrcDataSourceSrcLayerLayerSRSSrcSRS	TargetSRSrL   	overwrite)
accessModelayerCreationOptionsskipFailurescallbackcallback_data).r   r   r   r	   r    rB  r#   r   GetConfigOptionr   r	  r
  r  r0  	GetDriverGetDescriptionUnlinkDeleter  r  r  r   	VSIFOpenLr9   rQ   r  r   r   
VSIFCloseLr   r   rW   r   r5   AttributeErrorr   r   r   r   r   r~   r-   isabsr\   r   VectorTranslate)+ri   rj   rk   rl   rm   rn   rL   ro   rp   rq   rr   rs   rt   ru   rv   rw   rx   ry   rz   r{   r|   r=  rD  compat_of_gpkg_optimr%  vrt_filenamer  r  r   writerogr_vrt_union_layer_writtenr   r   r   r   r   r   r   r   r   rN   retrZ  s+   `                                          r   r   r   I  sd	   0  %2L#)rN:2D
)C"7cjjI:L,\UKK&"/		%. ++ ))&11	

 )

;""*"/J
 +v&&2<@H$&&'DeLeTT	$  01002	**51--d3v=+0(!#!   Le$$7E,D
 &&(%%'94KK-JJ|,=CJJO>&&{3C{1K?cjjQZZaAt7G7GNF~/==&&|4ZZ
 #|T*Ay',6SZZHq\F
*+&+#&/&="J
XXj)F~-
:L "L)(1&(9$W!(;(;(=>B/ 226/''*6;N2O (  ,72224H &122?NS4
&0#/#6#6w#?L  77>>*--!ww//
;Hh#&88HNN3,?",E#F|+!+!3!3M8!LJ%!+!3!3%~\8R'R"J ",!3!3%x#~'D"J '!+!3!3OX!NJ!+!3!3OZ!PJ'//TJ=NO
'//dZ>OP
'//M
'//AST
$''(;<##M&*9M#N+u--z22GGMM*55</L0-0E/*&)E(O**?Je*T**:w7HI$..z5A$$]3$(228UC..{EB(()<=g ): '>| '  !34 '0&="J
XXj)F~-
:L "L)(1&(9$W!(;(;(=>B/ &0#/#6#6w#?L ?'OO%!
 %OOA&KK-$''(;<##M&*9M#N+u--z22GGMM*55</L0-0E/*&)E(O**?Je*T**:|D$..z5A$$]3$(228UC..{EB(()<=m ): '>B +,OOA
Ce$$
!J$J""!!$&&&
 !8CCL!Jy & f & s$   h!h2!
h/.h/2
i ?i c                 R    [         R                  " U 5      n U c  g[        U SS  5      $ )Nr   r   )r   GeneralCmdLineProcessorr   )r   s    r   mainrp    s+    &&t,D|48r   __main__)NN)NNNNFNNNNNNNN)NNNFFFFFNFNNNNNNNNNNN)'r   r   os.pathr   typingr   r   osgeor   r   r   osgeo_utils.auxiliary.baser   osgeo_utils.auxiliary.utilr	   r   r   r#   r1   r7   objectr9   r   r   r   r   r   r   r   r   strboolr  r0  r   r   rp  r^   exitrc   r   r   <module>r{     s  B  	  
 %     4 9J%""@/C /ClDT,d  *
"= F	( -1,0!%)-.2$(#'"&!V8C=)V=)V #V "#	V
 V Xc]+V C=V C=V C=V 8C=
!V 
(3-	 V  V Vt
 -1,0!%!)-.2$(*.-1$(#'"&!+m8C=)m=)m #m 	m
 m m m m "#m m Xc]+m SMm #3-m &c]m C=m  C=!m" C=#m$ 8C=
!%m& 
(3-	 'm(  )m* +m` hh  zHHT#((^ r   