ó
    µRjêH  ã                   ó–  • S SK Jr  S SKJrJr  S SKJrJr  S SKJ	r	  S SK
Jr  S SKJr  S SKJrJrJrJrJrJrJrJr  S SKJr  S S	KJr  \\\4r " S
 S5      r " S S\\5      r " S S\5      r  " S S5      r! " S S5      r" " S S\"\5      r# " S S\5      r$ " S S\5      r% " S S\5      r& " S S\5      r' " S S\5      r( " S  S!\5      r) " S" S#\5      r* " S$ S%\"\ 5      r+ " S& S'\"\ 5      r, " S( S)\"\ 5      r- " S* S+5      r. " S, S-\.\"\5      r/ " S. S/\ 5      r0 " S0 S1\ 5      r1 " S2 S3\5      r2 " S4 S5\5      r3 " S6 S7\5      r4 " S8 S9\5      r5 " S: S;\"\ 5      r6\Rn                   " S< S=\\5      5       r8\Rn                   " S> S?\"\\5      5       r9 " S@ SA\.\"\5      r: " SB SC\5      r; " SD SE\ 5      r< " SF SG\5      r= " SH SI\5      r> " SJ SK\5      r? " SL SM\.\"\5      r@ " SN SO\"\ 5      rA " SP SQ\5      rB " SR SS\!\ 5      rC " ST SU\!\ 5      rD " SV SW\"\ 5      rE " SX SY\ 5      r " SZ S[\C5      rF " S\ S]\"\ 5      rGg^)_é    )ÚDecimal)ÚBaseSpatialFieldÚGeometryField)Ú	AreaFieldÚDistanceField)ÚGEOSGeometry)Ú
FieldError)ÚNotSupportedError)ÚBinaryFieldÚBooleanFieldÚ
FloatFieldÚFuncÚIntegerFieldÚ	TextFieldÚ	TransformÚValue)ÚCast)Úcached_propertyc                   óv   ^ • \ rS rSrSrSrU 4S jr\S 5       r\	S 5       r
SU 4S jjrU 4S jrSS	 jrS
rU =r$ )ÚGeoFuncMixiné   N)r   c                 ó2  >• [         TU ]  " U0 UD6  U R                   Hä  nU R                  U   n[	        U[
        5      (       d  M)   UR                  nUR                  n[	        U[        5      (       a  U(       a2  [	        U[        5      (       d  [        SU R                  US-   4-  5      eUR                  (       d  U(       d  [        S5      eU(       a  M¼  [        U[        UR                  S9S9U R                  U'   Mæ     g ! [         a    S n NÁf = f)Nz9%s function requires a geometric argument in position %d.é   z$SRID is required for all geometries.©Úsrid)Úoutput_field)ÚsuperÚ__init__Úgeom_param_posÚsource_expressionsÚ
isinstancer   r   r	   Úvaluer   r   Ú	TypeErrorÚnamer   Ú
ValueError)ÚselfÚexpressionsÚextraÚposÚexprr   ÚgeomÚ	__class__s          €ÚRD:\diplom_project\venv\Lib\site-packages\django/contrib/gis/db/models/functions.pyr   ÚGeoFuncMixin.__init__   sù   ø€ Ü‰Ò˜+Ð/¨Ò/ð ×&Ô&ˆCØ×*Ñ*¨3Ñ/ˆDÜ˜d¤E×*Ñ*Ùð$Ø#×0Ñ0�ð —:‘:ˆDä˜t¤\×2Ñ2ÞÜ" <´×?Ñ?äØOØ—y‘y #¨¡'Ð*ñ+óð ð —9—9¦\Ü Ð!GÓHÐHß�<Ü/4Ø¤}¸$¿)¹)Ñ'Dñ0�×'Ñ'¨Ó,ò+ 'øô ó $Ø#’ð$ús   ÁDÄDÄDc                 ó.   • U R                   R                  $ ©N)r,   Ú__name__©r&   s    r-   r$   ÚGeoFuncMixin.name9   s   € à�~‰~×&Ñ&Ð&ó    c                 óN   • U R                   U R                  S      R                  $ ©Nr   )r    r   Úfieldr2   s    r-   Ú	geo_fieldÚGeoFuncMixin.geo_field=   s$   € à×&Ñ& t×':Ñ':¸1Ñ'=Ñ>×DÑDÐDr4   c                 ó”   >• U R                   c(  Uc%  UR                  R                  U R                  5      n[        TU ]  " X4SU0UD6$ )NÚfunction)r;   ÚopsÚspatial_function_namer$   r   Úas_sql)r&   ÚcompilerÚ
connectionr;   Úextra_contextr,   s        €r-   r>   ÚGeoFuncMixin.as_sqlA   sC   ø€ Ø�=‰=Ñ  XÑ%5Ø!—~‘~×;Ñ;¸D¿I¹IÓFˆHÜ‰wŠ~˜hÑW¸XÐWÈÑWÐWr4   c           
      ó4  >• [         T
U ]  " U0 UD6nU R                  (       d  U$ UR                  5       nU R                   HS  nXE   n[	        U[
        5      (       a  M  [        U R                  < SUS-   < S[        U5      R                  < S35      e   UR                  R                  nU R                  SS   HW  nUR                  U   nUR                  R                  n	X—:w  d  M/  [        X‡5      R                  " U0 UD6UR                  U'   MY     U$ )Nz/ function requires a GeometryField in position r   z, got Ú.)r   Úresolve_expressionr   Úget_source_fieldsr!   r   r#   r$   Útyper1   r8   r   r    r   r   )r&   ÚargsÚkwargsÚresÚsource_fieldsr)   r7   Ú	base_sridr*   Ú	expr_sridr,   s             €r-   rE   ÚGeoFuncMixin.resolve_expressionF   s  ø€ Ü‰gÒ(¨$Ð9°&Ñ9ˆØ×"×"ØˆJð ×-Ñ-Ó/ˆØ×&Ô&ˆCØ!Ñ&ˆEÜ˜e¤]×3Ó3Üð Ÿ	œ	Ø˜aœÜ˜U›×,Ô,ð	óð ñ 'ð —M‘M×&Ñ&ˆ	Ø×&Ñ& q rÓ*ˆCØ×)Ñ)¨#Ñ.ˆDØ×)Ñ)×.Ñ.ˆIØÕ%ä.7Øó/ç$Ñ$ð/%à&*ð/6à.4ñ/6�×&Ñ& sÓ+ñ +ð ˆ
r4   c                 ó~   • [        US5      (       d+  U(       a$  [        X5      (       d  [        SU< SU< S35      eU$ )NrE   zThe z) parameter has the wrong type: should be rD   )Úhasattrr!   r#   )r&   r"   Ú
param_nameÚcheck_typess       r-   Ú_handle_paramÚGeoFuncMixin._handle_paramd   s;   € Ü�uÐ2×3Ñ3Þ¤:¨e×#AÑ#AÝã!£;ð0óð ð ˆr4   © r0   ©Ú N)r1   Ú
__module__Ú__qualname__Ú__firstlineno__r;   r   r   Úpropertyr$   r   r8   r>   rE   rS   Ú__static_attributes__Ú__classcell__©r,   s   @r-   r   r      sQ   ø† Ø€HØ€Nõð: ñ'ó ð'ð ñEó ðE÷Xõ
÷<ò r4   r   c                   ó   • \ rS rSrSrg)ÚGeoFuncén   rU   N©r1   rX   rY   rZ   r\   rU   r4   r-   r`   r`   n   ó   † Úr4   r`   c                   ó$   • \ rS rSr\S 5       rSrg)ÚGeomOutputGeoFuncér   c                 ó<   • [        U R                  R                  S9$ )Nr   )r   r8   r   r2   s    r-   r   ÚGeomOutputGeoFunc.output_fields   s   € ä $§.¡.×"5Ñ"5Ñ6Ð6r4   rU   N)r1   rX   rY   rZ   r   r   r\   rU   r4   r-   re   re   r   s   † Øñ7ó ó7r4   re   c                   ó   • \ rS rSrSrS rSrg)ÚSQLiteDecimalToFloatMixinéx   z�
By default, Decimal values are converted to str by the SQLite backend, which
is not acceptable by the GIS functions expecting numeric values.
c           
      óN  • U R                  5       nUR                  UR                  5        Vs/ s HS  n[        US5      (       a=  [	        UR
                  [        5      (       a  [        [        UR
                  5      5      OUPMU     sn5        UR                  " X40 UD6$ s  snf )Nr"   )
ÚcopyÚset_source_expressionsÚget_source_expressionsrP   r!   r"   r   r   Úfloatr>   )r&   r?   r@   rA   rm   r*   s         r-   Ú	as_sqliteÚ#SQLiteDecimalToFloatMixin.as_sqlite~   s•   € Ø�y‰y‹{ˆØ×#Ñ#ð
 !×7Ñ7Ô9ó	ò :�Dô ˜4 ×)Ñ)¬j¸¿¹ÄW×.MÑ.Mô ”e˜DŸJ™JÓ'Ô(àòñ :ñ	ô	
ð �{Š{˜8ÑA°=ÑAÐAùòs   ®AB"rU   N)r1   rX   rY   rZ   Ú__doc__rq   r\   rU   r4   r-   rj   rj   x   s   † ñõ

Br4   rj   c                   ó   • \ rS rSrSrS rSrg)ÚOracleToleranceMixiné‹   gš™™™™™©?c                 ó  • [        U R                  U R                  R                  SU R                  5      S[
        5      5      nU R                  5       nUR                  / U R                  5       QUP5        UR                  " X40 UD6$ )NÚ	tolerance)
r   rS   r(   Úgetrx   ÚNUMERIC_TYPESrm   rn   ro   r>   )r&   r?   r@   rA   rx   Úclones         r-   Ú	as_oracleÚOracleToleranceMixin.as_oracleŽ   sy   € ÜØ×ÑØ—
‘
—‘˜{¨D¯N©NÓ;ØÜóó
ˆ	ð —	‘	“ˆØ×$Ñ$Ð%P t×'BÑ'BÓ'DÐ%PÀiÐ%PÔQØ�|Š|˜HÑB°MÑBÐBr4   rU   N)r1   rX   rY   rZ   rx   r|   r\   rU   r4   r-   ru   ru   ‹   s   † Ø€Iõ
Cr4   ru   c                   óB   ^ • \ rS rSrSr\S 5       rU 4S jrS rSr	U =r
$ )ÚAreaé›   r   c                 ó,   • [        U R                  5      $ r0   )r   r8   r2   s    r-   r   ÚArea.output_fieldž   s   € ä˜Ÿ™Ó(Ð(r4   c                 ó²   >• UR                   R                  (       d+  U R                  R                  U5      (       a  [	        S5      e[
        TU ]  " X40 UD6$ )Nz2Area on geodetic coordinate systems not supported.)ÚfeaturesÚsupports_area_geodeticr8   Úgeodeticr
   r   r>   ©r&   r?   r@   rA   r,   s       €r-   r>   ÚArea.as_sql¢   sS   ø€ Ø×"Ñ"×9×9¸d¿n¹n×>UÑ>UØ÷?
ñ ?
ô $ØDóð ô ‰wŠ~˜hÑD°mÑDÐDr4   c                 ó|   • U R                   R                  U5      (       a
  SUS'   SUS'   U R                  " X40 UD6$ )Nz+%(function)s(%(expressions)s, %(spheroid)d)ÚtemplateTÚspheroid)r8   r†   r>   )r&   r?   r@   rA   s       r-   rq   ÚArea.as_sqlite«   s?   € Ø�>‰>×"Ñ" :×.Ñ.Ø(UˆM˜*Ñ%Ø(,ˆM˜*Ñ%Ø�{Š{˜8ÑA°=ÑAÐAr4   rU   )r1   rX   rY   rZ   Úarityr   r   r>   rq   r\   r]   r^   s   @r-   r   r   ›   s,   ø† Ø€Eàñ)ó ð)õE÷Bð Br4   r   c                   ó*   • \ rS rSr\" 5       rSrSrSrg)ÚAzimuthé²   é   ©r   r   rU   N©	r1   rX   rY   rZ   r   r   r�   r   r\   rU   r4   r-   r�   r�   ²   ó   † Ù“<€LØ€EØƒNr4   r�   c                   óF   ^ • \ rS rSr\" 5       rSU 4S jjrU 4S jrSrU =r	$ )Ú	AsGeoJSONé¸   c                 óú   >• U/nUb&  UR                  U R                  US[        5      5        SnU(       a
  U(       a  SnOU(       a  SnO	U(       a  SnU(       a  UR                  U5        [        TU ]  " U0 UD6  g )NÚ	precisionr   é   r   r‘   ©ÚappendrS   Úintr   r   )	r&   Ú
expressionÚbboxÚcrsr™   r(   r'   Úoptionsr,   s	           €r-   r   ÚAsGeoJSON.__init__»   so   ø€ Ø!�lˆØÑ Ø×Ñ˜t×1Ñ1°)¸[Ì#ÓNÔOØˆÞ–4Ø‰GÞØ‰GÞØˆGÞØ×Ñ˜wÔ'Ü‰Ò˜+Ð/¨Ó/r4   c                 ó–   >• U R                  5       nU R                  5       nUR                  US S 5        [        [        U]  " X40 UD6$ )Nr   )ro   rm   rn   r   r–   r>   )r&   r?   r@   rA   r    r{   r,   s         €r-   r|   ÚAsGeoJSON.as_oracleÊ   sJ   ø€ Ø!×8Ñ8Ó:ÐØ—	‘	“ˆØ×$Ñ$Ð%7¸¸Ð%;Ô<Ü”Y Ò-¨hÑTÀmÑTÐTr4   rU   )FFé   )
r1   rX   rY   rZ   r   r   r   r|   r\   r]   r^   s   @r-   r–   r–   ¸   s   ø† Ù“;€L÷0÷Uó Ur4   r–   c                   óJ   ^ • \ rS rSrSr\" 5       rSU 4S jjrU 4S jrSr	U =r
$ )ÚAsGMLéÑ   )r   c                 ó~   >• X!/nUb&  UR                  U R                  US[        5      5        [        TU ]  " U0 UD6  g ©Nr™   r›   )r&   rž   Úversionr™   r(   r'   r,   s         €r-   r   ÚAsGML.__init__Õ   s@   ø€ ØÐ+ˆØÑ Ø×Ñ˜t×1Ñ1°)¸[Ì#ÓNÔOÜ‰Ò˜+Ð/¨Ó/r4   c                 óÐ   >• U R                  5       nUS   nU R                  5       nUR                  US   /5        UR                  S:X  a  SOSUS'   [        [
        U]  " X40 UD6$ )Nr   r   rš   zSDO_UTIL.TO_GML311GEOMETRYzSDO_UTIL.TO_GMLGEOMETRYr;   )ro   rm   rn   r"   r   r§   r>   )r&   r?   r@   rA   r    r«   r{   r,   s          €r-   r|   ÚAsGML.as_oracleÛ   sw   ø€ Ø!×8Ñ8Ó:ÐØ$ QÑ'ˆØ—	‘	“ˆØ×$Ñ$Ð&8¸Ñ&;Ð%<Ô=ð �}‰} Ó!ñ )à*ð 	�jÑ!ô
 ”U˜EÒ)¨(ÑPÀ-ÑPÐPr4   rU   )r‘   r¥   )r1   rX   rY   rZ   r   r   r   r   r|   r\   r]   r^   s   @r-   r§   r§   Ñ   s    ø† Ø€NÙ“;€L÷0÷
Qó 
Qr4   r§   c                   ó:   ^ • \ rS rSr\" 5       rSU 4S jjrSrU =r$ )ÚAsKMLéè   c                 ó~   >• U/nUb&  UR                  U R                  US[        5      5        [        TU ]  " U0 UD6  g rª   r›   ©r&   rž   r™   r(   r'   r,   s        €r-   r   ÚAsKML.__init__ë   ó?   ø€ Ø!�lˆØÑ Ø×Ñ˜t×1Ñ1°)¸[Ì#ÓNÔOÜ‰Ò˜+Ð/¨Ó/r4   rU   )r¥   ©	r1   rX   rY   rZ   r   r   r   r\   r]   r^   s   @r-   r°   r°   è   s   ø† Ù“;€L÷0õ 0r4   r°   c                   ó:   ^ • \ rS rSr\" 5       rSU 4S jjrSrU =r$ )ÚAsSVGéò   c                 ó–   >• [        US5      (       a  UO
[        U5      nUUU R                  US[        5      /n[        TU ]  " U0 UD6  g )NrE   r™   )rP   r�   rS   r   r   )r&   rž   Úrelativer™   r(   r'   r,   s         €r-   r   ÚAsSVG.__init__õ   sS   ø€ ä Ð*>×?Ñ?‰HÄSÈÃ]ð 	ð ØØ×Ñ˜y¨+´sÓ;ð
ˆô
 	‰Ò˜+Ð/¨Ó/r4   rU   )Fr¥   r¶   r^   s   @r-   r¸   r¸   ò   s   ø† Ù“;€L÷	0õ 	0r4   r¸   c                   ó&   • \ rS rSr\" 5       rSrSrg)ÚAsWKBi  r   rU   N)r1   rX   rY   rZ   r   r   r�   r\   rU   r4   r-   r¾   r¾     s   † Ù“=€LØƒEr4   r¾   c                   ó&   • \ rS rSr\" 5       rSrSrg)ÚAsWKTi  r   rU   N)r1   rX   rY   rZ   r   r   r�   r\   rU   r4   r-   rÀ   rÀ     s   † Ù“;€LØƒEr4   rÀ   c                   ó8   ^ • \ rS rSrSU 4S jjrU 4S jrSrU =r$ )ÚBoundingCirclei  c                 ó(   >• [         TU ]  " X40 UD6  g r0   )r   r   )r&   rž   Únum_segr(   r,   s       €r-   r   ÚBoundingCircle.__init__  s   ø€ Ü‰Ò˜Ñ6°Ó6r4   c                 ó”   >• U R                  5       nUR                  U R                  5       S   /5        [        [        U]  " X40 UD6$ r6   )rm   rn   ro   r   rÂ   r|   ©r&   r?   r@   rA   r{   r,   s        €r-   r|   ÚBoundingCircle.as_oracle  sL   ø€ Ø—	‘	“ˆØ×$Ñ$ d×&AÑ&AÓ&CÀAÑ&FÐ%GÔHÜ”^ UÒ5Øñ
Ø$1ñ
ð 	
r4   rU   )é0   )r1   rX   rY   rZ   r   r|   r\   r]   r^   s   @r-   rÂ   rÂ     s   ø† ÷7÷
ó 
r4   rÂ   c                   ó   • \ rS rSrSrSrg)ÚCentroidi  r   rU   N©r1   rX   rY   rZ   r�   r\   rU   r4   r-   rË   rË     ó   † ØƒEr4   rË   c                   ó   • \ rS rSrSrSrSrg)Ú
Differencei  r‘   r’   rU   N©r1   rX   rY   rZ   r�   r   r\   rU   r4   r-   rÏ   rÏ     ó   † Ø€EØƒNr4   rÏ   c                   ó*   • \ rS rSr\S 5       rS rSrg)ÚDistanceResultMixini   c                 ó,   • [        U R                  5      $ r0   )r   r8   r2   s    r-   r   Ú DistanceResultMixin.output_field!  s   € ä˜TŸ^™^Ó,Ð,r4   c                 ón   • U R                   R                  =(       a    U R                   R                  S:H  $ )Niæ  )r8   Ú	geographyr   r2   s    r-   Úsource_is_geographyÚ'DistanceResultMixin.source_is_geography%  s&   € Ø�~‰~×'Ñ'×G¨D¯N©N×,?Ñ,?À4Ñ,GÐGr4   rU   N)r1   rX   rY   rZ   r   r   rØ   r\   rU   r4   r-   rÓ   rÓ      s   † Øñ-ó ð-õHr4   rÓ   c                   óL   ^ • \ rS rSrSrSrSU 4S jjrU 4S jrU 4S jrSr	U =r
$ )	ÚDistancei)  r’   Nc                 ój   >• X/nUb  U R                  US[        5      U l        [        TU ]  " U0 UD6  g )Nr‹   )rS   Úboolr‹   r   r   )r&   Úexpr1Úexpr2r‹   r(   r'   r,   s         €r-   r   ÚDistance.__init__-  s8   ø€ Ø�nˆØÑØ ×.Ñ.¨x¸ÄTÓJˆDŒMÜ‰Ò˜+Ð/¨Ó/r4   c                 óÖ  >• U R                  5       nS nUR                  S   nU R                  5       nUR                  R                  U:w  a[  [        U[        5      (       a  XvR                  l        O5[        U[        UR                  R                  US95      UR                  S'   U(       d¥  U R                  R                  U5      (       a…  U R                  (       aY  UR                  R                  S5      nUR                  R                  [        U R                  R                  U5      5      5        OUR                  R                  S5      n[         ["        U]J  " X4SU0UD6$ )Nr   )r   r×   ÚDistanceSpheroidÚDistanceSpherer;   )rm   r    rØ   r   r×   r!   r   r   r   r   r8   r†   r‹   r<   r=   rœ   r   rÛ   r>   )	r&   r?   r@   rA   r{   r;   rß   r×   r,   s	           €r-   Úas_postgresqlÚDistance.as_postgresql3  s.  ø€ Ø—	‘	“ˆØˆØ×(Ñ(¨Ñ+ˆØ×,Ñ,Ó.ˆ	Ø×Ñ×'Ñ'¨9Ó4Ü˜%¤×'Ñ'Ø/8×"Ñ"Õ,ä.2ØÜ! u×'9Ñ'9×'>Ñ'>È)ÑTó/�×(Ñ(¨Ñ+ö
 ˜TŸ^™^×4Ñ4°Z×@Ñ@ð �}�}ð &Ÿ>™>×?Ñ?Ð@RÓS�à×(Ñ(×/Ñ/Ü˜$Ÿ.™.×1Ñ1°*Ó=Ó>õð &Ÿ>™>×?Ñ?Ð@PÓQ�Ü”X˜uÒ,Øñ
Ø+3ð
Ø7Dñ
ð 	
r4   c                 ó²   >• U R                   R                  U5      (       a&  SUS'   [        [        U R                  5      5      US'   [
        TU ]  " X40 UD6$ )Nz8COALESCE(%(function)s(%(expressions)s, %(spheroid)s), 0)rŠ   r‹   )r8   r†   r�   rÝ   r‹   r   r>   r‡   s       €r-   rq   ÚDistance.as_sqliteR  sY   ø€ Ø�>‰>×"Ñ" :×.Ñ.ð Kð Øñô ),¬D°·±Ó,?Ó(@ˆM˜*Ñ%Ü‰wŠ~˜hÑD°mÑDÐDr4   ©r‹   r0   )r1   rX   rY   rZ   r   r‹   r   rä   rq   r\   r]   r^   s   @r-   rÛ   rÛ   )  s#   ø† Ø€NØ€H÷0õ
÷>Eó Er4   rÛ   c                   ó   • \ rS rSrSrSrg)ÚEnvelopei\  r   rU   NrÌ   rU   r4   r-   rê   rê   \  rÍ   r4   rê   c                   ó   • \ rS rSrSrSrg)ÚForcePolygonCWi`  r   rU   NrÌ   rU   r4   r-   rì   rì   `  rÍ   r4   rì   c                   ó(   • \ rS rSr\" SS9rSrSrSrg)ÚFromWKBid  r   r   r   rU   N©	r1   rX   rY   rZ   r   r   r�   r   r\   rU   r4   r-   rî   rî   d  ó   † Ù  aÑ(€LØ€EØƒNr4   rî   c                   ó(   • \ rS rSr\" SS9rSrSrSrg)ÚFromWKTij  r   r   r   rU   Nrï   rU   r4   r-   rò   rò   j  rð   r4   rò   c                   ó@   ^ • \ rS rSr\" 5       rSU 4S jjrS rSrU =r	$ )ÚGeoHaship  c                 ó~   >• U/nUb&  UR                  U R                  US[        5      5        [        TU ]  " U0 UD6  g rª   r›   r³   s        €r-   r   ÚGeoHash.__init__s  rµ   r4   c                 óÂ   • U R                  5       n[        UR                  5      S:  a$  UR                  R                  [	        S5      5        UR
                  " X40 UD6$ )Nr‘   éd   )rm   Úlenr    rœ   r   r>   )r&   r?   r@   rA   r{   s        r-   Úas_mysqlÚGeoHash.as_mysqly  sL   € Ø—	‘	“ˆäˆu×'Ñ'Ó(¨1Ó,Ø×$Ñ$×+Ñ+¬E°#«JÔ7Ø�|Š|˜HÑB°MÑBÐBr4   rU   r0   )
r1   rX   rY   rZ   r   r   r   rú   r\   r]   r^   s   @r-   rô   rô   p  s   ø† Ù“;€L÷0÷Cð Cr4   rô   c                   ó2   • \ rS rSr\" 5       rSrSrSrSr	Sr
g)ÚGeometryDistancei�  r‘   rW   z <-> r’   rU   N)r1   rX   rY   rZ   r   r   r�   r;   Ú
arg_joinerr   r\   rU   r4   r-   rý   rý   �  s   † Ù“<€LØ€EØ€HØ€JØƒNr4   rý   c                   ó   • \ rS rSrSrSrSrg)ÚIntersectioni‰  r‘   r’   rU   NrÐ   rU   r4   r-   r   r   ‰  rÑ   r4   r   c                   ó&   • \ rS rSrSr\" 5       rSrg)ÚIsEmptyiŽ  ÚisemptyrU   N)r1   rX   rY   rZ   Úlookup_namer   r   r\   rU   r4   r-   r  r  Ž  s   † à€KÙ“>ƒLr4   r  c                   ó:   ^ • \ rS rSrSr\" 5       rU 4S jrSrU =r	$ )ÚIsValidi”  Úisvalidc                 ó8   >• [         TU ]  " X40 UD6u  pESU-  U4$ )Nz%CASE %s WHEN 'TRUE' THEN 1 ELSE 0 END)r   r|   )r&   r?   r@   rA   ÚsqlÚparamsr,   s         €r-   r|   ÚIsValid.as_oracle™  s)   ø€ Ü‘gÒ'¨ÑNÀÑN‰ˆØ6¸Ñ<¸fÐDÐDr4   rU   )
r1   rX   rY   rZ   r  r   r   r|   r\   r]   r^   s   @r-   r  r  ”  s   ø† à€KÙ“>€L÷Eó Er4   r  c                   óP   ^ • \ rS rSrSU 4S jjrU 4S jrU 4S jrU 4S jrSrU =r	$ )ÚLengthiž  c                 ó4   >• X l         [        TU ]  " U40 UD6  g r0   )r‹   r   r   )r&   rÞ   r‹   r(   r,   s       €r-   r   ÚLength.__init__Ÿ  s   ø€ Ø ŒÜ‰Ò˜Ñ( %Ó(r4   c                 ó²   >• U R                   R                  U5      (       a&  UR                  R                  (       d  [	        S5      e[
        TU ]  " X40 UD6$ )Nz6This backend doesn't support Length on geodetic fields)r8   r†   r„   Úsupports_length_geodeticr
   r   r>   r‡   s       €r-   r>   ÚLength.as_sql£  sM   ø€ à�N‰N×#Ñ# J×/Ñ/Ø×'Ñ'×@×@ä#ØHóð ô ‰wŠ~˜hÑD°mÑDÐDr4   c                 óH  >• U R                  5       nS nU R                  5       (       a/  UR                  R                  [	        U R
                  5      5        OµU R                  R                  U5      (       aY  UR                  R                  S5      nUR                  R                  [	        U R                  R                  U5      5      5        O<[        S U R                  5        5       5      nUS:”  a  UR                  R                  n[        [        U]>  " X4SU0UD6$ )NÚLengthSpheroidc              3   óJ   #   • U  H  o(       d  M  UR                   v •  M     g 7fr0   ©Údim©Ú.0Úfs     r-   Ú	<genexpr>Ú'Length.as_postgresql.<locals>.<genexpr>·  s   é € ÐCÒ%= Ã“e�a—e–eÒ%=ùs   ‚
#�#r‘   r;   )rm   rØ   r    rœ   r   r‹   r8   r†   r<   r=   ÚminrF   Úlength3dr   r  r>   )r&   r?   r@   rA   r{   r;   r  r,   s          €r-   rä   ÚLength.as_postgresql­  sç   ø€ Ø—	‘	“ˆØˆØ×#Ñ#×%Ñ%Ø×$Ñ$×+Ñ+¬E°$·-±-Ó,@ÕAØ�^‰^×$Ñ$ Z×0Ñ0à!—~‘~×;Ñ;Ð<LÓMˆHØ×$Ñ$×+Ñ+¬E°$·.±.×2IÑ2IÈ*Ó2UÓ,VÕWäÑC T×%;Ñ%;Ô%=ÓCÓCˆCØ�Q‹wØ%Ÿ>™>×2Ñ2�Ü”V˜UÒ*Øñ
Ø+3ð
Ø7Dñ
ð 	
r4   c                 ó˜   >• S nU R                   R                  U5      (       a  U R                  (       a  SOSn[        TU ]  " X4SU0UD6$ )NÚGeodesicLengthÚGreatCircleLengthr;   )r8   r†   r‹   r   r>   )r&   r?   r@   rA   r;   r,   s        €r-   rq   ÚLength.as_sqlite¾  sE   ø€ ØˆØ�>‰>×"Ñ" :×.Ñ.Ø+/¯=¯=Ñ'Ð>QˆHÜ‰wŠ~˜hÑW¸XÐWÈÑWÐWr4   rè   )T)
r1   rX   rY   rZ   r   r>   rä   rq   r\   r]   r^   s   @r-   r  r  ž  s   ø† ÷)õEõ
÷"Xó Xr4   r  c                   ó*   • \ rS rSr\" 5       rSrSrSrg)ÚLineLocatePointiÅ  r‘   r’   rU   Nr“   rU   r4   r-   r%  r%  Å  r”   r4   r%  c                   ó   • \ rS rSrSrg)Ú	MakeValidiË  rU   Nrb   rU   r4   r-   r'  r'  Ë  rc   r4   r'  c                   ó&   • \ rS rSr\" 5       rSrSrg)ÚMemSizeiÏ  r   rU   N©r1   rX   rY   rZ   r   r   r�   r\   rU   r4   r-   r)  r)  Ï  ó   † Ù“>€LØƒEr4   r)  c                   ó&   • \ rS rSr\" 5       rSrSrg)ÚNumGeometriesiÔ  r   rU   Nr*  rU   r4   r-   r-  r-  Ô  r+  r4   r-  c                   ó&   • \ rS rSr\" 5       rSrSrg)Ú	NumPointsiÙ  r   rU   Nr*  rU   r4   r-   r/  r/  Ù  r+  r4   r/  c                   ó8   ^ • \ rS rSrSrU 4S jrU 4S jrSrU =r$ )Ú	PerimeteriÞ  r   c                 ó&  >• S nU R                   R                  U5      (       a   U R                  5       (       d  [        S5      e[	        S U R                  5        5       5      nUS:”  a  UR                  R                  n[        TU ]$  " X4SU0UD6$ )Nz<ST_Perimeter cannot use a non-projected non-geography field.c              3   ó8   #   • U  H  oR                   v •  M     g 7fr0   r  r  s     r-   r  Ú*Perimeter.as_postgresql.<locals>.<genexpr>ç  s   é € Ð:Ò!9˜A—%–%Ò!9ùs   ‚r‘   r;   )
r8   r†   rØ   r
   r  rF   r<   Úperimeter3dr   r>   )r&   r?   r@   rA   r;   r  r,   s         €r-   rä   ÚPerimeter.as_postgresqlá  s…   ø€ ØˆØ�>‰>×"Ñ" :×.Ñ.°t×7OÑ7O×7QÑ7QÜ#ØNóð ô Ñ: ×!7Ñ!7Ô!9Ó:Ó:ˆØ�‹7Ø!—~‘~×1Ñ1ˆHÜ‰wŠ~˜hÑW¸XÐWÈÑWÐWr4   c                 ó|   >• U R                   R                  U5      (       a  [        S5      e[        TU ]  " X40 UD6$ )Nz+Perimeter cannot use a non-projected field.)r8   r†   r
   r   r>   r‡   s       €r-   rq   ÚPerimeter.as_sqliteì  s8   ø€ Ø�>‰>×"Ñ" :×.Ñ.Ü#Ð$QÓRÐRÜ‰wŠ~˜hÑD°mÑDÐDr4   rU   )	r1   rX   rY   rZ   r�   rä   rq   r\   r]   r^   s   @r-   r1  r1  Þ  s   ø† Ø€Eõ	X÷Eó Er4   r1  c                   ó   • \ rS rSrSrSrg)ÚPointOnSurfaceiò  r   rU   NrÌ   rU   r4   r-   r:  r:  ò  rÍ   r4   r:  c                   ó   • \ rS rSrSrSrg)ÚReverseiö  r   rU   NrÌ   rU   r4   r-   r<  r<  ö  rÍ   r4   r<  c                   ó,   ^ • \ rS rSrSU 4S jjrSrU =r$ )ÚScaleiú  c                 óÜ   >• UU R                  US[        5      U R                  US[        5      /nUS:w  a&  UR                  U R                  US[        5      5        [        TU ]  " U0 UD6  g )NÚxÚyç        Úz)rS   rz   rœ   r   r   )r&   rž   r@  rA  rC  r(   r'   r,   s          €r-   r   ÚScale.__init__û  si   ø€ àØ×Ñ˜q #¤}Ó5Ø×Ñ˜q #¤}Ó5ð
ˆð
 �‹8Ø×Ñ˜t×1Ñ1°!°S¼-ÓHÔIÜ‰Ò˜+Ð/¨Ó/r4   rU   )rB  ©r1   rX   rY   rZ   r   r\   r]   r^   s   @r-   r>  r>  ú  s   ø† ÷0õ 0r4   r>  c                   ó(   ^ • \ rS rSrU 4S jrSrU =r$ )Ú
SnapToGridi  c           
      ó4  >^ • [        U5      nU/nUS;   a8  UR                  U Vs/ s H  nT R                  US[        5      PM     sn5        O5US:X  a$  U/ U 4S jUSS   5       QU 4S jUSS  5       Q-  nO[	        S5      e[
        TT ]  " U0 UD6  g s  snf )	N)r   r‘   rW   é   c              3   óR   >#   • U  H  nTR                  US [        5      v •  M     g7frV   ©rS   rz   ©r  Úargr&   s     €r-   r  Ú&SnapToGrid.__init__.<locals>.<genexpr>  s#   øé € ÐQÊÀ�$×$Ñ$ S¨"¬m×<Ð<Êùó   ƒ$'r‘   c              3   óR   >#   • U  H  nTR                  US [        5      v •  M     g7frV   rK  rL  s     €r-   r  rN    s#   øé € ÐRÊ	À�$×$Ñ$ S¨"¬m×<Ð<Ê	ùrO  r   z2Must provide 1, 2, or 4 arguments to `SnapToGrid`.)rù   ÚextendrS   rz   r%   r   r   )r&   rž   rH   r(   Únargsr'   rM  r,   s   `      €r-   r   ÚSnapToGrid.__init__  s­   ù€ Ü�D“	ˆØ!�lˆØ�F‹?Ø×ÑÙGKÓLÂtÀ�×#Ñ# C¨¬]Ö;ÁtÑLõð �a‹Zàð ÜQÈÈQÈRÉÓQðäRÈÈQÈqÉ	ÓRðñ ‰Kô
 ÐQÓRÐRÜ‰Ò˜+Ð/¨Ó/ùò Ms   ¦!BrU   rE  r^   s   @r-   rG  rG    s   ø† ÷0ó 0r4   rG  c                   ó   • \ rS rSrSrSrSrg)ÚSymDifferencei  r‘   r’   rU   NrÐ   rU   r4   r-   rU  rU    rÑ   r4   rU  c                   ó(   ^ • \ rS rSrU 4S jrSrU =r$ )r   i  c                 ó|   >• UU R                  US[        5      /nSU;  a  [        US9US'   [        TU ]  " U0 UD6  g )Nr   r   r   )rS   r�   r   r   r   )r&   rž   r   r(   r'   r,   s        €r-   r   ÚTransform.__init__  sJ   ø€ àØ×Ñ˜t V¬SÓ1ð
ˆð  Ó&Ü$1°tÑ$<ˆE�.Ñ!Ü‰Ò˜+Ð/¨Ó/r4   rU   rE  r^   s   @r-   r   r     s   ø† ÷0ó 0r4   r   c                   ó(   ^ • \ rS rSrU 4S jrSrU =r$ )Ú	Translatei)  c                 óÈ   >• U R                  5       n[        U R                  5      S:  a$  UR                  R                  [	        S5      5        [
        [        U]  " X40 UD6$ )NrI  r   )rm   rù   r    rœ   r   r   rZ  rq   rÇ   s        €r-   rq   ÚTranslate.as_sqlite*  sP   ø€ Ø—	‘	“ˆÜˆt×&Ñ&Ó'¨!Ó+à×$Ñ$×+Ñ+¬E°!«HÔ5Ü”Y Ò0°ÑWÈÑWÐWr4   rU   )r1   rX   rY   rZ   rq   r\   r]   r^   s   @r-   rZ  rZ  )  s   ø† ÷Xó Xr4   rZ  c                   ó   • \ rS rSrSrSrSrg)ÚUnioni2  r‘   r’   rU   NrÐ   rU   r4   r-   r^  r^  2  rÑ   r4   r^  N)HÚdecimalr   Ú#django.contrib.gis.db.models.fieldsr   r   Ú django.contrib.gis.db.models.sqlr   r   Údjango.contrib.gis.geosr   Údjango.core.exceptionsr	   Ú	django.dbr
   Údjango.db.modelsr   r   r   r   r   r   r   r   Údjango.db.models.functionsr   Údjango.utils.functionalr   r�   rp   rz   r   r`   re   rj   ru   r   r�   r–   r§   r°   r¸   r¾   rÀ   rÂ   rË   rÏ   rÓ   rÛ   rê   rì   rî   rò   rô   rý   r   Úregister_lookupr  r  r  r%  r'  r)  r-  r/  r1  r:  r<  r>  rG  rU  rZ  r^  rU   r4   r-   Ú<module>ri     s¸  ðÝ ç Oß EÝ 0Ý -Ý '÷	÷ 	ó 	õ ,Ý 3à�e˜WÐ%€÷Sñ Sôl	ˆl˜Dô 	ô7˜ô 7÷Bñ B÷&Cñ Cô BÐ ô Bô.ˆgô ôU�ô Uô2QˆGô Qô.0ˆGô 0ô0ˆGô 0ôˆGô ô
ˆGô ô
	
Ð)Ð+<ô 	
ôÐ#Ð%6ô ôÐ%Ð'8ô ÷
Hñ Hô0EÐ"Ð$8¸'ô 0EôfÐ ô ôÐ&ô ôˆgô ôˆgô ôCˆgô Cô"�wô ôÐ'Ð):ô ð
 ×!Ñ!ô"ˆl˜Ió "ó "ð"ð
 ×!Ñ!ôEÐ" L°)ó Eó "ðEô$XÐ Ð"6¸ô $XôN�gô ô	Ð!ô 	ôˆgô ô
�Gô ô
�ô ô
EÐ#Ð%9¸7ô Eô(Ð)Ð+<ô ôˆgô ô	0Ð%Ð'8ô 	0ô0Ð*Ð,=ô 0ô&Ð(Ð*;ô ô
0Ð!ô 0ôX�ô XôÐ Ð"3õ r4   