
     h                         d dl mZmZmZmZ d dlmZmZ d dlm	Z	 g dZ
 G d de          Z G d de          Z G d	 d
e          Z G d de          Z G d de          Z G d de          ZdS )    )ExtentFieldGeometryCollectionFieldGeometryFieldLineStringField)	AggregateValue)cached_property)CollectExtentExtent3DMakeLineUnionc                   R     e Zd ZdZdZed             Zd fd	Zd Z	 d	 fd	Z	 xZ
S )
GeoAggregateNFc                 V    |                      | j        d         j        j                  S )Nr   )output_field_classsource_expressionsoutput_fieldsrid)selfs    f/var/www/surfInsights/venv3-11/lib/python3.11/site-packages/django/contrib/gis/db/models/aggregates.pyr   zGeoAggregate.output_field   s$    &&t'>q'A'N'STTT    c                     |j                             |             t                      j        ||fd|p|j                             | j                  i|S )Nfunction)opscheck_expression_supportsuperas_sqlspatial_aggregate_namename)r   compiler
connectionr   extra_context	__class__s        r   r   zGeoAggregate.as_sql   sk     	//555uww~
 
 Q!F!Fty!Q!Q
 	
 
 	
r   c                 B   | j         s| j                            d          pt          | dd          }|                                 }|                    g |                                 t          |                     d} |j        ||fd|i|S  | j        ||fi |S )N	toleranceg?z*%(function)s(SDOAGGRTYPE(%(expressions)s))template)		is_extentextragetgetattrcopyset_source_expressionsget_source_expressionsr   r   )r   r!   r"   r#   r&   cloner'   s          r   	as_oraclezGeoAggregate.as_oracle    s    ~ 	
{33Wwt[RV7W7WIIIKKE((0022)$$   DH5<* /7;H   t{8ZAA=AAAr   Tc                     t                                          |||||          }|                                D ]&}t          |j        d          st          d          '|S )N	geom_typez6Geospatial aggregates only allowed on geometry fields.)r   resolve_expressionr.   hasattrfield
ValueError)	r   queryallow_joinsreuse	summarizefor_savecexprr$   s	           r   r3   zGeoAggregate.resolve_expression0   st     GG&&uk5)XVV,,.. 	 	D4:{33  L   r   N)NTNFF)__name__
__module____qualname__r   r(   r	   r   r   r0   r3   __classcell__r$   s   @r   r   r      s        HIU U _U	
 	
 	
 	
 	
 	
B B B" SX	 	 	 	 	 	 	 	 	 	r   r   c                       e Zd Zd ZeZdS )r
   N)r?   r@   rA   r    r   r    r   r   r
   r
   <   s        D0r   r
   c                   ,     e Zd Zd ZdZ fdZd Z xZS )r   2Dc                 X     t                      j        |fdt                      i| d S Nr   r   __init__r   r   
expressionr)   r$   s      r   rK   zExtent.__init__E   1    II+--I5IIIIIr   c                 6    |j                             |          S r>   )r   convert_extentr   valuerM   r"   s       r   convert_valuezExtent.convert_valueH   s    ~,,U333r   r?   r@   rA   r    r(   rK   rS   rB   rC   s   @r   r   r   A   sV        DIJ J J J J4 4 4 4 4 4 4r   r   c                   ,     e Zd Zd ZdZ fdZd Z xZS )r   3Dc                 X     t                      j        |fdt                      i| d S rI   rJ   rL   s      r   rK   zExtent3D.__init__P   rN   r   c                 6    |j                             |          S r>   )r   convert_extent3drQ   s       r   rS   zExtent3D.convert_valueS   s    ~..u555r   rT   rC   s   @r   r   r   L   sV        DIJ J J J J6 6 6 6 6 6 6r   r   c                       e Zd Zd ZeZdS )r   N)r?   r@   rA   r    r   r   rE   r   r   r   r   W   s        D(r   r   c                       e Zd Zd ZeZdS )r   N)r?   r@   rA   r    r   r   rE   r   r   r   r   \   s        D&r   r   N)#django.contrib.gis.db.models.fieldsr   r   r   r   django.db.modelsr   r   django.utils.functionalr	   __all__r   r
   r   r   r   r   rE   r   r   <module>r`      s              . - - - - - - - 3 3 3 3 3 3
@
@
@, , , , ,9 , , ,^1 1 1 1 1l 1 1 1
4 4 4 4 4\ 4 4 46 6 6 6 6| 6 6 6) ) ) ) )| ) ) )
' ' ' ' 'L ' ' ' ' 'r   