Как исправить неполную геометрию полигона и вставить в MySQL? - PullRequest
0 голосов
/ 11 марта 2019

При запуске приведенного ниже кода я получаю ошибку (3037, «Недопустимые данные ГИС, предоставленные функции st_polyfromtext») . Я видел другой пост с похожей ошибкой, но не могу найти ответ для этой конкретной ситуации!

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 голосов
/ 13 марта 2019

Я отвечу на свой вопрос.

Я думал, что ошибка произошла из-за того, что значения многоугольника были неполными, но оказывается, что значения многоугольника не были неполными, так как значение многоугольника велико, Excel не показывает полные значения, следовательно, показывает только половинные значения.

Фактическая ошибка была, очевидно, в моем столбце геометрии, где файл Polygon имеет 3 значения X, Y и Z. Когда мне была дана команда "ST_PolyFromText", я предполагал, что он идентифицирует только значения X и Y и не может определить Z и, следовательно, выбрасывает ошибка «3037, неверные данные ГИС предоставлены функции ST_PolyFromText». С помощью этого стекового ответа я преобразовал свой столбец геометрии из 3D в 2D . Затем при использовании приведенного выше кода для вставки значений многоугольника он был успешно вставлен в базу данных.

...