Understand Points in SAP HANA Spatial
You will learn the basics of spatial processing starting with points, and use them to understand the types, constructors and methods defined by the SQL/MM standard implemented by a SAP HANA database.
- System access: You have developer access to SAP HANA database instance, for example SAP HANA Cloud trial
- Check the SAP HANA Spatial Reference
- Step 1
SAP HANA includes a spatial engine and supports spatial data types and methods for processing spatial data. Spatial data is data that describes the position, shape, and orientation of objects in a defined space.
For more check the SAP HANA Spatial Reference
Open the SQL editor of your choice (web or desktop based) connected to your SAP HANA database instance. Screenshots in this and following tutorials are taken using SAP HANA Database Explorer.
Type the following SQL statement.sqlCopy
SELECT NEW ST_POINT(0,0) FROM "DUMMY";
This query selects a point in the 2-dimensional
2DEuclidean space. A point defines a single location in space. A point always has an X and Y coordinate. In the example above it is
(0, 0), i.e.
Spatial support in SAP HANA database follows the
ISO/IEC 13249-3“SQL multimedia and application packages – Part 3: Spatial” (
SQL/MM) standard. This standard defines:
- how to store, retrieve and process spatial data using SQL,
- how spatial data is to be represented as values,
- which functions are available for converting, comparing, and processing this data in various ways.
A key component of this standard is the use of the spatial data types hierarchy. Within the hierarchy, the prefix
STis used for all data types (also referred to as classes or types).
ST_POINTtype is a 0-dimensional geometry which represents a single location. To get an object of the
ST_POINTspatial type you need to call a type’s constructor following the syntax
NEW ST_Point(<x>,<y>), where x and y are the corresponding longitude and latitude coordinate values of data type DOUBLE.
Execute the query. Congratulations! You’ve just run your very first query using the spatial capabilities of SAP HANA.
What is the industry standard for spatial data in SQL?
- Step 2
The SAP HANA Database Explorer’s SQL Console returns the value like
010100000000000000000000000000000000000000as a result of the query execution. In some other SQL clients a question mark (
?) can be returned.
This is because SAP HANA database stores spatial objects in the binary form, and not as a text. To get a human-readable value you need to apply a method
WKT stands for Well-known text, which is a text markup language for representing vector geometry objects defined by the Open Geospatial Consortium (OGC). SAP HANA follows this industry standard.
Syntax for Spatial Functions must be in Objective-style, therefore modify the statement to use object syntax as shown below and execute.sqlCopy
SELECT NEW ST_POINT(0,0).ST_asWKT() AS "POINT" FROM "DUMMY";
Now the result of the query
POINT (0 0)can be read and understood by a human.
- Step 3
The WKT standard can also be used to define a point in the constructor. The following querysqlCopy
SELECT NEW ST_POINT('POINT (0 0)').ST_asWKT() AS "POINT" FROM "DUMMY";
returns the same result as
- Step 4
There are more spatial methods that can be applied to
ST_POINTobjects. For now try two of them. Both will be Access Functions used to retrieve characteristics of spatial geometries.
ST_X()returns the X coordinate of the
ST_POINTvalue as a DOUBLE data type.sqlCopy
SELECT NEW ST_POINT(16.75, 51.25).ST_X() AS "POINT_X" FROM "DUMMY";
ST_Dimension()returns the dimension of the point or other geometry objects. In the case of points the result is obviously
SELECT NEW ST_POINT(16.75, 51.25).ST_Dimension() AS "POINT_DIM" FROM "DUMMY";
What is the dimension value for a point returned by ST_Dimension() method?