0


WebGIS开发最全技术面试题(3万字干货)

最全webgis二三维开发面试题(带答案),全文3万字干货~

完整版PDF请后台私信或点击下方链接:

领取完整版面试题


以下为正文:

面试流程

1、技术面试流程:

  • 简单自我介绍
  • 八股文
  • 针对项目,问项目中的业务逻辑,以及使用的技术栈

2、有工作经历的

  • 你之前是做什么的
  • 做过哪些项目,在项目里承担的工作职责
  • 选择有亮点的,克服的难点去说
  • 确保你写的,⾯试官问的时候,你都能回答出来
  • 介绍项⽬着重点,在梳理清楚需求,理清业务逻辑
  • ⾮相关专业的⼈,⼀定说清楚⾃⼰的职业规划

3、面试中的话术

注意:技术⾯试中,不要有“好像”这个话术。

自我介绍(仅供参考):

您好,我是⼀名WebGIS开发⼯程师,具有丰富的WebGIS开发经验。我精通JavaScript、HTML、CSS 等前端技术,熟悉ArcGIS API for JavaScript、Leaflet等开源GIS库,能够快速开发WebGIS应⽤。

我有丰富的GIS应⽤开发经验,能够独⽴完成从需求分析、技术选型、开发实现、测试部署等全流程的开发⼯作。我在GIS数据的处理、空间分析、可视化展示等⽅⾯也有较为深⼊的研究和实践。

我具备良好的团队合作能⼒和沟通能⼒,能够有效地与产品经理、设计师、后端⼯程师等协作,共同完 成项⽬。同时,我对新技术和新⼯具有着浓厚的兴趣,能够快速学习和应⽤新技术。

我期待加⼊⼀个有活⼒、具有创新精神的团队,共同实现更多有意义的WebGIS应⽤。谢谢!

GIS八股文基础篇

1、WebGIS

WebGIS是⼀种基于Web技术的地理信息系统,它将地理数据和其他相关信息整合到⼀个⽹站或应用程序中,使用户可以在网上浏览和查询地理数据。以下是WebGIS开发地图基础知识的概述:

  1. 地图投影:地球表⾯是⼀个三维球体,但是为了在⼆维屏幕上显示地图,必须使⽤投影来将三 维球体表⾯映射到⼆维平⾯上。不同的地图投影具有不同的特点和应⽤场景。

  2. 地图缩放和漫游:WebGIS地图应⽤程序允许⽤户缩放和漫游地图,以便查看特定区域或地点的详细信息。缩放操作可以改变地图的⽐例尺,漫游操作可以移动地图的位置。

  3. 地图数据源:WebGIS地图应⽤程序需要使⽤地图数据源,包括⽮量数据和栅格数据。⽮量数 据包括点、线和⾯等地理要素,⽽栅格数据则是由像素组成的图像。

  4. 地图符号学:WebGIS地图应⽤程序使⽤符号学来表示地图数据,包括颜⾊、线条宽度、填充 模式等。符号学可以⽤于显示地理数据的不同属性。

  5. 地理空间分析:WebGIS地图应⽤程序还可以进⾏地理空间分析,如缓冲区分析、⽹络分析和 地理编码等。这些分析可以帮助⽤户更好地理解和利⽤地理信息。

  6. WebGIS开发⼯具:WebGIS地图应⽤程序可以使⽤多种开发⼯具进⾏开发,如ArcGIS API for JavaScript、OpenLayers和Leaflet等。这些⼯具提供了丰富的API和组件,可以快速创建⾼质量的WebGIS应⽤程序。

2、什么是动态投影?

通俗讲:在GIS中,动态投影(Dynamic Projection),是实时的可视化的展示地理空间数据的技术。

它可以将地理空间数据映射屏幕空间到中,并以动态的⽅式展示数据在不同时间点上的变化趋势。

通过动态投影,⽤户可以更好地理解地理空间数据的演化和趋势,从⽽更好的进⾏地理空间分析和决策。

动态投影在GIS中通常被⽤于可视化时间序列的地理空间数据,如⽓象数据,交通数据,⼈⼝数据等。它可以帮助⽤户更好地理解这些数据的变化趋势,并发现数据中的规律和趋势。

总之,动态投影是⼀种⾮常有⽤的技术,它可以帮助GIS⽤户更好地理解地理空间数据,并做出更加准备和可靠的决策。

3、Web端如何实时获取服务器数据

Ajax+定时器

function send(){ 
$.ajax({ 
url: "/test", 
success: function(res){ //处理res 
} 
}) 
} 
setInterval(function(){ 
send() 
}, 2000) 

WebSocket技术:

WebSocket技术可以建⽴客户端和服务器之间的双向通信通道,实现实时数据传输。当服务器端数据发⽣变化时,可以直接通过WebSocket将数据推送到客户端,实现实时更新。

//创建webSocket 
const socket = new WebSocket('ws://localhost:8080'); // 链接成功 
socket.addEventListener('open', function (event) { socket.send('Hello Server!'); 
}); 
// 接受消息 
socket.addEventListener('message', function (event) { console.log('Message from server ', event.data); 
}); 
//发送消息 
socket.send("你好") 

服务端:node

//先npm install ws 
var WebSocketServer = require('ws').Server, 
wss = new WebSocketServer({ port: 8080 });//服务端⼝8080 wss.on('connection', function (ws) { 
console.log('服务端:客户端已连接'); 
ws.on('message', function (message) { 
//打印客户端监听的消息 
console.log(message); 
ws.send('我也很好'); 
}); 
}); 

5、OGC服务有那⼏种服务

1、WMS(Web Map Service):地图服务

⽤于获取地图图像,以便在Web上进⾏显示。WMS服务通常允许⽤户以各种格式(若PNG,JPEG 等)检索地图图像。

2、WFS(Web Feature Service):矢量服务

⽤于获取地理空间数据,以便在Web上进⾏分析和查询,WFS服务通常允许⽤户以多种格式(如GML,JSON等)检索地理空间数据。

具体代码表现层⾯:如加载geojson数据

3、WCS(Web Coverage Service):栅格服务

⽤于获取遥感数据和其他覆盖范围数据。WCS服务允许⽤户以各种格式(如GeoTIFF、NetCDF 等)检索遥感数据。

4、WMTS(Web Map Tile Service):地图瓦片服务

它是OGC的⼀种服务,⽤于提供已切割为⼩图块的地图图像,以便在Web上进⾏显示。与WMS不 同,WMTS不会动态⽣成地图图像,⽽是将地图预先切割为固定⼤⼩的图块,并将其存储在服务 器上。客户端可以请求特定级别和坐标的特定图块,⽽⽆需请求整个地图图像。这样可以提⾼地图显示的效率和速度,特别是在处理⼤规模地图时。

6、瓦片金字塔

瓦⽚

指将⼀定范围内的地图按照⼀定的尺⼨和格式,按缩放级别或⽐例尺,切割成若⼲⾏和列的正⽅形栅格图⽚,对切⽚后的正⽅形栅格图⽚被形象的称为瓦⽚(Tile)。

7、WebGIS加载的地图有哪些类型

WebGIS是指基于Web技术实现的地理信息系统,可以加载各种类型的地图数据。以下是⼀些常⻅ 的地图类型:

  1. ⽮量地图:⽮量地图是由各种⼏何图形(如点、线、⾯等)构成的地图,通常⽤于表示⾃然和⼈⽂地理现象。⽮量地图可以缩放和旋转⽽不失真,因此在WebGIS中使⽤⼴泛。

  2. 栅格地图:栅格地图是由像素组成的地图,通常⽤于卫星图像和遥感图像。栅格地图的分辨率 通常较⾼,但在缩放和旋转时可能会出现失真。

  3. 三维地图:三维地图是指具有⽴体感的地图,可以显示建筑物、⼭脉、河流等地理要素的⾼度 信息。三维地图通常需要使⽤特殊的软件来制作和显示。

  4. 实时地图:实时地图可以显示实时交通、天⽓、航班和其他实时数据。这些地图通常需要使⽤ 实时数据接⼝和Web服务来获取数据。

  5. 混合地图:混合地图结合了⽮量地图、栅格地图和三维地图的优点,可以在同⼀个地图上同时 显示不同类型的数据。混合地图可以为⽤户提供更全⾯和丰富的地理信息。

除了以上列举的地图类型外,WebGIS还可以加载各种格式的地图数据,例如地形数据、⽓象数 据、流域数据等。

8、常见的地图参考系

  1. 地理坐标系:⼜称⼤地坐标系,基于地球椭球体上的经度和纬度进⾏测量的坐标系统。

  2. 投影坐标系:将地球表⾯上的点映射到平⾯地图上的坐标系统。常⻅的投影⽅式包括墨卡托投 影、兰伯特投影、等⻆圆锥投影等。

  3. CGCS2000 是使⽤⾼斯-克吕格投影

