当几何没有z几何时修复z列错误

时间:2020-10-14 13:15:42

标签: python-3.x sqlalchemy postgis psycopg2 geopandas

在循环操作中将Geopandas数据帧写入PostGIS时,出现以下错误(完整的代码包含在最后)

psycopg2.errors.InvalidParameterValue: Column has Z dimension but geometry does not

相关代码: gdf.to_postgis(name=tbl, con=engine, schema=gdb_name, if_exists='replace')

如何从列中删除z尺寸?一些逻辑,例如:

if geom has no z dimension and column has z dimension:
  alter column remove z dimension

我宁愿留在sqlalchemy中,而不是使用psycopg2和sql ALTER COLUMN语法。

gdf为空时,我已经出门了。

完整代码:

from sqlalchemy import *
from sqlalchemy.schema import CreateSchema

if not engine.dialect.has_schema(engine, gdb_name):
    engine.execute(CreateSchema(gdb_name))

# loop through each layer in the layerlist
for layer in layerlist:
    # reads all layers into a dictionary
    layers[layer] = gpd.read_file(COPA_gdb, driver="FileGDB", layer=layer)
    gdf = layers[layer]
    if gdf.empty:
        print(layer + ' dataFrame is empty! Not imported')
    else:
        tbl = layer.lower()
        print(tbl)
        gdf.to_postgis(name=tbl, con=engine, schema=gdb_name, if_exists='replace')

1 个答案:

答案 0 :(得分:0)

我也在这里处理这个问题。就我而言,我的地理数据框内有空的几何图形。为了修复它,我必须删除空的几何图形,这样做:

gdf = gdf[gdf.is_empty==False]

使用这个我可以解决这个问题。

相关问题