PostGis+GeoServer+OpenLayer发布地图服务

2 篇文章 0 订阅
1 篇文章 0 订阅

PostGis+GeoServer+OpenLayer发布地图服务

1. 数据准备

  • 下载数据
    • 链接:https://pan.baidu.com/s/1sLb_mjRe3VJWilK2NnAXSQ 提取码:luzg

2. 导入postgis

  • 创建用户、建库比较简单就不赘述
    创建用户
    • 值得注意的是这里务必要加一句sql,否则下面shapfile文件是无法加载进去的
    CREATE EXTENSION postgis;
    
    • 若还不行,则再加多几个扩展,具体可参考官方文档
  • 打开postgis的“postgis shapefile and dbf loader exporter”的程序
    • 在连接好数据库之后
      连接数据库
      连接数据库
    • 此时需要更改以下Option的内容(如下图所示)
      修改option
    • 搞定之后就只需要把下载下来的数据加载进去
    • PS:将文件的的SRID(空间参考信息)值更改为26918。请注意,架构、表名和列名已经根据shapefile文件里的信息填充
      SRID
    • 配置信息如下图所示
      配置信息
    • 加载所有文件后,单击pgAdmin中的"Refresh"按钮更新树状视图。应该可以看到表显示在树结构:数据库>nyc>架构>public>数据表里。
      树结构
  • SRID补充
    • “SRID"表示“Spatial Reference IDentifier(空间参考标识符)"。它定义了我们数据的地理坐标系统和投影的所有参数。
    • SRID很方便,因为它将有关地图投影的所有信息(可能非常复杂)打包(更具体的说应该是映射)到一个数字中。
    • 世界上并不是每个地图投影都有对应的SRID编号,但大多数常见的投影都有对应的且保存在prj2epsg数据库中的SRID编号。

3.使用GeoServer发布Shapfile数据

  • 选择”开始>所有程序>GeoServer2.14.3>Start GeoServer“,启动GeoServer。
  • 登录Geoserver创建工作区
    Geoserver
  • 创建新的数据源
    新建数据源
    • 在"工作区"选择nyc,在"数据源名称"输入: nyc_buildings
      数据源名称
    • 保存
  • 创建图层
    新建图层
    • 编辑图层
      编辑图层
    • 点击"从数据中计算"和"Compute from native bounds"来生成图层的bounding box:(这里的经纬度边框要记下来,后面要用到)
      经纬度
    • 在Layer Preview中找到nyc:nyc_buildings,然后点击旁边的"OpenLayers"
      发布
      • 预览到刚才发布的图层
        预览
        • 此时需要记录下发布的url地址,后面结合openlayer渲染到页面上
          记录url

4.OpenLayers环境搭建与配合GeoServer显示地图

  • 由上述可得该页面的url地址,需要得到的是
  • 地址和图层名
    • http://localhost:8008/geoserver/nyc/wms
    • layers=nyc:nyc_buildings
  • 发布渲染(效果如下)
    渲染结果
    • (代码如下)
 <div id="map"></div>

    <script type="text/javascript">
        var map = new ol.Map({
            target: 'map',
            view: new ol.View({
                //经纬度,这里最主要是参考发布时候计算出来的经纬度,因此一定要把计算出来的经纬度查出来
                center: ol.proj.fromLonLat([-73.98,40.749]),
                zoom: 14
            })
        });

        var baseSource = new ol.source.TileWMS({
            url: 'http://localhost:8008/geoserver/nyc/wms',
            params: {
                //这里的nyc是uft-8转换之前的数据
                'LAYERS': 'nyc:nyc_buildings',
                'TILED': true
            },
            serverType: 'geoserver'
        });

        var baseLayer = new ol.layer.Tile({
            source: baseSource
        });

        map.addLayer(baseLayer);
    </script>

本文参考不睡觉的怪叔叔;在他的教程下,汇总知识,成功完成地图服务的发布

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PostGIS是一个用于存储和查询地理数据的开源空间数据库扩展,它允许用户在PostgreSQL数据库中存储地理位置数据,并提供了丰富的地理位置函数和索引支持,使得对地理数据的分析和查询更加高效。 GeoServer是一个开源的地理信息系统服务器,它可以连接多种数据存储,包括PostGIS数据库,并将其以符合标准的地理信息数据格式发布地图服务,使用户可以通过标准的地理信息服务接口(如WMS、WFS等)来访问地理数据。 路径分析是指在地理空间中计算两个地点之间的最佳路径,其中包括路径的距离、时间、成本等因素。在PostGIS中,可以使用ST_Distance函数计算两个地理位置之间的距离,也可以使用ST_LineInterpolatePoint函数在线段上插值出指定距离的点,从而实现路径的计算和分析。而GeoServer可以通过WMS服务向客户端呈现计算好的最佳路径,在地图上直观显示出来。 结合PostGISGeoServer,可以实现包括路径计算、路径可视化、路径查询等功能。用户可以在PostGIS中存储地理位置数据,使用PostGIS的空间函数进行路径分析,然后通过GeoServer将结果以地图服务的形式发布出来,使得用户可以通过标准的地理信息服务接口来获取路径分析的结果。这样,用户可以通过网络浏览器或地理信息系统软件来访问和展示路径分析的结果,实现更加直观和方便的路径分析应用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值