12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879 |
- <?php
- namespace App\BO;
- use Ramsey\Uuid\Uuid;
- class BimFileBO
- {
- public string $name;
- public string $extension;
- public bool $isCAD;
- public string $uniqueCode;
- public int $priority;
- public string $modelDownloadUrl;
- public array $pointCloudConfigJson;
- public string $modelType;
- public function __construct(
- string $extension,
- string $name,
- string $modelType = '',
- int $priority = 205,
- string $modelDownloadUrl = ''
- ) {
- $this->extension = $extension;
- $this->name = $name;
- $this->isCAD = in_array($this->extension, ['dwg', 'dwf', 'dws', 'dwt']);
- $this->uniqueCode = Uuid::uuid4();
- $this->priority = $priority;
- $this->modelDownloadUrl = $modelDownloadUrl;
- $this->modelType = $modelType;
- if (empty($this->modelType)) {
- $this->modelType = $this->guessModelType();
- }
- }
- private function guessModelType(): string
- {
- if ($this->isCAD) {
- return 'cad';
- }
- if (in_array($this->extension, config('bim.extensions'))) {
- return 'bim';
- }
- if (in_array($this->extension, config('bim.gis_extensions'))) {
- return 'gis';
- }
- return '';
- }
- /**
- * 设置点云GIS相关信息
- * @param array $pointCloudConfig
- * @return void
- */
- public function setPointCloudConfigJson(array $pointCloudConfig)
- {
- // epsg代码,指定空间参考,格式如:"EPSG:3857"
- if (isset($pointCloudConfig['srs'])) {
- $this->pointCloudConfigJson['srs'] = $pointCloudConfig['srs'];
- }
- // 指定数据原点相对空间参考的偏移量,分为xyz三个方向,单位米,默认为不偏移[0,0,0],设置此值可以让数据往相应的方向偏移
- if (isset($pointCloudConfig['origin'])) {
- $this->pointCloudConfigJson['origin'] = $pointCloudConfig['origin'];
- }
- // 经度 弧度制
- if (isset($pointCloudConfig['longitude'])) {
- $this->pointCloudConfigJson['longitude'] = $pointCloudConfig['longitude'];
- }
- // 纬度 弧度制
- if (isset($pointCloudConfig['latitude'])) {
- $this->pointCloudConfigJson['latitude'] = $pointCloudConfig['latitude'];
- }
- // 高度
- if (isset($pointCloudConfig['height'])) {
- $this->pointCloudConfigJson['height'] = $pointCloudConfig['height'];
- }
- }
- }
|