【发布时间】:2016-10-04 14:19:37
【问题描述】:
使用SAP HANA Spatial,如何查询一个圆内包含的所有点?理想情况下,我想指定中心的纬度和经度,以及半径。
例如,选择 'Berlin - Alexanderplatz' (52.5219184 13.4132147) 周围 10 公里半径内的所有地标。
PS。尝试一下:
- 在https://account.hanatrial.ondemand.com 上注册一个帐户并登录。
- 创建数据库:在 Persistence 下打开 Databases & Systems。点击New,输入一个Database ID,选择HANA MDC (
) 作为Database System,输入一个SYSTEM 用户密码,然后保存。 - 打开开发工具:在您的数据库概览中,单击SAP HANA 基于 Web 的开发工作台并使用 SYSTEM 用户登录。在 Security 下,将应用程序权限 sap.hana.ide::Catalog 授予用户 SYSTEM。 (是的,我知道,不要在现实生活中这样做!)。打开目录。
-
创建数据库表:点击按钮打开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; - 但是,请记住,我需要一个圆圈!如何检索相同的结果?
【问题讨论】: