最全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开发地图基础知识的概述:
地图投影:地球表⾯是⼀个三维球体,但是为了在⼆维屏幕上显示地图,必须使⽤投影来将三 维球体表⾯映射到⼆维平⾯上。不同的地图投影具有不同的特点和应⽤场景。
地图缩放和漫游:WebGIS地图应⽤程序允许⽤户缩放和漫游地图,以便查看特定区域或地点的详细信息。缩放操作可以改变地图的⽐例尺,漫游操作可以移动地图的位置。
地图数据源:WebGIS地图应⽤程序需要使⽤地图数据源,包括⽮量数据和栅格数据。⽮量数 据包括点、线和⾯等地理要素,⽽栅格数据则是由像素组成的图像。
地图符号学:WebGIS地图应⽤程序使⽤符号学来表示地图数据,包括颜⾊、线条宽度、填充 模式等。符号学可以⽤于显示地理数据的不同属性。
地理空间分析:WebGIS地图应⽤程序还可以进⾏地理空间分析,如缓冲区分析、⽹络分析和 地理编码等。这些分析可以帮助⽤户更好地理解和利⽤地理信息。
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技术实现的地理信息系统,可以加载各种类型的地图数据。以下是⼀些常⻅ 的地图类型:
⽮量地图:⽮量地图是由各种⼏何图形(如点、线、⾯等)构成的地图,通常⽤于表示⾃然和⼈⽂地理现象。⽮量地图可以缩放和旋转⽽不失真,因此在WebGIS中使⽤⼴泛。
栅格地图:栅格地图是由像素组成的地图,通常⽤于卫星图像和遥感图像。栅格地图的分辨率 通常较⾼,但在缩放和旋转时可能会出现失真。
三维地图:三维地图是指具有⽴体感的地图,可以显示建筑物、⼭脉、河流等地理要素的⾼度 信息。三维地图通常需要使⽤特殊的软件来制作和显示。
实时地图:实时地图可以显示实时交通、天⽓、航班和其他实时数据。这些地图通常需要使⽤ 实时数据接⼝和Web服务来获取数据。
混合地图:混合地图结合了⽮量地图、栅格地图和三维地图的优点,可以在同⼀个地图上同时 显示不同类型的数据。混合地图可以为⽤户提供更全⾯和丰富的地理信息。
除了以上列举的地图类型外,WebGIS还可以加载各种格式的地图数据,例如地形数据、⽓象数 据、流域数据等。
8、常见的地图参考系
地理坐标系:⼜称⼤地坐标系,基于地球椭球体上的经度和纬度进⾏测量的坐标系统。
投影坐标系:将地球表⾯上的点映射到平⾯地图上的坐标系统。常⻅的投影⽅式包括墨卡托投 影、兰伯特投影、等⻆圆锥投影等。
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、地图投影类型的区别,如何分类
地图投影是将三维的地球表⾯映射到⼆维的平⾯地图上的过程。由于地球是⼀个三维的球体,所以 需要将球⾯地图转换成平⾯地图。但是,在这个过程中,由于地球的形状和尺⼨的变化,不可能完 美地映射到平⾯地图上。因此,不同的地图投影类型具有不同的优缺点,适⽤于不同的地图使⽤场 景。
地图投影可以分为以下⼏种类型:
等⾯积投影(Equal Area Projection):这种投影类型会保持地图上的⾯积⽐例不变,但会导 致形状和⽅向的变形。常⻅的等⾯积投影包括⻨卡托投影和兰勃托投影。
等⻆投影(Conformal Projection):这种投影类型会保持地图上的⻆度不变,但会导致⾯积 和⻓度的变形。常⻅的等⻆投影包括墨卡托投影和极射投影。
等距投影(Equidistant Projection):这种投影类型会保持地图上的距离⽐例不变,但会导 致⾯积和形状的变形。常⻅的等距投影包括正轴等距投影和正射等距投影。
综合性投影(Composite Projection):这种投影类型是以上三种投影类型的组合。综合性投影通常⽤于需要平衡多个因素的地图,如形状、⾯积和距离。
不同的地图投影类型适⽤于不同的应⽤场景。在选择地图投影类型时,需要考虑需要表达的信息类 型、地图区域的⼤⼩和形状、地图的⽤途等因素。
12、栅格切⽚时需要设置哪些参数?
栅格切⽚是指将⼀个⼤的栅格数据集分割成多个⼩的栅格数据集,以便于存储、处理和分析。在进⾏栅 格切⽚时,通常需要设置以下参数:
切⽚⽅式:栅格数据可以按照⾏、列、矩形、⼤⼩、数量等⽅式进⾏切⽚,不同的切⽚⽅式对应着 不同的参数设置。
切⽚⼤⼩:栅格数据集被切割成的每个⼩块的⼤⼩,可以按照像素或者地理单位(如度或⽶)进⾏ 设置。
切⽚编号:对于每个切⽚,需要指定⼀个唯⼀的标识符,例如切⽚的⾏列号、切⽚名称等。
坐标系统:栅格数据集的坐标系统,可以根据实际情况进⾏设置。
输出路径:切⽚后的数据集存储路径,通常需要指定⼀个⽬录,其中每个切⽚会被保存为⼀个单独 的⽂件。
压缩格式:切⽚后的数据集可以按照不同的格式进⾏压缩,例如zip、tar、gz等,压缩格式的选择通 常需要根据实际需求和存储限制来确定。
栅格切⽚的具体参数设置还与使⽤的切⽚⼯具有关,例如ArcGIS中的切⽚⼯具和GDAL中的切⽚⼯具在 参数设置⽅⾯可能有所不同。
13、简单描述切⽚地图服务和动态地图服务的区别以及加载⽅式
切⽚地图服务和动态地图服务是两种常⻅的Web地图服务类型,它们有以下⼏点区别:
数据格式:切⽚地图服务是⼀种基于瓦⽚(Tile)数据的地图服务,地图数据被预先切成⼩块 并存储在服务器上,⽤户在使⽤时只需加载需要的瓦⽚数据即可;⽽动态地图服务则是⼀种基 于⽮量(Vector)数据的地图服务,地图数据需要在客户端上进⾏实时渲染。
加载⽅式:切⽚地图服务的数据被预处理成⼀系列的瓦⽚数据,因此在加载时可以直接请求需 要的瓦⽚数据,加载速度较快;⽽动态地图服务需要在客户端上进⾏实时渲染,加载时需要请 求全部数据,因此加载速度较慢。
渲染效果:切⽚地图服务的渲染效果相对固定,只能显示已有的数据;⽽动态地图服务可以通 过客户端进⾏实时渲染,因此渲染效果更加灵活,可以进⾏更多⾃定义的操作。
对于加载⽅式,切⽚地图服务可以使⽤标准的Web地图服务协议(如WMS、WMTS),也可以使 ⽤JavaScript库(如Leaflet、OpenLayers)进⾏加载;⽽动态地图服务通常使⽤RESTful API进 ⾏加载,例如Esri ArcGIS Server的REST API。
总之,切⽚地图服务和动态地图服务各有优劣,开发者应根据实际需求选择适合的地图服务类型。
14、常⻅的空间数据库有哪些
在GIS开发中,常⻅的空间数据库包括:
PostgreSQL/PostGIS:PostgreSQL是⼀种开源的对象关系型数据库管理系统,⽽PostGIS则是⼀ 个⽤于PostgreSQL的空间数据库扩展,可以⽤于存储、查询和分析空间数据。
Oracle Spatial:Oracle Spatial是Oracle数据库的⼀个扩展,它提供了存储和查询空间数据的功 能,包括⼏何对象类型、空间索引和空间查询操作。
SQL Server Spatial:SQL Server Spatial是Microsoft SQL Server数据库的⼀个扩展,它提供了存 储和查询空间数据的功能,包括⼏何对象类型、空间索引和空间查询操作。
SQLite/SpatiaLite:SQLite是⼀种轻型的嵌⼊式关系型数据库管理系统,⽽SpatiaLite则是⼀个⽤ 于SQLite的空间数据库扩展,可以⽤于存储、查询和分析空间数据。
MongoDB:MongoDB是⼀个NoSQL数据库,它可以存储各种类型的数据,包括空间数据。 MongoDB通过GeoJSON格式存储空间数据,并提供了⼀些空间查询操作。
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领域中的开源⼯具,它们都提供了丰富的地图显示和数据可视化功 能,但它们在某些⽅⾯有所不同。
- 定位不同:
Mapbox更注重静态地图和动态地图的制作和展示,特别是在移动设备和Web应⽤程序中的实现⽅ ⾯,提供了强⼤的地图渲染引擎和⼯具,能够快速构建交互式地图。
Cesium则更注重实时地球和空间数据的可视化和分析,具有三维场景渲染、动态地球和虚拟地球 等功能,主要⽤于⾼级的地球科学研究、军事情报分析、航空航天领域以及虚拟现实应⽤等⽅⾯。
- 数据来源不同:
Mapbox的地图数据主要来⾃其⾃身的数据处理和开发者社区,同时也⽀持使⽤OpenStreetMap 等开源数据。
Cesium的地图数据主要来⾃于NASA、OpenStreetMap、Bing Maps等数据提供商。
- 技术实现不同:
Mapbox主要使⽤HTML5、CSS3和JavaScript等Web技术进⾏开发和部署。
Cesium则使⽤WebGL和JavaScript等技术来实现⾼性能的三维场景渲染和数据可视化。
总之,Mapbox和Cesium都是功能强⼤的WebGIS⼯具,但它们的侧重点不同,可以根据具体应⽤ 需求选择合适的⼯具。
9、天地图的地理坐标系,投影坐标系和地理坐 标系区别
天地图是⼀个在线地图服务提供商,⽀持多种地图投影和坐标系。在使⽤天地图时,需要了解地理 坐标系、投影坐标系和地理坐标系之间的区别。
地理坐标系是⼀个⽤于表示地球表⾯上点位置的坐标系统,通常使⽤经度和纬度来表示。地理坐标 系是⼀个三维坐标系统,以地球质⼼为原点,以地球⾚道⾯和⼀个固定点(例如北极点)为基准 ⾯。
投影坐标系是将地球表⾯上的经纬度投影到⼀个平⾯上,以⽅便在⼆维地图上显示。投影坐标系通 常是⼆维的,以⽶或英尺为单位。不同的投影⽅法可以得到不同的投影坐标系,例如墨卡托投影、 ⾼斯-克吕格投影等。
在天地图中,常⻅的投影坐标系有墨卡托投影(EPSG:3857)和⾼斯-克吕格投影
(EPSG:4490)。
天地图提供的瓦⽚数据使⽤的是墨卡托投影坐标系,该坐标系是⼀种圆柱形等⻆投影,具有较⾼的 精度和⼴泛的使⽤。天地图的瓦⽚数据是根据该投影坐标系切割⽽成的。
⽽在天地图的开发⽂档中,使⽤的地理坐标系为 WGS84(EPSG:4326),也就是通常所说的经 纬度坐标系。在使⽤天地图时,需要将 WGS84 坐标系的经纬度坐标转换为天地图使⽤的墨卡托 投影坐标系,然后才能正确显示地图。
总的来说,地理坐标系和投影坐标系都是表示地球表⾯位置的坐标系统,但是地理坐标系是三维坐 标系统,投影坐标系是⼆维坐标系统。在使⽤天地图时,需要了解使⽤的坐标系,并进⾏正确的坐 标转换,以便正确地显示地图。
10、openlayer加载栅格服务需要那些信息
要加载栅格服务,需要提供以下信息:
服务的URL 地址:这是栅格服务的访问地址,通常是⼀个以 http 或https 开头的URL 地址。
图层的名称或ID:栅格服务可能包含多个图层,每个图层都有⼀个名称或 ID,需要指定要加载的图 层的名称或ID。
图层的投影信息:栅格服务中的每个图层都有⼀个投影信息,⽤于定义图层的坐标系和数据范围。 在加载图层时,需要指定正确的投影信息,否则可能导致图层显示不正确或者⽆法显示。
图层的样式信息(可选):栅格服务中的每个图层都可能有⼀些样式信息,例如颜⾊、透明度等, 可以通过指定样式信息来控制图层的显示效果。
在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
Microsoft SQL Server
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二三维开发面试题
版权归原作者 GIS学姐嘉欣 所有, 如有侵权,请联系我们删除。