在WebGIS应⽤程序中,为了确保数据的准确性和⼀致性,应该使⽤与地理数据源相同的地图参考 系。如果需要在不同的地图参考系之间转换坐标,可以使⽤专⻔的地图投影⼯具进⾏转换。

9、CGCS2000和WGS:84的区别

CGCS2000是中国⼤地坐标系2000,是中国国家⼤地测量局于2000年发布的⼤地坐标系。它是 以地球质⼼为基准,采⽤国际地球参考系(ITRS)的空间坐标系,使⽤国际单位制(SI)来定义 ⼤地坐标。CGCS2000在中国⼤陆及其邻近地区得到了⼴泛应⽤,例如地图制图、GPS导航、地 震监测、⼯程测量等领域。

WGS 84是全球定位系统(GPS)使⽤的⼤地坐标系。它是由美国国防部和国家地球空间情报局

(NGA)于1984年共同发布的,是以地球质⼼为基准,采⽤国际地球参考系(ITRS)的空间坐标 系,使⽤国际单位制(SI)来定义⼤地坐标。WGS 84被⼴泛应⽤于GPS定位、地图制图、航海、 航空、测绘等领域。

两者的主要区别在于其参考椭球的不同。CGCS2000使⽤的参考椭球是GRS80(Geodetic Reference System 1980),⽽WGS 84使⽤的参考椭球是WGS84参考椭球。虽然两个参考椭球 都是基于相同的地球模型,但它们的参数略有不同,因此在不同的应⽤中可能会产⽣微⼩的差异。 此外,两个⼤地坐标系的坐标原点也不完全相同,因此在使⽤时需要注意区别。

Tips:在Openlayers的代码中,两者表现基本没有差别。

10、Openlayers中如何将CGCS2000转换为WGS:84

// 定义CGCS2000和WGS84的投影信息 
var cgcs2000Proj = new ol.proj.Projection({ 
code: 'EPSG:4490', 
units: 'm' 
}); 
var wgs84Proj = new ol.proj.Projection({ 
code: 'EPSG:4326', 
units: 'degrees' 
}); 
// 定义⼀个坐标点(以经纬度为例) 
var point = ol.proj.fromLonLat([116.38, 39.9], cgcs2000Proj); 
// 将坐标点从CGCS2000转换为WGS84 
var wgs84Point = ol.proj.transform(point, cgcs2000Proj, wgs84Proj); // 打印转换后的坐标点 
console.log(wgs84Point); 

如果是GIS平台中的数据,直接在桌⾯软件中进⾏坐标转换,更⽅便⼀些

11、地图投影类型的区别,如何分类

地图投影是将三维的地球表⾯映射到⼆维的平⾯地图上的过程。由于地球是⼀个三维的球体,所以 需要将球⾯地图转换成平⾯地图。但是,在这个过程中,由于地球的形状和尺⼨的变化,不可能完 美地映射到平⾯地图上。因此,不同的地图投影类型具有不同的优缺点,适⽤于不同的地图使⽤场 景。

地图投影可以分为以下⼏种类型:

  1. 等⾯积投影(Equal Area Projection):这种投影类型会保持地图上的⾯积⽐例不变,但会导 致形状和⽅向的变形。常⻅的等⾯积投影包括⻨卡托投影和兰勃托投影。

  2. 等⻆投影(Conformal Projection):这种投影类型会保持地图上的⻆度不变,但会导致⾯积 和⻓度的变形。常⻅的等⻆投影包括墨卡托投影和极射投影。

  3. 等距投影(Equidistant Projection):这种投影类型会保持地图上的距离⽐例不变,但会导 致⾯积和形状的变形。常⻅的等距投影包括正轴等距投影和正射等距投影。

  4. 综合性投影(Composite Projection):这种投影类型是以上三种投影类型的组合。综合性投影通常⽤于需要平衡多个因素的地图,如形状、⾯积和距离。

不同的地图投影类型适⽤于不同的应⽤场景。在选择地图投影类型时,需要考虑需要表达的信息类 型、地图区域的⼤⼩和形状、地图的⽤途等因素。

12、栅格切⽚时需要设置哪些参数?

