我正在尝试使用 SQLalchemy 将 Linestring、Polygon 和其他数据类型的 POSTGIS 值插入 postgres DB 并遇到以下错误:
这是使用 postgres db 命令创建的表的架构:
Table "public.test"
Column | Type | Modifiers
--------------+---------------------------+-----------
name | text |
wkb_geometry | geometry(LineString,4326) |
已经使用 DDL 语句创建了 postgres 表的模式。
我尝试使用 psycopg2 从 xml 插入 gml 值,并且使用以下方法成功插入:
wkb_geometry_value = """<gml:LineString xmlns:gml="http://www.opengis.net/gml" xmlns="urn:hera:xml:ns:DataTypes:2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:hera-drex="urn:hera:xml:ns:exchange:2.0" xmlns:hera-sgftad="urn:hera:xml:ns:sft:2.0" xmlns:hera-rifdt="urn:hera:xml:nsftypes:2.0" xmlns:wfs="http://www.opengis.org/wfs: " xmlns:gb="http://www.opengis.org/gb" xmlns:georss="http://www.opengis.netgeorss"><gml:posList>34.216 -210.54 34.46 -119.4 34.65 -139.84</gml:posList>\</gml:LineString>"""
sql = INSERT INTO test('name','wkb_geometry)VALUES('BOB', ST_SetSRID(ST_GeomFromGML('{}',4326)))
cursor.execute(sql)
输出--> 成功插入
但是当我使用下面的它失败使用 sqlalchemy 和 geoalchemy
import sqlalchemy
from sqlalchemy import create_engine
from sqlalchemy import Table, Column, Integer, String, MetaData, ForeignKey
from sqlalchemy import inspect
sql = """INSERT INTO test (name, wkb_geometry) VALUES ('{}', ST_GeomFromEWKT('{}'))""".format('BOB', wkb_geometry_value)
engine = create_engine('postgresql://username:password@localhost/dbname')
with engine.connect() as con:
rs = con.execute(sql)
输出==> InternalError: (psycopg2.InternalError) 解析错误 - 无效几何
如何使用 SQLalchemy 和 geoalchemy 将 GIS 数据类型插入 PostgresDB。
任何帮助将不胜感激谢谢!!!!我