运行以下代码时,出现错误(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数据库?
答案 0 :(得分:0)
我将回答我自己的问题。
我以为错误是由于多边形值不完整引起的,但事实证明这是多边形值不完整的原因,因为多边形值很大excel不会显示完整值,因此只能显示一半值。>
实际的错误显然是在我的“几何”列中,其中“多边形”文件具有3个值X,Y和Z。当给定命令“ ST_PolyFromText”时,我假设它仅标识X和Y值,而无法标识Z,因此抛出错误“ 3037,无效的GIS数据提供给功能ST_PolyFromText”。借助此堆栈答案,我从3D to 2D转换了我的几何列。然后,当使用上述代码插入多边形值时,已成功将其插入数据库。