Sql 在集群数据库上运行PostGIS命令

Sql 在集群数据库上运行PostGIS命令,sql,database,postgresql,postgis,stado,Sql,Database,Postgresql,Postgis,Stado,在两个节点上使用集群数据库(stado)中的Postgresql,我想测试此查询: select id,position,timestamp from table t1 WHERE id!=0 AND ST_Intersects ((Select ST_Buffer_Meters(ST_SetSRID(ST_MakePoint(61.4019,15.218205), 4326) ,1160006)),position) AND timestamp Between '2013-10-01' and

在两个节点上使用集群数据库(stado)中的Postgresql,我想测试此查询:

select id,position,timestamp from table t1 WHERE id!=0 AND ST_Intersects ((Select ST_Buffer_Meters(ST_SetSRID(ST_MakePoint(61.4019,15.218205), 4326) ,1160006)),position) AND timestamp Between '2013-10-01' and '2013-12-30';
当我在命令行或psql(在协调器上)中运行它时,我得到以下错误:

Encountered ")" at line 1, column 171.

而其他sql命令(insert、update、select…等)工作正常。此外,表中的几何列似乎没有问题,因此我认为安装PostGIS没有问题。

我在PostGIS手册中找不到函数
ST\u Buffer\u Meters()

不管怎样,我无法想象任何函数都需要子查询作为参数。请尝试:

SELECT id,position,timestamp
FROM   table t1
WHERE  id <> 0
AND    ST_Intersects(ST_Buffer_Meters(ST_SetSRID(
                     ST_MakePoint(61.4019, 15.218205), 4326), 1160006), position)
AND    timestamp BETWEEN '2013-10-01' AND '2013-12-30';
选择id、位置、时间戳
来自表t1
其中id 0
和ST_相交(ST_缓冲区)米(ST_设置网格(
ST_MakePoint(61.4019,15.218205),4326,1160006),位置)
时间戳介于“2013-10-01”和“2013-12-30”之间;

不要使用
时间戳
作为标识符。它是一个基本类型名称和一个。

我在PostGis手册中找不到函数
ST\u Buffer\u Meters()

不管怎样,我无法想象任何函数都需要子查询作为参数。请尝试:

SELECT id,position,timestamp
FROM   table t1
WHERE  id <> 0
AND    ST_Intersects(ST_Buffer_Meters(ST_SetSRID(
                     ST_MakePoint(61.4019, 15.218205), 4326), 1160006), position)
AND    timestamp BETWEEN '2013-10-01' AND '2013-12-30';
选择id、位置、时间戳
来自表t1
其中id 0
和ST_相交(ST_缓冲区)米(ST_设置网格(
ST_MakePoint(61.4019,15.218205),4326,1160006),位置)
时间戳介于“2013-10-01”和“2013-12-30”之间;

不要使用
时间戳
作为标识符。它是一个基本类型名称和一个。

我在PostGis手册中找不到函数
ST\u Buffer\u Meters()

不管怎样,我无法想象任何函数都需要子查询作为参数。请尝试:

SELECT id,position,timestamp
FROM   table t1
WHERE  id <> 0
AND    ST_Intersects(ST_Buffer_Meters(ST_SetSRID(
                     ST_MakePoint(61.4019, 15.218205), 4326), 1160006), position)
AND    timestamp BETWEEN '2013-10-01' AND '2013-12-30';
选择id、位置、时间戳
来自表t1
其中id 0
和ST_相交(ST_缓冲区)米(ST_设置网格(
ST_MakePoint(61.4019,15.218205),4326,1160006),位置)
时间戳介于“2013-10-01”和“2013-12-30”之间;

不要使用
时间戳
作为标识符。它是一个基本类型名称和一个。

我在PostGis手册中找不到函数
ST\u Buffer\u Meters()

不管怎样,我无法想象任何函数都需要子查询作为参数。请尝试:

