GPS feature requests

Werner
2009-12-31
2013-05-30
  • Jin
    Jin
    2009-12-31

    Let's have a separate look at each of them.

    First, the request regarding map overlay:

    can be done. One potential problem may be the speed - you press play, we request the map image from google, finally use some image processing library like ImageMagic to do the overlaying - bear in mind, it's not the fastest one, I also tried it on embedded devices and performance was a nightmare there. So overall, depending on the connection you can expect a couple of seconds delay. While this might be acceptable when you start watching a longer video, having such a delay for each photograph might be disturbing.

    Nevertheless, technically I do not see any serious obstacles here.

    Regarding your second proposal… I do not quite understand how exactly you want to do the navigation, after all - the folders can only have a name, you can not interactively navigate in an image.

    > Now imagine MT would have an additional navigation node called
    Geo-Browsing.

    OK…

    > When you open that node you will see one image of the earth
    where each image with a GPS coordinate is overlayed as a circle with some transparency.

    There is already a problem with that: you need to keep containers and items apart, so what do you mean by "open that node"? If you see a container, you only see it's textual name, if navigate into a container, you see it's child objects. In both cases you do not see "one image of the earth", you'd have to play an item to see that. And after you played it, you return to the container where you were, so that's not very useful for navigation…

     
  • Werner
    Werner
    2009-12-31

    Imagine a tree like this:

    <UL>
    <LI>PC_Directory
    </LI>
    <LI>Photos
      <UL>
      <LI>Date</LI>
      <LI>Camera</LI>
      <LI>Geo
        <UL>
        <LI>WORLD
          <UL>
          <LI>WORLD.JPG</LI>
          <LI>US
            <UL>
            <LI>US.JPG</LI>
            <LI>photo1.jpg</LI>
            <LI>photo2.jpg</LI>
            <LI>photo3.jpg</LI>
            </UL>
          </LI>
          <LI>CENTRAL-EUROPE
            <UL>
            <LI>CENTRAL-EUROPE.JPG</LI><LI>FRANCE<UL><LI>FRANCE.JPG</LI>
            <LI>photo-of-paris.jpg</LI></UL>
            <LI>HOMEAREA
              <UL>
                <LI>MAP-OF-OUR-HOUSE.JPG</LI>
                <LI>photo1200.jpg</LI>
                <LI>photo1201.jpg</LI>
                <LI>…</LI>
                <LI>…</LI>
                <LI>photo9000.jpg</LI>
              </UL>
            </LI>
            <LI>VACATION-AREA
              <UL>
                <LI>MAP-OF-ROME.JPG</LI>
                <LI>photo100.jpg</LI>
                <LI>photo101.jpg</LI>
                <LI>…</LI>
                <LI>…</LI>
                <LI>photo300.jpg</LI>
              </UL>
            </LI>
            </UL>
          </LI>
          </UL>
        </LI>
        </UL>
      </LI>
      </UL>
    </LI>
    </UL>

    (everything in uppercase is generated).

    During the import of the photos, we collect information regarding  cluster areas of photos. In our example I have 3 photos from US, one taken in Paris, 7801 taken at home and 201 in Rome.
    The algorithm might be as simple as

    How many images do you have at zoom level 0 (world)? 10000. Okay, so we need to divide that further.

    Create a file WORLD.JPG with the image locations and add it to the WORLD container.

    Take first photo coordinates, how many photos fit into that map with zoom level 1 (Continent)? Three, the three photos I have taken in US. Good, so we are done with that photo and the two others. Those three photos will be shown on a map of all of US, even if all three have been taken in the same city.

    Take next photo (Paris) and how many photos will fit into a map with zoom level 1? 9000. Okay, let's drill deeper.

    How many will fit in zoom level 2? 9000. Okay, let's drill deeper.

    How many will fit in zoom level 3? 1. That was too deep.

    Create a node CENTRAL-EUROPE with zoom level 2 and add a map image with the location of the 9000 photos.

    Create a node FRANCE with zoom level 3 and a map with the one photo and the Paris photo itself.

    Next image, how many fit into zoom level 3? The 7801 taken at home.

    Drill deeper, how many fit? 7801. Drill deeper, how many fit? 7801. Drill deeper,….. Until you are at street level and still all 7801 photos fit into the map. Okay, deeper it does not get, so add this as a node HOMEAREA, a map and all photos.

    Take next photo (made in Rome), zoom deeper until the first photos fall off the map. The last zoom level containing all photos causes a node to be created (VACATION-AREA). Are there more than x photos in the map? If yes create sub-maps, if no add the photos underneath.

    The entire point is for areas that are well know - have many photos - we go very deep, areas where there are just a few hundred photos we show an overview map. Or in other words, build maps with 300 photos at the max unless we are on the most detailed level, there any kind of number of photos can be shown. And these individual maps form a hierarchy.

    ATTENTION: For both GPS features I would not build the map on request, I would build it while importing the images into the database or shortly afterwards. So from your wait time, the google time and the cluster building has been done already. All we do now is overlay the photo with the most detailed cluster-map image we have in the cache and add a crosshair for the individual photo.