如果你真的愿意去努力,你人生最坏的结果,也不过是大器晚成。
前言
对于一个从没搞过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(扩展)也比默认库多了很多,应该主要用于空间相关的处理:
二、下载osm2pgsql
下载地址:customdebug.com/osm/osm2pgs…
下载后解压, 还需要准备一个文件:default.style
注:新建一个txt文档,将以上链接内的代码拷贝进去,重命名-> default.style->将该文件放到...\osm2pgsql\x64文件夹下
三、下载 osm数据
osm数据下载:www.openstreetmap.org/#map=12/31.…
可以手动选择区域进行下载osm数据
四、修改PostgreSQL配置
修改 pg_hba.conf (路径:…\PostgreSQL\10\data)
将原 md5 改为 trust
五、OSM数据导入PostgreSQL中
1、新建一个数据库osm
2、为数据库osm添加postgis对象和函数定义(postgis.sql)
3、加载EPSG坐标系统定义(spatial_ref_sys.sql)
4、导入osm数据
将下载的map.osm地图数据放到…\osm2pgsql\x64文件夹下,并在该位置打开指令窗口,(osm是新建的数据库,这个指令将下载的地图数据放入这个数据库)
导入成功:
5、预览
导入成功后,打开 pgAdmin 即可看到多了4张表:
六、安装 GeoServer 并绑定数据
一、下载
下载地址:geoserver.org/release/sta…
Platform Independent Binary : 二进制版本,解压即可使用
二、安装
直接解压即可,如下图所示:
运行 bin 文件夹下的startup.bat (linux 为 startup.sh)
运行成功后,窗口不能关,这是服务:
打开 http://localhost:8080/geoserver/web/ 如下图,安装成功:
右上角登录,用户名:admin 密码:geoserver
三、绑定数据发布服务
1、添加工作区
选择“工作区” -> “添加新的工作区”:
输入工作区名称和命名空间:
2、添加新的数据存储
新建数据源,选择 PostGIS – PostGIS Database:
输入数据源的基本信息,工作区选择上面新建的工作区,连接参数填写 PostgreSQL的连接信息,database填写在上一篇中导入OSM数据的数据库:
3、新建图层
数据源保存后,会自动进入新建图层,这里列出了此数据库中可发布的图层数据:
点击发布,进入编辑图层:
边框直接点“从数据中计算”,将会从图层中自动计算边框:
保存后,再打开“图层” -> “添加新的资源”:
参照上面发布图层,将四个图层都发布,我这里都已经发布成功了:
4、添加图层组
将上面的4个图层添加进来:
添加完图层后,点击“生在边界”,自动生成边界坐标:
注意:图层是按顺序从第一层到最后一层加载的,第一层在最下面。
5、预览
打开 “Layer Preview” – “OpenLayers”:
成功:
总结:
这些只是将下载的地图的点、线、面等数据存储在数据库里面,后面还需要对地图进行样式的渲染,还有二次开发…任重而道远啊,加油!
今天的文章公司没GIS开发,让我上…分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/17425.html