psycopg2.InternalError:分析错误无效的几何体

2024-09-27 19:24:42 发布

您现在位置:Python中文网/ 问答频道 /正文

        x = float(stand[1].split(' ')[0])
        y = float(stand[1].split(' ')[1])
        coordinate = ppygis.Point(x, y)
        coordinate.srid = SRID_WGS84
        # Stand delimiters
        delimiter = []
        line = []

        for i in range(2, len(stand)):
            # The cycle will run through everythin in the stand list
            # But it will only actually do something when it finds a coordinate
            # counter
            if (len(stand[i].split(' ')) == 1):
                # Number of coordinates to process. Adjusted for indexation
                ncoords = int(stand[i]) + 1

                for c in range(i + 1, i + ncoords, 1):
                    x = float(stand[c].split(' ')[0])
                    y = float(stand[c].split(' ')[1])

                    point = ppygis.Point(x, y)
                    point.srid = SRID_WGS84
                    line.append(point)
                line = ppygis.LineString((line))
                delimiter.append(line)
                line = []
        delimiter = ppygis.MultiLineString((delimiter))
        cur.execute("""
                INSERT INTO taxi_stands(id, name, coordinates, delimiter_geom)
                VALUES(%s, %s, ST_PointFromText(%s), %s);
                """, (taxi_stands_list.index(stand), stand_name, coordinate,
                    delimiter))

我们尝试使用Python将多行字符串插入到PostgreSQL数据库中。我们使用ppygis将坐标转换为实际的几何图形。支架是要插入的坐标。列表格式如下:

^{pr2}$

当插入数据库时,会出现以下错误:

psycopg2.InternalError: parse error - invalid geometry
HINT:  "0101000020e6100000645d" <-- parse error at position 22 within geometry
CONTEXT:  SQL function "st_pointfromtext" statement 1

如果将ST_PointFromText更改为ST_GeomFromText,则错误为:

psycopg2.InternalError: parse error - invalid geometry
HINT:  "0101000020e6100000645d" <-- parse error at position 22 within geometry

ppygis python模块在文档中也严重缺乏,我们不知道哪个是错误。在

有什么帮助吗?谢谢。在


Tags: incoordinateforparse错误lineerrorfloat
1条回答
网友
1楼 · 发布于 2024-09-27 19:24:42

不要使用St_PointFromText(),因为您的几何图形已经是WKB格式的(ST_PointFromText需要WKT格式的几何图形)。在

只需更改您的陈述:

cur.execute("""
                INSERT INTO taxi_stands(id, name, coordinates, delimiter_geom)
                VALUES(%s, %s, %s, %s);
                """, (taxi_stands_list.index(stand), stand_name, coordinate,
                    delimiter))

相关问题 更多 >

    热门问题