ó
    µRjÊ   ã                   ó¾   • 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
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   " S S\5      r " S S\\5      rg)z\
SQL functions reference lists:
https://www.gaia-gis.it/gaia-sins/spatialite-sql-4.3.0.html
é    )Úmodels)ÚBaseSpatialOperations)ÚSpatiaLiteAdapter)ÚSpatialOperator)ÚGEOSGeometryÚGEOSGeometryBase)Úwkb_r)ÚDistance)ÚImproperlyConfigured)ÚDatabaseOperations)Úcached_property)Úget_version_tuplec                   ó(   ^ • \ rS rSrU 4S jrSrU =r$ )ÚSpatialiteNullCheckOperatoré   c                 ó6   >• [         TU ]  XX45      u  pVSU-  U4$ )Nz%s > 0)ÚsuperÚas_sql)ÚselfÚ
connectionÚlookupÚtemplate_paramsÚ
sql_paramsÚsqlÚparamsÚ	__class__s          €Ú`D:\diplom_project\venv\Lib\site-packages\django/contrib/gis/db/backends/spatialite/operations.pyr   Ú"SpatialiteNullCheckOperator.as_sql   s$   ø€ Ü‘g‘n Z¸ÓU‰ˆØ˜#‰~˜vÐ%Ð%ó    © )Ú__name__Ú
__module__Ú__qualname__Ú__firstlineno__r   Ú__static_attributes__Ú__classcell__)r   s   @r   r   r      s   ø† ÷&ó &r   r   c                   óÚ  • \ rS rSrSrSr\rSrSr	Sr
SrSr0 S	\" S
S9_S\" SS9_S\" SS9_S\" SS9_S\" SS9_S\" SS9_S\" SS9_S\" SS9_S\" SS9_S\" SS9_S\" SS9_S \" S!S9_S"\" S#S9_S$\" S%S9_S&\" S
S9_S'\" S
S9_S(\" S)S9_r\R"                  4rS*rS+S,S-S.S/S0S1S2S3S4S5S6.r\S7 5       r\S8 5       rS9 rS: rS; rS< rS= rS> rS? rS@ rSA r SB r!SC r"SD r#SE r$SF r%SG r&SHr'gI)JÚSpatiaLiteOperationsé   Ú
spatialiteTÚCollectÚExtentÚMakeLineÚGUnionÚGeomFromTextÚequalsÚEquals)ÚfuncÚdisjointÚDisjointÚtouchesÚTouchesÚcrossesÚCrossesÚwithinÚWithinÚoverlapsÚOverlapsÚcontainsÚContainsÚ
intersectsÚ
IntersectsÚrelateÚRelateÚ	coveredbyÚ	CoveredByÚcoversÚCoversÚ	containedÚ	MbrWithinÚ
bbcontainsÚMbrContainsÚ
bboverlapsÚMbrOverlapsÚsame_asÚexactÚdwithinÚPtDistWithinzCAST (AsEWKB(%s) AS BLOB)ÚSt_AsBinaryÚST_ForceLHRÚST_GeomFromWKBÚST_GeomFromTextÚ	ST_LengthÚST_Line_Locate_PointÚ
ST_NPointsÚ
ST_ReverseÚScaleCoordsÚST_TranslateÚST_Union)ÚAsWKBÚForcePolygonCWÚFromWKBÚFromWKTÚLengthÚLineLocatePointÚ	NumPointsÚReverseÚScaleÚ	TranslateÚUnionc                 óF   • 1 SknU R                  5       (       d  U1 Sk-  nU$ )N>   ÚIsEmptyÚMemSizeÚBoundingCircleÚGeometryDistance>   ÚAzimuthÚGeoHashÚ	MakeValid)Úgeom_lib_version)r   Úunsupporteds     r   Úunsupported_functionsÚ*SpatiaLiteOperations.unsupported_functionsQ   s'   € âRˆØ×$Ñ$×&Ñ&ØÒ>Ñ>ˆKØÐr   c                 óÄ   •  U R                  5       SS nUS:  a  [        S5      eU$ ! [         a-  n[        SU R                  R                  S   < S35      UeSnAff = f)z0Determine the version of the SpatiaLite library.é   Nz1Cannot determine the SpatiaLite version for the "ÚNAMEzJ" database. Was the SpatiaLite initialization SQL loaded on this database?)é   é   r   z.GeoDjango supports SpatiaLite 4.3.0 and above.)Úspatialite_version_tupleÚ	Exceptionr   r   Úsettings_dict)r   ÚversionÚexcs      r   Úspatial_versionÚ$SpatiaLiteOperations.spatial_versionX   st   € ð	Ø×3Ñ3Ó5°a°bÐ9ˆGð �YÓÜ&Ð'WÓXÐXØˆøô ó 	Ý&ð —?‘?×0Ñ0°Ô8ð;óð ð	ûð	ús   ‚( ¨
A²(AÁAc                 ód   • Uc  g[        U5      R                  nUS   SS u  p4US   SS u  pVX4XV4$ )zF
Convert the polygon data received from SpatiaLite to min/max values.
Nr   é   )r   Úshell)r   Úboxr�   ÚxminÚyminÚxmaxÚymaxs          r   Úconvert_extentÚ#SpatiaLiteOperations.convert_extentg   sI   € ð ‰;ØÜ˜SÓ!×'Ñ'ˆØ˜1‘X˜b˜q�\‰
ˆØ˜1‘X˜b˜q�\‰
ˆØ˜DÐ'Ð'r   c                 ó   • g)zl
Return None because geometry columns are added via the
`AddGeometryColumn` stored procedure on SpatiaLite.
Nr    )r   Úfs     r   Úgeo_db_typeÚ SpatiaLiteOperations.geo_db_typer   s   € ð
 r   c                 óL  • U(       d  / $ US   n[        U[        5      (       a}  UR                  U R                  5      (       a   US:X  a  [	        S5      eUR
                  nU/$ [        U[        R                  " UR                  U R                  5      5      5      n U/$ UnU/$ )z]
Return the distance parameters for the given geometry field,
lookup value, and lookup type.
r   rO   zNOnly numeric values of degree units are allowed on geographic DWithin queries.)	Ú
isinstancer
   Úgeodeticr   Ú
ValueErrorÚmÚgetattrÚunit_attnameÚ
units_name)r   rŠ   ÚvalueÚlookup_typeÚ
dist_params        r   Úget_distanceÚ!SpatiaLiteOperations.get_distancey   s¦   € ö
 ØˆIØ�a‘ˆÜ�eœX×&Ñ&Ø�z‰z˜$Ÿ/™/×*Ñ*Ø )Ó+Ü$ð6óð ð #ŸW™W�
ð ˆ|Ðô %Øœ8×0Ò0°·±¸d¿o¹oÓ1NÓOó‘
ð
 ˆ|Ðð ˆJØˆ|Ðr   c                 óÔ   • U R                   R                  5       n UR                  SU-  5        UR                  5       nUR	                  5         US   $ ! UR	                  5         f = f)z‘
Helper routine for calling SpatiaLite functions and returning
their result.
Any error occurring in this method should be handled by the caller.
z	SELECT %sr   )r   Ú_cursorÚexecuteÚfetchoneÚclose)r   r2   ÚcursorÚrows       r   Ú_get_spatialite_funcÚ)SpatiaLiteOperations._get_spatialite_func‘   sW   € ð —‘×(Ñ(Ó*ˆð	Ø�N‰N˜;¨Ñ-Ô.Ø—/‘/Ó#ˆCà�L‰LŒNØ�1‰vˆøð �L‰L�Nús   œ$A ÁA'c                 ó$   • U R                  S5      $ )z:Return the version of GEOS used by SpatiaLite as a string.zgeos_version()©r¡   ©r   s    r   Úgeos_versionÚ!SpatiaLiteOperations.geos_versionŸ   s   € à×(Ñ(Ð)9Ó:Ð:r   c                 ó$   • U R                  S5      $ )z:Return the version of the PROJ library used by SpatiaLite.zproj4_version()r¤   r¥   s    r   Úproj_versionÚ!SpatiaLiteOperations.proj_version£   s   € à×(Ñ(Ð):Ó;Ð;r   c                 ó$   • U R                  S5      $ )z8Return the version of LWGEOM library used by SpatiaLite.zlwgeom_version()r¤   r¥   s    r   Úlwgeom_versionÚ#SpatiaLiteOperations.lwgeom_version§   ó   € à×(Ñ(Ð);Ó<Ð<r   c                 ó$   • U R                  S5      $ )z8Return the version of RTTOPO library used by SpatiaLite.zrttopo_version()r¤   r¥   s    r   Úrttopo_versionÚ#SpatiaLiteOperations.rttopo_version«   r®   r   c                 ób   • U R                   S:¼  a  U R                  5       $ U R                  5       $ )zN
Return the version of the version-dependant geom library used by
SpatiaLite.
)é   )r}   r°   r¬   r¥   s    r   ro   Ú%SpatiaLiteOperations.geom_lib_version¯   s0   € ð
 ×Ñ 4Ó'Ø×&Ñ&Ó(Ð(à×&Ñ&Ó(Ð(r   c                 ó$   • U R                  S5      $ )z2Return the SpatiaLite library version as a string.zspatialite_version()r¤   r¥   s    r   Úspatialite_versionÚ'SpatiaLiteOperations.spatialite_version¹   s   € à×(Ñ(Ð)?Ó@Ð@r   c                 ó@   • U R                  5       nU4[        U5      -   $ )zT
Return the SpatiaLite version as a tuple (version string, major,
minor, subminor).
)r¶   r   )r   r{   s     r   rx   Ú-SpatiaLiteOperations.spatialite_version_tuple½   s%   € ð
 ×)Ñ)Ó+ˆØˆzÔ-¨gÓ6Ñ6Ð6r   c                 ód   • UR                  5       S:X  a  SOUR                  5       n[        X5      $ )zZ
Return the spatial aggregate SQL template and function for the
given Aggregate instance.
ÚunionÚunionagg)Úlowerr’   )r   Úagg_names     r   Úspatial_aggregate_nameÚ+SpatiaLiteOperations.spatial_aggregate_nameÅ   s+   € ð
 "*§¡Ó!1°WÓ!<‘:À(Ç.Á.ÓBRˆÜ�tÓ&Ð&r   c                 ó   • SSK Jn  U$ )Nr   )ÚSpatialiteGeometryColumns)Ú0django.contrib.gis.db.backends.spatialite.modelsrÂ   )r   rÂ   s     r   Úgeometry_columnsÚ%SpatiaLiteOperations.geometry_columnsÎ   s   € õ	
ð )Ð(r   c                 ó   • SSK Jn  U$ )Nr   )ÚSpatialiteSpatialRefSys)rÃ   rÇ   )r   rÇ   s     r   Úspatial_ref_sysÚ$SpatiaLiteOperations.spatial_ref_sysÕ   s   € õ	
ð 'Ð&r   c                 ól   ^^• UR                   R                  m[        5       R                  mUU4S jnU$ )Nc                 ó2   >• U c  S $ [        T" U 5      T5      $ )N)r   )r•   Ú
expressionr   Ú
geom_classÚreads      €€r   Ú	converterÚ>SpatiaLiteOperations.get_geometry_converter.<locals>.converterà   s   ø€ Ø ™=�4ÐWÔ.>¹tÀE»{ÈJÓ.WÐWr   )Úoutput_fieldrÍ   r	   rÎ   )r   rÌ   rÏ   rÍ   rÎ   s      @@r   Úget_geometry_converterÚ+SpatiaLiteOperations.get_geometry_converterÜ   s-   ù€ Ø×,Ñ,×7Ñ7ˆ
Ü‹w�|‰|ˆö	Xð Ðr   r    N)(r!   r"   r#   r$   Únamer*   r   ÚAdapterÚcollectÚextentÚmakeliner¼   Ú	from_textr   r   Úgis_operatorsr   ÚExtent3DÚdisallowed_aggregatesÚselectÚfunction_namesr   rq   r}   r‡   r‹   r˜   r¡   r¦   r©   r¬   r°   ro   r¶   rx   r¿   rÄ   rÈ   rÒ   r%   r    r   r   r(   r(      s  † Ø€DØ€Jà€Gà€GØ€FØ€HØ€Hà€IðàÑ-°8Ñ<ðð 	Ñ/°ZÑ@ðð 	Ñ.°IÑ>ð	ð
 	Ñ.°IÑ>ðð 	Ñ-°8Ñ<ðð 	Ñ/°ZÑ@ðð 	Ñ/°ZÑ@ðð 	Ñ1°|ÑDðð 	Ñ-°8Ñ<ðð 	Ñ0°kÑBðð 	Ñ-°8Ñ<ðð 	‘_¨+Ñ6ðð  	‘o¨=Ñ9ð!ð$ 	‘o¨=Ñ9ð%ð( 	Ñ.°HÑ=ð)ð* 	Ñ,°(Ñ;ð+ð. 	‘?¨Ñ7ð/€Mð4 $Ÿ_™_Ð.Ðà(€Fð Ø'Ø#Ø$ØØ1Ø!ØØØ#Øñ€Nð ñó ðð ñó ðò	(òòò0ò;ò<ò=ò=ò)òAò7ò'ò)ò'õr   r(   N)Ú__doc__Údjango.contrib.gis.dbr   Ú.django.contrib.gis.db.backends.base.operationsr   Ú1django.contrib.gis.db.backends.spatialite.adapterr   Ú$django.contrib.gis.db.backends.utilsr   Ú django.contrib.gis.geos.geometryr   r   Ú%django.contrib.gis.geos.prototypes.ior	   Údjango.contrib.gis.measurer
   Údjango.core.exceptionsr   Ú%django.db.backends.sqlite3.operationsr   Údjango.utils.functionalr   Údjango.utils.versionr   r   r(   r    r   r   Ú<module>rë      sK   ðñõ )Ý PÝ OÝ @ß KÝ 7Ý /Ý 7Ý DÝ 3Ý 2ô& /ô &ôKÐ0Ð2Dõ Kr   