 Είναι η Αριμφσικόπλος και σήμερα θα ήθελα να μιλήσουμε πώς να μιλήσουμε τις δημιουργίες και πώς να μιλήσουμε αυτές τις δημιουργίες. Ξεκινήσαμε με άλλες δημιουργίες, θα πω ότι είναι αυτοκρότημα. Δεν θα μιλήσω για το μεγάλο δημιουργείο ή το σπασίολο αναλυτικό. Αλλά ελπίζω να το κάνει σημαντικό. Τώρα να μιλήσουμε με τη ε Tagen, γιατί, το πρώτα επαναγώσματα τι είναι η φύστασης λιβιούς και τη δημιουργία, δώσπαseen μεγαλύτερα καιφέρνω ευκαιρία ενώ να μιλήσουμε τις δημιουργίες καθώς και την ακουραντισμότηση, όταν θα μιλήσουμε τις δημιουργίες και θα θυμωθでも με σεξουδεδικαρα. Η φύσταση λιβιούς της λιβιούς είναι η πόλη της λιβιούς τορός' της μπλ. Είναι καταγωνική, είναι C++03 και οδηγιότητα C++11, γυρίζει μεταπρογραμμές, τεμπλήτες και τάκ-δυσπατσή. Είναι πραγματικό, like geometries, algorithms and spatial index R3. Είναι ο καταγωνικής γυρίζει μεταπρογραμμής, και η χρησιμοποιήση είναι χρησιμοποιημένη με MySQL, οπότε όλοι οι MySQL-χρησιμοποιήσαν όλες οι χρησιμοποιήσαν. Είναι ο καταγωνικής γυρίζει μεταπρογραμμής, υπάρχει η δικαιωματική, υπάρχει η μεταπρογραμμή, και όλοι οι χρησιμοποιήσαν όλες οι χρησιμοποιήσαν. Αυτό θα είναι το πρώτο παράδειγμα. Θα ήθελα να πάμε μπροστά. Υπάρχει τέτοια διεθνές, as you can see, και τότε διδείξουμε τα ψηφία. Αυτό είναι ο κορδευτός της γεωματικής, θα είναι δύο πραγματικών, θα είναι δύο δημετωμένου, και θα είναι γεωγραφική με βασικές. Αυτό είναι ένα παράδειγμα που μπορούμε να φτιάξουμε. Λοιπόν, θα θέλαμε να φτιάξουμε δύο πόντων, με δύο λευταίων, με βασικές. Οπότε η πρώτα θα είναι στην Ακροπολίσσα και η δεύτερη θα είναι εδώ. Και τότε θα θέλουμε να συνεχίσουμε τη δημιουργία. Η δημιουργία θα είναι αυτή. Πραγματικά 2.000 χιλιόμετρες. Και η πρώτα που θέλουμε να συνεχίσουμε σήμερα, είναι η δημιουργία αυτή που βρίσκουμε. Και πώς να μπορούμε να φύγουμε. Ξέρουμε ότι έχουμε μοδελες της Ακροπολίσσα. Ξέρουμε ότι αρχίζουμε ότι η Ακροπολίσσα είναι σύμφωνα. Στην τέτοια η δημιουργία είναι πολύ σύμφωνα. Θα χρησιμοποιήσουμε πιθαγόρια. Λοιπόν, η Ακροπολίσσα δεν είναι σύμφωνα. Δεν μπορεί να είναι σφεία. Αυτό είναι χρησιμοποιημένο στην Google Maps. Λοιπόν, εκκλησία είναι πολύ σύμφωνα. Λοιπόν, έχουμε μοδελες της Ακροπολίσσα. Λοιπόν, ένα καλύτερο μοδελ είναι η Ελύπσοη. Λοιπόν, αυτό είναι όσο που γνωρίζω. Είναι ο αρχίος της αρχής όταν κάνεις GIS. Και αν θέλεις να είναι πιο πιο εμφανιστή, μπορείς να έχεις λιγές και μάνα, αρχιές. Αυτό είναι χρησιμοποιημένο στην Geophysics. Λοιπόν, τώρα, τι κάνουμε είναι το τελευταίο μοδελ. Λοιπόν, νομίζουμε την αρχή στην Ελύπσοη. Είναι η Ελύπσοη της Αρχής. Και θα θέλουμε να κάνουμε τα συμφωνία εκεί. Από να κάνουμε αυτή, μπορούμε να χρησιμοποιήσουμε σφαρικές συμφωνίες, ή δύσκολες συμφωνίες. Είναι η Ελύπσοη της Αρχής. Και θέλουμε να δούμε, αν κάνουμε αυτές τις συμφωνίες, τι είναι η αρχή στιγμή, σχετικά από τις αρχές ελυπσοϊκές συμφωνίες που έχουμε σε αυτές τις μοδελ. Είναι αυτό που θα μιλήσω. Οι συμφωνίες είναι στην αρχή στιγμή. Έχουμε σύμφωνίες για αυτά. Πραγματικά σύμφωνίες. Έτσι, είναι ένα για την Καρτίζια, ένα για την Σφεία, και ένα για την Ελύπσοη. Λοιπόν, όταν θέλουμε να συμφωνήσουμε, αυτή είναι η δημιουσία της Γεωδέζικς. Έτσι, είναι η κατάσταση που θα κάνουμε δύσκολες συμφωνίες. Είναι η κατάσταση που θα θέλουμε να συμφωνήσουμε. Λοιπόν, αν είμαστε στον σχέδιο, η κατάσταση της σύμφωνίες με δύσκολες στιγμή είναι δύσκολη. Στην σφεία, η κατάσταση της σύμφωνίες είναι έναν καλύτερο κέντρο. Λοιπόν, έχετε αυτό σπιτιά με την Σφεία και την Άγγραφία. Λοιπόν, είναι ένας κατάστασης της γεωδέζικας. Αν έχουμε ένα Ελύπσοϊκ, η Γεωδέζικη δεν είναι ένα κλόδιο κέντρο. Έχουμε κάτι like this that goes around the earth. And this blue line is the shortest path. So if you have two points, we want to compute the distance of this blue line. Okay. Yes, if you see a map, like Mercato Projector, this is the map that you probably had on your school or you see on a public space. So you know that a straight line is not the shortest distance, of course. But if you travel from Seattle to London by an airplane, you will see the GPS will go closer to the north pole. So it's just for... Okay, so connected to the previous case, these are the math models just to see the formulas and have an idea of the complexity of this computation. So if we are in flat, it's primary school probably, then for the sphere, we did it on maybe high school. These are just trigonometric equations. And when we want to do the ellipsoidal, I think it's some integrals that we have to approximate them. So you can see the difference even virtually. You can see the difference in the complexity of these methods just by looking at the math. I'm not continuing with math. I'm just switching to computations now and algorithms. So this is a set of algorithms or methods that we would like to try and test. So this is what I found in the bibliography. If you know some other method, one purpose of this talk is to take some feedback from the GIS community. Most of them are developed in 70s. So I would say that the first one, Vincent, is the state of the art of methods that you use when you want to compute the distance on the ellipsoid. So this is what post-GIS, I think, is using. But there are a series of methods like the one by Thomas, the second one, which is a series approximation and the third one, which is order one. This means a bit less accurate, but faster. We'll see details. Then you can have the analog of the great circle arc by the analog of the ellipsoid is an elliptic arc. It will not be the shortest distance, but it will be an approximation and we'll see how accurate it is going to be. There are methods that can project the earth and do Euclidean computations and then we have spherical. The computations they do in Google Maps when you just click to get the distance. I don't like that I don't give references to these papers or stuff, but they are all implemented in GitHub and there are some basic references there. In the future I hope to provide more on this, but for now if you are curious to see how are these methods and what the reference is, they are on GitHub. Now let me give some examples of computing distances. I will return to the previous one. I mean nothing, so I want to travel to ULB. This is what Google Maps will give you virtually and this is what a small amount of code that we can write in Boost Geometry. The difference from the previous example is that now we can parameterize our distance algorithm with a method. All the possible methods could be the list of algorithms I told you. So it's like Vincendi or flat or spheroid. Here I will use Thomas for example. And then what I'm getting is some results for each method. The first one we know that is the most accurate and for example we can see how off is the computation by Google Maps. It's, I don't know, some meters. It's not a... Yes, it's three meters, so it's three kilometers. So it's a big difference. All the rest are more or less accurate. This elliptic has... It's elliptic zero, elliptic two three is some order that you get in the series. So the larger number, the better is the accuracy as you can also see. And the flat earth approximation with just Pythagoras theorem is really bad for that large distance. Okay, so let me give another example more local. So this is the ring of Brussels. And let's say that I want to find the closest point to... Yeah, this is ULB, I want to find the closest point from if I am on the ring to the ULB. So that will be the red dot virtually more or less. Okay, and this is a sample code for computing this. So I create a point which is the ULB. I create a polygon which are the longitude latitude of the Brussels polygon. And then I just ask what is the distance between these two objects. And what I'm going to get with different algorithms will be like this. So now, okay, the distance now it's much smaller. So all the distance are in meters here. So you can imagine that's three kilometers more or less from here to... if I want to go to the Brussels ring. Yes, spherical is off by four meters. You see that the first three methods are accurate up to centimeters. So they are very accurate. But still, even if we are inside the city following this flat approximation, it's not very accurate. Okay, so I would like to give one more example, especially regarding this flat approximation formula. So let's say I would like to go to some more exotic places like in Caracas. So now we are closer to Equator and by looking at the formula I know that I will get more accurate results. So four kilometers in distance in Caracas we get a very good approximation with the same formula. So it's very sensitive when you are. So if you are building an application in Venezuela, I guess you should be happy because this is a very fast method and you will get accurate results. Okay. So now we'll do some simple experimental analysis of these methods. It's just a starting point. So I would like to get some more consistent results than just computing Athens-Brasil distance. So the motivation is that I think it's interesting to have a function that the user says, okay, I want accuracy of, I don't know, three centimeters or three kilometers. And the system selects the most the fastest algorithm. So this makes sense. It's not an easy thing because there are a lot of parameters involved. But I think it makes sense. And also the other part of motivation is that distance computation, as far as I know, it's almost everywhere. So when you want to compute nearest neighbors, nearest neighbor queries, another interesting example is where you have, for example, GPS trajectories in some city or even worse in Europe. And you want to see if some trajectory is similar to another trajectory. So if you have, you know, a thousand of points, then you call an algorithm of similarity. You will get, you know, millions of distance computations probably. So it's crucial to have a fast algorithm with your desired accuracy. Okay, so this is the motivation more or less. Okay, so in order to do some tests we use a data set that it's here online. It consists of 500k geodesics with WGS84 ellipsoid. And it uses this library geographically with high precision. So the results that we have in this data set are supposed to be exact. So they are exact up to errors in the double arithmetic. So they are very exact for our sense. And we'd like to test all these methods that are described on this data. Okay, so one test that we can have is let's say that we have here on the x-axis we have the maximum geodesic length in kilometers and on the y-axis we have the mean absolute error. As you can see, so here in the lower part we have Vincenti which is the most accurate method. It's accurate up to, this is in meters. So it's, I don't know, millimeters. So it's a very good accuracy up to this is maybe the largest geodesic that we can get. So then going from the most accurate to less accurate we have Thomas formula which is the blue one. Then we have the elliptic formula that we treat the geodesic as ellipse. Then it's a Andoer formula together with some elliptic variation and then we go to spherical and at the end the less accurate is the flat earth approximation that gives you an accuracy which is, as you can see you can have an error of several thousand meters Okay, regarding the maximum absolute error it's, the things are similar so more or less the picture is the same but we have different values here so if you want to see, if you want to guarantee your maximum error that we are going to get with this formula you could follow a graph like this maybe a more detailed one Okay and the next, so this is about accuracy we also like to compare with performance so this is a very simple graph about an idea of a performance so Vincetti which is the most accurate as you can expect is the slowest one so this is starting from the slowest to the fastest we have Vincetti and then we have Thomas and then there is a trade-off of these elliptic formulas and we go up to Andoer and then spherical is much faster as you can see it's ten times faster maybe more than Vincetti the flat approximation formula it's not very good in this graph so the previous graphs are in log scale so here even if it's not clear it's maybe two times faster the flat approximation formula so some first conclusions that we can have is that Vincetti is the most accurate and it's two times lower than Thomas and five times lower than Andoer something interesting here is that Vincetti the implementation in boost geometry compared to geographic lib which is a very detailed library that is used by post-GIS is two times faster but geographic lib is more accurate so there is also a trade-off between performance and accuracy the other interesting thing is that this elliptic arc formula which as far as I know is not very well known gives you a trade-off between Andoer and Thomas regarding accuracy and also speed so it's the third curve from down it's between Andoer and Thomas and the flat earth approximation is very efficient but it's not accurate it's very bad in accuracy so it's only good if you are close to a crater in a small city or in a few kilometers so these are some conclusions first conclusions we can have so related work this could be a building step to go to a distance between any two geometries as I show an example of a point and a polygon we could have a distance between line strings and multi-polygons or whatever there is also an interesting work to point clouds that snap to geometries there is also a GPS point cloud that will snap into some line string and we are also I think it's interesting to work on similarity between geometries so this is how the distance is between let's say starting from line string so you have a line string and you want to or you have a set of line strings in a database and you are given a line string and you want to see what is the most similar line string in your data set and some of them we propose them for Google Summer of Code project so this is the first one about similarities we have one about near land portal points which is not treated correctly right now in boost geometry and we have another project about artery serialization so this is the link of the details so if you are a student and you are interested we'll be happy to have you as an intern and yes that's all the question is about if we would like to ah ok yes so some of them could be redundant but I think the ones that I present did you see something that was redundant ah ok so andeuer compared to one of the elliptic ah yes maybe this makes sense but what I lie about is that there are also some problems with corner cases so for example andeuer may have a problem in corner cases near and portal points for example and elliptic arc will have problems of points that have similar segments that have similar latitude so it's very inaccurate in this case so I think it would make sense first to try to solve these problems either by fixing the 70s formulas or have some cases that if the segment is bad for elliptic then suites to andeuer so this makes sense what you say so in general it would be nice to have an interface that hides all these technicalities from the user yes this is the ultimate goal ok so the question is regarding integration in mySQL so everything I said here is outside of mySQL so all the tests are in boost geometry with standalone library yes and as far as I know in mySQL there is andeuer, thomas and vincente and you also have spherical so I don't know how you can get them but they are there ok so the first and the fourth yes so the question is regarding area computation so we have algorithms for areas that are parametrized by distance functions so there is a generic algorithm that takes as a parameter one of these formulas actually right now as it is in boost geometry it takes only andeuer, thomas, vincente and spherical so these are new and compute the area there is a github page that has some examples but as functionality is there and it's stable enough I haven't done extensive experiments as this but that data set has also areas so I guess maybe it could make sense to also compute areas but I didn't know that users are interested in areas so maybe yes if you have an application yes I guess in buildings even spherical or even some projections will be I mean what do you mean ah ok ok ok there are mountains and this stuff so it's good for Belgium at least yes yes so yes so but this is the very core functionality I mean if you want to use it to count if you have a GPS track I guess you can yes so you can use also the altitude ok so this would be a nice future work thanks