HANA Spatial:按圆(中心和半径)查询
HANA Spatial: Query by Circle (Center and Radius)
使用SAP HANA Spatial,如何查询圆内包含的所有点?理想情况下,我想指定中心的纬度和经度,以及半径。
例如,select 'Berlin - Alexanderplatz' (52.5219184 13.4132147) 周围 10 公里半径内的所有地标。
PS。试用一下:
- 在 https://account.hanatrial.ondemand.com 上注册一个帐户并登录。
- 创建数据库:在持久性 下打开数据库和系统。单击 New,输入 Database ID,select HANA MDC (
) 作为数据库系统,输入系统用户密码,然后保存。
- 打开开发工具:在您的数据库概览中,单击SAP HANA 基于Web 的开发Workbench 并使用SYSTEM 用户登录。在 Security 下,将应用程序权限 sap.hana.ide::Catalog 授予用户 SYSTEM。 (是的,我知道,不要在现实生活中这样做!)。打开 目录.
创建数据库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)'));
要按矩形查询,请触发以下语句。
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;
- 但是,记住,我需要一个圆圈!我怎样才能检索到相同的结果?
那你的圆心点到物体的距离是不是需要小于半径?
像
SELECT LOCATION_NAME, COORDINATE.ST_ASGEOJSON()
FROM COORDINATES
WHERE
COORDINATE.ST_Distance( NEW ST_Point('POINT(52.5162746 13.377704)')) <= 2;
这里我只给出了勃兰登堡门的坐标和 2 的半径 - 但你应该得到图片。
使用SAP HANA Spatial,如何查询圆内包含的所有点?理想情况下,我想指定中心的纬度和经度,以及半径。
例如,select 'Berlin - Alexanderplatz' (52.5219184 13.4132147) 周围 10 公里半径内的所有地标。
PS。试用一下:
- 在 https://account.hanatrial.ondemand.com 上注册一个帐户并登录。
- 创建数据库:在持久性 下打开数据库和系统。单击 New,输入 Database ID,select HANA MDC (
) 作为数据库系统,输入系统用户密码,然后保存。 - 打开开发工具:在您的数据库概览中,单击SAP HANA 基于Web 的开发Workbench 并使用SYSTEM 用户登录。在 Security 下,将应用程序权限 sap.hana.ide::Catalog 授予用户 SYSTEM。 (是的,我知道,不要在现实生活中这样做!)。打开 目录.
创建数据库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)'));
要按矩形查询,请触发以下语句。
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;
- 但是,记住,我需要一个圆圈!我怎样才能检索到相同的结果?
那你的圆心点到物体的距离是不是需要小于半径? 像
SELECT LOCATION_NAME, COORDINATE.ST_ASGEOJSON()
FROM COORDINATES
WHERE
COORDINATE.ST_Distance( NEW ST_Point('POINT(52.5162746 13.377704)')) <= 2;
这里我只给出了勃兰登堡门的坐标和 2 的半径 - 但你应该得到图片。