Sql 在集群数据库上运行PostGIS命令
在两个节点上使用集群数据库(stado)中的Postgresql,我想测试此查询: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
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的位置进行近距离搜索