我正在使用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中使用的几何函数是什么?请让我知道..
答案 0 :(得分:0)
PostgreSQL有一些几何类型可以使用:
SELECT addressid, addressline, geocode
FROM maddress
WHERE geocode::point <@ circle '((14.083333,19.583333), 7)';
请注意,如果geocode
生成带有非标准标点符号的x
和y
,则应使用字符串函数将geocode
解析为point
的格式} type将接受。
请记住,如果地理编码和(14.083333,19.583333)
处于长拉特坐标中,则无法使用PostgreSQL几何类型,因为单位不同(地理编码位置和圆心的球面长度为纬度)半径的平面距离(km)。在这种情况下,您必须使用PostGIS将长整笔坐标转换为某个平面坐标参照系。