代码之家  ›  专栏  ›  技术社区  ›  Kabrüggen

geopandas.GeoPandasDataFrame.from_postgis()引发“未知WKB类型41”

  •  0
  • Kabrüggen  · 技术社区  · 3 年前

    我正在努力解决以下问题:

    在运行我的 蟒蛇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的具体信息。

    最好的 丹尼尔

    0 回复  |  直到 3 年前