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

时间:2016-10-04 14:19:37

标签: sap spatial hana

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

例如,选择半径为10公里的“柏林 - 亚历山大广场”(52.5219184 13.4132147)周围的所有地标。

PS。尝试一下:

  1. https://account.hanatrial.ondemand.com注册帐户并登录。
  2. 创建数据库:打开数据库& 持久性下的系统。点击新建,输入数据库ID ,选择 HANA MDC(< trial>)作为数据库系统,输入 SYSTEM用户密码,然后保存。
  3. 打开开发工具:在数据库概述中,单击 SAP HANA基于Web的开发工作台,然后使用SYSTEM用户登录。在安全下,将应用程序权限 sap.hana.ide :: Catalog 授予用户 SYSTEM 。 (是的,我知道,不要在现实生活中这样做!)。打开目录
  4. 创建数据库表:单击打开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. 但是,记住,我需要一个圆圈!如何检索相同的结果?

1 个答案:

答案 0 :(得分:0)

圆圈中心点与物体之间的距离是否需要小于半径? 像

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

这里我只是将Brandenburger Tor的坐标和半径设置为2 - 但你应该得到图片。