
    h=                     v    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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
    )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
)
DataSource3   z Wraps an OGR Data Source object.c                    U(       a  [         R                  O[         R                  U l        X@l        [
        R                  " 5         [        U[        [        45      (       a@   [         R                  " [        U5      U R                  [         R                  -  S S S 5      nOS[        XR                  5      (       a"  [        U[
        R                  5      (       a  UnO[        S[        U5      -  5      eU(       a-  XPl        [         R"                  " U5      n[        U5      U l        g [        SU-  5      e! [         a    [        SU-  5      ef = f)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          T/var/www/html/env/lib/python3.13/site-packages/django/contrib/gis/gdal/datasource.py__init__DataSource.__init__7   s   -2d))8M8M   "hd,,X\\)KK$"5"55 --00Zv6
 6
 B DtH~ UVVH,,R0F .DK   ?( JKK# ! X $$Kh$VWWXs   $>D8 8E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__o   s        c                 >    U R                   < SU R                  < S3$ )z2Return OGR GetName and Driver for the Data Source.z ())namer   r2   s    r"   __str__DataSource.__str__s   s     IIt{{33r5   c                 B    [         R                  " U R                  5      $ )z/Return the number of layers in the data source.)r   get_layer_countr+   r2   s    r"   r)   DataSource.layer_countw   s     ##DII..r5   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   r8   s     r"   r8   DataSource.name|   s)     		*}}4@@r5   )r   r   r   r   N)FFzutf-8)__name__
__module____qualname____firstlineno____doc__r   
destroy_ds
destructorr#   r/   r3   r9   propertyr)   r8   __static_attributes__ r5   r"   r   r   3   sN    &J#LJ"& 4 / / A Ar5   r   N)rF   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   rK   r5   r"   <module>rS      s2   "H  1 1 7 / 9 8MA MAr5   