SELECT id,position,timestamp
FROM   table t1
WHERE  id <> 0
AND    ST_Intersects(ST_Buffer_Meters(ST_SetSRID(
                     ST_MakePoint(61.4019, 15.218205), 4326), 1160006), position)
AND    timestamp BETWEEN '2013-10-01' AND '2013-12-30';
选择id、位置、时间戳
来自表t1
其中id 0
和ST_相交(ST_缓冲区)米(ST_设置网格(
ST_MakePoint(61.4019,15.218205),4326,1160006),位置)
时间戳介于“2013-10-01”和“2013-12-30”之间;

不要使用
时间戳
作为标识符。它是一个基本类型名称和一个。

一般来说,不要缓冲几何体来进行近似搜索。通过上述尝试,它仅适用于一个点几何图形,但在其他查询中,可能会缓冲表的所有几何图形,这将使查询变得昂贵,因为它需要创建新的几何图形,并且无法使用索引改用

具有
几何体
类型的ST_DWithin将使用与空间参考系统相同的距离单位。所以对于SRID=4326,这是以度为单位的,这在任何方面都没有帮助。但是,如果
position
geography
类型,则ST_DWithin将使用以米为单位的距离参数,这非常有用。所以WHERE过滤器看起来像:

WHERE id <> 0
  AND ST_DWithin(ST_MakePoint(61.4019, 15.218205)::geography, position, 1160006)
...
其中id为0
和ST_DWithin(ST_MakePoint(61.4019,15.218205)::地理位置,1160006)
...

这将对距离查询位置1160006 m或1160 km的位置进行近距离搜索(顺便说一句,如果你想的话,瑞典的位置是而不是)。如果<代码>位置<代码>是<代码>几何< /代码>类型,您可以考虑更改类型,或者执行CAST(<代码>位置:地理< /代码>)或该转换操作的索引。

< P>一般来说,不缓存几何结构来进行邻近搜索。通过上述尝试,它仅适用于一个点几何图形,但在其他查询中,可能会缓冲表的所有几何图形,这将使查询变得昂贵,因为它需要创建新的几何图形,并且无法使用索引改用

具有
几何体
类型的ST_DWithin将使用与空间参考系统相同的距离单位。所以对于SRID=4326,这是以度为单位的,这在任何方面都没有帮助。但是,如果
position
geography
类型,则ST_DWithin将使用以米为单位的距离参数,这非常有用。所以WHERE过滤器看起来像:

WHERE id <> 0
  AND ST_DWithin(ST_MakePoint(61.4019, 15.218205)::geography, position, 1160006)
...
其中id为0
和ST_DWithin(ST_MakePoint(61.4019,15.218205)::地理位置,1160006)
...

这将对距离查询位置1160006 m或1160 km的位置进行近距离搜索(顺便说一句,如果你想的话,瑞典的位置是而不是)。如果<代码>位置<代码>是<代码>几何< /代码>类型,您可以考虑更改类型,或者执行CAST(<代码>位置:地理< /代码>)或该转换操作的索引。

< P>一般来说,不缓存几何结构来进行邻近搜索。通过上述尝试,它仅适用于一个点几何图形,但在其他查询中,可能会缓冲表的所有几何图形,这将使查询变得昂贵,因为它需要创建新的几何图形,并且无法使用索引改用

具有
几何体
类型的ST_DWithin将使用与空间参考系统相同的距离单位。所以对于SRID=4326,这是以度为单位的,这在任何方面都没有帮助。但是,如果
position
geography
类型,则ST_DWithin将使用以米为单位的距离参数,这非常有用。所以WHERE过滤器看起来像:

WHERE id <> 0
  AND ST_DWithin(ST_MakePoint(61.4019, 15.218205)::geography, position, 1160006)
...
其中id为0
和ST_DWithin(ST_MakePoint(61.4019,15.218205)::地理位置,1160006)
...
这将对距离目标1160006 m或1160 km的位置进行近距离搜索