/spatialindex

spatialindex for Caché

Primary LanguageObjectScriptMIT LicenseMIT

How to use

Import SpatialIndex package. Define index in class as follows (you can use any index, properties name):

Index x1f on (Latitude,Longitude) As SpatialIndex.Index;

See sample class SpatialIndex.Test

Load data with

do ##class(SpatialIndex.Test).load("/tmp/Rucut.txt")

Then you can query table with defined index. Two types of queries are implemented: window (rectangle) and radius (ellipse).

For example:

SELECT *
FROM SpatialIndex.Test
WHERE %ID %FIND search_index(x1F,'window','minx=56,miny=56,maxx=57,maxy=57')

or

SELECT *
FROM SpatialIndex.Test
WHERE  %ID %FIND search_index(x1F,'radius','x=55,y=55,radius=2')
and name %StartsWith 'Z'

or

SELECT *
FROM SpatialIndex.Test
WHERE  %ID %FIND search_index(x1F,'radius','x=55,y=55,radiusX=2,radiusY=2')
and name %StartsWith 'Z'