Ë
    ¹ûàgË  ã                   ó`   — 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  G d„ d«      Zy)	é    )ÚGeometryField)ÚDistance)ÚArea)ÚNotSupportedError)Úcached_propertyc                   óÊ   ‡ — e Zd ZdZdZdZdZdZdZdZ	e
d„ «       ZdZdZi Zh d£ZdZd„ Zd	„ Zd
„ Zd„ Zd„ Zd„ Zˆ fd„Zd„ Zd„ Zd„ Zd„ Z ee«      Zˆ fd„Zd„ Z d„ Z!d„ Z"ˆ xZ#S )ÚBaseSpatialOperationsFNú%sc                 ó   — | j                   S ©N)Úselect©Úselfs    úl/var/www/skyplay_api_hub/venv/lib/python3.12/site-packages/django/contrib/gis/db/backends/base/operations.pyÚselect_extentz#BaseSpatialOperations.select_extent   s   € à�{‰{Ðó    © Ú >"   r   ÚAsGMLÚAsKMLÚAsSVGÚScaleÚUnionÚLengthÚAzimuthÚFromWKBÚFromWKTÚGeoHashÚIsEmptyÚIsValidÚMemSizeÚReverseÚCentroidr   ÚEnvelopeÚ	AsGeoJSONÚ	MakeValidÚ	NumPointsÚ	PerimeterÚ	TransformÚ	TranslateÚ
DifferenceÚ
SnapToGridÚClosestPointÚIntersectionÚNumGeometriesÚSymDifferenceÚBoundingCircleÚPointOnSurfaceÚLineLocatePointÚGeometryDistancec                 ó   — t        d«      ‚)Nz:Aggregate extent not implemented for this spatial backend.©ÚNotImplementedError©r   ÚboxÚsrids      r   Úconvert_extentz$BaseSpatialOperations.convert_extentN   s   € Ü!ØHó
ð 	
r   c                 ó   — t        d«      ‚)Nz=Aggregate 3D extent not implemented for this spatial backend.r6   r8   s      r   Úconvert_extent3dz&BaseSpatialOperations.convert_extent3dS   s   € Ü!ØKó
ð 	
r   c                 ó   — d|z  S )Nz'%s'r   )r   Únames     r   Úgeo_quote_namez$BaseSpatialOperations.geo_quote_nameY   s   € Ø˜‰}Ðr   c                 ó   — t        d«      ‚)zh
        Return the database column type for the geometry field on
        the spatial backend.
        zGsubclasses of BaseSpatialOperations must provide a geo_db_type() methodr6   )r   Úfs     r   Úgeo_db_typez!BaseSpatialOperations.geo_db_type]   s   € ô
 "ØUó
ð 	
r   c                 ó   — t        d«      ‚)zu
        Return the distance parameters for the given geometry field,
        lookup value, and lookup type.
        z:Distance operations not available on this spatial backend.r6   )r   rB   ÚvalueÚlookup_types       r   Úget_distancez"BaseSpatialOperations.get_distancef   s   € ô
 "ØHó
ð 	
r   c                 óª  — d„ }t        |d«      r6 ||j                  |«      r!| j                  d«      ›d|j                  ›d�S dS  |||«      r;| j                  d«      ›d| j                  ›d|j                  ›d	|j                  ›d�S | j
                  j                  j                  r| j                  ›d|j                  ›d�S d
| j                  z  S )a  
        Return the placeholder for the given geometry field with the given
        value.  Depending on the spatial backend, the placeholder may contain a
        stored procedure call to the transformation function of the spatial
        backend.
        c                 ó@   — | d uxr | j                   |j                   k7  S r   )r:   )rE   Úfields     r   Útransform_valuezCBaseSpatialOperations.get_geom_placeholder.<locals>.transform_valuew   s   € Ø Ð$ÒA¨¯©°u·z±zÑ)AÐAr   Úas_sqlr)   z(%s, ú)r
   ú(z(%s,z), z%s(%%s))ÚhasattrÚoutput_fieldÚspatial_function_namer:   Ú	from_textÚ
connectionÚfeaturesÚhas_spatialrefsys_table)r   rB   rE   ÚcompilerrK   s        r   Úget_geom_placeholderz*BaseSpatialOperations.get_geom_placeholdero   sÂ   € ò	Bô �5˜(Ô#ñ # 5×#5Ñ#5°qÔ9ð "&×!;Ñ!;¸KÕ!HÈ!Ï&Ë&ÐQðð ðñ
 ˜5 !Ô$ð ×*Ñ*¨;Õ7Ø—“Ø—
“
Ø—“ð	ð ð �_‰_×%Ñ%×=Ò=Ø#'§>£>°1·6³6Ð:Ð:ð ˜tŸ~™~Ñ-Ð-r   c                 ó€   •— t        || j                  «      rt        d|j                  z  «      ‚t        ‰| �  |«       y )NzA%s spatial aggregation is not supported by this database backend.)Ú
isinstanceÚdisallowed_aggregatesr   r?   ÚsuperÚcheck_expression_support)r   Ú
expressionÚ	__class__s     €r   r\   z.BaseSpatialOperations.check_expression_supportŽ   s>   ø€ Ü�j $×"<Ñ"<Ô=Ü#ØSØ—/‘/ñ"óð ô 	‰Ñ(¨Õ4r   c                 ó   — t        d«      ‚)Nz;Aggregate support not implemented for this spatial backend.r6   )r   Úagg_names     r   Úspatial_aggregate_namez,BaseSpatialOperations.spatial_aggregate_name–   s   € Ü!ØIó
ð 	
r   c                 óŒ   — || j                   v rt        d|z  «      ‚| j                  j                  || j                  |z   «      S )Nz-This backend doesn't support the %s function.)Úunsupported_functionsr   Úfunction_namesÚgetÚgeom_func_prefix)r   Ú	func_names     r   rQ   z+BaseSpatialOperations.spatial_function_name›   sK   € Ø˜×2Ñ2Ñ2Ü#Ø?À)ÑKóð ð ×"Ñ"×&Ñ& y°$×2GÑ2GÈ)Ñ2SÓTÐTr   c                 ó   — t        d«      ‚)NzMSubclasses of BaseSpatialOperations must provide a geometry_columns() method.r6   r   s    r   Úgeometry_columnsz&BaseSpatialOperations.geometry_columns£   s   € Ü!ðó
ð 	
r   c                 ó   — t        d«      ‚)NzKsubclasses of BaseSpatialOperations must a provide spatial_ref_sys() methodr6   r   s    r   Úspatial_ref_sysz%BaseSpatialOperations.spatial_ref_sys©   s   € Ü!ðó
ð 	
r   c                 óš   •— t         ‰| �  |«      }t        |j                  t        «      r |j                  | j                  |«      «       |S r   )r[   Úget_db_convertersrY   rP   r   ÚappendÚget_geometry_converter)r   r]   Ú
convertersr^   s      €r   rm   z'BaseSpatialOperations.get_db_converters±   sA   ø€ Ü‘WÑ.¨zÓ:ˆ
Ü�j×-Ñ-¬}Ô=Ø×Ñ˜d×9Ñ9¸*ÓEÔFØÐr   c                 ó   — t        d«      ‚)NzSSubclasses of BaseSpatialOperations must provide a get_geometry_converter() method.r6   )r   r]   s     r   ro   z,BaseSpatialOperations.get_geometry_converter·   s   € Ü!ð/ó
ð 	
r   c                 óö   — |j                  | j                  «      r,| j                  j                  j                  ryt	        d«      ‚|j                  | j                  «      }|rt        j                  |«      S y )NÚsq_mz2Area on geodetic coordinate systems not supported.)ÚgeodeticrS   rT   Úsupports_area_geodeticr7   Ú
units_nameÚAreaMeasureÚunit_attname)r   rJ   rv   s      r   Úget_area_att_for_fieldz,BaseSpatialOperations.get_area_att_for_field½   sg   € Ø�>‰>˜$Ÿ/™/Ô*Ø�‰×'Ñ'×>Ò>ØÜ%ØDóð ð ×)Ñ)¨$¯/©/Ó:ˆJÙÜ"×/Ñ/°
Ó;Ð;ð r   c                 óì   — d }|j                  | j                  «      r$| j                  j                  j                  rd}|S |j	                  | j                  «      }|rt        j                  |«      }|S )NÚm)rt   rS   rT   Úsupports_distance_geodeticrv   ÚDistanceMeasurerx   )r   rJ   Údist_attÚunitss       r   Úget_distance_att_for_fieldz0BaseSpatialOperations.get_distance_att_for_fieldÉ   sd   € ØˆØ�>‰>˜$Ÿ/™/Ô*Ø�‰×'Ñ'×BÒBØ�ð
 ˆð ×$Ñ$ T§_¡_Ó5ˆEÙÜ*×7Ñ7¸Ó>�Øˆr   )$Ú__name__Ú
__module__Ú__qualname__ÚpostgisÚ
spatialiteÚmariadbÚmysqlÚoracleÚspatial_versionr   r   r   rZ   rf   rd   rc   rR   r;   r=   r@   rC   rG   rW   r\   ra   rQ   ri   rk   Ústaticmethodr   Údistance_expr_for_lookuprm   ro   ry   r€   Ú__classcell__)r^   s   @r   r	   r	   	   sº   ø„ ð €GØ€JØ€GØ€EØ€FØ€Oð €Fàñó ðð ÐàÐð €Nò#ÐðL €Iò
ò

òò
ò
ò.ô>5ò
ò
Uò
ò
ñ  ,¨HÓ5Ðôò
ò
<ö	r   r	   N)Údjango.contrib.gis.db.modelsr   Ú&django.contrib.gis.db.models.functionsr   Údjango.contrib.gis.measurer   rw   r}   Ú	django.dbr   Údjango.utils.functionalr   r	   r   r   r   ú<module>r’      s#   ðÝ 6Ý ;Ý :Ý BÝ 'Ý 3÷Iò Ir   