我正在运行带有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
的信息。