2026三维webgis开发面试题+答案
本文分享一套三维webgis开发真实面试题是已经上岸的学长分享小编根据过往学习内容整理出答案大家可以结合自己的学习经验以及项目经验调整方便在面试过程中应对自如。问题如下1. 常用的gis数据类型2. 三维数据3. 加载过json数据,如何修改颜色4. GIS分析功能5. js用的怎么样?jquery?6. 数据库熟悉哪些?7. 多表查询简单说一下8. Cesium接口用过哪些?9. 模型怎么加载?10. 有用过别的接口加载点线面?11. 怎么使用接口加载地图文档1. 常用的gis数据类型主要接触了矢量和栅格这两大类核心GIS数据。矢量数据就是点、线、面平时实操常用GeoJSON格式还有Shapefile、KML这些基础格式栅格数据主要是影像、瓦片图像PNG、JPG格式的地图瓦片还有TIFF格式的高程相关数据。另外做三维开发时还有3DTiles和glTF/GLB模型数据以及服务书WMS、WFS加载地图和矢量要素时经常用到。2. 三维数据最常用的是3DTiles格式主要用来加载倾斜摄影或者精修模型还有glTF/GLB模型这种用来加载基础的三维模型另外还有DEM、DTM这类地形三维数据配合WebGL和Three.js的几何体、纹理数据能实现三维场景的渲染。3. 加载过json数据,如何修改颜色先通过对应GIS框架OpenLayers、MapboxGL、Cesium加载GeoJSON数据获取图层或要素对象以openlayers为例new ol.layer.Vector({ source: new ol.source.Vector({ url: data.geojson, format: new ol.format.GeoJSON() }), style: new ol.style.Style({ fill: new ol.style.Fill({color: #ff0000}), stroke: new ol.style.Stroke({color: #000, width: 1}) }) })利用框架自带的样式API直接修改要素的填充色、边框色、透明度比如MapboxGL/OpenLayers设置fillColor、strokeColorCesium修改实体的material颜色可根据数据属性实现条件渲染灵活调整不同要素的颜色区分贴合实操场景。4. GIS分析功能- 基础交互分析点选、框选查询地图缩放、平移等交互以及距离、面积测量- 核心空间分析缓冲区分析、叠加分析交集、并集还有高德地图平台的LBS可视化与空间分析- 三维分析Cesium中的地形分析、剖面分析、可视域分析以及地形开挖等实操功能5. js用的怎么样?jquery?从基础语法到高级特性再到DOM、BOM操作都反复练过能独立完成WebGIS前端的交互开发比如地图的各种交互效果、数据渲染都是我用JS写的。jQuery能快速实现DOM操作、AJAX请求配合前端开发与GIS数据请求满足项目实操需求。6. 数据库熟悉哪些?MySQL配合Node.js后端开发做过数据库的增删改查然后是PostgreSQLPostGIS了解它的空间数据存储和查询特性。另外对SQL Server也有基础了解还有MongoDB、Redis知道它们在项目中可以辅助存储数据适配不同的GIS开发场景。7. 多表查询简单说一下多表查询我学过核心就是通过主键、外键这些关联字段把多张表联合起来查。- 常用类型INNER JOIN取两张表匹配的数据、LEFT JOIN左表全部数据右表匹配数据- 实际用途在WebGIS开发中常用来关联空间表存储地理信息和属性表存储额外信息实现地理要素与属性数据的联合查询支撑地图点击查询等功能。8. Cesium接口用过哪些?Cesium常用的接口都实操过。比如Viewer接口用来初始化三维场景const viewer new Cesium.Viewer(cesiumContainer);Entity和Primitive用来加载点线面要素viewer.entities.add({ point: {pixelSize: 10, color: Cesium.Color.BLUE}, position: Cesium.Cartesian3.fromDegrees(116.4074, 39.9042) });Cesium3DTileset接口加载3DTiles模型const tileset viewer.scene.primitives.add( new Cesium.Cesium3DTileset({url: ./tileset.json}) );还有Camera控制相机视角ScreenSpaceEventHandler处理鼠标点击、拖拽这些交互ImageryLayer加载影像底图Terrain加载地形GeoJsonDataSource加载GeoJSON数据。9. 模型怎么加载?模型加载两种最常用的方式都是用Cesium实现的。一种是3DTiles模型也是最常用的const viewer new Cesium.Viewer(cesiumContainer); const tileset viewer.scene.primitives.add( new Cesium.Cesium3DTileset({url: 模型路径/tileset.json}) );另一种是glTF/GLB模型viewer.entities.add({ position: Cesium.Cartesian3.fromDegrees(116.4074, 39.9042), model: { uri: 模型路径/model.gltf, scale: 1.0 } });10. 有用过别的接口加载点线面?有的除了GeoJSON我还用过WFS服务加载矢量要素new ol.layer.Vector({ source: new ol.source.Vector({ url: http://localhost:8080/geoserver/wfs?serviceWFSversion1.0.0requestGetFeaturetypeNameworkspace:layeroutputFormatapplication/json, format: new ol.format.GeoJSON() }) });另外Node.js后端开发还用过自定义的API接口返回JSON格式的数据前端解析后渲染点线面还有OpenLayers、MapboxGL的自带接口也能加载点线面。11. 怎么使用接口加载地图文档用ArcGIS MapServer服务先获取它的服务地址然后用对应框架的接口加载。比如Cesium里用ArcGisMapServerImageryProviderconst viewer new Cesium.Viewer(cesiumContainer, { imageryProvider: new Cesium.ArcGisMapServerImageryProvider({ url: http://xxx/arcgis/rest/services/xxx/MapServer }) });OpenLayers或Leaflet就用TileLayer加载瓦片形式的地图文档new ol.layer.Tile({ source: new ol.source.TileArcGISRest({ url: http://xxx/arcgis/rest/services/xxx/MapServer }) });另外也用过WMS服务加载地图文档步骤都差不多先获取服务地址再用框架的图层类加载就能在地图上显示出来。