首页 / 浏览问题 / WebGIS / 问题详情
如何将dwg格式文件转换为geojson
22EXP 2023年09月21日
如何将dwg格式文件转换为geojson,并且在前端如何通过webGL加载geojson文件

1个回答

您好,您可以使用第三方工具进行转换   DWG to GeoJSON Converter Online - MyGeodata Cloud

加载到前端可以在cesium中使用以下代码

viewer.dataSources.add(
    Cesium.GeoJsonDataSource.load(url, //要加载的 url、GeoJSON 对象或 TopoJSON 对象。
        {
            stroke: Cesium.Color.HOTPINK, //折线和多边形轮廓的默认颜色。
            fill: Cesium.Color.PINK.withAlpha(0.5), //多边形内部的默认颜色。
            strokeWidth: 3, //折线和多边形轮廓的默认宽度。
        }
    )
);

在webgl中也是同样的,可以参考这篇文章   GeoJsonDataSource - SuperMap3D Documentation

545EXP 2023年09月21日

cesium加载  报错了,请问是什么原因

这个错误表示在使用该名称时,无法识别或找到对应的坐标参考系统(CRS)。

您可以检查所使用的CRS名称是否正确。正确的EPSG:3857坐标参考系统的名称应为 "EPSG:3857",而不是 "urn:ogc:def:crs:EPSG::3857"。请确保使用正确格式的CRS名称。

修改之后坐标系还是有问题,是否对当前坐标系支持

 // 解决"RuntimeError", message: "Unknown crs name: urn:ogc:def:crs:EPSG::3857"
import {default as proj4} from 'proj4';
 
 
              Cesium.GeoJsonDataSource.crsNames[
                "urn:ogc:def:crs:EPSG::3857"
              ] = Cesium.GeoJsonDataSource.crsNames["EPSG:3857"] = function(
                coordinates
              ) {
                const firstProjection =
                  'PROJCS["WGS 84 / Pseudo-Mercator",GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]],PROJECTION["Mercator_1SP"],PARAMETER["central_meridian",0],PARAMETER["scale_factor",1],PARAMETER["false_easting",0],PARAMETER["false_northing",0],UNIT["metre",1,AUTHORITY["EPSG","9001"]],AXIS["X",EAST],AXIS["Y",NORTH],EXTENSION["PROJ4","+proj=merc +a=6378137 +b=6378137 +lat_ts=0.0 +lon_0=0.0 +x_0=0.0 +y_0=0 +k=1.0 +units=m +nadgrids=@null +wktext  +no_defs"],AUTHORITY["EPSG","3857"]]';
                const secondProjection =
                  'GEOGCS["WGS 84",DATUM["WGS_1984",SPHEROID["WGS 84",6378137,298.257223563,AUTHORITY["EPSG","7030"]],AUTHORITY["EPSG","6326"]],PRIMEM["Greenwich",0,AUTHORITY["EPSG","8901"]],UNIT["degree",0.0174532925199433,AUTHORITY["EPSG","9122"]],AUTHORITY["EPSG","4326"]]';
 
                const xa = coordinates[0];
                const ya = coordinates[1];
 
                const newCoordinates = proj4(
                  firstProjection,
                  secondProjection,
                  [xa, ya]
                );
                return Cesium.Cartesian3.fromDegrees(
                  newCoordinates[0],
                  newCoordinates[1],
                  0
                );
              };

 cesium默认的坐标系是WGS84,需要做坐标转换。加入上面代码拓展一下Cesium.GeoJsonDataSource.crsNames即可,您也可以参考这篇文章关于Cesium的Unknown crs name: urn:ogc:def:crs:EPSG::26918问题 - 灰信网(软件开发博客聚合) (freesion.com)

...