Geospatial data may be used for many types of geospatial applications which may be related to Global Positioning System (GPS) devices, satellites traffic sensors etc. Many of these applications process geospatial data in real-time to provide location-based services and information in real-time. World Geodetic System (WGS), e.g., WGS84 which is the latest version of WGS, is an Earth-centered, Earth-fixed terrestrial reference coordinate system for geospatial information and is the reference system for GPS. WGS 84 is based on a consistent set of constants and model parameters that described the Earth's size, shape, gravity and geomagnetic fields. The Earth's center of mass is considered as an origin for the WGS 84 coordinate system. WGS 84 coordinates are defined in the three-dimensional (3D) space and are represented in longitude and latitude.
Features of the present disclosure are illustrated by way of example and not limited in the following figure(s), in which like numerals indicate like elements, and in which:
For simplicity and illustrative purposes, the present disclosure is described by referring mainly to an example thereof. In the following description, numerous specific details are set forth in order to provide a thorough understanding of the present disclosure. It will be readily apparent however, that the present disclosure may be practiced without limitation to these specific details. In other instances, some methods and structures have not been described in detail so as not to unnecessarily obscure the present disclosure. In the present disclosure, the term “includes” means includes but not limited thereto, the term “including” means including but not limited thereto. The term “based on” means based at least in part on. In addition, the terms “a” and “an” are intended to denote at least one of a particular element.
Spatial indexing may be used for boosting calculation speed for geospatial computations. A polygonal Map (PM) quadtree data structure represents polygonal maps which may include collections of polygons, possibly containing holes, and is an example of a spatial index in a planar system. A large amount of GPS data is generated in the WGS84 coordinate system which is a 3D model of the Earth. When the GPS data generated in the 3D coordinate system is stored in a 2D structure such as a PM quadtree, it can result in the loss of information thereby decreasing the computational accuracy of calculations based on such stored data. Examples are described herein which enable storing the 3D data obtained from a 3D geospatial coordinate system, e.g., WGS84 coordinate system, in 2D data structures, such as PM quadtrees, which minimizes loss of information. Examples are described below with respect to the WGS84 coordinate system but the systems and methods described herein may use other 3D coordinate systems.
An index accessing system 122 enables one or more geospatial application(s) 130 which may also be in the computer system 100, such as shown in
The computer system 100 includes a processor 150, an input/output (I/O) interface 160, and a data storage 170. The processor 150 may include a microprocessor operable to execute machine readable instructions to perform programmed operations. The data storage 170 may include volatile and/or non-volatile data storage, such as random access memory, memristors, flash memory, hard drives, and the like. The data storage 170 may store any information used by the index generating system 120, the index accessing system 122 and the geospatial application(s) 130. The data storage 170 can also store the 3d index 120 in an example. The 3D index 120 can also be stored in another remote computer system which is communicatively coupled to the computer system 100. Machine readable instructions may be stored in the data storage 170. The index generating system 110 and the geospatial application(s) 130 may comprise machine readable instructions stored in the data storage 170 and executed by the processor 150. The input/output interface 160 may include a network interface or another interface to enable I/O functions of the computer system 100 such as receiving the input data 102 or providing the results from the geospatial application(s) 130.
The iteration component 220 can comprise instructions to determine the initial positions of the set of spherical polygons within the ECEF quadrant space based on the vertices. The quadrant space is then subdivided based on PM quadtree rules in one example. PM quadtree rules may include: at most, one vertex can lie in a region represented by a quadtree leaf node; if a quadtree leaf node's region contains a vertex, then it can contain no q-edge that does not include that vertex; if a quadtree leaf node's region contains no vertices, then it can contain, at most, one q-edge; and each region's quadtree leaf node is maximal. For example, a quadrant comprising a spherical polygon can be iteratively subdivided into four quadrants until predetermined condition is met. In an example, the predetermined condition can include a quadrant comprising a single vertex of the spherical polygon. During the iterations, empty quadrants that do not comprise any vertices of the spherical polygon being analyzed are not sub-divided further during the iterative sub-division process. A quadrant that meets the predetermined condition is not sub-divided further. The iterative process therefore ends when all the non-empty quadrants that do not meet the predetermined condition are completely decomposed into either empty quadrants or quadrants that meet the predetermined condition.
The index storing component 230 stores the index 120 in a tree data structure such as a PM quadtree. The nodes of the PM quadtree represent quadrants in a coordinate space comprising the set of spherical polygons. The information regarding the vertices and the edges of the spherical polygons and the quadrants associated therewith is stored in the nodes of the tree data structure. The edges of the spherical polygons are stored as arcs in the tree data structure. As the set of spatial polygons are organized in an index tree hierarchical structure during the processing, accessing the index 120 enables the geospatial applications 130 to retrieve the results by traversing the index tree once which is faster than would be retrieved if a brute force algorithm were used as the brute force algorithm would require processing each and every spatial polygon one by one.
The entire coordinate space is divided into four quadrants and the initial positions of the polygon D and E is determined to be in the second and the fourth quadrants respectively. The initial position of the polygon D is determined to be in the second quadrant II. Per one of the quadtree rules, the quadrant(s) comprising the polygons D and E should be iteratively subdivided until a predetermined condition is met while the empty quadrants are disregarded in further processing. In some embodiments, the predetermined condition can include a quadrant comprising a single vertex of the polygon D. Alternately, when it is determined that a quadrant comprises a single vertex of the polygon D, the quadrant is no longer subdivided. Accordingly, the second quadrant II and the fourth quadrant IV are selected for further processing while the first quadrant I and the third quadrant III are terminated from further processing. When the second quadrant II is subdivided, it is determined that each of the sub-quadrants i, iii and iv include a single vertex B, A and C of the polygon D while the sub-quadrant ii includes the arced edge AB. Further processing of the second quadrant is halted as the quadtree rule that requires a single vertex per sub-quadrant is met for each of the i, iii and iv while the second sub-quadrant ii includes one arced edge AB. The index generation system 110 halts the processing of the polygon D per the PM quadtree rules and stores within the 3D index 120, the information regarding the quadrants i, iii and iv each of which includes a single vertex B, A and C of the polygon D and the information regarding the sub-quadrants that include the arced edges AB, BC and AC. And the information regarding the quadrant ii which includes the arced edge AB.
It can be appreciated that had the polygon D been processed and stored in a 2D data structure, the edges AB, BC and AC would have been stored as straight lines rather than as arcs thereby losing accuracy. For example, the edge AB would have been stored as a straight line in a 2D data structure and thereby the 2D index data structure would have recorded the point O as being on the left side of line segment AB and outside of the polygon D. Moreover, the sub-quadrants i, iii and iv would have been recorded as comprising the line segment AB thereby causing errors in any projections or further calculations that are based on such 2D indexes. On the other hand, as the edge AB is recorded as an arc in the 3D index 120, it is further accurately recorded that the point O is in the right side of the arc AB and hence lies within the polygon D. Furthermore the sub-quadrants and iii are accurately recorded as comprising the arc AB. Hence, further calculations based on the 3D index 120 can be more accurate than the corresponding calculations based on the 2D data structure as described above. In one example, a flight path based on the 3D index 120 would be more accurate than a flight path obtained from a 2D data structure. Similarly, a location determination application would accurately assess O as lying within the region represented by polygon D.
The initial positions of the polygons D and E are shown as being entirely located within a single quadrant on the first iteration only by the way of illustration. A polygon may have its initial position comprised in a plurality of quadrants on the first iteration and it may be processed in accordance with the methodologies described herein. Now proceeding to the processing of the polygon E, it is determined on the first iteration that polygon E is entirely comprised in the fourth quadrant IV. On the second iteration, the fourth quadrant IV is further divided in four sub-quadrants and it is determined that three of the vertices W, Y and Z are in the second sub-quadrant ii while the fourth vertex X is in the third sub-quadrant iii. The first sub-quadrant i and the fourth sub-quadrant iv are empty and hence are terminated in further processing according to one of the PM quadtree rules. Moreover, as the third sub-quadrant has only on vertex X, it is also not sub-divided in further iterations per another PM quadtree rule. The second sub-quadrant ii which includes the three vertices W, Y and Z is further sub-divided into four more sub-quadrants a, b, c and d on a third iteration. Again each of the sub-quadrants a, b and c respectively contain vertices W, Z and Y while the sub-quadrant d includes one edge WX. Therefore, the sub-quadrants a, b, c and d are no longer sub-divided per the PM quadtree rule that requires the iterations to halt when each sub-quadrant comprises a single vertex. As none of the sub-quadrants need further processing, the iterations are halted and the information regarding the vertices W, X, Y, Z, the sub-quadrants that comprise them, the edges WX, XY, YZ and WZ and the sub-quadrants they pass through is stored in the index 120.
At 504, the index 120 is generated from the input data 102. The index 120 comprises a tree data structure such as a PM quadtree structure and stores information regarding the vertices and edges of the set of spherical polygons in a coordinate system such as an ECEF coordinate system. Furthermore, the index 120 stores information in 3D such as storing the edges as curves or arcs unlike the data structures that project the information into 2D space prior to storing it. Thus, in a 2D data structure, the edges of the polygons are approximated to straight lines. The capacity of the index 120 to store the received 3D information in 3D format without projection into 2D format enhances the accuracy of the resulting calculations which are based on the information in the index 120. At 506, the index 120 is stored as a data file in a computer readable storage medium 170. At 508, the index 120 is made accessible to different geospatial application(s) 130 which can be stored either locally or may be accessing the index 120 from remote locations.
If, at 710, it is determined that the predetermined condition is not met, then the quadrant comprises multiple vertices of a given spherical polygon. Or the quadrant corresponds to an inner node of the PM quadtree that can be further decomposed or processed. Therefore, the method returns to 704 for further decomposing or sub-dividing the quadrant in the next iteration. If the predetermined condition is met for the non-empty quadrant, it is determined at 712 if there are further non-empty quadrants. If no further non-empty quadrants remain, it can be concluded that the quadrants pertain to either empty nodes or terminal nodes. Hence, the processing terminates at 714.
What has been described and illustrated herein are examples of the disclosure along with some variations. The terms, descriptions and figures used herein are set forth by way of illustration only and are not meant as limitations. Many variations are possible within the scope of the disclosure, which is intended to be defined by the following claims, and their equivalents, in which all terms are meant in their broadest reasonable sense unless otherwise indicated.
| Filing Document | Filing Date | Country | Kind |
|---|---|---|---|
| PCT/US2015/053830 | 10/2/2015 | WO | 00 |