We need to cross compare this against GIS databases. What GIS databases do is mostly indexing, and lucence is much faster and scalable.
--Srinath On Tue, Sep 13, 2016 at 1:13 PM, Anjana Fernando <[email protected]> wrote: > Good summary of the features Janaka! .. So using this I guess we can > implement plenty of useful scenario when it comes to geospatial analysis. > So we already have the geo dashboard in CEP which demonstrates some of the > existing realtime features we have related to this. I guess we can improve > that as well to use this feature, @Suho/Mohan WDYT? .. > > Anyways, so simply as a general set of operations this would be very > useful to anyone to create their own customer solution. I'm looping in > Mifan here also, to possibly get some suggestions on any additional > usecases we would probably have. > > Cheers, > Anjana. > > On Mon, Sep 12, 2016 at 9:52 AM, Janaka Thilakarathna <[email protected]> > wrote: > >> Hi all, >> >> I am currently working on the project Multidimensional Space Search with >> Lucene 6 for DAS. Here is a list of possible functionalities (and some >> example scenarios) that we can provide using Lucene 6.1 's multi >> dimensional space search. >> (This is a brief description on collected details, to see more info and >> the test codes, please visit my git repo >> <https://github.com/janakact/test_lucene>.) >> >> Multidimensional space points in Lucene 6 can be categorized into two >> types of space points depending on their query types and distribution of >> points in the space. >> >> 1. General Multidimensional space points. >> 2. Locations on the planet surface. >> >> >> *1. General Multidimensional Space Points* >> This is the generic type of multi dimensional space points. Those are >> actually vector spaces. Space has a dimension K. In a K-dimensional space a >> point is represented by a K number of numeric values. >> >> For an example 3D point will be represented by 3 float/double values. >> (because distance is measured as a floating point number.) >> >> *Possible Queries for API* >> >> - Search for points with exact given values. >> - Search for points which has one of the value from a given set of >> values. >> - Search for points within a given range. >> - Get the number of points which has exact point. >> - Get the number of points within a given range. (Ranges are >> multidimensional ranges. In 3D, they are boxes.) >> - Divide points into range-buckets and get the count in each buckets. >> (Range bucket is a range which has a label in it) >> >> *Scenarios* >> >> Since this is a more general space definition this could have many >> general applications. These dimensions can be used to represent any numeric >> field. They can be used to represent locations in a 3D space if we use 3 >> dimensional points. We can use it to represent both space and time if we >> use 4 dimensions. (X, Y, Z, time all are numeric fields. Double can be >> used). >> >> *Independent Parameters* >> >> It can be used to represent completely independent parameters. Think >> there is a set of employees. A multi dimensional space can be used to >> represent different parameters of them. >> >> *Example:* Age, salary, height, average number of leaves per month. >> These are 4 numeric fields which are completely independent. It can be >> represented as a 4 Dimensional Space. Each person will be represented as a >> point in this space. Then the user can use Lucene to query on these >> people. >> >> - What is the number of people who's age is 25-30 years, Height is >> 160cm to 180cm, Salary is 50,000 to 75,000 and take 1-5 average number of >> leaves per month? >> - Or user can divide people into different buckets and count them >> depending on the ranges for each parameter. >> >> (Of course this can be done by indexing those parameters separately and >> query using 'AND' keyword, but indexing them together as a multidimensional >> space will make searching more efficient) >> >> *2. Locations on the planet surface. (Latitude, Longitude)* >> Here points represents locations on top of the planet surface. This is a >> more specific type of search provided by Lucene to index and search >> geographical locations. >> >> These points are created using only the latitude and longitude values of >> locations. >> **Please consider altitude is not yet supported by Lucene.* >> >> Since this is specifically designed for Locations search it has more >> useful queries than General Multidimensional Points. >> >> *Possible Queries for the API* >> >> - Search for the K-nearest points from a given location. (return the >> given number of points) >> - Search for the Points within a given radius from a given point. >> - Sort them by the distance from a given location. >> - Points inside a polygon.(Polygons are geometric shapes on the >> surface of the planet. Example: map of a country) >> - Get the number of points inside a polygon.* >> - Get the number of points in each bucket where buckets are specified >> as polygons. >> - Get the number of points in each bucket where buckets are specified >> by the distance from a given location. >> >> * Composite polygons are possible. >> *Scenarios* >> >> *Airport Scenario * >> If we index the set of airports in the world as GeoPoints. Following >> queries are possible examples. (Here is the test code I implemented as >> an example.) >> <https://github.com/janakact/test_lucene/blob/master/src/test/java/TestMultiDimensionalQueries.java> >> >> - Find closest set of airports to a given town. >> - Find the set of airports within a given radius from a particular >> town. >> - Find the set of airports inside a country. (Country can be given as >> a polygon) >> - Find the set of airports within a given range of Latitudes and >> Longitudes. It is a Latitude, Longitude box query. (For a examples: >> Airports closer to the equatorial) >> - Find the set of airports closer to a given path. (Path can be >> something like a road. Find the airports which are less than 50km away >> from >> a given highway) >> - Count the airports in each country by giving country maps as >> polygons. >> >> *Indexing airplane paths* >> >> - It is possible to query for paths which goes through an interesting >> area. >> >> Above example covers most of the functionalities that Lucene Space search >> provides. >> Here are some other examples, >> >> - Number of television users a satellite can cover.(by indexing >> receivers' locations) >> - To find the number of stationary telescopes that can be used to >> observe a solar eclipse. (by indexing telescope locations. Area the solar >> eclipse is visible, can be represented as a polygon >> http://eclipse.gsfc.nasa.gov/SEplot/SEplot2001/SE2016Sep01A.GIF >> <http://eclipse.gsfc.nasa.gov/SEplot/SEplot2001/SE2016Sep01A.GIF>) >> >> So, that's it. >> Thank you. >> >> Regards, >> Janaka Chathuranga >> >> -- >> Janaka Chathuranga >> *Software Engineering Intern* >> Mobile : *+94 (**071) 3315 725* >> [email protected] >> >> <https://wso2.com/signature> >> >> > > > -- > *Anjana Fernando* > Associate Director / Architect > WSO2 Inc. | http://wso2.com > lean . enterprise . middleware > -- ============================ Srinath Perera, Ph.D. http://people.apache.org/~hemapani/ http://srinathsview.blogspot.com/
_______________________________________________ Architecture mailing list [email protected] https://mail.wso2.org/cgi-bin/mailman/listinfo/architecture