栅格切⽚是指将⼀个⼤的栅格数据集分割成多个⼩的栅格数据集,以便于存储、处理和分析。在进⾏栅 格切⽚时,通常需要设置以下参数:

  1. 切⽚⽅式:栅格数据可以按照⾏、列、矩形、⼤⼩、数量等⽅式进⾏切⽚,不同的切⽚⽅式对应着 不同的参数设置。

  2. 切⽚⼤⼩:栅格数据集被切割成的每个⼩块的⼤⼩,可以按照像素或者地理单位(如度或⽶)进⾏ 设置。

  3. 切⽚编号:对于每个切⽚,需要指定⼀个唯⼀的标识符,例如切⽚的⾏列号、切⽚名称等。

  4. 坐标系统:栅格数据集的坐标系统,可以根据实际情况进⾏设置。

  5. 输出路径:切⽚后的数据集存储路径,通常需要指定⼀个⽬录,其中每个切⽚会被保存为⼀个单独 的⽂件。

  6. 压缩格式:切⽚后的数据集可以按照不同的格式进⾏压缩,例如zip、tar、gz等,压缩格式的选择通 常需要根据实际需求和存储限制来确定。

栅格切⽚的具体参数设置还与使⽤的切⽚⼯具有关,例如ArcGIS中的切⽚⼯具和GDAL中的切⽚⼯具在 参数设置⽅⾯可能有所不同。

13、简单描述切⽚地图服务和动态地图服务的区别以及加载⽅式

切⽚地图服务和动态地图服务是两种常⻅的Web地图服务类型,它们有以下⼏点区别:

  1. 数据格式:切⽚地图服务是⼀种基于瓦⽚(Tile)数据的地图服务,地图数据被预先切成⼩块 并存储在服务器上,⽤户在使⽤时只需加载需要的瓦⽚数据即可;⽽动态地图服务则是⼀种基 于⽮量(Vector)数据的地图服务,地图数据需要在客户端上进⾏实时渲染。

  2. 加载⽅式:切⽚地图服务的数据被预处理成⼀系列的瓦⽚数据,因此在加载时可以直接请求需 要的瓦⽚数据,加载速度较快;⽽动态地图服务需要在客户端上进⾏实时渲染,加载时需要请 求全部数据,因此加载速度较慢。

  3. 渲染效果:切⽚地图服务的渲染效果相对固定,只能显示已有的数据;⽽动态地图服务可以通 过客户端进⾏实时渲染,因此渲染效果更加灵活,可以进⾏更多⾃定义的操作。

对于加载⽅式,切⽚地图服务可以使⽤标准的Web地图服务协议(如WMS、WMTS),也可以使 ⽤JavaScript库(如Leaflet、OpenLayers)进⾏加载;⽽动态地图服务通常使⽤RESTful API进 ⾏加载,例如Esri ArcGIS Server的REST API。

总之,切⽚地图服务和动态地图服务各有优劣,开发者应根据实际需求选择适合的地图服务类型。

14、常⻅的空间数据库有哪些

在GIS开发中,常⻅的空间数据库包括:

  1. PostgreSQL/PostGIS:PostgreSQL是⼀种开源的对象关系型数据库管理系统,⽽PostGIS则是⼀ 个⽤于PostgreSQL的空间数据库扩展,可以⽤于存储、查询和分析空间数据。

  2. Oracle Spatial:Oracle Spatial是Oracle数据库的⼀个扩展,它提供了存储和查询空间数据的功 能,包括⼏何对象类型、空间索引和空间查询操作。

  3. SQL Server Spatial:SQL Server Spatial是Microsoft SQL Server数据库的⼀个扩展,它提供了存 储和查询空间数据的功能,包括⼏何对象类型、空间索引和空间查询操作。

  4. SQLite/SpatiaLite:SQLite是⼀种轻型的嵌⼊式关系型数据库管理系统,⽽SpatiaLite则是⼀个⽤ 于SQLite的空间数据库扩展,可以⽤于存储、查询和分析空间数据。

  5. MongoDB:MongoDB是⼀个NoSQL数据库,它可以存储各种类型的数据,包括空间数据。 MongoDB通过GeoJSON格式存储空间数据,并提供了⼀些空间查询操作。

  6. MySQL Spatial:MySQL Spatial是MySQL数据库的⼀个扩展,它提供了存储和查询空间数据的功 能,包括⼏何对象类型、空间索引和空间查询操作。

以上是常⻅的空间数据库,每个数据库都有其独特的优点和适⽤场景,开发者应根据具体需求选择合适 的空间数据库。

openlayers图形绘制

⼤地坐标系

EPSG:4326

墨卡托

EPSG:3857

⾼斯-格吕克CGCS2000

EPSG:4490

1、Openlayers如何实现交互式绘制

  • 创建⽮量图层和⽮量数据源 - 创建画布
  • 创建画笔
  • 激活画笔

