openlayer3+postgis+geoserver搭建简单gis服务框架问题探究

lhgis lhgis     2022-12-27     325

关键词:

传统GIS开发中,我们一般会采用ArcGIS或者SuperMap作为GIS平台来进行开发,简单的分析查询会采用官方api或者leaflet,esri-leaflet等进行开发,复杂的查询分析统计功能会利用Geoprocessor(简称GP)来进行操作,采用这种商业平台好处显而易见是开发效率很大的提升,因为在这么多年的发展过程中,官方社区或者一些解决方案都很成熟。在开发过程中遇到的一般问题如果不是很好解决,也可以很方便的向技术支持寻求帮助。但是缺点就是费用很高,一整套产品下来就要好几十万,对于开发成本来说这个费用还是很高的。因此提出了基于OpenLayer3+PostGIS+GeoServer 搭建GIS服务框架的想法。

1 GeoServer:一款开源WebGIS地图服务器,类似ArcGIS Server,提供统一OGC接口服务WMS/WFS/WMTS,功能比较强大,便于使用,使用量多较成熟;

2 OpenLayer:一款开源前台地图API产品,对数据进行可视化、空间分析、成果展示;

3 PostGIS:一款开源先进的开源空间数据库;

4 PostgreSQL:PostgreSQL(以下简称PG数据库) 是一个自由的对象-关系数据库服务器(数据库管理系统),除了作为普通关系数据库所具有的的特征外,我看到其最吸引的优势是其数据类型,包括:任意精度的数值,无限制长度文本,几何图元,IP地址与IPv6地址,无类域间路由地址块,MAC地址,数组…………此外,用户可以创建自定义数据类型,通常通过PostgreSQL的GiST机制,它们也能被很好得索引,比如PostGIS地理信息系统的数据类型, 同时也要指出的是,PostgreSQL 对接口的支持也是非常丰富的,几乎支持所有类型的数据库客户端接口。这一点也可以说是 PostgreSQL 一大优点。

  •       步骤一    底图导出

                用太乐底图下载器下载天地图或者百度地图当作服务底图(推荐使用天地图,因为天地图坐标系默认采用web墨卡托投影不偏移,下载好数据之后导出,需要注意下面几点

               1 存储标准选择大图拼接,存储格式选择tif格式(geoserver支持),选择级别只选择最高等级即可,虽然我们下载了总共有18级,但是不需要全部选中,效果是一样,这一点我已经在ArcMap进行测试。

               2 在导出的高级设置选项里面 ,把默认的智能分块进行取消掉,选择坐标系是xian80坐标系

          

        技术分享图片 技术分享图片

  •     步骤二   地理配准                

      1  打开ArcMap  把所下载的地理数据tif格式导入到ArcMap,颜色会进行变化。  图层属性里面 拉伸选择无就好了

       技术分享图片 技术分享图片

                   2   然后把shp数据叠加在一起  ,如果有偏移的话,可以进行地理校准。然后把校准的数据导出保存。如果在ArcMap中可以叠加 不便宜 就可以在geoserver 上调取服务叠加。

         技术分享图片

                 3   可以通过把postgis 导入到postgresql (步骤就不详细写了,网上教程很多)。 需要注意的事项就是postgis要安装在同一安装目录。

                      数据如下。

                      postgressql 下载地址:https://www.enterprisedb.com/downloads/postgres-postgresql-downloads#windows

                      postgis 下载地址:http://postgis.net/windows_downloads/

                  技术分享图片

 

  •    geoserver 服务发布 

                 1 登陆geoserver ,左侧新建工作区  写好之后 提交

       技术分享图片

                    2 左侧新建数据存储,可以选择新建的工作区。选择tif格式,把数据进行发布。也可以进行切图处理。

                      同理 shp数据也可以这样发布。可以选择从本地打开或者从数据库导入shp数据。(这需要注意一点 shp数据不能为中文!)

        技术分享图片

  •  步骤三  前端叠加展示

      技术分享图片

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

                

openlayer3计算两点之间的距离

openlayer3计算两点之间的距离对应的openlayers的版本为3.7.主要用的接口是ol.Sphere.haversineDistance([x1,y1],[x2,y2]);4326坐标系中计算两点距离的方式为:varwgs84Sphere=newol.Sphere(6378137);wgs84Sphere.haversineDistance(C1,C2);示例为:varwgs84Sph 查看详情

openlayer3的使用疑惑

<body><divid="map"></div><script>varmap=newol.Map({target:‘map‘,layer:[],view:newol.View({center:[0,0],zoom:2})});vartileLayer=newol.layer.Tile({source:newol.source.OSM()});map 查看详情

openlayer3相关扩展

1ol3扩展http://viglino.github.io/ol-ext/,里面包含编辑-选择控件,字体,动画,canvas绘制等等实例2ol3空间拓扑关系库jsts,有jst衍生过来http://bjornharrtell.github.io/jsts/3ol3相关示例的演示及代码说明http://develop.smaryun.com:81/API/JS/OL3InterfaceDemo... 查看详情

openlayer3在layer上添加feature

首先获取layer的source,所以你的source里就先要有内容。vectorLayer.getSource().addFeature(iconFeature);如果source里面没有定义过,则会有如下错误:还有一点需要注意的是:addFeature()与addFeatures()的区别。(个人见解)addFeatures()会覆盖原sourc... 查看详情

openlayer3基础学习一创建&显示地图(代码片段)

<!doctypehtml><htmllang="en"><head><linkrel="stylesheet"href="https://openlayers.org/en/v4.6.5/css/ol.css"type="text/css"><style>.mapheight:400px;width:100%;</style& 查看详情

openlayer3-加载第三方地图,百度,谷歌等

OpenLayers3之加载地图摘要在浏览器中加载一幅地图,而且是可交互(包含缩放、平移、查询和分析等高级功能)的,该怎么做呢?我们当然知道要想网页中的内容是动态的,可交互的,要使用JavaScript,地图应用也不例外,不过要... 查看详情

openlayer3中地图重复怎么获取正确的坐标点

对mapview添加OnMapClickListener事件监听,监听中有两个方法,publicvoidonMapClick(LatLngpoint)获取到的是空白地点的坐标;publicbooleanonMapPoiClick(MapPoipoi)获取到的是标记的建筑名称。具体代码如下:mMapView=(MapView)findViewById(R.id.bmapView);mBaiduMap... 查看详情

Postgis / Geodjango:无法确定数据库的 PostGIS 版本

】Postgis/Geodjango:无法确定数据库的PostGIS版本【英文标题】:Postgis/Geodjango:CannotdeterminePostGISversionfordatabase【发布时间】:2011-11-2110:49:38【问题描述】:我正在尝试启动GeoDjango应用程序。我已经在Lion上使用brew安装了Postgres和PostGIS... 查看详情

使用 liquibase 和 docker postgis/postgis 的错误编码

】使用liquibase和dockerpostgis/postgis的错误编码【英文标题】:Wrongencodingusingliquibaseanddockerpostgis/postgis【发布时间】:2021-12-1213:18:51【问题描述】:我的sprintboot项目使用dockerpostgresqldbpostgis/postgis有一个非常奇怪的行为。我用这个docke... 查看详情

安装 PostGIS 的问题

】安装PostGIS的问题【英文标题】:IssuesinstallingPostGIS【发布时间】:2011-06-0512:19:27【问题描述】:我正在尝试按照以下说明安装PostGIS:wgethttp://postgis.refractions.net/download/postgis-1.5.2.tar.gztarzxvfpostgis-1.5.2.tar.gz&&cdpostgis-1.5.2/sudo.... 查看详情

postgis总结(代码片段)

PostGreSQL(三)PostGISPostGreSQL(四)PostGIS-空间数据存储PostGreSQL(五)PostGIS-常用函数PostGreSQL(六)PostGIS-空间连接和空间索引PostGreSQL(七)PostGIS-几何图形创建函 查看详情

postgis完整函数列表

一、完整函数列表https://postgis.net/docs/PostGIS_Special_Functions_Index.html#NewFunctions_2_5 查看详情

postgis完整函数列表

一、完整函数列表https://postgis.net/docs/PostGIS_Special_Functions_Index.html#NewFunctions_2_5 查看详情

PostGIS中的ST是啥?

】PostGIS中的ST是啥?【英文标题】:WhatisSTinPostGIS?PostGIS中的ST是什么?【发布时间】:2011-11-0606:34:31【问题描述】:PostGIS中几乎所有的功能都是以ST开头的。例如ST_Distance_Sphere、ST_GeomFromText、ST_Intersection等ST是什么意思?http://www... 查看详情

错误:匹配 postgis 自定义模式时,函数 postgis_lib_version() 不存在

】错误:匹配postgis自定义模式时,函数postgis_lib_version()不存在【英文标题】:ERROR:functionpostgis_lib_version()doesnotexistwhenmatchingapostgiscustomschema【发布时间】:2020-07-2818:03:14【问题描述】:我有一个带有在docker容器中运行的PostGIS数据... 查看详情

postgis_layertransform

【转】postgis_LayerTransform一个在postgis中结合中国国情,批量对数据进行加偏到百度坐标,高德谷歌的火星坐标,或者逆向纠偏安装:在postgresql-postgis空间数据库中,执行sql文件中语句即可。使用:selectLayerTransform(ininputlayertext,--输... 查看详情

postgresql与postgis结合示例(代码片段)

  postgresql支持空间数据存储。  postgis是postgresql的一个扩展。与postgresql配合使用,需要对应的版本。如果是windows上安装,可以参考这里选择对应的postgis版本。  如果不安装postgis插件,在进行创建postgis扩展的时候&... 查看详情

postgis版本升级(代码片段)

postgis版本升级文章目录postgis版本升级前言postgis升级过程🌈后记前言今天在把postgresql数据库版本升级11.5升级14时报错:查看报错vimloadable_libraries.txt查看pg11的postgis的版本su-postgres上一次登录:三9月2814:49:51CST2022pts/1上... 查看详情