Wolfram Language

Fotografía computacional

Analice un viaje por medio de meta-datos de imagen

Usando imágenes y sus meta-datos, usted puede realizar cómputos geográficos para visualizar y analizar un recorrido a pie en Lisboa, Portugal.

Importe y analice una colección de fotos tomadas durante una visita.

In[1]:=
Click for copyable input
files = Map[ img \[Function] ExampleData[img, "FilePath"], ExampleData[{"TestImageSet", "Lisbon2016"}] ];

Agrupe toda la información requerida en una asociación.

In[2]:=
Click for copyable input
labels = {"Thumbnail", "DateTime", "GeoPosition"};
In[3]:=
Click for copyable input
dataSet = Dataset@Map[ file \[Function] AssociationThread[ labels -> Import[file, {labels}, IncludeMetaInformation -> False]], files ]
Out[3]=

Visualice las locaciones donde las imágenes fueron tomadas.

In[4]:=
Click for copyable input
gps = dataSet[[All, "GeoPosition"]]; GeoGraphics[GeoMarker@gps, GeoRangePadding -> Quantity[100, "Meters"]]
Out[4]=

Calcule la distancia a pie para tomar todas las fotos y regresar.

In[5]:=
Click for copyable input
closeLoop = path \[Function] Append[path, First[path]];
In[6]:=
Click for copyable input
sortedGPS = closeLoop@ Normal@dataSet[SortBy["DateTime"], Take[#GeoPosition, All, 2] &]; UnitConvert[ TravelDistance[sortedGPS, TravelMethod -> "Walking"], "Kilometers"]
Out[6]=

Visualice la ruta para tomar todas las fotos en un orden cronológico.

In[7]:=
Click for copyable input
travel = TravelDirections[sortedGPS, TravelMethod -> "Walking"]
Out[8]=
In[9]:=
Click for copyable input
Animate[ GeoGraphics[{ Style[Normal@travel["Dataset"][1 ;; n, "Path"], Thick, Red], dataSet[All, GeoMarker[Take[#GeoPosition, All, 2], #Thumbnail] &]}, GeoRangePadding -> Quantity[200, "Meters"] ], {n, 1, Length[travel["Dataset"]] + 1, 1} ]
Reproducir
Detener

Calcule y visualice la ruta más corta que pudo haber sido usada.

In[10]:=
Click for copyable input
optimalPath = FindShortestTour[Normal@sortedGPS, DistanceFunction -> (QuantityMagnitude[ TravelDistance[{#1, #2}, TravelMethod -> "Walking"], "Kilometer"] &)]
Out[10]=
In[11]:=
Click for copyable input
Quantity[First@optimalPath, "Kilometers"]
Out[11]=
In[12]:=
Click for copyable input
shortestGPS = sortedGPS[[Last@optimalPath]];
In[13]:=
Click for copyable input
shortestTravel = TravelDirections[shortestGPS, TravelMethod -> "Walking"]
Out[14]=
In[15]:=
Click for copyable input
Animate[ GeoGraphics[{ Style[Normal@shortestTravel["Dataset"][1 ;; n, "Path"], Thick, Blue], dataSet[All, GeoMarker[Take[#GeoPosition, All, 2], #Thumbnail] &]}, GeoRangePadding -> Quantity[200, "Meters"] ], {n, 1, Length[shortestTravel["Dataset"]] + 1, 1} ]
Reproducir
Detener

Ejemplos relacionados

de en fr ja ko pt-br ru zh