【问题标题】:Using PostgreSQL-PostGIS for coordinates使用 PostgreSQL-PostGIS 作为坐标
【发布时间】:2015-04-23 00:35:17
【问题描述】:

我正在尝试创建一个用于存储坐标的数据库

假设 X 有:纬度 20°20'20.00'',经度 20°20'20.00''E,范围为 1 英里。

Y 有:纬度 20°21'21.00 ,经度 20°21'21.00''

我想知道 Y 位置是否在 X 范围内。

我几天来一直在尝试找到一种方法来管理它;我遇到了四叉树,k-d 树,但我找不到在数据库中表示它的方法。

我终于偶然发现了 PostGIS,但我不知道如何创建和管理简单的经纬度交互。

【问题讨论】:

    标签: postgresql postgis


    【解决方案1】:

    你要做的第一件事是了解更多关于PostGIS的信息。

    安装postgis 扩展后,您可以将geography 类型用于您的目的:

    CREATE TABLE locations (
      id      serial PRIMARY KEY,
      loc     geography(POINT, 4326), -- See PostGIS docs for type modifiers
      rng     double precision, -- in miles, PostGIS uses km
      ...
    );
    
    CREATE INDEX locations_geo ON locations USING GIST (loc);
    

    您的 lat、long 对作为 geography 类型进入 loc 列; PostGIS 将使用该数据进行空间分析。您现在可以找到 X 点范围内的所有点(例如,id=12),如下所示:

    SELECT src.id AS src, src.rng, near.*
    FROM locations near
    JOIN locations src ON ST_DWithin(src.location, near.location, src.rng * 0.6215) -- miles to km
    WHERE src.id = 12;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-11-20
      • 1970-01-01
      • 1970-01-01
      • 2017-10-07
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多