dwg转shp并使用geoserver发布

学习目标:

dwg转shp并使用geoserver发布


学习内容:

一:CAD去掉不用的图层
新建一个空白的CAD文件,把你想要保存的图复制(ctrl+shift+c)粘贴(ctrl+v)到里面。(这种方法有一个缺点是,如果你要单独保存的图形比较大,在你复制的时候可能会出现卡顿现象)
在这里插入图片描述
二:使用QGIS将dwg转成shp格式文件

  1. 工程 -> 新建

  2. 工程 -> 导入/导出 -> 从DWG/DXF文件导入图层

  3. 如下图所示,点击“…”新建一个gpkg文件 -> 点击“导入”dwg2013文件 -> 写一个组名 ->点击ok
    在这里插入图片描述

  4. 导出结果如下:(有的时候右侧界面展示不出来,保存一下试试)
    在这里插入图片描述
    三、导出shp文件
    按下图的方式,在图层界面,连续打开下拉子图层
    在这里插入图片描述
    然后 右键 -> 导出 -> 要素另存为 打开下图,
    注意:
    1:格式选择
    2:.shp文件是多个文件选择文件名后面的…选择保存路径
    在这里插入图片描述
    点击ok就导出了
    在这里插入图片描述
    依次全部导出的结果。

四:用geoServer发布.shp文件
首先启动geoserver,新建一个工作空间,工作空间>添加新的工作空间:
在这里插入图片描述
填写要新建的工作空间相关的Name和命名空间URL(这里命名空间不是要填实际的URL地址嗷,只是起一个唯一的标识符的作用,随便填什么都行),然后点击保存:
在这里插入图片描述
现在再来添加一个数据源,点击存储仓库>添加新的存储仓库:
在这里插入图片描述
如下所示,可以看到可以添加许多数据类型,矢量和栅格,甚至可以选择其他地图服务:
在这里插入图片描述这里就选择Directory of spatial files类型(或者选第六个Shapefile也可以,只不过后面添加shp文件目录一个是选shp文件,一个选shp文件所在文件夹)

最好将我们预先准备好的shp文件放在geoserver文件目录下
在这里插入图片描述

填写这个数据源的相关属性信息,工作空间就选择我们之前新建的,数据源名称随便,文件目录选择shp文件(这里需要注意的是DBF的字符集的设置很重要,最好跟原数据集一致就不会出现中文乱码问题)。
在这里插入图片描述
点击保存后数据源就创建好了,我们直接发布这个图层,点击发布:

在这里插入图片描述
下面来编辑图层信息,上面的信息直接跳过不用填:
在这里插入图片描述
修改坐标系,点击查找输入90093查找并选择
在这里插入图片描述
再让geoserver帮你计算边框:点击保存。
在这里插入图片描述
点击保存图层就创建好了,点击图层预览:

在这里插入图片描述
点击Openlayers可以预览了
在这里插入图片描述

添加图层组
在这里插入图片描述
预览图层组
在这里插入图片描述
添加样式并引用
在这里插入图片描述
在这里插入图片描述
预览
在这里插入图片描述
常见问题:汉字标注乱码

为宿主机安装字体
开发自己电脑的C:\Windows\Fonts文件夹,将文件夹中的所有文件上传到宿主机的/usr/share/fonts/my_fonts中

# 安装字体索引指令
yum install mkfontscale
# 生成字体索引
cd  /usr/share/fonts/my_fonts
mkfontscale

创建文件夹

mkdir -p /home/docker/geoserver

创建docker-compose.yaml文件

vi docker-compose.yaml

将一下内容贴入

version: '3'
services:
  geoserver:
    restart: always
    image: oscarfonts/geoserver
    container_name: geoserver
    volumes:
      - ./data_dir:/var/local/geoserver
      - ./plugin:/var/local/geoserver-exts/
      - /usr/share/fonts/:/usr/share/fonts/ # 此处将宿主机字体映射到容器中,解决发布图层中文乱码问题
    ports:
      - "8060:8080"

启动容器

docker-compose up -d

交互式进入容器

docker exec -it geoserver /bin/bash

容器内操作

# 生成字体索引
cd  /usr/share/fonts/my_fonts
mkfontscale
# 退出容器

在这里插入图片描述