BimFileBO.php 2.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879
  1. <?php
  2. namespace App\BO;
  3. use Ramsey\Uuid\Uuid;
  4. class BimFileBO
  5. {
  6. public string $name;
  7. public string $extension;
  8. public bool $isCAD;
  9. public string $uniqueCode;
  10. public int $priority;
  11. public string $modelDownloadUrl;
  12. public array $pointCloudConfigJson;
  13. public string $modelType;
  14. public function __construct(
  15. string $extension,
  16. string $name,
  17. string $modelType = '',
  18. int $priority = 205,
  19. string $modelDownloadUrl = ''
  20. ) {
  21. $this->extension = $extension;
  22. $this->name = $name;
  23. $this->isCAD = in_array($this->extension, ['dwg', 'dwf', 'dws', 'dwt']);
  24. $this->uniqueCode = Uuid::uuid4();
  25. $this->priority = $priority;
  26. $this->modelDownloadUrl = $modelDownloadUrl;
  27. $this->modelType = $modelType;
  28. if (empty($this->modelType)) {
  29. $this->modelType = $this->guessModelType();
  30. }
  31. }
  32. private function guessModelType(): string
  33. {
  34. if ($this->isCAD) {
  35. return 'cad';
  36. }
  37. if (in_array($this->extension, config('bim.extensions'))) {
  38. return 'bim';
  39. }
  40. if (in_array($this->extension, config('bim.gis_extensions'))) {
  41. return 'gis';
  42. }
  43. return '';
  44. }
  45. /**
  46. * 设置点云GIS相关信息
  47. * @param array $pointCloudConfig
  48. * @return void
  49. */
  50. public function setPointCloudConfigJson(array $pointCloudConfig)
  51. {
  52. // epsg代码,指定空间参考,格式如:"EPSG:3857"
  53. if (isset($pointCloudConfig['srs'])) {
  54. $this->pointCloudConfigJson['srs'] = $pointCloudConfig['srs'];
  55. }
  56. // 指定数据原点相对空间参考的偏移量,分为xyz三个方向,单位米,默认为不偏移[0,0,0],设置此值可以让数据往相应的方向偏移
  57. if (isset($pointCloudConfig['origin'])) {
  58. $this->pointCloudConfigJson['origin'] = $pointCloudConfig['origin'];
  59. }
  60. // 经度 弧度制
  61. if (isset($pointCloudConfig['longitude'])) {
  62. $this->pointCloudConfigJson['longitude'] = $pointCloudConfig['longitude'];
  63. }
  64. // 纬度 弧度制
  65. if (isset($pointCloudConfig['latitude'])) {
  66. $this->pointCloudConfigJson['latitude'] = $pointCloudConfig['latitude'];
  67. }
  68. // 高度​
  69. if (isset($pointCloudConfig['height'])) {
  70. $this->pointCloudConfigJson['height'] = $pointCloudConfig['height'];
  71. }
  72. }
  73. }