【发布时间】:2015-09-29 15:03:23
【问题描述】:
我正在使用postgis 的ST_LineLocatePoint 找出LineString 上与给定Point 的最近点,并使用ST_LineInterpolatePoint 从返回的浮点数中提取Point。
ST_LineLocatePoint查询:
SELECT ST_AsText(ST_LineInterpolatePoint(foo.the_line,
ST_LineLocatePoint(foo.the_line,
ST_GeomFromText('POINT(12.962315 77.584841)')))) AS g
FROM (
SELECT ST_GeomFromText('LINESTRING(12.96145 77.58408,12.96219 77.58447,12.96302 77.58489,
12.96316 77.58496,12.96348 77.58511)') AS the_line
) AS foo;
输出:
g
------------------------------------------
POINT(12.9624389808159 77.5845959902924)
这正是我通过的linestring。演示显示here。
但是当我使用ST_Contains检查这个point是否在linestring中时,它总是返回false,即使点在里面。
ST_Contains 查询:
SELECT ST_Contains(ST_GeomFromText('LINESTRING(12.96145 77.58408,12.96219 77.58447,
12.96302 77.58489, 12.96316 77.58496, 12.96348 77.58511)'),
ST_GeomFromText('POINT(12.9624389808159 77.5845959902924)'));
输出
st_contains
-------------
f
我没有找到我做错的地方。谁能帮我解决这个问题。
Postgresql : 9.4
postgis : 2.1
【问题讨论】:
标签: postgresql gis postgis