(* Creating geo files *.kml for each date *) maintainDatesKML := ( Print["Creating KML files for each date ..."]; gpstolerance = 60; kmlhead = " "; kmlfoot = " "; textall = Table[ {date, pics0} = csubset; sdate = DateString[date, {"MonthName", " ", "DayShort", ", ", "Year"}]; pics0 = Select[pics0, (roll = #[[2]]; fn = #[[3]]; t = shootingdata["datetime", roll, fn]; Head[t] === List)&]; (* Selecting GPS tracks *) nmid = Round[Length[pics0]/2 + 0.1]; {year, roll, fn} = pics0[[nmid]]; tz1 = shootingdata["timezone1", roll, fn]; If[!NumberQ[tz1], tz1 = 0]; times0 = shootingdata["datetime", #[[2]], #[[3]]] & /@ pics0; times0 = Round /@ AbsoluteTime /@ times0 - 3600 tz1; tmin = Min[times0]; tmax = Max[times0]; gpstimes0 = Select[gpstimes, (First[#] - gpstolerance <= tmax && tmin <= Last[#] + gpstolerance) &]; gpstimes0 = Select[gpstimes0, Or @@ Table[First[#] - gpstolerance <= t <= Last[#] + gpstolerance, {t, times0}] &]; mgps = Length[gpstimes0]; pics0 = Select[pics0, (roll = #[[2]]; fn = #[[3]]; geolocat = shootingdata["gps position", roll, fn]; Head[geolocat] === List && ToExpression[shootingdata["gps delay", roll, fn]] < 60)&]; mpics0 = Length[pics0]; If[mpics0 != 0, noPrint["Creating KML: Processing date ", date]; dirdatekmz = ToFileName[{dir0, "date-loc"}]; checkdir1[dirdatekmz]; (* kml = ToFileName[dirdatekmz, dateS[date, "-"] <> ".kml"]; *) kmz = ToFileName[dirdatekmz, dateS[date, "-"] <> ".kmz"]; (* rolltit = rollcaption[roll];*) text = { (* Adding line styles *) If[mgps > 0, SeedRandom[Plus@@date]; coffset = RandomReal[]; Table[ hue = coffset + (ngps - 1)/mgps; col = hex /@ (List @@ ColorConvert[Hue[hue], "RGB"]); col = "CC" <> col[[3]] <> col[[2]] <> col[[1]]; "\[NewLine]", {ngps, mgps}], ""], "" <> sdate <> ": mushrooms Alexey Sergeev " <> (* urlroot <> "pictures/archives/" <> year <> "/" <> roll <> "/browser.htm\" /> *) "1 " <> sdate <> ": mushrooms (" <> ToString[mpics0] <> " pictures)", Table[ {year, roll, pic} = pic3; capt = addsymb[ncaption[caption[roll, pic]]]; geolocat = shootingdata["gps position", roll, pic]; geolocat = StringTrim /@ (ToString /@ (NumberForm[#, {9, 6}, ExponentFunction -> (Null &)] & /@ geolocat)); geolocat = StringJoin[Riffle[Reverse[geolocat], ","]]; alt = shootingdata["gps altitude", roll, pic]; If[NumberQ[alt], geolocat = geolocat <> "," <> ToString[alt]]; plname = placename[roll, pic]; If[Head[plname] === String, plname = "

" <> plname <> "", plname = ""]; dat = shootingdata["datetime", roll, pic]; If[Head[dat] === List, dat = "

" <> DateString[dat, {"Year", ":", "Month", ":", "Day", " ", "Hour", ":", "Minute", ":", "Second"}] <> "", dat = ""]; {w, h} = ToString /@ whresizem[picsize[roll, pic]]; date0 = shootingdata["datetime", roll, pic]; diff0 = shootingdata["gps delay", roll, pic]; diff = Round[ToExpression[diff0]]; If[diff > 2, df = ToString[diff]; If[diff > 9, df = "" <> df <> ""]; df = "

Showing position measured " <> df <> " minutes before the shot was taken.", df = ""]; If[diff0 === "00", df = "

Showing position interpolated from GPS tracks."]; styleid = roll <> "x" <> pic; " " <> roll <> "-" <> pic <> " (* Removing bad symbols! *) " <> StringReplace[capt, {"&" -> ""}] <> " #map" <> styleid <> " " <> geolocat <> " ", {pic3, pics0}], (* Adding tracks *) If[mgps > 0, (* Print["Date ", date, " - adding tracks: ", mgps]; *) Table[ {gpsts = gpstimes0[[ngps]]; {t1, t2} = {First[gpsts], Last[gpsts]} + 3600 tz1; tmid = Round[(t1 + t2)/2]; sdate = DateString[tmid, {"MonthName", " ", "DayShort", ", ", "Year", " - ", "DayName"}]; t1 = DateString[t1, {"Hour", ":", "Minute", ":", "Second"}]; t2 = DateString[t2, {"Hour", ":", "Minute", ":", "Second"}]; desc = t1 <> "-" <> t2; (* Print[ngps, ": ", desc]; *) " Tracks for " <> sdate <> " " <> desc <> " #line" <> ToString[ngps] <> " ", Table[ {x, y} = printf /@ gpscoordinates[gpst]; "\[NewLine]" <> y <> "," <> x, {gpst, gpsts}], "\[NewLine] "}, {ngps, mgps}], ""] }; textexp = StringJoin[Riffle[Flatten[{kmlhead, text, kmlfoot}], ""]]; (*Export[kml, textexp, "Text", CharacterEncoding -> "UTF8"];*) Export[kmz, {textexp}, {"ZIP", {{"map.kml", "Text"}}}, CharacterEncoding -> "UTF8"]; ]; (* If[mpics0 != 0, *) If[mpics0 != 0, text, ""], {csubset, csubsets}]; textall = Select[textall, (# =!= "")&]; textallexp = StringJoin[Riffle[Flatten[{kmlhead, textall, kmlfoot}], ""]]; kmzall = ToFileName[dir0, "index.kmz"]; Export[kmzall, {textallexp}, {"ZIP", {{"map.kml", "Text"}}}, CharacterEncoding -> "UTF8"]; Print["Creating KML files - completed"]; );