HANA Spatial:按圆(中心和半径)查询

HANA Spatial: Query by Circle (Center and Radius)

使用SAP HANA Spatial,如何查询圆内包含的所有点?理想情况下,我想指定中心的纬度和经度,以及半径。

例如,select 'Berlin - Alexanderplatz' (52.5219184 13.4132147) 周围 10 公里半径内的所有地标。

PS。试用一下:

  1. https://account.hanatrial.ondemand.com 上注册一个帐户并登录。
  2. 创建数据库:在持久性 下打开数据库和系统。单击 New,输入 Database ID,select HANA MDC ()作为数据库系统,输入系统用户密码,然后保存。
  3. 打开开发工具:在您的数据库概览中,单击SAP HANA 基于Web 的开发Workbench 并使用SYSTEM 用户登录。在 Security 下,将应用程序权限 sap.hana.ide::Catalog 授予用户 SYSTEM。 (是的,我知道,不要在现实生活中这样做!)。打开 目录.
  4. 创建数据库table:点击按钮打开SQL控制台(Command-Alt-C),输入以下内容SQL 代码并单击 运行 (F8) 按钮。

    CREATE COLUMN TABLE "COORDINATES" ("LOCATION_NAME" VARCHAR(100), "COORDINATE" ST_POINT(0) CS_POINT);
    INSERT INTO "COORDINATES" VALUES ('Berlin - Brandenburger Tor', NEW ST_Point('POINT(52.5162746 13.377704)'));
    INSERT INTO "COORDINATES" VALUES ('Berlin - Gendarmenmarkt', NEW ST_Point('POINT(52.5137224 13.3926698)'));
    INSERT INTO "COORDINATES" VALUES ('Paris - Tour Eiffel', NEW ST_Point('POINT(48.8583701 2.2944813)'));
    
  5. 要按矩形查询,请触发以下语句。

    SELECT LOCATION_NAME, COORDINATE.ST_ASGEOJSON() FROM COORDINATES WHERE (NEW ST_Polygon('Polygon((52 13, 52 14, 53 14, 53 13, 52 13))').ST_Contains(COORDINATE)) = 1;
    
  6. 但是,记住,我需要一个圆圈!我怎样才能检索到相同的结果?

那你的圆心点到物体的距离是不是需要小于半径? 像

SELECT LOCATION_NAME, COORDINATE.ST_ASGEOJSON() 
FROM COORDINATES 
WHERE 
COORDINATE.ST_Distance( NEW ST_Point('POINT(52.5162746 13.377704)')) <= 2;

这里我只给出了勃兰登堡门的坐标和 2 的半径 - 但你应该得到图片。