Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/typo3/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Postgresql POSTGIS选择选项_Postgresql_Postgis_Postgresql 9.1 - Fatal编程技术网

Postgresql POSTGIS选择选项

Postgresql POSTGIS选择选项,postgresql,postgis,postgresql-9.1,Postgresql,Postgis,Postgresql 9.1,我有一个可以使用的查询,但我想知道是否有一个更快、不那么迟钝的表单可以使用。我已经在几何体周围创建了一个边界框来缩小搜索范围,但是多次调用ST_Transforms似乎很尴尬。顺便说一句:这两条线(gg和gm)有相同的点 提前感谢, -马特 在中使用ST_Buffer非常昂贵,因为它需要在过滤之前缓冲所有几何图形。仅使用ST_DWithin即可获得相同效果 此外,行表模式是过分的。您只需要一个地理列,不需要将其转换为查询度量距离。从技术上讲,边界框应该存储在gist索引中,但如果出于某种目的需要

我有一个可以使用的查询,但我想知道是否有一个更快、不那么迟钝的表单可以使用。我已经在几何体周围创建了一个边界框来缩小搜索范围,但是多次调用ST_Transforms似乎很尴尬。顺便说一句:这两条线(gg和gm)有相同的点

提前感谢,
-马特


中使用
ST_Buffer
非常昂贵,因为它需要在过滤之前缓冲所有几何图形。仅使用
ST_DWithin
即可获得相同效果

此外,
表模式是过分的。您只需要一个地理列,不需要将其转换为查询度量距离。从技术上讲,边界框应该存储在gist索引中,但如果出于某种目的需要,可以将其提取到。不过,大多数时候你不需要在意,只要有要点索引就行

表重新定义为更简单的模式:

CREATE TABLE lines
(
  gid bigserial primary key,
  geog geography(LineString,4326)
);
CREATE INDEX ON lines USING gist (geog);
如果您试图查询兴趣点200米范围内的所有线,请将查询简化为:

SELECT l.*
FROM lines AS l
WHERE ST_DWithin(l.geog, ST_MakePoint(-71.44513306666667, 42.7368536), 200);
SELECT l.*
FROM lines AS l
WHERE ST_DWithin(l.geog, ST_MakePoint(-71.44513306666667, 42.7368536), 200);