
    NgC              
          d dl mZmZmZmZmZ d dlmZmZ de	de	de	de	de	f
dZ
dd
Zdee	e	f         deee	e	f                  deeee	e	f                           defdZdee	e	f         deee	e	f                  dedefdZd	S )    )asincosradianssinsqrt)ListTuplelon1lat1lon2lat2returnc                 :   t          t          | |||g          \  } }}}|| z
  }||z
  }t          |dz            dz  t          |          t          |          z  t          |dz            dz  z  z   }dt	          t          |                    z  }d|z  }|dz  S )a!  
    Calculate distance between two points on Earth using Haversine formula.

    Args:
        lon1: longitude of first point
        lat1: latitude of first point
        lon2: longitude of second point
        lat2: latitude of second point

    Returns:
        distance in meters
       i  i  )mapr   r   r   r   r   )	r
   r   r   r   dlondlatackms	            S/var/www/html/ai-engine/env/lib/python3.11/site-packages/qdrant_client/local/geo.pygeo_distancer      s     !4tT*BCCD$d$;D$;DD1HSYYT2S]]a5GGGA	DaMMA	B9    Nc                     ddd} ddd}ddd}t          | d         | d	         | d         | d	                   d
k     sJ t          | d         | d	         |d         |d	                   dk    sJ t          | d         | d	         |d         |d	                   dk     sJ t          | d         | d	         |d         |d	                   dk    sJ t          | d         | d	         |d         |d	                   dk     sJ d S )Ng鷯B@g(K@)lonlatg6[g{I@g(\*@g(\BJ@r   r   g      ?i $ i@' i j iP- )r   )moscowlondonberlins      r   test_geo_distancer       s   W--FW--FW--Fuve}fUmVE]SSVYYYYYuve}fUmVE]SSVaaaaauve}fUmVE]SSVaaaaauve}fUmVE]SSVaaaaauve}fUmVE]SSVaaaaaaar   pointexterior	interiorsc                     d}t          | |d          rPd}d}|t          |          k     r5|s3t          | ||         d          rd}|dz  }|t          |          k     r|3|sd}|S )NFTr      )in_ringlen)r!   r"   r#   inside_polyin_holeks         r   boolean_point_in_polygonr+   ,   s    
 Kuh%% #i..   uilE22 FA #i..     	Kr   ptringignore_boundaryc                 .   d}|d         d         |t          |          dz
           d         k    rH|d         d         |t          |          dz
           d         k    r|dt          |          dz
           }t          |          dz
  }t          dt          |                    D ]}||         d         }||         d         }||         d         }||         d         }	| d         ||z
  z  ||| d         z
  z  z   |	| d         |z
  z  z   dk    o5|| d         z
  || d         z
  z  dk    o|| d         z
  |	| d         z
  z  dk    }
|
r| c S || d         k    |	| d         k    k    o#| d         ||z
  | d         |z
  z  |	|z
  z  |z   k     }|r| }|}|S )NFr   r%   )r'   range)r,   r-   r.   	is_insidejixiyixjyjon_boundary	intersects               r   r&   r&   @   s    IAwqzT#d))a-(+++Q
d3t99q=>QRS>T0T0TAD		A%&D		AA1c$ii    !WQZ!WQZ!WQZ!WQZUb2grBqEz!22R2a52:5FF!K 3r!u*be,13r!u*be,1 	
  	'&&&&&2a5jb2a5j1 
qER"WA,R82== 	  	&%Ir   )r   N)mathr   r   r   r   r   typingr   r	   floatr   r    boolr+   r&    r   r   <module>r?      sM   . . . . . . . . . . . . . .        u E  e     4
b 
b 
b 
b5&' Due|,-. 
	   (eUl#'eUl(;#<OS	     r   