1

Where can I find the source codes of spatial relationships functions such as ST_Overlaps?

4

1 回答 1

3

PostGIS 的 git 镜像是https://github.com/postgis/postgis。主源在 svn 中。如果您在 Google 上搜索“postgis source”并在 postgis 站点上找到相关页面,您就会知道这一点。

ST_Overlaps在 SQL 中声明为:

CREATE OR REPLACE FUNCTION ST_Overlaps(geom1 geometry, geom2 geometry)
    RETURNS boolean
    AS 'SELECT $1 && $2 AND _ST_Overlaps($1,$2)'

这又指:

CREATE OR REPLACE FUNCTION _ST_Overlaps(geom1 geometry, geom2 geometry)
        RETURNS boolean
        AS 'MODULE_PATHNAME','overlaps'
        LANGUAGE 'c' IMMUTABLE STRICT
        COST 100;

所以 C 实现是一个名为 的函数overlaps,它定义在postgis/lwgeom_geos.c(找到ctags -R用于构建源索引,然后vim -t overlaps,但您可以使用任何您喜欢的 C 搜索工具,或者只是 grep)。

于 2014-02-10T00:33:13.863 回答