A computer-implemented method of retrieving one or more points that are contained by a predetermined area, the one or more points being stored as entries in a points data file within at least one database, and each point representing a data entity having a location within the predetermined area defined as at least x, y, coordinates, the method being performed by a server connected to the at least one database via a data network and, comprising the steps of: i) receiving a search query, the query specifying a region of interest having an extent defined by at least two pairs of x, y coordinates; ii) accessing an index relating to the points data file and stored in the at least one database, the index comprising a hierarchy of sub-quad structures, each sub-quad structure representing a region within the predetermined area, and each sub-quad structure comprising: the extents of the sub-quad in x, y coordinates, a link to any sub-quad structures representing sub-regions of that region, a value indicating the number of points within that sub-quad structure, and a position value (Pos sub _ quad) indicating the position of the first of all points in that sub-quad within the points data file, and wherein points stored in the points data file are ordered in accordance with the inverse of the sub-quad structure hierarchy; (iii) identifying one or more sub-quads that are contained by the region of interest, by: a) retrieving a first sub-quad structure in the hierarchy from the index; (b) comparing extents of the first sub-quad with extents of the region of interest in order to determine whether the first sub-quad overlaps with the region of interest; and, if there is overlap, (c) identifying sub-quads of the first sub-quad from the link to sub-quads; (d) successively retrieving the identified sub-quads structures, and repeating steps (b) to (d) for each identified sub-quad until the overlap is such that the sub-quad overlaps exactly with the region of interest; and (iv) retrieving points encompassed by the identified sub-quads from the points file, by, for each of the identified sub-quads: retrieving the value of the number of points within that sub-quad structure; retrieving the position value (Pos sub_quad) associated with the identified sub-quad; accessing the points data file; moving a file pointer to a position in the points data file given by the retrieved position value(Pos sub_quad); and extracting N points from the points data file. i) receiving a search query, the query specifying a region of interest having an extent defined by at least two pairs of x, y coordinates; ii) accessing an index relating to the points data file and stored in the at least one database, the index comprising a hierarchy of sub-quad structures, each sub-quad structure representing a region within the predetermined area, and each sub-quad structure comprising: the extents of the sub-quad in x, y coordinates, a link to any sub-quad structures representing sub-regions of that region, a value indicating the number of points within that sub-quad structure, and a position value (Pos sub _ quad) indicating the position of the first of all points in that sub-quad within the points data file, and wherein points stored in the points data file are ordered in accordance with the inverse of the sub-quad structure hierarchy; (iii) identifying one or more sub-quads that are contained by the region of interest, by: a) retrieving a first sub-quad structure in the hierarchy from the index; (b) comparing extents of the first sub-quad with extents of the region of interest in order to determine whether the first sub-quad overlaps with the region of interest; and, if there is overlap, (c) identifying sub-quads of the first sub-quad from the link to sub-quads; (d) successively retrieving the identified sub-quads structures, and repeating steps (b) to (d) for each identified sub-quad until the overlap is such that the sub-quad overlaps exactly with the region of interest; and a) retrieving a first sub-quad structure in the hierarchy from the index; (b) comparing extents of the first sub-quad with extents of the region of interest in order to determine whether the first sub-quad overlaps with the region of interest; and, if there is overlap, (c) identifying sub-quads of the first sub-quad from the link to sub-quads; (d) successively retrieving the identified sub-quads structures, and repeating steps (b) to (d) for each identified sub-quad until the overlap is such that the sub-quad overlaps exactly with the region of interest; and (iv) retrieving points encompassed by the identified sub-quads from the points file, by, for each of the identified sub-quads: retrieving the value of the number of points within that sub-quad structure; retrieving the position value (Pos sub_quad) associated with the identified sub-quad; accessing the points data file; moving a file pointer to a position in the points data file given by the retrieved position value(Pos sub_quad); and extracting N points from the points data file. retrieving the value of the number of points within that sub-quad structure; retrieving the position value (Pos sub_quad) associated with the identified sub-quad; accessing the points data file; moving a file pointer to a position in the points data file given by the retrieved position value(Pos sub_quad); and extracting N points from the points data file.