
    9i1                     X    S SK r S SKrS SKrS SKrS SKJr  S SKrS SK	J
r
   " S S5      rg)    N)	DataFrame)shapec                       \ rS rSrS rSS jr SS\S\S\4S jjr  SS\	S	\	S
\S\4S jjr
S r         SSSSSSSSSS\S\S\S\S\4S jjr         SSSSSSSSSS\S\S\S\S\4S jjrS rSrg) Ruteo   c                     Xl         SU l        g )Nz%https://gaia.inegi.org.mx/sakbe_v3.1/)_Ruteo__token_Ruteo__liga_base)selftokens     aC:\Users\julio\OneDrive\Documentos\Trabajo\Ideas Frescas\venv\Lib\site-packages\INEGIpy/_ruteo.py__init__Ruteo.__init__   s    B    c                    [         R                  " SR                  U5      US9n[        R                  " UR
                  5      S   n[        U[        5      (       a  U/n[        R                  R                  U5      nU(       aE  US   R                  S 5      US'   UR                  SSS	9n[        R                  " U5      nS
Ul        SUR"                  ;   a!  UR$                  R                  S 5      Ul        U$ !   [        S5      e= f)Nz'https://gaia.inegi.org.mx/sakbe_v3.1/{})paramsdatau-   No se encontraro resultados para la búsquedageojsonc                 @    [        [        R                  " U 5      5      $ Nr   jsonloadsxs    r   <lambda>*Ruteo.__obtener_consulta.<locals>.<lambda>   s    5A;Or   geometry   )axisz	EPSG:4326punto_casetac                 R    U (       a  [        [        R                  " U 5      5      $ U $ r   r   r   s    r   r   r      s    VWeDJJqM>R>^]^>^r   )requestspostformatr   r   text	Exception
isinstancedictpdr   	from_dictapplydropgpdGeoDataFramecrscolumnsr!   )r   funcionr   as_geodfreqr   dfs          r   __obtener_consultaRuteo.__obtener_consulta   s    mmELLWU^deJJsxx(0TdD!!4&4\\##D)	]001OPBzN+B!!"%B BFRZZ' oo334^_BO	 	Qi OPPs   #C> >Dbusquedacantidad
proyeccionc                 J    USUU R                   US.nU R                  SU5      $ )u  
Permite buscar destinos como localidades urbanas y rurales, así como los sitios de interés que pueden ser instalaciones de servicios como aeropuertos, puertos, servicios médicos, centros educativos de nivel superior, así como sitios atractivos para el turismo como playas, cascadas, zonas arqueológicas, museos, pueblos mágicos, y más.

Parámetros:
-----------
busqueda: str. Define el nombre o parte del destino que se desea encontrar. Se puede utilizar una coma para especificar la entidad federativa, p. e. “San Juan, Jalisco”.
cantidad: int. Número de destinos que se desea obtener. 
proyeccion: str. Define la proyección de los puntos resultantes. GRS80 para coordenadas geográficas y MERC para coordenadas Spherical Mercator. Por default será GRS80. 
-----------

Obtiene un GeoDataFrame con la información de los destinos registrados en la Red Nacional de Caminos. 

Para más información consultar: https://www.inegi.org.mx/servicios/Ruteo/Default.html#token

r   )buscartypenumkeyprojbuscadestinor	   _Ruteo__obtener_consulta)r   r8   r9   r:   r   s        r   BuscarDestinoRuteo.BuscarDestino!   s3    & $ #	%
 &&~v>>r   latlngescalac                 L    USUUU R                   US.nU R                  SU5      $ )uO  
Obtiene un GeoDataFrame con la información de la línea registrada en la Red Nacional de Caminos más cercana a una coordenada. 

Parámetros:
-----------
lat: float. Latitud de la coordenada.
lng: float. Longitud de la coordenada.
escala: int. Valor de la escala de visualización. Por default es 1,000,000.
proyeccion: str. Define la proyección de los puntos resultantes. GRS80 para coordenadas geográficas y MERC para coordenadas Spherical Mercator. Por default será GRS80. 
-----------

Para más información consultar: https://www.inegi.org.mx/servicios/Ruteo/Default.html#token

r   )rH   r=   r   yr?   r@   
buscalinearB   )r   rF   rG   rH   r:   r   s         r   BuscarLineaRuteo.BuscarLinea;   s6    & # $& &&|V<<r   c                    / SQnXk;  a  [        SR                  U5      5      eU
S:X  a  SR                  XS   5      n
OUn
SU R                  U	UUS.nUb!   US   US	   US
   S.nUR                  U5        Ub!   US   US	   US
   S.nUR                  U5        Ub/  [        U[        5      (       a  US   R                  S   US'   OX<S'   Ub/  [        U[        5      (       a  US   R                  S   US'   OXLS'   Ub  SR                  U5      US'   U R                  X5      $ !   [	        S5      e= f!   [	        S5      e= f)N)optimalibrecuotaz5El tipo de ruta deber ser alguno de los siguientes {}detalle_z{}{}r   r   )r=   r?   r@   veid_routing_netsourcetarget)id_isource_itarget_iu[   Se deben proporcionar los parámterios id_routing_net, source y target de la línea inicial)id_fsource_ftarget_fuY   Se deben proporcionar los parámterios id_routing_net, source y target de la línea finalid_destdest_idest_f,b)

ValueErrorr%   r	   updater'   r(   r   ilocjoinrC   )r   linea_iniciallinea_finaldestino_inicialdestino_finaltipo_vehiculorutaejes_excedentessaltar_lineasr:   r2   rutas_validasr   n_paramss                 r   __obtener_rutaRuteo.__obtener_rutaV   s   4$J7n7u7u  wD  8E  -F  'Fj FMM'7,K'g $$&	( $C%23C%DR_`hRi  xE  FN  xO  Ph' "A%01A%BP[\dPes~  @H  tI  Jh' &/955/ZcJdJiJijkJlvh7G%4"$-33V_H`HeHefgHhVH5E%2"$CHH]4KfSk&&w77! C)  %B  C  C A)$  A  As    D' ; D7 'D47ENrg   zDataFrame|dictrh   ri   zDataFrame|dict|str|intrj   rk   rl   rm   rn   c
                     U R                  XX4XVXxU	S5
      n[        R                  " UR                  S:H  /S/S5      US'   U$ )u  
Obtiene un GeoDataFrame con la ruta calculada por Sistema de Ruteo de México y la Red Nacional de Caminos. Se puede obtener rutas de línea-línea, destino-destino, línea-destino y destino-linea. 

Parámetros:
-----------
linea_inicial: DataFrame con las columnas id_routing_net, source y target de la línea inicial obtenido por la función BuscarLinea. También acepta un diccionario con la misma información.
linea_final: DataFrame con las columnas id_routing_net, source y target de la línea final obtenido por la función BuscarLinea. También acepta un diccionario con la misma información.
destino_inicial: DataFrame con la columna id_dest del destino inicial obtenido por la función BuscarDestino. También acepta el valor de id_dest en string o integer. 
destino_final: DataFrame con la columna id_dest del destino final obtenido por la función BuscarDestino. También acepta el valor de id_dest en string o integer. 
tipo_vehiculo: int. Clave con el tipo de vehículo. Por default es 0 que equivale a motocicleta mientras que 1 equivale a automóvil. Para consultar los demás valores se debe revisar la guía de desarrolladores en: https://www.inegi.org.mx/servicios/Ruteo/Default.html#token
ruta: str. ['optima' | 'libre' | 'cuota']. Tipo de ruta que se desea obtener. 
ejes_excedentes: int. Número de ejes excedentes del vehículo. Por default es 0 que equivale a ningíun eje excedente. Para consultar los demás valores se debe revisar la guía de desarrolladores en: https://www.inegi.org.mx/servicios/Ruteo/Default.html#token
saltar_lineas: list. Lista con los id_routing_net de las líneas por las cuales la ruta no pasará por algún motivo. Por default es None.
proyeccion: str. Define la proyección de los puntos resultantes. GRS80 para coordenadas geográficas y MERC para coordenadas Spherical Mercator. Por default será GRS80. 
-----------

Para más información consultar: https://www.inegi.org.mx/servicios/Ruteo/Default.html#token

 fFTpeaje)_Ruteo__obtener_rutanpselectrv   
r   rg   rh   ri   rj   rk   rl   rm   rn   r:   s
             r   CalcularRutaRuteo.CalcularRutaw   sZ    < ""=_l  uD  U_  ac  d		4::#4"5ugtDWr   c
                 .    U R                  XX4XVXxU	S5
      $ )u  
Obtiene un GeoDataFrame con los detalles de la ruta calculada por Sistema de Ruteo de México y la Red Nacional de Caminos. Se puede obtener rutas de línea-línea, destino-destino, línea-destino y destino-linea. 

Parámetros:
-----------
linea_inicial: DataFrame con las columnas id_routing_net, source y target de la línea inicial obtenido por la función BuscarLinea. También acepta un diccionario con la misma información.
linea_final: DataFrame con las columnas id_routing_net, source y target de la línea final obtenido por la función BuscarLinea. También acepta un diccionario con la misma información.
destino_inicial: DataFrame con la columna id_dest del destino inicial obtenido por la función BuscarDestino. También acepta el valor de id_dest en string o integer. 
destino_final: DataFrame con la columna id_dest del destino final obtenido por la función BuscarDestino. También acepta el valor de id_dest en string o integer. 
tipo_vehiculo: int. Clave con el tipo de vehículo. Por default es 0 que equivale a motocicleta mientras que 1 equivale a automóvil. Para consultar los demás valores se debe revisar la guía de desarrolladores en: https://www.inegi.org.mx/servicios/Ruteo/Default.html#token
ruta: str. ['optima' | 'libre' | 'cuota']. Tipo de ruta que se desea obtener. 
ejes_excedentes: int. Número de ejes excedentes del vehículo. Por default es 0 que equivale a ningíun eje excedente. Para consultar los demás valores se debe revisar la guía de desarrolladores en: https://www.inegi.org.mx/servicios/Ruteo/Default.html#token
saltar_lineas: list. Lista con los id_routing_net de las líneas por las cuales la ruta no pasará por algún motivo. Por default es None.
proyeccion: str. Define la proyección de los puntos resultantes. GRS80 para coordenadas geográficas y MERC para coordenadas Spherical Mercator. Por default será GRS80. 
-----------

Para más información consultar: https://www.inegi.org.mx/servicios/Ruteo/Default.html#token

rR   )rw   rz   s
             r   DetalleRutaRuteo.DetalleRuta   s5    : ""=_l  uD  U_  ak  l  	lr   c                 B    U R                   SS.nU R                  SUSS9$ )uY  
Regresa un DataFrame con los 4 tipos de combustibles más comunes y su costo promedio que se consultan el primer día hábil de cada semana en la página web de la Comisión Reguladora de Energía del Gobierno Federal: https://www.gob.mx/cre

Nota: el dato que provee esta API solo es una referencia en función del precio promedio nacional excluyendo las 7 regiones sobre la frontera. También lo que refiere al gas LP el precio es un promedio ponderado que publica la Comisión Reguladora de Energía.

Para más información consultar: https://www.inegi.org.mx/servicios/Ruteo/Default.html#token

r   )r?   r=   combustibleF)r3   rB   )r   r   s     r   CombustiblesRuteo.Combustibles   s-     "$&&}f&OOr   )__liga_base__token)T)GRS80)i@B r   )	NNNNr   rO   r   Nr   )__name__
__module____qualname____firstlineno__r   rC   strintrD   floatrL   rw   listr{   r~   r   __static_attributes__ r   r   r   r      sj   C$ )0? #? #? #&?: #,&-	===  = !$	=68D 8<59AE?C*+!),-+/'.!$4!"2! '?! %=	!
 %(! ! '*! %)! "%!H 7;48@D>B)* (+,*.&-l#3l!1l &>l $<	l
 $'l l &)l $(l !$l@Pr   r   )r#   r   numpyrx   pandasr*   r   	geopandasr.   shapely.geometryr   r   r   r   r   <module>r      s(          "xP xPr   