如何找到从MySQL返回的匹配坐标,坐标是二进制形式?

问题描述 投票:0回答:1

我有一个 MySQL 数据库,它以这种形式返回坐标 b'\x00\x00\x00\x00\x01\x01\x00\x00\x00\xacTPQ\xf5\x8b \xc0i\xac\xfd\x9d\ xed\xf9K@',我有数百个这样的坐标,我需要找到纬度值为 -95.712891 不正确的那个坐标

我尝试了多种解决方案,但在转换二进制返回后它们不断返回错误的值

我正在寻找一个解决方案,可以用来正确转换这些值或报告的错误纬度 -95.712891 的正确 mySQL 二进制表示形式

更新

由于纬度值不正确而无法工作的代码是

conn = pymysql.connect(
    host=endpoint,
    user=username,
    password=password,
    port=port,
    database=database
)

cursor = conn.cursor()

query = """
SELECT uuid, ERASEnabled, useractivity
FROM algoData
WHERE gender = %s
AND dob BETWEEN %s AND %s
AND ST_Distance_Sphere(location, ST_PointFromText(%s)) / 1609.34 <= %s
LIMIT %s;
"""

limit = 5000

parameters = (
    lookingFor,
    min_date_string,
    max_date_string,
    formattedCoordinatesForSQLUse,
    maxDistance,
    limit,
)

用于检索所有二进制位置点的代码是

conn = pymysql.connect(
        host=endpoint,
        user=username,
        password=password,
        port=port,
        database=database
    )

    cursor = conn.cursor()


    read_command = """
        SELECT *
        FROM algoData
    """

    cursor.execute(read_command)
    results = cursor.fetchall()
    
    uuids = [result[0] for result in results]
    locationPoints = [result[3] for result in results]
    locationPoints = [str(point) for point in locationPoints]

列描述为('location', 'point', 'NO', 'MUL', None, '')

非常感谢任何帮助

python mysql binary
1个回答
0
投票

我通过从数据库中单独获取 X 和 Y 坐标而不是以二进制形式获取整个位置来解决这个问题

使用 MySQL 的查询类似于

查询=“”” 从 your_table 中选择 ST_X(位置)、ST_Y(位置); ”“”

位置是您的点数据类型列

© www.soinside.com 2019 - 2024. All rights reserved.