Cesium carga 3dtile y superpone geojson (tutorial de nivel de niñera)

He estado investigando este problema durante un tiempo y finalmente lo resolví hoy, con la ayuda de muchas personas; de lo contrario, puede llevar mucho tiempo encontrar la solución.

Antes de comenzar, asumimos que ya conoce los métodos más básicos de uso de cesium, como descargar cesium, iniciar cesium, etc.

Bien, vayamos al grano. En primer lugar, además de los archivos de código fuente de cesium, también necesita: 1. El archivo osgb y el archivo dwg correspondientes (este artículo lo toma como ejemplo). 2. Software Qgis. 3. Laboratorio de cesio. 4. software arcmap.

Divida en dos partes para operar:

1. Procesamiento de archivos dwg:

Use su arcmap para abrir el archivo dwg y convertir el formato dwg a un archivo shp (método: seleccione el archivo -> clic derecho -> datos -> exportar datos). Cargue el archivo shp exportado en arcmap. En este momento, necesita conocer el sistema de coordenadas inicial del archivo que desea convertir. Aquí está CGCS2000 114E, así que defina el archivo shp importado como CGCS2000 114E, y luego use la proyección en el toolbox, modifique la proyección del archivo shp a wgs 84 (porque el sistema de coordenadas predeterminado de cesium lo hace, si no quiere algunos problemas extraños en su archivo json posterior, simplemente actívelo).

Una vez completada la conversión, recuerde verificar la esquina inferior derecha de su mapa de arco para ver qué tan grande es el número. Si todavía es un número grande (decenas de miles), significa que acaba de definir el sistema de coordenadas pero no convirtió correctamente Si usa estos datos para operaciones posteriores, y el resultado de su cesio debería ser así.

Si se convierte correctamente (obviamente, es la longitud y latitud geográfica), entonces recuerde verificar las propiedades de su shp en este momento para ver si existe este ZM. Si es así, debe convertir los datos vectoriales tridimensionales primero en dos dimensiones y luego Continúe con el siguiente paso.

 

 Método de conversión de 3D a 2D: 1. Abra la barra de menú de arcmap geoprocesamiento->entorno->ajuste el valor M y el valor Z a Desactivado y guarde. 2. Abra la barra de herramientas, seleccione la función para convertir a shapefile, no use la exportación de datos como se indicó anteriormente.

 

 Después de exportar, se encuentra que falta ZM, lo que significa que la conversión se ha realizado correctamente.

En este momento, abra el software Qgis, cargue el archivo shp que se acaba de procesar, seleccione de acuerdo con el método de imagen y luego seleccione el formato como Geojson y expórtelo directamente.

 

Después de exportar los datos, recuerde eliminar el nombre y los atributos crs en geojson, y luego cambie el sufijo de geojson a json directamente, y luego puede llamarlo en el código de cesio.

Bueno, ahora que la primera parte está completa, comencemos la segunda parte.

2. Procese el archivo osgb:

Abra el cesiumlab que descargó (dirección de descarga: sitio web oficial de Cesium Lab ), haga clic en descargar en la página de inicio y complete la instalación después de la descarga. Luego abra cesiumlab, registre una cuenta e ingresará a esta página.

Haga clic en el cuadro rojo en la imagen de arriba (corte de modelo inclinado), seleccione su archivo, configure los parámetros y preste atención para cambiar el tipo de almacenamiento a hash. Luego haga clic para iniciar la conversión y luego espere la conversión en silencio.

Después de que la conversión sea exitosa, encontrará que hay un archivo tileset.json en su ruta de salida, que es el archivo al que apunta la URL cuando usa cessium.

Después de completar los dos pasos anteriores, puede usar cesium para cargar.

Adjunte el código cargado:

// 这个就是你通过Qgis转换出来的geojson文件
function load_shp3d() {
  var tileset = viewer.dataSources.add(Cesium.GeoJsonDataSource.load('xxx.json', {
    fill: Cesium.Color.PINK.withAlpha(0.5),
    clampToGround: true        // 叠加就用它
  }))
   viewer.zoomTo(tileset);     // 定位到你的数据
   viewer.homeButton.viewModel.command.beforeExecute.addEventListener(function (e) {
    e.cancel = true;
    viewer.zoomTo(tileset);    // 重写homebutton
  })
}

// 这个是你通过cessiumlab转化的osgb文件
function load_tileset() {
  var tileset = new Cesium.Cesium3DTileset({ url: 'xxx.json' })
  viewer.scene.primitives.add(tileset);
  viewer.zoomTo(tileset);  // 在初始化时定位至模型位置
  viewer.homeButton.viewModel.command.beforeExecute.addEventListener(function (e) {
    e.cancel = true;
    viewer.zoomTo(tileset);
  });
}

Finalmente, para evitar la baja velocidad de descarga de Qgis, compartiré mi paquete de instalación de Qgis con todos: Enlace: https://pan.baidu.com/s/1giG5jQxlcVZN1b8GiMWaUg?pwd=bsds 
Código de extracción: bsds

Supongo que te gusta

Origin blog.csdn.net/XFIRR/article/details/124833385
Recomendado
Clasificación