OGR2OGR PostgreSQL/PostGIS在导入时启用PostGIS扩展后出现问题



我正在运行带有PostGIS扩展版本3.3 的psql(PostgreSQL(14.5(Homebrew(

我使用gdal的ogr2ogr导入geojson文件。

ogr2ogr-f";PostgreSQL";PG:";dbname=test4 user=myuser"myfile.geojson";

如果我将所有文件导入到一个新的数据库中,并在所有导入后启用postgis扩展,那么我的查询将按需工作。

SELECT地区,ST_Contains('POINT(-###.###.##(',wkb_geometry(FROM表

返回:按预期布尔值

如果在启用扩展后导入另一个geojson文件,则在查询导入的新表时会出现错误。

错误:包含:对混合SRID几何图形的操作(点,0(!=(多边形,4326(SQL状态:XX000

它似乎将列类型从bytrea更改为geometry,并且不允许我更改或禁用扩展名。我必须删除数据库并再次导入所有表,然后启用扩展。我做错了什么?我的流程或查询中是否存在问题?如果我导入数据,然后启用扩展,但所有新表都无法通过查询,为什么它会起作用?

您应该使用以下内容

SELECT district, 
ST_Contains(ST_GeomFromText('POINT (-##.## ##.## )',4326), wkb_geometry) 
FROM table

这使PostGIS意识到您的WKT是在lon、lat坐标中的,因此它可以安全地将它们与您的几何体列进行比较(这将是相同的,因为这是GeoJSON规范所包含的内容(。其他数据源可能处于不同的预测中,在这种情况下,您可能也需要阅读有关ST_TRANSFORM的信息。

最新更新