
    g=                     v    d Z ddlmZ ddlmZ ddlmZ ddlmZ ddl	m
Z
 ddlmZ ddlmZmZ  G d	 d
e      Zy)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
    )Path)GDALBase)Driver)GDALException)Layer)ds)force_bytes	force_strc                   b    e Zd ZdZej
                  Zd	dZd Zd Z	d Z
ed        Zed        Zy)

DataSourcez Wraps an OGR Data Source object.c                 t   |rt         j                  nt         j                  | _        || _        t        j                          t        |t        t        f      r?	 t        j                  t        |      | j                  t         j                  z  d d d       }nJt        || j                        rt        |t
        j                        r|}nt        dt        |      z        |r-|| _        t        j"                  |      }t        |      | _        y t        d|z        # t        $ r t        d|z        w xY w)Nz%Could not open the datasource at "%s"z"Invalid data source input type: %szInvalid data source file "%s")capiGDAL_OF_UPDATEGDAL_OF_READONLY_writeencodingr   ensure_registered
isinstancestrr   open_dsr	   GDAL_OF_VECTORr   ptr_typetypeptrget_dataset_driverdriver)selfds_input	ds_driverwriter   r   r   s          z/var/www/python.vincentserveurtest.ovh/public_html/venv/lib/python3.12/site-packages/django/contrib/gis/gdal/datasource.py__init__zDataSource.__init__7   s   -2d))8M8M   "hd,X\\)KK$"5"55 $--0Zv6
 B DtH~ UVVDH,,R0F .DK   ?( JKK# ! X $$Kh$VWWXs   =D D7c                    t        |t              r+	 t        j                  | j                  t        |            }nnt        |t              rGd|cxk  r| j                  k  r$n n!t        j                  | j                  |      }n%t        d|z        t        dt        |      z        t        ||       S # t        $ r t        d|z        w xY w)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__zDataSource.__getitem__\   s    eS!N..txxU9KL s#E,D,,,tyy%8 S 
 4tE{BCCUD!! ! N !Du!LMMNs   )B6 6Cc                     | j                   S )z3Return the number of layers within the data source.)r'   r   s    r!   __len__zDataSource.__len__o   s        c                 :    | j                   d| j                  dS )z2Return OGR GetName and Driver for the Data Source.z ())namer   r/   s    r!   __str__zDataSource.__str__s   s     IIt{{33r1   c                 @    t        j                  | j                        S )z/Return the number of layers in the data source.)r   get_layer_countr)   r/   s    r!   r'   zDataSource.layer_countw   s     ##DII..r1   c                 p    t        j                  | j                        }t        || j                  d      S )z#Return the name of the data source.T)strings_only)r   get_ds_namer)   r
   r   )r   r4   s     r!   r4   zDataSource.name|   s+     		*t}}4@@r1   N)FFzutf-8)__name__
__module____qualname____doc__r   
destroy_ds
destructorr"   r-   r0   r5   propertyr'   r4    r1   r!   r   r   3   sN    &J#LJ"& 4 / / A Ar1   r   N)r>   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   rB   r1   r!   <module>rJ      s2   "H  1 1 7 / 9 8MA MAr1   