Using dynamic SQL the query could look something like this:
DECLARE @cols  AS NVARCHAR(MAX),
        @query AS NVARCHAR(MAX)
SELECT @cols = STUFF((SELECT ',' + QUOTENAME(rn)
                    FROM (
                    SELECT d.*, p.photoPath, rn = CONCAT('Photo Path ',ROW_NUMBER() OVER (PARTITION BY d.id ORDER BY p.id)) 
                    FROM data d 
                    JOIN photo p ON d.ID = p.id_from_Data_table
                ) yourtable
                    GROUP BY rn
                    ORDER BY rn
            FOR XML PATH(''), TYPE
            ).value('.', 'NVARCHAR(MAX)') 
        ,1,1,'')
SET @query = N'
    SELECT lat, lon, ' + @cols + N' 
    FROM 
    (
       SELECT 
          d.*, 
          p.photoPath, 
          rn = CONCAT(''Photo Path '', ROW_NUMBER() OVER (PARTITION BY d.id ORDER BY p.id)) 
       FROM data d 
       JOIN photo p ON d.ID = p.id_from_Data_table
    ) x
    PIVOT 
    (
       MAX(photoPath) FOR rn IN (' + @cols + N')
    ) p;'
EXEC sp_executesql @query;
Sample SQL Fiddle