PostGis+GeoServer+OpenLayer发布地图服务

本文详述了如何使用PostGIS、GeoServer及OpenLayers进行地图服务的发布过程,包括数据导入、图层创建及地图渲染。通过具体步骤与代码示例,帮助读者掌握地图服务发布的技术要点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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>

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值