Python psycopg2.InternalError:分析错误-无效几何体
我们正在尝试使用Python将多重字符串插入到PostgreSQL数据库中。我们正在使用Python psycopg2.InternalError:分析错误-无效几何体,python,postgresql,gis,postgis,psycopg2,Python,Postgresql,Gis,Postgis,Psycopg2,我们正在尝试使用Python将多重字符串插入到PostgreSQL数据库中。我们正在使用ppygis将坐标转换为实际几何图形。支架是要插入的坐标。名单的格式如下: x = float(stand[1].split(' ')[0]) y = float(stand[1].split(' ')[1]) coordinate = ppygis.Point(x, y) coordinate.srid = SRID_WGS84
ppygis
将坐标转换为实际几何图形。支架是要插入的坐标。名单的格式如下:
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))
插入数据库时,我们会遇到以下错误:
[nº of points in line, x1line1, y1line1, ..., nº of points in line, ...]
psycopg2.InternalError:分析错误-无效几何体
提示:“0101000020E61000645D”不要使用,因为您的几何图形已处于格式(ST_PointFromText要求几何图形处于格式)
只需更改您的声明,以便:
psycopg2.InternalError: parse error - invalid geometry
HINT: "0101000020e6100000645d" <-- parse error at position 22 within geometry
psycopg2.InternalError: parse error - invalid geometry
HINT: "0101000020e6100000645d" <-- parse error at position 22 within geometry
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))