当前位置: 首页 > 知识库问答 >
问题:

PostGIS:两个地理位置之间的ST_Intersects(),有时会返回错误的结果

席安康
2023-03-14

我在 PostGIS 中两个地理之间的相交有问题:我有一个带有地理列的表1,在 wgs84 中填充了多多边形(每行一个)。第二个表2还有一个地理列,其中填充了wgs84中的多多边形(每行一个)。然后我在两者之间做一个相交(选择 (..) 其中 ST_Intersects())。

在某些(非常罕见的)情况下,在我看来,它工作不正确,因为intersect返回false,而期望的是true:我有一个重新投影的tif,表示表1中一条线的地理位置,它覆盖了坦桑尼亚的一大片区域。我也有一个表2中一条线的重投影tif,它只覆盖了几公里的小区域。在ArcMap中,两者相交,小区域位于大区域的边缘,但PostGIS为ST _ Intsersects(geo 1,geog2)返回false。

当我通过转储器将table le1导出为shapefile时,地理的角点用直线连接,而不是用大圆的一部分连接。然后我得到了同样的结果:来自table le2的区域现在在来自table le1的区域之外。所以我猜,PostGis也使用这个简化的多边形进行计算,但据我所知,地理是指用大圆的一部分而不是直线进行计算?

我已经尝试了所有方法来确保两个表都充满了地理而不是几何,但是即使是对地理的明确投射也没有改变结果。

以前发生过这样的事情吗?或者你知道我做错了什么吗?表2也有一个几何图形和一个光栅列(共有3个空间列),这可能是个问题吗?

共有1个答案

庄智
2023-03-14

没有看到您的实际几何,我不能肯定地说,但几乎可以肯定的是,您误解了大圆线将如何界定您的区域,而PostGIS是正确的,特别是如果您正在处理边界附近的关系。使用Google Earth线串(不是多边形,那些不是使用大圆渲染的)来可视化示例有时会有助于澄清事情是如何可视化工作的。

 类似资料:
  • 我有http://www.codereye.com/2010/10/how-to-calculate-distance-between-2.html的这段代码,它根据两个IP地址对应的纬度和经度计算它们之间的大致物理距离。 lat和long是有符号值。但是,此代码有时会将dist返回为NaN。 我错过什么了吗?θ需要是绝对值吗? 更新:返回南的测试值:- lat1=-23.5477,lon1=-4

  • 问题内容: 我正在使用JMap Viwer在Java中使用OpenStreet Maps http://wiki.openstreetmap.org/wiki/JMapViewer我可以加载地图,一切正常,但是我不知道如何从纬度在两点之间绘制一条线和经度。 任何人都知道画这种线的功能吗? 谢谢。 问题答案: 该方法对于这个作品,但默默拒绝有少于三个顶点的多边形。对于两点之间的直线,只需重复最后一个

  • 问题内容: 假设我有一个像 然后在主要我有代码 显然,无论json格式不同,上述代码都会产生nil错误。Go中的json.Unmarshal()什么时候返回错误? 问题答案: 如果源中的值与目标中的值不对应,则JSON解码器不会报告错误。例如,如果源包含“状态”字段,这不是错误,但目标没有。 在其他情况下,Unmarshal函数确实会返回错误: 语法错误 类型不匹配 游乐场的例子

  • 本文向大家介绍HTML5地理位置中的PositionError对象中返回的错误代码,包括了HTML5地理位置中的PositionError对象中返回的错误代码的使用技巧和注意事项,需要的朋友参考一下 以下是错误代码: 码 不变 描述 0 未知错误 由于未知错误,该方法无法检索设备的位置。 1 没有权限 该方法无法检索设备的位置,因为该应用程序没有使用位置服务的权限。 2 POSITION_UNAV

  • 我在想办法,我在postgres 9.6上使用postgis 2.3 地理上的ST_intersects返回 false,尽管两个地理相交。为了调试,我使用几何尝试了相同的查询,两者相交。 有人能帮我解释一下吗? 示例: 我正在运行此查询: 我得到: 当我跑的时候: 我得到:

  • 我有两个位置的谷歌api链接 http://maps.googleapis.com/maps/api/directions/json? 我从两个位置得到响应(距离