阅读 485

公司没GIS开发,让我上...

路漫漫其修远兮,吾将上下而求索。

前言

对于一个从没搞过GIS开发的人来说,一开始真的是无从下手,网上搜索各种资源,最终...

地图发布肯定要有一个地图服务器啊,于是找到了GeoServer地图服务器,地图来源呢,找到了OpeStreetMap(简称OSM,中文是公开地图)是一个网上地图协作计划,目标是创造一个内容自由且能让所有人编辑的世界地图。

用啥存储地图数据呢,嗯,PostgreSQL搭配PostGIS插件...一整套下来,居然发布成功了。

下面讲讲是怎么一步一步研究的吧

正文

一、下载安装PostgreSQL和PostGIS

网上找了篇文章,下载安装很简单,附上两个链接:

安装 PostgreSQL:https://www.runoob.com/postgresql/windows-install-postgresql.html

安装PostGIS:https://blog.csdn.net/antma/article/details/83580859

安装成功后,进入 pgAdmin 可以看到已初始化了一个空间数据库,Schemas 下面比默认库多了几个,同时可以看到Casts(转换器)和Extensions(扩展)也比默认库多了很多,应该主要用于空间相关的处理:

image-20210610154119915.png

二、下载osm2pgsql

下载地址:customdebug.com/osm/osm2pgs…

下载后解压, 还需要准备一个文件:default.style

github.com/openstreetm…

注:新建一个txt文档,将以上链接内的代码拷贝进去,重命名-> default.style->将该文件放到...\osm2pgsql\x64文件夹下

image-20210610154527555.png

三、下载 osm数据

osm数据下载:www.openstreetmap.org/#map=12/31.…

image-20210610154857928.png 可以手动选择区域进行下载osm数据

四、修改PostgreSQL配置

修改 pg_hba.conf (路径:...\PostgreSQL\10\data)

将原 md5 改为 trust

wps2.jpg

五、OSM数据导入PostgreSQL中

1、新建一个数据库osm

image-20210610155127311.png

2、为数据库osm添加postgis对象和函数定义(postgis.sql)

image-20210610155329553.png

3、加载EPSG坐标系统定义(spatial_ref_sys.sql)

image-20210610155356836.png

4、导入osm数据

将下载的map.osm地图数据放到...\osm2pgsql\x64文件夹下,并在该位置打开指令窗口,(osm是新建的数据库,这个指令将下载的地图数据放入这个数据库)

image-20210610155448121.png

导入成功:

image-20210610155505130.png

5、预览

导入成功后,打开 pgAdmin 即可看到多了4张表:

image-20210610155549152.png

六、安装 GeoServer 并绑定数据

一、下载

下载地址:geoserver.org/release/sta…

wps3.jpg

Platform Independent Binary : 二进制版本,解压即可使用

二、安装

直接解压即可,如下图所示:

wps4.jpg

运行 bin 文件夹下的startup.bat (linux 为 startup.sh)

wps5.jpg

运行成功后,窗口不能关,这是服务:

wps6.jpg

打开 http://localhost:8080/geoserver/web/ 如下图,安装成功:

右上角登录,用户名:admin 密码:geoserver

wps7.jpg

三、绑定数据发布服务

1、添加工作区

选择“工作区” -> “添加新的工作区”:

image-20210610160644980.png

输入工作区名称和命名空间:

image-20210610160736229.png

2、添加新的数据存储

image-20210610160939976.png

新建数据源,选择 PostGIS - PostGIS Database:

image-20210610161021700.png

输入数据源的基本信息,工作区选择上面新建的工作区,连接参数填写 PostgreSQL的连接信息,database填写在上一篇中导入OSM数据的数据库:

image-20210610161125928.png

3、新建图层

数据源保存后,会自动进入新建图层,这里列出了此数据库中可发布的图层数据:

image-20210610161335399.png

点击发布,进入编辑图层:

image-20210610161502601.png

边框直接点“从数据中计算”,将会从图层中自动计算边框:

image-20210610161553430.png

保存后,再打开“图层” -> “添加新的资源”:

image-20210610161711628.png

参照上面发布图层,将四个图层都发布,我这里都已经发布成功了:

image-20210610161746782.png

4、添加图层组

image-20210610161900239.png

image-20210610161930795.png

将上面的4个图层添加进来:

image-20210610162138788.png

添加完图层后,点击“生在边界”,自动生成边界坐标:

image-20210610162347642.png

注意:图层是按顺序从第一层到最后一层加载的,第一层在最下面。

5、预览

打开 “Layer Preview” - “OpenLayers”:

image-20210610162516302.png

成功:

image-20210610162544733.png

总结:

这些只是将下载的地图的点、线、面等数据存储在数据库里面,后面还需要对地图进行样式的渲染,还有二次开发...任重而道远啊,加油!

文章分类
后端
文章标签