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