【问题标题】:How to get points in bounding box by degrees for map如何按度获取地图边界框中的点
【发布时间】:2012-06-01 00:46:12
【问题描述】:

我对 BOX3D PostGIS 功能的工作有些担心。我试图在正方形 -158.721365889063 66.09275164148659、154.608712235937 52.56807548751039(度)中找到地方。但是这个where语句

    some_place.point && SetSRID('BOX3D(-158.721365889063 66.09275164148659,
    154.608712235937 52.56807548751039)'::box3d,4326)

返回两个可能方格中最大的一个位置。

当我改变角度顺序或使用“xmin ymin,xmax ymax”顺序时,我得到了相同的结果。

我也用过

     ST_Contains( SetSRID( ST_MakeBox2D( 
      ST_Point(143.930001298437,66.82980906973742), 
      ST_Point(-145.757498701563,51.37699768868392) ), 4326 ), some_place.point)

结果相同。

对于某些特定的角度点顺序,我怎样才能做到这一点?

【问题讨论】:

    标签: postgresql geospatial postgis


    【解决方案1】:

    Postgis 希望协调员如下:

    ST_MakeBox2D(<LL>, <UR>)
    

    LL 表示左下,UR 表示右上:

    所以对你来说,这意味着:

    some_place.point && SetSRID('BOX3D(154.608712235937  52.56807548751039,
    -158.721365889063 66.09275164148659)'::box3d,4326)
    

    ST_Contains( SetSRID( ST_MakeBox2D( 
      ST_Point(143.930001298437,51.37699768868392), 
      ST_Point(-145.757498701563,66.82980906973742) ), 4326 ), some_place.point)
    

    如果仍然得到错误的结果,请尝试将查询拆分为 180 / -179.9999999 度

    【讨论】:

    • 我试图改变坐标的顺序,正如我所描述的那样,但这对我没有帮助。我用 ST_Shift_Longitude 函数得到了更好的解决方案
    猜你喜欢
    • 1970-01-01
    • 2019-05-11
    • 2019-08-10
    • 2011-07-10
    • 1970-01-01
    • 2020-12-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多