
    nj8                         S SK r S SKJrJr  S rS rS r " S S\5      rS r	S	 r
S
 rS rSS jr\ R                  4S jr\S:X  a#  \ R"                  " \" \ R                  5      5        gg)    N)ogrosrc                     [        S5        [        S5        [        S5        [        S5        [        S5        [        S5        [        S5        [        S5        [        S5        [        S	5        [        S
5        [        S5        [        S5        [        S5        [        S5        [        S5        [        S5        [        S5        [        S5        [        S5        [        S5        [        S5        [        S5        [        S5        [        S5        [        S5        [        S5        [        S5        [        S5        [        S5        [        S5        g)NzFUsage: ogr_dispatch.py [-f format] -src name -dst name [-field field]+z/                [-25D_as_2D] [-multi_as_single]zC                [-remove_dispatch_fields] [-prefix_with_layer_name]zI                [-dsco KEY=VALUE]... [-lco KEY=VALUE]... [-a_srs srs_def]zL                [-style_as_field] [-where restricted_where] [-gt n] [-quiet] zJDispatch features into layers according to the value of some fields or thezgeometry type.z
Arguments:zG -f format: name of the driver to use to create the destination datasetz'            (default 'ESRI Shapefile').z' -src name: name of the source dataset.zH -dst name: name of the destination dataset (existing or to be created).zD -field field: name of a field to use to dispatch features. May alsozK                        be 'OGR_GEOMETRY'. At least, one occurrence needed.z= -25D_as_2D: for dispatching, consider 2.5D geometries as 2D.zH -multi_as_single: for dispatching, consider MULTIPOLYGON as POLYGON andz1                   MULTILINESTRING as LINESTRING.zW -remove_dispatch_fields: remove the dispatch fields from the target layer definitions.zR -prefix_with_layer_name: prefix the target layer name with the source layer name.z; -dsco KEY=VALUE: dataset creation option. May be repeated.z8 -lco KEY=VALUE: layer creation option. May be repeated.zW -a_srs srs_def: assign a SRS to the target layers. Source layer SRS is otherwise used.zU -style_as_field: add a OGR_STYLE field with the content of the feature style string.zA -where restricted_where: where clause to filter source features.z7 -gt n: group n features per transaction (default 200).z	Example :zG  ogr_dispatch.py -src in.dxf -dst out -field Layer -field OGR_GEOMETRY   )print     \/var/www/html/pdf-tiff/venv/lib/python3.13/site-packages/osgeo_utils/samples/ogr_dispatch.pyUsager   &   s&   	
RS	
;<	
OP	
UV	V 
"I	
VW	
	"I	,	
ST	
34	
34	
TU	
PQ	
WX	
IJ	
TU	
=>	a 
\ 

GH	
DE	a 
_ 

MN	
CD	"I	+	
ST	"Ir
   c                 D    U R                  5       UR                  5       :H  $ N)lower)abs     r   EQUALr   W   s    779	!!r
   c                 *    U [         R                  ) -  $ r   )r   	wkb25DBit)xs    r   
wkbFlattenr   _   s    r
   c                       \ rS rSrS rSrg)Optionsf   c                     / U l         / U l        SU l        SU l        SU l        S U l        SU l        SU l        SU l        SU l	        SU l
        g )NF   )lcodispatch_fieldsb25DAs2DbMultiAsSinglebRemoveDispatchFieldspoOutputSRSbNullifyOutputSRSbPrefixWithLayerNamebStyleAsFieldnGroupTransactionsbQuiet)selfs    r   __init__Options.__init__g   sW    !#%*"!&$)!""%r
   )r   r   r"   r#   r&   r    r$   r   r   r%   r!   N)__name__
__module____qualname____firstlineno__r(   __static_attributes__r	   r
   r   r   r   f   s    r
   r   c                 (   UR                   (       a  [        U 5      n U [        R                  :X  a  gU [        R                  :X  a  gU [        R
                  :X  a  gU [        R                  :X  a  gU [        R                  :X  a  UR                  (       a  S$ S$ U [        R                  :X  a  UR                  (       a  S$ S$ U [        R                  :X  a  gU [        R                  :X  a  gU [        R                  :X  a  g	U [        R                  :X  a  g
U [        R                  :X  a  gU [        R                  :X  a  UR                  (       a  S	$ S$ U [        R                   :X  a  UR                  (       a  S
$ S$ U [        R"                  :X  a  gg)NPOINT
LINESTRINGPOLYGON
MULTIPOINTMULTILINESTRINGMULTIPOLYGONGEOMETRYCOLLECTIONPOINT25DLINESTRING25D
POLYGON25DMULTIPOINT25DMULTILINESTRING25DMULTIPOLYGON25DGEOMETRYCOLLECTION25DUNKNOWN)r   r   r   wkbPointwkbLineString
wkbPolygonwkbMultiPointwkbMultiLineStringr   wkbMultiPolygonwkbGeometryCollectionwkbPoint25DwkbLineString25DwkbPolygon25DwkbMultiPoint25DwkbMultiLineString25DwkbMultiPolygon25DwkbGeometryCollection25D)	eGeomTypeoptionss     r   GeometryTypeToNamerO   y   sC   y)	CLL C%%%CNN"C%%%C***&55|L;LLC'''#22yFFC---#COO#C(((C%%%C(((C---")"8"8R>RRC***&55|L;LLC000&r
   c                 p   UR                   (       a  U R                  5       nOSnUR                   H  n[        US5      (       a1  UR	                  5       nUc  SnOE[        UR                  5       U5      nO*UR                  U5      (       a  UR                  U5      nOSnUS:X  a  UnMy  US-   U-   nM     U$ )Nr   OGR_GEOMETRYNONEnull_)	r#   GetNamer   r   GetGeometryRefrO   GetGeometryType
IsFieldSetGetFieldAsString)src_lyrfeatrN   out_lyr_namedispatch_fieldgeomvals          r   get_out_lyr_namer`      s    ##(!1100&&(D|()=)=)?I~..++N;2L'#-3L! 2$ r
   c                 P   X;  Ga  UR                   c  UR                  (       a  UR                   nOUR                  5       nUR                  U 5      nUGc  UR                  (       d  [        SU -  5        UR                  XXER                  S9nUc  gUR                  5       R                  5       n[        U5       V	s/ s H  n	SPM     n
n	[        U5       H  n	UR                  5       R                  U	5      nUR                  (       a@  SnUR                   H%  n[        XR                  5       5      (       d  M#  Sn  O   U(       a  Ms  UR                  5       R!                  UR                  5       5      nUS:  a  XU	'   M  UR#                  U5      S:X  d  M  UR                  5       R                  5       S-
  X'   M     UR$                  (       a4  UR#                  [&        R(                  " S[&        R*                  5      5        OS n
Xz/X0'   Xz4$ X0   S   nX0   S   n
Xz4$ s  sn	f )	NzCreating layer %s)srs	geom_typerN      FTr   	OGR_STYLE)r!   r"   GetSpatialRefGetLayerByNamer&   r   CreateLayerr   GetLayerDefnGetFieldCountrangeGetFieldDefnr    r   r   rU   GetFieldIndexCreateFieldr$   r   	FieldDefn	OFTString)r\   rZ   dst_dslayerMaprc   rN   rb   out_lyrsrc_field_countipanMap
field_defnfoundr]   idxs                  r   get_layer_and_mapr{      s   #*g.G.G%%C'')C''5?>>)L89((KK ) G %224BBDO"'"89"8Qb"8F9?+$113@@C
00!E*1*A*A 1C1C1EFF$(E! +B  **,:::;M;M;OP!8 #1I((49 ' 4 4 6 D D F JFI , $$##CMM+s}}$MNF")!2
  (+'*3 :s   ?H#c           	         S nSnU  GHY  n[        XU5      nUR                  5       nUb  UR                  5       n	O[        R                  n	[        XpXX5      u  pUR                  S:  a\  X:w  a'  Ub  UR                  5         U
nUR                  5         SnXSR                  :X  a   UR                  5         UR                  5         OU
n[        R                  " U
R                  5       5      nUb  UR                  USU5        OUR                  U5        UR                  (       a%  UR                  5       nUb  UR                  SU5        U
R!                  U5        US-   nGM\     UR                  S:  a  Ub  UR                  5         g)Nr   rd   rf   )r`   rV   rW   r   
wkbUnknownr{   r%   CommitTransactionStartTransactionFeaturerj   SetFromWithMapSetFromr$   GetStyleStringSetFieldCreateFeature)rZ   rr   rs   rN   current_out_lyrnFeaturesInTransactionr[   r\   r^   rc   rt   rw   out_featstyles                 r   convert_layerr      st   O'w?""$,,.II-6Y
 %%))".#557")002)*&%)C)CC113002%O;;w3356##D!V4T"  '')E !!+u5h'!7!!;O R !!A%/*E))+r
   c                    S nS nSn[        5       n/ n/ nS n	U (       d
  [        5       $ Sn
U
[        U 5      :  Ga/  X
   n[        US5      (       a  U
S-   [        U 5      :  a  U
S-   n
X
   nGO[        US5      (       a  U
S-   [        U 5      :  a  U
S-   n
X
   nGO[        US5      (       a  U
S-   [        U 5      :  a  U
S-   n
X
   nGO[        US5      (       a  U
S-   [        U 5      :  a~  U
S-   n
X
   n[        US5      (       d  [        US	5      (       a	  S
Ul        GO3[
        R                  " 5       Ul        UR                  R                  U5      S:w  a  [        SU-  5        gGO[        US5      (       a,  U
S-   [        U 5      :  a  U
S-   n
UR                  X
   5        GO[        US5      (       a,  U
S-   [        U 5      :  a  U
S-   n
UR                  X
   5        GOo[        US5      (       a6  U
S-   [        U 5      :  a$  U
S-   n
UR                  R                  X
   5        GO([        US5      (       a	  S
Ul        GO[        US5      (       a  S
Ul        O[        US5      (       a  S
Ul        O[        US5      (       a  S
Ul        O[        US5      (       a  S
Ul        O[        US5      (       d  [        US5      (       a*  U
S-   [        U 5      :  a  U
S-   n
[#        X
   5      Ul        O^[        US5      (       a  U
S-   [        U 5      :  a
  U
S-   n
X
   n	O1[        US5      (       a  S
Ul        O[        SU-  5        [        5       $ U
S-   n
U
[        U 5      :  a  GM/  Uc  [        S5        gUc  [        S5        gUR                  (       d  [        S5        g[(        R*                  " U5      nUc  [        SU-  5        g[(        R*                  " USS9nUb  U(       a  [        S5        gO#[(        R,                  " U5      R/                  XHS9nUc  [        S U-  5        g0 nU H.  nU	b  UR1                  U	5        [3        UXU5      nUS:w  d  M,  Us  $    g)!NzESRI Shapefiler   z-srcrd   z-dstz-fz-a_srsNULLrR   Tz$Failed to process SRS definition: %sz-dscoz-lcoz-fieldz
-25D_as_2Dz-multi_as_singlez-remove_dispatch_fieldsz-prefix_with_layer_namez-style_as_fieldz-tgz-gtz-wherez-quietzUnrecognized argument : %szMissing -srczMissing -dstzMissing -dispatch_fieldz Cannot open source datasource %s)updatez8-dsco should not be specified for an existing datasource)rN   z*Cannot open or create target datasource %s)r   r   lenr   r"   r   SpatialReferencer!   SetFromUserInputr   appendr   r   r   r    r#   r$   intr%   r&   r   OpenGetDriverByNameCreateDataSourceSetAttributeFilterr   )argvprogressprogress_argsrc_filenamedst_filenamedriver_namerN   r   dscopszWHERErv   argpszOutputSRSDefsrc_dsrr   rs   rZ   rets                     r   ogr_dispatchr   *  s   LL"KiG
CDHw	A
c$i-gf!a%#d)"3AA7L3AECI$5AA7L3!a%#d)"3AA'K3!!a!ec$i&7AA"gO_f--1O1O,0)&)&:&:&<#&&77HAM@?RS N 3  QUSY%6AAKK 3AECI$5AAJJtw3!!a!ec$i&7AA##**4733%%#G3*++%)G"3122,0G)3122+/G(3)**$(G!C5e#4#4!a%#d):KAA),TWG&3!!a!ec$i&7AAwH3!!!GN.457NEi c$i-l nn""'(XXl#F~0<?@XXl1-FLM  $$[1BB C 
 ~:\IJH&&x0GVw?!8J  r
   c                 J    [         R                  " U 5      n [        U SS  5      $ )Nrd   )r   GeneralCmdLineProcessorr   )r   s    r   mainr     s#    &&t,DQR!!r
   __main__)NN)sysosgeor   r   r   r   r   objectr   rO   r`   r{   r   r   r   r   r*   exitr	   r
   r   <module>r      sy   B  +b" f &"R>*b1pk\ hh "
 zHHT#((^ r
   