【问题标题】:problem in st_contains postgis vie postgresst_contains postgis vie postgres 中的问题
【发布时间】:2019-03-12 05:30:37
【问题描述】:

我是 postgis 的新手,在 postgressql 中使用 st_contains 时遇到问题。 我有两张桌子: 一张具有多线串类型和 srid 3857 的表,如下所示:

'MULTILINESTRING((5422968.66785559 3677150.09505449,5422968.65492085 3677150.0886859,5422952.17411073 3677141.94577852,5422933.98180744 3677132.88239635,5422908.89206302 3677120.3831169,5422889.41793598 3677110.66168418,5422860.41342641 3677096.31330017,5422843.29303681 3677087.88278276),(5422968.4135149 3677150.59358815,5422980.01582934 3677156.57635076,5422990.22979481 3677161.61762274,5423006.30129137 3677169.56131558))'

和另一个表点类型和 srid 3857 像这样:

'点(48.6977500915527 31.3106079101563)'

我将 st_buffer 用于第一个多线字符串几何类型的表,并期望从表 2 中找到此缓冲区内的任何点

当我使用 st_contains 时不返回任何行,有什么问题?虽然两个 srid 都是 3857

select ST_X(P.geom) lng , ST_Y(P.geom) lat from public."Zone" A
inner join public."Points" P on ST_Contains(ST_Buffer(A.geom, 100), P.geom)

【问题讨论】:

    标签: postgis


    【解决方案1】:

    来自: https://postgis.net/docs/ST_X.html

    https://postgis.net/docs/ST_Y.html

    它表示 st_X 和 st_Y 中的 geom 必须是一个点,如果不可用,则为 NULL。

    你可以试试跑步吗

    select A.geom as lines, P.geom as point from public."Zone" A
    inner join public."Points" P on ST_Contains(ST_Buffer(A.geom, 100), P.geom);
    

    看看它是否返回任何东西?

    【讨论】:

    • 我的问题是另一件事:格式为 'POINT(48.6977500915527 31.3106079101563)' 的点不能在缓冲区内,因为多线字符串点格式就像 5422968.66785559 3677150.09505449
    • 虽然两个 srid 都是 3857 !!我怎么了??如果我需要更改点格式
    • 嘿哈米德,这看起来像一个单独的问题,如果你可以为它打开一个新的 SO 问题,或者搜索以前的类似案例,那将是最好的。如果我之前的回答解决了第一个问题,你能接受吗?您可以在此处参考您的下一个问题的网址,以便我跟进。谢谢!
    【解决方案2】:

    该点不在 3857 中,而是在 4326 中。您需要先将其转换为 3857

    select st_asText(st_transform(st_GeomFromText('POINT(48.6977500915527 31.3106079101563)',4326),3857));
                    st_astext
    ------------------------------------------
     POINT(5421008.74296974 3673153.53251071)
    

    话虽如此,使用st_dwithin 比使用st_buffer 更可靠。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-05-24
      • 2012-12-06
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多