[MUSIC] In this lecture, we will discuss geolocation coordinates, longitude and latitude, and adding geolocation coordinates to our image object so we can begin to perform functions based on where things are located. The geolocation coordinate system is based upon two primary attributes, longitude and latitude. Longitude is a value based upon an angle, in degrees, from Greenwich, England, either east or west. If you head east toward Asia, you're heading in the positive direction. If you head west towards North America, you're heading in the minus direction. For example, if you head towards Baltimore, Maryland, you're heading to -76 degrees. Latitude, on the other hand, goes from the equator towards the poles. If you go towards the south pole, you're heading in the negative direction, and if you head towards the north pole, you're heading in the positive direction. For example, to head to Baltimore, Maryland, you'd be heading in a positive 39 degrees, and this is where Baltimore Inner Harbor is, based upon the overall map. We will refer to this latitude and longitude as a position. Now there seems to be multiple ways in which we can represent these coordinates. We could represent them as arrays where we put latitude and then longitude, or longitude and then latitude. It's a little ambiguous when you take a look at it. We could implement it as hashes. And this is a lot more explicit, where each value is keyed on whether it is latitude and longitude. I like this. And then there's the GeoJSON standard for type point which lists coordinates as arrays. To me, it's a little ambiguous. And they list their example on their website as longitude and latitude. So I'm going to take my key from the GeoJSON site and say that, if ever I'm being ambiguous, like an array, like parameters, I'm always going to try to speak about longitude first, and then latitude. Just to enforce some consistency, because outside of these data types, we could also have parameters into functions where one could take a latitude and longitude, or longitude and latitude. And as I said, for consistency, if I ever do these techniques, I'm going to take longitude ahead of latitude and then, of course, also look to be totally unambiguous and accept some kind of type that represents explicitly which value is latitude and longitude. That is a much safer way to pass parameters. So in this overall module, and within this lesson, we are going to implement a few value objects that represent locations on the Earth. There are several properties we could have included. I've chosen three here that are available from our geolocation service. They are formatted_address, position, and address. I'll be first worrying about position in this lecture. Address is a postal address, a simplistic one, street address, city, state code, zip, and country code. Position is a point, a lat and lng. So, if you put them all together, they provide a nice, textual, descriptive postal address to put on a display. It provides coordinates to where we can navigate specifically to that location, and provides fielded information in which, basically breaks up the formatted_address into pieces. We're going to start integrating location information by putting position into images, inserting latitude and longitude. And so, over the course of this lecture, we're going to be focusing on adding geolocation properties to our image by adding individual properties, as well as to express a position implemented by a point value object. And then, the rest of the module, we'll start worrying about using that information in order to calculate distances. All right, let's get started expressing position within our image. In summary, we introduced geographic coordinates, longitude and latitude, as a means to identify positions on the Earth. And identified a location representation that we are going to use throughout this module and the rest of the application, dealing with formatted address, position, and a postal address that'll identify the location of things. And then we will soon represent position, longitude and latitude, within images, using the point class. And this will prepare us for use with queries and calculations that can leverage position information. What's next? Image position and value objects. Let's get down to the implementation details of representing longitude and latitude within image, wrapped by a point value object representing a position concept.