我正在努力解决以下问题:
在运行我的
蟒蛇3.8.10
带Jupyter笔记本的口译员(设置
A.
),我可以成功地连接到我的Postgis数据库,并在将数据写入geopandas.GeoDataFrame的同时查询数据。为此,我使用了以下片段:
from sqlalchemy import create_engine
import geopandas as gpd
print(gpd.__version__)
>>> 0.12.2
# Connection settings
db_connection_url = "postgresql://%s:%s@%s:%s/%s"%(settings.database.user, settings.database.pw,
settings.database.url, str(settings.database.port),
settings.database.table)
# Get data
data = gpd.GeoDataFrame.from_postgis(sql="select * from curvature", con=create_engine(db_connection_url), geom_col='geometry',
crs="EPSG:25833")
但是,当我从Notebook实现切换到本机Python文件(设置
B
),我收到以下错误消息:
文件“C:\Users\ABC\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kra8p\LocalCache\Local Packages\Pyton38\site Packages\shapely\io.py”,第325行,from _wkb
返回lib.from_wkb(几何体、无效句柄、**kwargs)
shapely.errors.GEOSException:解析异常:未知WKB类型41
其来源于:
文件“C:\Users\ABC\AppData\Local\Packages\PythonSoftwareFoundation.Python.3.8_qbz5n2kra8p\LocalCache\Local Packages\Pyton38\site Packages\geopandas\io\sql.py”,第87行,在_df_to_geodf中
df[geom_col]=geoms=geoms.apply(load_geom)
我通过比较确保使用相同的软件包
os.path
。它在两种设置中都指向:
'C:\\Program Files\\WindowsApps\\PythonSoftwareFoundation.Python.3.8_3.8.2800.0_x64__qbz5n2kfra8p0\\lib\\stat.py'
为了再次检查我的连接,我尝试查询连接的数据,并将其存储在pandas.DataFrame中的设置中
B
以下为:
import pandas as pd
df = pd.read_sql_query('''SELECT * from curvature''', create_engine(db_connection_url))
具有
print(df.head(2))
我可以按预期访问我的数据:
geometry id, name, type radius curvature
0 LINESTRING((47.XX 15.XX 130.0 130.0 XXX [0.0, ... [inf, ...
1 LINESTRING((47.XX XX... 46624.0 46624.0 XXX [0.0, ... [inf, ...
有没有人观察到同样的行为,并且已经解决了这个问题,因为我找不到任何关于WKB类型41的具体信息。
最好的
丹尼尔