1

我正在使用 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 公里的圆中存在的点(14.083333,19.583333)。

现在,提示我..我如何在 PostgreSQL 中做到这一点?这里可以吗?它们在 PostgreSQL 中是否使用了任何几何函数?请告诉我..

4

1 回答 1

0

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

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

请注意,如果geocode产生xy使用非标准标点符号,则应使用字符串函数解析geocode为该point类型将接受的格式。

请记住,如果地理编码和(14.083333,19.583333)在长纬度坐标中,则不能使用 PostgreSQL 几何类型,因为单位不同(地理编码位置和圆心的球面长纬度与半径的平面距离(公里)) . 在这种情况下,您必须使用 PostGIS 将经纬度坐标转换为某个平面坐标参考系。

于 2014-12-15T07:01:59.027 回答