2、绘制组件是单独封装了⼀个绘制组件,还是使⽤的⽅法

3、如何加载天地图,设置中⼼点和显示级别

const TianDiMap_cva = new ol.layer.Tile({ 
title:"天地图⽮量注记图层", 
source:new ol.source.XYZ({ 
url:'http://t0.tianditu.com/DataServer?T=cva_w&x={x}&y={y}&l={z}&tk=' + '8a5c2b00e94b49659861e064c37f778d', 
wrapX:false 
}) 
}) 
const map = new ol.Map({ 
target:'map_container', 
layers:[TianDiMap_vec,TianDiMap_cva], view:new ol.View({ 
projection:'EPSG:4326', 
center:[0,0], 
zoom:1 
}) 
}) 

4、如何实现图层切换

const layers = map.getLayers().getArray(); 
map.addLayer(); 
map.removeLayer(); 
map.getLayers().item(index).setVisible(boolean) //实现图层的显示和隐藏

Part 2

1、什么是倾斜摄影技术

倾斜摄影技术是通过在⻜⾏平台上搭载多台传感器,同时从⼀个垂直、四个侧视等不同⻆度采集影像。 我们可以将它理解为⼀项进化了的摄影测量技术,它⽐传统的摄影测量多了四个倾斜拍摄⻆度,从⽽能 够获取到更加丰富的侧⾯纹理等信息。

2、倾斜影像的采集

倾斜影像的采集主要分为两个过程,⾸先是设备准备,其次是设计航线和实拍。

设备准备:倾斜影像采集的设备包括航空器和倾斜相机。航空器可以是有⼈⻜机或⽆⼈机,有⼈⻜ 机多⽤于特⼤⾯积倾斜摄影,如国产的运⼗⼆、运五,中等规模作业可⽤⽆⼈直升机,如七维航测⽆⼈ 直升机,⼩范围作业可⽤多旋翼⽆⼈机,如红鹏⽆⼈机、⼤疆⽆⼈机等。倾斜相机⽅⾯,⼤多数倾斜相 机采⽤下视、前视、后视、左视和右视五个镜头来获取地物倾斜影像,⽐较常⻅的如徕卡RCD30倾斜相 机、四维远⻅SWDC-5倾斜相机、红鹏微型倾斜相机等。

设计航线和实拍:倾斜摄影的航线设计采⽤专⽤航线设计软件进⾏设计,其相对航⾼、地⾯分辨率 及物理像元尺⼨满⾜三⻆⽐例关系。设备组装就绪并规划好路线后,实施航拍,得到具有⼀定重叠度的 多⻆度影像,倾斜影像采集部分就完成了。

3、国内的常用坐标系

1、WGS-84坐标系:地⼼坐标系,GPS原始坐标体系

在中国,任何⼀个地图产品都不允许使⽤GPS坐标,据说是为了保密。

2、GCJ-02 坐标系:国测局坐标,⽕星坐标系

1)国测局02年发布的坐标体系,它是⼀种对经纬度数据的加密算法,即加⼊随机的偏差。

2)互联⽹地图在国内必须⾄少使⽤GCJ-02进⾏⾸次加密,不允许直接使⽤WGS-84坐标下的地 理数据,同时任何坐标系均不可转换为WGS-84坐标。

3)是国内最⼴泛使⽤的坐标体系,⾼德、腾讯、Google中国地图都使⽤它。

3、CGCS2000坐标系:国家⼤地坐标系

该坐标系是通过中国GPS 连续运⾏基准站、空间⼤地控制⽹以及天⽂⼤地⽹与空间地⽹联合平差 建⽴的地⼼⼤地坐标系统。

4、BD-09坐标系

百度中国地图所采⽤的坐标系,由GCJ-02进⾏进⼀步的偏移算法得到。

5、搜狗坐标系

搜狗地图所采⽤的坐标系,由GCJ-02进⾏进⼀步的偏移算法得到。

6、图吧坐标系

图吧地图所采⽤的坐标系,由GCJ-02进⾏进⼀步的偏移算法得到。

4、国内地图软件所采⽤的坐标系简介

1、百度地图

1)境内(包括港澳台):BD09

a、在GCJ-02坐标系基础上再次加密

b、⽀持WGS-84、GCJ-02转换成BD09,反向不⽀持,并且批量转换⼀次有条数限制 2)境外:WGS-84

2、高德地图:

1)境内:GCJ-02

a、WGS-84——>GCJ-02(⾼德有接⼝提供,反过来没有)

2)境外:暂不⽀持

3)AMap 就是⾼德地图,是⾼德地图在纳斯达克上市⽤的名字,主要⾯向互联⽹企业或个⼈提供免 费API服务

4)MapABC 是⾼德集团底下的图盟公司,主要⾯向⼤众型企业或政府机关,并提供付费的有偿 服务

5)Amap和MapABC,数据和服务都是共享的,所以Mapabc⽤Amap的API是正常的

3、google地图

1)境内:GCJ-02

a、数据来源于⾼德,两者互通 2)境外:WGS-84

4、天地图

全球统⼀:CGCS2000

5、腾讯地图:soso地图 境内:GCJ02

6、微软bing地图:BingMap

全球统⼀:WGS-84

7、搜狗地图

境内:搜狗坐标系

a、在GCJ-02坐标系基础上再次加密

b、⽀持WGS-84、GCJ-02、BD09转换成搜狗坐标,反向不⽀持

8、图吧地图: MapBar

境内:图吧坐标系

a、在GCJ-02坐标系基础上再次加密

9、阿⾥云地图

境内:GCJ-02

10、灵图地图:51ditu

境内:GCJ-02

5、常用的坐标转换软件

坐标转换软件是⽤于将不同坐标系统之间进⾏转换的⼯具。以下是几种开源的坐标转换软件。

1、PROJ:PROJ是⼀个⼴泛使⽤的开源地理参考系统库,可⽤于各种空间数据操作,例如坐标转换、地 图投影转换等。PROJ⽀持众多坐标系统的转换,包括经纬度、UTM、州平⾯坐标、国家⽹格等。

2、GDAL/OGR:GDAL/OGR是⼀个功能强⼤的开源地理空间数据处理库,提供了⽤于读取、写⼊和转 换各种格式的数据的⼯具和API。GDAL/OGR⽀持多种常⽤坐标系的转换。

3、GEOS:GEOS是⼀个C++库,提供了⽤于进⾏⼏何数据分析和操作的⼯具,如缓冲区分析、凸包分 析和拓扑分析。GEOS还包含⽤于转换坐标系的⼯具。

4、Proj4j:Proj4j是PROJ.4的Java移植版本,可以进⾏各种坐标转换。

5、PyProj:PyProj是⼀个Python库,提供了对PROJ库的封装,可以⽤于空间数据操作,如坐标转换、 地图投影转换等。

6、OpenLayers:OpenLayers是⼀个JavaScript库,⽤于在Web浏览器中创建交互式地图。 OpenLayers⽀持多种坐标系统和投影⽅式,可以进⾏转换。

这些软件提供了开源的⼯具和API,能够进⾏常⽤的坐标转换操作,可根据需要选择适合⾃⼰的坐标转换软件。

6、地图上要素很多加载慢,遇到过崩掉的情况么前端是如何缓解的

前端在处理大量要素时,确实可能会遇到加载缓慢、卡顿、崩溃等问题。以下是一些缓解这些问题的方法:

1、数据优化:将不必要的数据过滤掉,只加载必要的数据。例如,如果地图上只需要显示某些特定的区 域或点,可以通过缩放或其他⽅式进⾏筛选,只加载这些要素。这样可以减轻数据量,加快加载速度。

2、图层分级:将地图逐层分级,每层只显示特定的要素,降低⼀层图层中的要素数量。可以通过层叠效 果来叠加多层图层,形成完整的地图效果。这样能够减少对单个图层的渲染次数,提⾼性能。

3、后台优化:通过后台对数据进⾏剪裁和压缩,减⼩数据传输的⼤⼩。还可以在后台对数据进⾏分块, 分段加载,来减轻前端负担。

4、瓦⽚地图:将地图切分成瓦⽚,只显示在当前屏幕可视范围内的瓦⽚,减少了不必要的数据加载。该 技术可以⼤⼤减少加载速度,特别是在⼤地图并发⽤户请求⾮常⾼的情况下。

5、前端优化:通过缓存、预加载等技术,优化前端的性能。例如,可以将⼀些经常使⽤的数据进⾏缓 存,提⾼响应速度,还可以在⽤户浏览过⼀个⻚⾯时,预加载下⼀个即将进⼊的⻚⾯,以提⾼⽤户体 验。

总之,在处理⼤量要素的地图应⽤程序中,优化数据、对地图进⾏分级和分块、采⽤瓦⽚地图的⽅式、 后台对数据进⾏压缩剪裁以及前端优化都是缓解地图加载慢、卡顿、崩溃的有效⽅法。

7、二维和三维的区别:

⼆维和三维之间最显著的区别在于它们所描述的对象的维度不同。

⼆维指的是平⾯,通常是由两个坐标轴(x轴和y轴)描述的图像或平⾯⼏何形状。例如,⼀张 纸、⼀幅画、⼀张地图或⼀张⼆维条形码都是⼆维对象。

三维则指的是空间,通常由三个坐标轴(x轴、y轴和z轴)描述的物体或形状。例如,⼀个球体、 ⼀个⽴⽅体、⼀辆汽⻋或⼀个建筑物都是三维对象。

因为三维空间具有深度、⾼度和宽度等额外的维度,所以它可以更准确地描述现实中的物体和场 景,使得我们可以更好地理解和模拟真实世界中的事物。⽽⼆维空间则更适合⽤于图像处理、计算 机绘图和其他⼀些平⾯设计应用。

8、mapbox和cesium的区别

Mapbox和Cesium都是WebGIS领域中的开源⼯具,它们都提供了丰富的地图显示和数据可视化功 能,但它们在某些⽅⾯有所不同。

  1. 定位不同:

Mapbox更注重静态地图和动态地图的制作和展示,特别是在移动设备和Web应⽤程序中的实现⽅ ⾯,提供了强⼤的地图渲染引擎和⼯具,能够快速构建交互式地图。

Cesium则更注重实时地球和空间数据的可视化和分析,具有三维场景渲染、动态地球和虚拟地球 等功能,主要⽤于⾼级的地球科学研究、军事情报分析、航空航天领域以及虚拟现实应⽤等⽅⾯。

  1. 数据来源不同:

Mapbox的地图数据主要来⾃其⾃身的数据处理和开发者社区,同时也⽀持使⽤OpenStreetMap 等开源数据。

Cesium的地图数据主要来⾃于NASA、OpenStreetMap、Bing Maps等数据提供商。

  1. 技术实现不同:

Mapbox主要使⽤HTML5、CSS3和JavaScript等Web技术进⾏开发和部署。

Cesium则使⽤WebGL和JavaScript等技术来实现⾼性能的三维场景渲染和数据可视化。

总之,Mapbox和Cesium都是功能强⼤的WebGIS⼯具,但它们的侧重点不同,可以根据具体应⽤ 需求选择合适的⼯具。

9、天地图的地理坐标系,投影坐标系和地理坐 标系区别

天地图是⼀个在线地图服务提供商,⽀持多种地图投影和坐标系。在使⽤天地图时,需要了解地理 坐标系、投影坐标系和地理坐标系之间的区别。

地理坐标系是⼀个⽤于表示地球表⾯上点位置的坐标系统,通常使⽤经度和纬度来表示。地理坐标 系是⼀个三维坐标系统,以地球质⼼为原点,以地球⾚道⾯和⼀个固定点(例如北极点)为基准 ⾯。

投影坐标系是将地球表⾯上的经纬度投影到⼀个平⾯上,以⽅便在⼆维地图上显示。投影坐标系通 常是⼆维的,以⽶或英尺为单位。不同的投影⽅法可以得到不同的投影坐标系,例如墨卡托投影、 ⾼斯-克吕格投影等。

在天地图中,常⻅的投影坐标系有墨卡托投影(EPSG:3857)和⾼斯-克吕格投影

(EPSG:4490)。

天地图提供的瓦⽚数据使⽤的是墨卡托投影坐标系,该坐标系是⼀种圆柱形等⻆投影,具有较⾼的 精度和⼴泛的使⽤。天地图的瓦⽚数据是根据该投影坐标系切割⽽成的。

⽽在天地图的开发⽂档中,使⽤的地理坐标系为 WGS84(EPSG:4326),也就是通常所说的经 纬度坐标系。在使⽤天地图时,需要将 WGS84 坐标系的经纬度坐标转换为天地图使⽤的墨卡托 投影坐标系,然后才能正确显示地图。

总的来说,地理坐标系和投影坐标系都是表示地球表⾯位置的坐标系统,但是地理坐标系是三维坐 标系统,投影坐标系是⼆维坐标系统。在使⽤天地图时,需要了解使⽤的坐标系,并进⾏正确的坐 标转换,以便正确地显示地图。

10、openlayer加载栅格服务需要那些信息

要加载栅格服务,需要提供以下信息:

  1. 服务的URL 地址:这是栅格服务的访问地址,通常是⼀个以 http 或https 开头的URL 地址。

  2. 图层的名称或ID:栅格服务可能包含多个图层,每个图层都有⼀个名称或 ID,需要指定要加载的图 层的名称或ID。

  3. 图层的投影信息:栅格服务中的每个图层都有⼀个投影信息,⽤于定义图层的坐标系和数据范围。 在加载图层时,需要指定正确的投影信息,否则可能导致图层显示不正确或者⽆法显示。

  4. 图层的样式信息(可选):栅格服务中的每个图层都可能有⼀些样式信息,例如颜⾊、透明度等, 可以通过指定样式信息来控制图层的显示效果。

在OpenLayers 中,可以使⽤ol.layer.Tile类来加载栅格图层,需要传递⼀个包含上述信息的参数对象 给构造函数。例如:

var layer = new ol.layer.Tile({ source: new ol.source.TileWMS({ 
url: 'http://example.com/wms', params: {'LAYERS': 'mylayer'}, projection: 'EPSG:4326' 
}) 
}); 

其中,url表示服务的URL 地址,params中包含图层名称等参数,projection表示图层的投影信息。 通过将图层添加到地图中,即可加载栅格服务。

11、geojson

1、概念

GeoJSON是⼀种基于JSON(JavaScript Object Notation)格式的地理空间数据交换格式,⽤于 表示地理空间数据。它将地理空间数据以及相关的⾮空间属性信息(如名称、描述等)进⾏编码, 并使⽤JSON格式进⾏存储和传输。

GeoJSON⽀持多种类型的空间数据对象,包括点、线、⾯等,还⽀持复合对象,例如⼏何集合 (GeometryCollection)和特征集合(FeatureCollection)等。GeoJSON使⽤经度和纬度(即坐

标)来表示空间位置,同时也⽀持投影坐标系和地理坐标系。

GeoJSON是⼀种简单、轻量级、易于理解和处理的数据格式,已被⼴泛⽤于Web GIS应⽤中,例 如在Leaflet、Mapbox和OpenLayers等地图库中,以及在各种地理信息系统(GIS)应⽤程序 中。

2、代码

{
type:"FeatureCollection", 
features:[ 
{ 
type:"Feature", 
geometry:{ 
type:"Point", 
coordinates:[114.407, 30.4645] }, 
properties:{ 
name:"新中地" 
} 
} 
] 

3、Openlayer中geojson的API

3-1、加载本地数据

var source = new ol.source.Vector({ 
/* 将geojson数据设置给实例数据源 */ 
features: new ol.format.GeoJSON().readFeatures(data) }) 

3-2、网络数据

const source = new ol.source.Vector({ 
url: 'https://geo.datav.aliyun.com/areas_v3/bound/geojson?code=420100', format: new ol.format.GeoJSON() 
}) 
const layer = new ol.layer.Vector({ 
source 
}) 
map.addLayer(layer) 

常见的空间数据库

1、ArcGIS的Esri 地理数据库

2、MapGIS GDB

3、PostGIS是最知名和最完整的空间数据库之⼀。它是开源数据库PostgreSQL的扩展。

4、Oracle

  1. Microsoft SQL Server

  2. Amazon Aurora

Amazon Aurora是⼀个基于云的空间数据库。它可以运⾏MySQL或PostgreSQL开源数据库。您 可以轻松地将数据库迁移到Amazon Aurora平台,并利⽤其全套⼯具。

地理坐标系如何测量距离

⼀、从理论⻆度解释

根据投影类型(墨卡托投影),将地理坐标转化成平⾯坐标,根据⼀定的算法,实现两点之间距离的测量。

⼆、从代码⻆度解释

<script src="https://lib.baomitu.com/Turf.js/latest/turf.min.js"></script> 

1、两点之间的测量

var from = turf.point([-75.343, 39.984]); 
var to = turf.point([-75.534, 39.123]); 
var options = { units: 'miles' }; 
var distance = turf.distance(from, to, options); console.log(distance) 

2、测量线段的⻓度

var line = turf.lineString([[115, -32], [131, -22], [143, -25], [150, -34]] ); 
var length = turf.length(line, { units: 'miles' }); 
console.log(length) 

完整版请戳:

领取完整版GIS二三维开发面试题


本文转载自: https://blog.csdn.net/jdjxbsus/article/details/130927857
版权归原作者 GIS学姐嘉欣 所有, 如有侵权,请联系我们删除。

“WebGIS开发最全技术面试题(3万字干货)”的评论:

还没有评论