export_panoramas.php 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  1. <?php
  2. /* Converts a panorama to a dictionary with all parameters. */
  3. /* Given "foo.tif", fetch parameters from "tiles/foo/site.params" */
  4. function load_panorama($image_name) {
  5. $components = pathinfo($image_name);
  6. $celutz_dir = pathinfo($components["dirname"])["dirname"];
  7. $params_file = join("/", array($celutz_dir, "tiles", $components["filename"], "site.params"));
  8. $params = parse_ini_file($params_file);
  9. if (! $params)
  10. return false;
  11. $result = array();
  12. $result["loop"] = (boolean) $params["image_loop"];
  13. $result["name"] = $params["titre"];
  14. // Relative to Django's MEDIAROOT
  15. $result["image"] = "pano/" . $components["basename"];
  16. $result["latitude"] = (float) $params["latitude"];
  17. $result["longitude"] = (float) $params["longitude"];
  18. $result["altitude"] = (float) $params["altitude"];
  19. return $result;
  20. }
  21. /* Convert all panoramas images found in the given directory to JSON */
  22. function convert_panoramas($upload_dir) {
  23. /* The Django model uses inheritance, so we need to create both the
  24. * panorama and the associated reference point, with the same ID. */
  25. $panoramas = array();
  26. $refpoints = array();
  27. $id = 1;
  28. foreach (scandir($upload_dir) as $pano) {
  29. if ($pano == "." || $pano == "..")
  30. continue;
  31. $params = load_panorama($upload_dir . "/" . $pano);
  32. if (! $params)
  33. continue;
  34. $p = array("pk" => $id, "model" => "panorama.panorama");
  35. $r = array("pk" => $id, "model" => "panorama.referencepoint");
  36. $p["fields"] = array("loop" => $params["loop"], "image" => $params["image"]);
  37. $r["fields"] = array("name" => $params["name"],
  38. "latitude" => $params["latitude"],
  39. "longitude" => $params["longitude"],
  40. "altitude" => $params["altitude"]);
  41. $panoramas[] = $p;
  42. $refpoints[] = $r;
  43. $id++;
  44. }
  45. return json_encode(array_merge($panoramas, $refpoints), JSON_PRETTY_PRINT);
  46. }
  47. if (isset($argv[1])) {
  48. print(convert_panoramas($argv[1] . "/upload"));
  49. } else {
  50. printf("Usage: %s /path/to/celutz\n", $argv[0]);
  51. }
  52. ?>