从指定位置以特定半径的圆圈出现的返回点

时间:2014-12-15 04:44:57

标签: postgresql radius

我正在使用PostgreSQL。我希望从特定的地理编码点返回圆点。现在我有一个地理编码和圆的半径。从这个数据我可以计算出圆圈内的点数吗?  实际上我已经用PostGIS尝试了这个并且它工作得很好但是PostGIS只处理空间数据而且我有非空间数据。 在PostGIS中,我使用了以下查询:

select addressid,ST_AsText(geocode)geocode from aspatial_address as A where ST_Point_Inside_Circle(a.geocode,14.083333,19.583333,7)

我的表结构是:

create table maddress
{
 addressid bigint(30) primary key;
 addressline varchar2(40) not null;
 geocode varchar2(20) not null;
}

我希望返回距地理编码半径为7 km的圆圈中存在的点数(14.083333,19.583333)。

现在,提示我..我可以在PostgreSQL中做到这一点吗?这可能吗?他们在PostgreSQL中使用的几何函数是什么?请让我知道..

1 个答案:

答案 0 :(得分:0)

PostgreSQL有一些几何类型可以使用:

SELECT addressid, addressline, geocode
FROM maddress
WHERE geocode::point <@ circle '((14.083333,19.583333), 7)';

请注意,如果geocode生成带有非标准标点符号的xy,则应使用字符串函数将geocode解析为point的格式} type将接受。

请记住,如果地理编码和(14.083333,19.583333)处于长拉特坐标中,则无法使用PostgreSQL几何类型,因为单位不同(地理编码位置和圆心的球面长度为纬度)半径的平面距离(km)。在这种情况下,您必须使用PostGIS将长整笔坐标转换为某个平面坐标参照系。