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'