My main task for this week was to implement the 'Function based search' functionality for geometry data. The rationale is that searching for equality or using simple comparison operators is of very less use when it comes to geometry data types. When effectively used with functions defined for geometry types they create powerful search criterion for searching.
I divided these functions mainly into two groups, 'unary functions', i.e. those that take a geometry object as its argument and 'binary functions', i.e. those that two geometry objects as arguments and test spatial relations between them. On the implementation side, I initially added a 'Function' column for the geometry columns and with that the user is able to perform searched with 'unary functions'. For example the user choosing function ‘Dimention()’, comparison operator ‘<’ and value ‘2’ would add ‘Dimention(`<column_name>`) < 2’ to the where clause.
Later I extended the same concept to binary functions and for those, the geometry object inserted into the value field(in the form of WKT or WKB) is compared with the geometry object in the related column. To make the insertion of geometry objects for comparison easy, I attached the GIS data editor to it, so the insertion is made easy.
During the week I also fixed some of the bugs that arose in the GIS data editor due to multiple row editor being AJAXified. During the next week I will be engaged in my next task, i.e. 'Exporting GIS data into SVG, PDF and Bitmap formats'. A certain amount of work has been done related to this task and I will be completing it during the coming week.