コード例 #1
0
ファイル: Util.py プロジェクト: jresendiz27/sillaRodante
 def obtenerPuntos(self, request):
     punto1 = Punto()
     punto2 = Punto()
     puntosFiltrados = []
     puntosOrdenadosPorTipo = []
     try:
         # Se obtiene la ubicacion del cliente
         latitudOrigen = float(request.get('latitudOrigen'))
         longitudOrigen = float(request.get('longitudOrigen'))
         # se asigna la informacion al punto
         punto1.latitud = latitudOrigen
         punto1.longitud = longitudOrigen
         #Se obtiene el punto al que el cliente desea llegar
         latitudDestino = float(request.get('latitudDestino'))
         longitudDestino = float(request.get('longitudDestino'))
         #se asigna la informacion al punto
         punto2.latitud = latitudDestino
         punto2.longitud = longitudDestino
         #Se calculan las latitudes maximas y minimas llamando al metodo generado previamente
         rangos = self.obtenerAreaDeBusqueda(punto1, punto2)
         #Se ejecuta la consulta con los parametros obtenidos, primero se filtra la latitud
         puntosFiltro1 = PuntoClave.query(PuntoClave.latitud <= rangos['latitudMaxima'],
                                          PuntoClave.latitud >= rangos['latitudMinima']).fetch(100)
         #Se aplica un segundo filtro, limitantes de Datastore (NoSQL) por razones de indices.
         puntosFiltrados = filter(
             lambda punto: punto.longitud <= rangos['longitudMaxima'] and punto.longitud >= rangos['longitudMinima'],
             puntosFiltro1)
         puntosOrdenadosPorTipo = sorted(puntosFiltrados, key=attrgetter('tipo', 'valoracion'), reverse=True)
         return puntosOrdenadosPorTipo
     except Exception as e:
         logger.error("No se pudieron obtener los puntos")
         logger.error(e)
     return puntosOrdenadosPorTipo
コード例 #2
0
ファイル: Util.py プロジェクト: jresendiz27/sillaRodante
    def obtenerPuntosArea(self,request,radio):
        punto1 = Punto()
        puntosFiltrados = []
        try:
            # Se obtiene la ubicacion del cliente
            latitudOrigen = float(request.get('latitudOrigen'))
            longitudOrigen = float(request.get('longitudOrigen'))
            # se asigna la informacion al punto
            punto1.latitud = latitudOrigen
            punto1.longitud = longitudOrigen
            #Se ejecuta la consulta con los parametros obtenidos, primero se filtra la latitud
            latitudMaxima = latitudOrigen + radio
            longitudMaxima = longitudOrigen + radio
            #
            latitudMinima = latitudOrigen - radio
            longitudMinima = longitudOrigen - radio
            puntosFiltro1 = PuntoClave.query(PuntoClave.latitud <= latitudMaxima,
                                             PuntoClave.latitud >= latitudMinima).fetch(100)
            #Se aplica un segundo filtro, limitantes de Datastore (NoSQL) por razones de indices.
            puntosFiltrados = filter(
                lambda punto: punto.longitud <= longitudMaxima and punto.longitud >= longitudMinima,
                puntosFiltro1)

            return puntosFiltrados
        except Exception as e:
            logger.error("No se pudieron obtener los puntos")
            logger.error(e)
        return puntosFiltrados
コード例 #3
0
ファイル: Util.py プロジェクト: jresendiz27/sillaRodante
 def esPuntoSemejante(self, puntoAComparar):
     diferencia = 0.0001
     # Se generan las diferencias
     latitudMaxima = puntoAComparar.latitud + diferencia
     latitudMinima = puntoAComparar.latitud - diferencia
     longitudMaxima = puntoAComparar.longitud + diferencia
     longitudMinima = puntoAComparar.longitud - diferencia
     #Se hace la consulta 1
     listaPuntosFiltro1 = PuntoClave.query()
     listaPuntosFiltro2 = listaPuntosFiltro1.filter(PuntoClave.latitud <= latitudMaxima,
                                                    PuntoClave.latitud >= latitudMinima).fetch(100)
     #listaPuntosFiltro3 = listaPuntosFiltro2.filter(PuntoClave.longitud<=longitudMaxima,PuntoClave.longitud>=longitudMinima).fetch(1)
     listaPuntosFiltro3 = filter(lambda punto: punto.longitud >= longitudMaxima and punto.longitud <= longitudMinima,
                                 listaPuntosFiltro2)
     if len(listaPuntosFiltro3):
         return listaPuntosFiltro3[0]
     else:
         return False