[英]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.