示例#1
0
from urllib.parse import quote
from flask import Blueprint, jsonify, session, request, current_app, Response
from app.utils.code import ResponseCode
from app.utils.response import ResMsg
from app.utils.auth import login_required
from app.utils.util import route
from app.utils.tools import *
from app.utils.amapUtil import *
from app.models.ai_bus_model import AiBusModel
from app.algorithms.dbscan import clusterByDbscan, clusterByAdaptiveDbscan
from app.utils.logger import get_logger
"""
聚类模块api
"""
cluster = Blueprint("cluster", __name__, url_prefix='/cluster')
logger = get_logger(name="cluster", log_file="logs/logger.log")


@route(cluster, '/generateClusterPointsOld', methods=["POST"])
@login_required
def generateClusterPointsOld():
    """
    根据网点文件id生成聚类点
    """
    res = ResMsg()
    try:
        aiBusModel = AiBusModel()
        userInfo = session.get("userInfo")
        data = request.get_json()
        fileId = data["fileId"]
        epsRadius = float(data["epsRadius"])
示例#2
0
from aiohttp import web
from app.utils.logger import get_logger

logger = get_logger(__name__)


async def handle_400(request, msg=None):
    return web.json_response({
        'error': 'Bad request',
        'message': msg
    },
                             status=400)


async def handle_404(request, msg='Not found'):
    return web.json_response({'error': msg}, status=404)


async def handle_500(request, msg=None):
    return web.json_response({
        'error': 'Internal server error',
        'message': msg
    },
                             status=500)


def create_error_middleware(status_handlers):
    @web.middleware
    async def response_middleware(request, handler):
        try:
            response = await handler(request)
示例#3
0
import requests, json, time
from concurrent import futures
#from logger import get_logger
from app.utils.logger import get_logger
from app.utils.util import route

logger = get_logger(name="amapUtil", log_file="logs/logger.log")

key = "36fdeffd608643f8dec6d43b2d9b8ec8"


#mykey="c499537db92f1234f8390eeec13cfbe5"
# 驾车路径规划 36fdeffd608643f8dec6d43b2d9b8ec8
def get_route(origin, destination, routeType=0):
    if routeType == 0:
        api = f'http://restapi.amap.com/v3/direction/driving?origin={origin}&destination={destination}&output=JSON&key={key}'
    elif routeType == 1:
        api = f'http://restapi.amap.com/v4/direction/truck?origin={origin}&destination={destination}&size=3&nosteps=1&key={key}'
    elif routeType == 2:
        api = f'http://restapi.amap.com/v3/direction/walking?origin={origin}&destination={destination}&key={key}'
    r = requests.get(api, verify=False)
    r = r.text
    jsonData = json.loads(r)
    return jsonData


def get_route_distance_time(origin, destination, routeType=0):
    """
    # 该函数是调用高德API获取起始点到终点两个经纬度之间的距离以及时间(以米为单位)
    origin: 起始点经纬度
    destination: 终点经纬度
示例#4
0
import pymysql
import time
from dbutils.pooled_db import PooledDB
from app.utils.logger import get_logger

logger = get_logger(name="mysqlOperator", log_file="logs/logger.log")


class MysqlPool():
    def __init__(self, host, port, user, password, db):
        self.POOL = PooledDB(creator=pymysql,
                             maxconnections=10,
                             mincached=3,
                             maxcached=5,
                             blocking=True,
                             host=host,
                             port=port,
                             user=user,
                             password=password,
                             database=db,
                             charset='utf8')

    def connect(self):
        """
        启动连接
        """
        conn = self.POOL.connection()
        cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
        return conn, cursor

    def closeConn(self, conn, cursor):
示例#5
0
from flask import Blueprint, jsonify, session, request, current_app
from app.utils.code import ResponseCode
from app.utils.response import ResMsg
from app.utils.auth import login_required
from app.utils.util import route
from app.utils.tools import *
from app.utils.logger import get_logger
from app.utils.amapUtil import *
from app.utils.GPSConvertUtil import *
from app.models.ai_bus_model import AiBusModel
from app.algorithms.sa import *
"""
线路规划模块api
"""
routeplan = Blueprint("routeplan", __name__, url_prefix='/routeplan')
logger = get_logger(name="routeplan", log_file="logs/logger.log")


@route(routeplan, '/sortWayPoints', methods=["POST"])
def sortWayPoints():
    """
    利用模拟退火算法对途经点进行排序
    """
    res = ResMsg()
    try:
        data = request.get_json()
        sortPoints, minDist = tspSolution(data["destination"],
                                          data["waypoints"])
        res.update(code=ResponseCode.Success,
                   data={
                       "sortPoints": np.array(sortPoints)[:-1].tolist(),
示例#6
0
import os
import sys
parentdir = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.append(parentdir)
import itertools
from sklearn.cluster import DBSCAN
from numpy import *
import pandas as pd
from scipy.spatial.distance import pdist, squareform
from math import *
#from utils.GPSConvertUtil import getGPSDistance
from app.utils.GPSConvertUtil import getGPSDistance
from app.utils.amapUtil import *
from app.utils.logger import get_logger

logger = get_logger(name="dbscan", log_file="logs/logger.log")


def haversine(lonlat1, lonlat2):
    """
    # 该函数是为了通过经纬度计算两点之间的距离(以公里为单位)
    lonlat1: 经纬度1
    lonlat2: 经纬度2
    """
    lat1, lon1 = lonlat1
    lat2, lon2 = lonlat2
    lon1, lat1, lon2, lat2 = map(radians, [lon1, lat1, lon2, lat2])

    dlon = lon2 - lon1
    dlat = lat2 - lat1
    a = sin(dlat / 2)**2 + cos(lat1) * cos(lat2) * sin(dlon / 2)**2
示例#7
0
 def setUp(self):
     self.log = logger.get_logger('tests')