python-3.x - 修复几何没有 z 几何时的 z 列错误
问题描述
在循环操作中将 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 和 sqlALTER 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')
解决方案
我也在这里处理这个问题。就我而言,我的地理数据框中有空的几何图形。为了解决这个问题,我必须删除空的几何图形,这样做:
gdf = gdf[gdf.is_empty==False]
使用它我可以解决这个问题。
推荐阅读
- ionic-framework - 离子热点插件 getAllHotspotDevices
- python - 如何修复 sqlalchemy.exc.DataError: (psycopg2.errors.StringDataRightTruncation)?
- python - Keras Concatenate:“Nonetype”对象不可下标
- python - Python - 如何重塑两个向量并将其转换为元组?
- java - 如何有效地从 hdfs 读取 n 个文件夹并使用 Spark 在 hbase 中写回
- entity - Sulu:如何查询自定义实体类型?
- ios - iOS Swift如何从json响应中获取任何键的值
- python - 在 jupyter notebook 中使用 tensorflow 加载数据时出现警告
- networking - 带宽对 lorawan 范围有什么影响?
- r - 如何在 R 中实现拒绝抽样?