如何更正不完整的多边形几何并插入MySQL?

时间:2019-03-11 08:57:54

标签: python mysql mysql-python

运行以下代码时,出现错误(3037,“向函数st_polyfromtext提供的无效GIS数据”)。我看到其他帖子也有类似的错误,但找不到这种特殊情况的答案!

conn = MySQLdb.connect(host="localhost", port=, user="", passwd="", db="db", charset="utf8")
cur = conn.cursor()
cur.execute("CREATE TABLE `db`.`table` ("
"`ID` INT NOT NULL AUTO_INCREMENT,"
"`X_Center` DOUBLE NULL,"
"`Y_Center` DOUBLE NULL,"
"`geometry` POLYGON NOT NULL,"
"PRIMARY KEY (`ID`));")

with open("file.csv",encoding="utf8") as csvfile:
     reader = csv.DictReader(csvfile, delimiter = ',')
     for row in reader:
       sql_statement = "INSERT INTO table(X_Center,Y_Center,geometry) VALUES (%s, %s, ST_PolyFromText(%s,0))"
       cur = conn.cursor()
       param = [(row['X_Center'], row['Y_Center'], row['geometry']))]
       cur.executemany(sql_statement,param)
       conn.escape_string(sql_statement)
       conn.commit()

多边形文件“ file.csv”具有完整值和不完整值的多边形值。

如何获取完整的多边形值并将其插入MySQL数据库?

table of the Polygon

1 个答案:

答案 0 :(得分:0)

我将回答我自己的问题。

我以为错误是由于多边形值不完整引起的,但事实证明这是多边形值不完整的原因,因为多边形值很大excel不会显示完整值,因此只能显示一半值。

实际的错误显然是在我的“几何”列中,其中“多边形”文件具有3个值X,Y和Z。当给定命令“ ST_PolyFromText”时,我假设它仅标识X和Y值,而无法标识Z,因此抛出错误“ 3037,无效的GIS数据提供给功能ST_PolyFromText”。借助此堆栈答案,我从3D to 2D转换了我的几何列。然后,当使用上述代码插入多边形值时,已成功将其插入数据库。