如何获取地图边界框中的点数

时间:2012-05-25 12:21:27

标签: postgresql geospatial postgis

我对BOX3D PostGIS功能的工作有些担忧。我试图在广场找到地方-158.721365889063 66.09275164148659,154.608712235937 52.56807548751039(度)。但是这个陈述

    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)

具有相同的结果。

如何针对角度点的某些特定顺序执行此操作?

1 个答案:

答案 0 :(得分:1)

Postgis希望coordiants如下:

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度