【问题标题】:OGR2OGR PostgreSQL / PostGIS issue after enabling postgis extension on import在导入时启用 postgis 扩展后的 OGR2OGR PostgreSQL / PostGIS 问题
【发布时间】:2022-10-13 00:10:30
【问题描述】:

我正在使用 PostGIS 扩展版本 3.3 运行 psql (PostgreSQL) 14.5 (Homebrew)

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

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

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

选择区, ST_Contains('POINT (-##.## ##.## )', wkb_geometry) FROM table

返回:预期的布尔值

如果我在启用扩展后导入另一个 geojson 文件,我会在查询导入的新表时收到错误消息。

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

似乎它将列类型从 bytrea 更改为几何,并且不允许我更改或禁用扩展。我必须删除数据库并再次导入所有表,然后启用扩展。我究竟做错了什么?我的流程或查询有问题吗?如果我导入数据然后启用扩展,为什么它会起作用,但是所有新表都因查询而失败?

【问题讨论】:

  • 该错误是关于将 WKT 点转换为实际几何而不设置投影的结果 - 错误:包含:对混合 SRID 几何的操作(点,0)!=(多边形,4326)SQL 状态:XX000。我不知道为什么它会在任何一种情况下工作
  • 我将如何更新我的查询以更正此问题?

标签: gis postgis gdal ogr2ogr


【解决方案1】:

你应该使用类似的东西:

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

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

【讨论】:

    猜你喜欢
    • 2010-11-25
    • 2014-05-08
    • 1970-01-01
    • 2013-10-09
    • 2017-12-18
    • 1970-01-01
    • 1970-01-01
    • 2015-01-15
    • 2019-12-21
    相关资源
    最近更新 更多