
    (ph                         S r SSKJr  SSKJr  SSKJr  SSKJr  SSK	J
r
  SSKJr  SSKJr  SS	KJrJr   " S
 S\5      rg)a  
DataSource is a wrapper for the OGR Data Source object, which provides
an interface for reading vector geometry data from many different file
formats (including ESRI shapefiles).

When instantiating a DataSource object, use the filename of a
GDAL-supported data source.  For example, a SHP file or a
TIGER/Line file from the government.

The ds_driver keyword is used internally when a ctypes pointer
is passed in directly.

Example:
 ds = DataSource('/home/foo/bar.shp')
 for layer in ds:
     for feature in layer:
         # Getting the geometry for the feature.
         g = feature.geom

         # Getting the 'description' field for the feature.
         desc = feature['description']

         # We can also increment through all of the fields
         #  attached to this feature.
         for field in feature:
             # Get the name of the field (e.g. 'description')
             nm = field.name

             # Get the type (integer) of the field, e.g. 0 => OFTInteger
             t = field.type

             # Returns the value the field; OFTIntegers return ints,
             #  OFTReal returns floats, all else returns string.
             val = field.value
    )byref)Path)GDALBase)Driver)GDALException)Layer)ds)force_bytes	force_strc                   l    \ rS rSrSr\R                  rSS jrS r	S r
S r\S 5       r\S 5       rS	rg
)
DataSource4   z Wraps an OGR Data Source object.c                 f   U(       a  SU l         OSU l         X@l        [        R                  " 5         [	        U[
        [        45      (       aK  [        R                  " 5       n [        R                  " [        U5      U R                   [        U5      5      nOS[	        XR                  5      (       a"  [	        U[        R                  5      (       a  UnO[        S[        U5      -  5      eU(       a  XPl        [        U5      U l        g [        SU-  5      e! [         a    [        SU-  5      ef = f)N   r   z%Could not open the datasource at "%s"z"Invalid data source input type: %szInvalid data source file "%s")_writeencodingr   ensure_registered
isinstancestrr   ptr_typecapiopen_dsr
   r   r   typeptrdriver)selfds_input	ds_driverwriter   r	   s         U/var/www/html/venv/lib/python3.13/site-packages/django/contrib/gis/gdal/datasource.py__init__DataSource.__init__8   s    DKDK   "hd,,)IX\\+h"7eIFVW
 --00Zv6
 6
 B DtH~ UVVH +DK   ?( JKK! ! X $$Kh$VWWXs   #4D D0c                    [        U[        5      (       a,   [        R                  " U R                  [        U5      5      nOv[        U[        5      (       aJ  SUs=::  a  U R                  :  a%  O  O"[        R                  " U R                  U5      nO%[        SU-  5      e[        S[        U5      -  5      e[        X 5      $ ! [         a    [        SU-  5      ef = f)z@Allows use of the index [] operator to get a layer at the index.z!Invalid OGR layer name given: %s.r   z=Index out of range when accessing layers in a datasource: %s.zInvalid index type: %s)r   r   r   get_layer_by_namer   r
   r   
IndexErrorintlayer_count	get_layer_ptr	TypeErrorr   r   )r   indexlayers      r    __getitem__DataSource.__getitem__[   s    eS!!N..txxU9KL s##E,D,,,tyy%8 S 
 4tE{BCCU!! ! N !Du!LMMNs   *C Cc                     U R                   $ )z3Return the number of layers within the data source.)r'   r   s    r    __len__DataSource.__len__n   s        c                 >    U R                   < SU R                  < S3$ )z2Return OGR GetName and Driver for the Data Source.z ())namer   r0   s    r    __str__DataSource.__str__r   s     IIt{{33r3   c                 B    [         R                  " U R                  5      $ )z/Return the number of layers in the data source.)r   get_layer_countr)   r0   s    r    r'   DataSource.layer_countv   s     ##DII..r3   c                 j    [         R                  " U R                  5      n[        XR                  SS9$ )z#Return the name of the data source.T)strings_only)r   get_ds_namer)   r   r   )r   r6   s     r    r6   DataSource.name{   s)     		*}}4@@r3   )r   r   r   r   N)FFzutf-8)__name__
__module____qualname____firstlineno____doc__r   
destroy_ds
destructorr!   r-   r1   r7   propertyr'   r6   __static_attributes__ r3   r    r   r   4   sN    &J!LF"& 4 / / A Ar3   r   N)rD   ctypesr   pathlibr   django.contrib.gis.gdal.baser   django.contrib.gis.gdal.driverr   django.contrib.gis.gdal.errorr   django.contrib.gis.gdal.layerr   "django.contrib.gis.gdal.prototypesr	   r   django.utils.encodingr
   r   r   rI   r3   r    <module>rR      s5   "H   1 1 7 / 9 8KA KAr3   