繁体   English   中英

使用PostgreSQL-PostGIS进行坐标

[英]Using PostgreSQL-PostGIS for coordinates

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

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

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

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

我已经尝试了好几天来找到一种方法来解决这个问题。 我遇到了四叉树,kd树,但是找不到在数据库中表示它的方法。

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

您要做的第一件事是了解有关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);

您的经纬度对作为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;

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM