欢迎光临
我们一直在努力

WebGIS面试题:GIS篇(三)

前几期内容点击下方链接: WebGIS开发面试题:前端篇(一) WebGIS开发面试题:前端篇(二) WebGIS开发面试题:前端篇(三) WebGIS开发面试题:前端篇(四) WebGIS面试题:GIS篇(一) WebGIS面试题:GIS篇(二)

**1、Openlayers加载栅格服务需要那些信息**

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

  • 服务的 URL 地址:
  • 这是栅格服务的访问地址,通常是一个以 http 或 https 开头的 URL 地址,

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

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

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

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

    编辑

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

    **2、geojson**

    1、概念 GeoJSON是一种基于JSON(JavaScript Object Notation)格式的地理空间数据交换格式,用于表示地理空间数据。它将地理空间数据以及相关的非空间属性信息(如名称、描述等)进行编码,并使用JSON格式进行存储和传输。 GeoJSON支持多种类型的空间数据对象,包括点、线、面等,还支持复合对象,例如几何集合(GeometryCollection)和特征集合(FeatureCollection)等。GeoJSON使用经度和纬度(即坐标)来表示空间位置,同时也支持投影坐标系和地理坐标系GeoJSON是一种简单、轻量级、易于理解和处理的数据格式,已被广泛用于Web GIS应用中,例如在Leaflet、Mapbox和OpenLavers等地图库中,以及在各种地理信息系统(GIS)应用程序中。

    编辑

    3、Openlayer中geojson的API

    **加载本地数据**

    编辑

    **网络数据 **

    编辑

    **4、空间分析的常见方法**

    在GIS中,空间分析是指利用GIS技术和空间数据进行空间数据的统计、分析和预测的过程。以下是GIS中空间分析的常见方法: 1. 空间查询:

    在GIS中,空间查询是最基本和最常用的空间分析方法之一。它通过空间位置和空间关系来检索数据,例如搜索某一区域内的所有点、线或面,或者查找与某一地点或要素相邻的要素。GIS中的空间查询包括点查询、线查询、面查询、缓冲区查询等。

  • 空间统计:
  • 通过对GIS数据进行统计分析,揭示地理现象的空间分布特征和规律。例如,可以计算某2. 区域内某一要素的数量、密度、分布状况等等。GIS中的空间统计方法包括点密度分析、线密度分析、面积分析、交互分析等。

  • 空间插值:
  • 在GIS中,空间插值是一种用已知点的属性值来估计未知位置的属性值的方法。例如,可以通过已知的气象站数据估算某一地点的气温,或者通过已知的人口普查数据估算某一地区的人口密度。GIS中的空间插值方法包括反距离加权法、克里金法、样条插值法等。

  • 空间模型:
  • 在GIS中,空间模型是一种基于空间数据的统计模型,用来分析空间现象的关联性、相似性和变异性。例如,可以通过空间回归模型来研究人口密度和城市规模之间的关系。GIS中的空间模型包括空间自相关模型、空间误差模型、空间滞后模型等,

  • 空间决策支持:
  • 在GIS中,空间决策支持是指利用GIS技术和空间分析方法,支持决策制定者在复杂的空间环境中做出决策。例如,在城市规划中可以使用GIS技术来模拟不同规划方案的效果,并根据模拟结果进行决策。

    5、经纬度坐标和投影坐标的区别

    在GIS(地理信息系统)中,经纬度和投影坐标是两种常用的坐标系统。它们之间的区别如下:

  • 经纬度:
  • 经度和纬度是用来描述地球表面位置的一种坐标系统。经度表示在东西方向上的位置,以本初子午线为基准,单位为度();纬度表示在南北方向上的位置,以赤道为基准,单位也为度()。经纬度坐标系统以地球为基准,不受地图投影方式的影响,可以用来描述地球表面任意点的位置。常用的经纬度坐标系包括WGS84、GCJ02等。

  • 投影坐标:
  • 投影坐标是一种将地球表面经纬度坐标投影到平面上的坐标系统。在地图制图过程中,由于地球是一个椭球体,为了在平面地图上准确表现地球表面的形状和大小,需要采用不同的投影方式进行投影。常用的投影方式包括墨卡托投影、UTM投影等。投影坐标通常采用米或者英尺等长度单位来表示,可以用来进行地图上的测量和计算。

    6、地心坐标系和参心坐标系的区别

    在GIS中,地心坐标系和参心坐标系的区别与一般的描述相同,但是具体应用时需要考虑地球模型的不同。下面介绍两种常见的地球模型及其对应的坐标系:

    1. WGS84椭球体模型:

    WGS84是目前最广泛使用的地球模型之一,是由美国国防部制定的。在WGS84模型中,地球被视为一个椭球体,其轴向略大于赤道向,因此在坐标系中需要考虑椭球体的参数。在WGS84模型中,地心坐标系通常用于描述GPS定位数据,参心坐标系则用于描述卫星轨道等天文学问题。

    2. Web Mercator投影模型:

    Web Mercator是一种常用的投影模型,用于将地球表面的经纬度坐标投影到二维平面上。在Web Mercator模型中,地球被视为一个正圆球,因此在坐标系中不需要考虑椭球体参数。在Web Mercator投影中,地心坐标系和参心坐标系的区别在于其原点和坐标轴的方向不同,但是实际使用中很少涉及到参心坐标系,大部分情况下都是使用地心坐标系。

    编辑

    编辑

    地心坐标系:以地球质心为椭球中心的,就叫地心坐标系为了让坐标能够准确的描述某个区域和国家的,将质心移动。

    就是参心坐标系,简单的理解参心坐标系就是质心不在椭球中心的坐标系。

    **6、GIS中投影坐标系有哪些**

    **(1) 墨卡托投影** 上面的小视频中讲到了墨卡托投影的原理,可以看到它的投影面是竖着的椭圆柱面,并且投影面与地轴方向一致,所以也叫正轴等角切/割圆柱投影。意思就是既可以切圆柱,就是球体和椭圆柱面相切;也可以割圆柱,就是球体和圆柱面相割。百度地图和Google Maps使用的投影方法都是墨卡托投影。

    (2) 高斯-克吕格投影 高斯-克吕格投影又叫横轴墨卡托投影,它的投影面是椭圆柱面,假设椭圆柱躺着,和地轴垂直,而且投影面与之相切,就是横轴墨卡托了,也可以称作等角横轴切椭圆柱投影。

    编辑

    竖着的有三条线,中间的那条就是投影中心线,根据取法不同,可以分为3度带和6度带。 需要注意3度带和6度带的起算经线是不一样的。

    • 6°分带法:从格林威治零度经线起,每6°分为一个投影带,全球共分为60个投影带

    • 3°分带法:从东经1°30’起,每3°为一带,将全球划分为120个投影带。

    高斯-克吕格投影的特点主要有三个:

    • 投影后的地图,角度不变,面积会变。离中央经线越远的地区,面积变化越大。此投影合适用于导航。

    • 投影椭圆柱面是横着的;

    • 投影椭圆柱面与椭球体相切。

    我国1:2.5万1:50万地形图使用6度分带法;1:50001:10000地形图使用3度分带法。

    (3)通用横轴墨卡托投影 大家应该还听过它的江湖别称:UTM投影,它和高斯克吕格投影特别像,只不过它是割圆柱,就是球体与椭圆柱面相割。因此也被称作横轴等角割圆柱投影。

    **7、常见的空间数据库**

    1、ArcGIS的Esri 地理数据库 2、MapGIS GDB 3、PostGIS是最知名和最完整的空间数据库之一。它是开源数据库PostgreSQL的扩展 4、Oracle 5、Microsoft SQL Server 6、Amazon Aurora Amazon Aurora是一个基于云的空间数据库。它可以运行MVSQL或PostgreSQL开源数据库。您可以轻松地将数据库迁移到Amazon Aurora平台,并利用其全套工具。

    **8、地理坐标系如何测量距离?**

    一、从理论角度解释 根据投影类型(墨卡托投影),将地理坐标转化成平面坐标,根据一定的算法,实现两点之间距离的测量。

    <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)

    9、Openlayer如何查询要素

    1)给地图绑定⿏标移动事件,让光标移动到要素上的时候改变样式。
    //为map添加⿏标移动事件监听,当指向标注时改变⿏标光标状态
    map.on('pointermove', function (e) {
    var pixel = map.getEventPixel(e.originalEvent);
    var hit = map.hasFeatureAtPixel(pixel);
    map.getTargetElement().style.cursor = hit ? 'pointer' : ''; });

    2、点击要对应要素,获取要素的信息

    // 为map添加点击事件监听,渲染弹出popup
    map.on('click', function (e) {
    // 获取当前点击的点是否存在要素, 并返回
    const feature = map.forEachFeatureAtPixel(
    //
    e.pixel,
    function (feature, layer) {
    return feature
    }
    )
    if (feature) {
    if (popup.getPosition() == undefined) {
    var position = feature.getGeometry().flatCoordinates popup.setPosition(position)
    }
    }
    })

    10、Openlayers加载geojson

    **1、geojson定义**

    包含地理信息的json数据,格式是以key:value的形式存在的。后缀以 geojson结尾。

    2、在本地定义geojson数据

    var data = {
    type: "FeatureCollection",
    features: [
    {
    type: "Feature",
    geometry: {
    type: "Point", coordinates: [114, 30]
    },
    properties:{
    id:1001,
    name:"武汉"
    }
    },{
    type:"Feature",
    geometry:{
    type:"LineString", coordinates:[
    [114,30],
    [120,30]
    ]
    }
    }
    ]
    }
    const style = new ol.style.Style({
    //填充⾊
    fill: new ol.style.Fill({
    color: 'rgba(255, 255, 255, 0.2)' }),
    //边线颜⾊
    stroke: new ol.style.Stroke({
    color: '#ffcc33',
    width: 2
    }),
    //形状
    image: new ol.style.Circle({
    radius: 8,
    fill: new ol.style.Fill({
    color: '#ffcc3367'
    }),
    stroke: new ol.style.Stroke({ color: '#333',
    width: 2
    })
    })
    })
    var source = new ol.source.Vector({
    /* 将geojson数据设置给实例数据源 */
    features: new ol.format.GeoJSON().readFeatures(data) })
    var layer = new ol.layer.Vector({
    source,
    style
    })
    map.addLayer(layer);

    给要素定义样式

    var data = {
    type: "FeatureCollection",
    features: [
    {
    type: "Feature",
    geometry: {
    type: "Point",
    coordinates: [114, 30]
    }
    }
    ]
    }
    const style = new ol.style.Style({
    //填充⾊
    fill: new ol.style.Fill({
    color: 'rgba(255, 255, 255, 0.2)'
    }),
    //边线颜⾊
    stroke: new ol.style.Stroke({
    color: '#ffcc33',
    width: 2
    }),
    //形状
    image: new ol.style.Circle({
    radius: 8,
    fill: new ol.style.Fill({
    color: '#ffcc3367'
    }),
    stroke: new ol.style.Stroke({
    color: '#333',
    width: 2
    })
    })
    })
    var features = new ol.format.GeoJSON().readFeatures(data) //++ features[0].setStyle(style)//++
    var source = new ol.source.Vector({
    /* 将geojson数据设置给实例数据源 */
    features
    })
    var layer = new ol.layer.Vector({
    source
    })
    map.addLayer(layer);

    赞(0)
    未经允许不得转载:171主机测评 » WebGIS面试题:GIS篇(三)
    分享到: 更多 (0)

    评论 抢沙发

    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址