学习目标:
dwg转shp并使用geoserver发布
学习内容:
一:CAD去掉不用的图层
新建一个空白的CAD文件,把你想要保存的图复制(ctrl+shift+c)粘贴(ctrl+v)到里面。(这种方法有一个缺点是,如果你要单独保存的图形比较大,在你复制的时候可能会出现卡顿现象)
二:使用QGIS将dwg转成shp格式文件
-
工程 -> 新建
-
工程 -> 导入/导出 -> 从DWG/DXF文件导入图层
-
如下图所示,点击“…”新建一个gpkg文件 -> 点击“导入”dwg2013文件 -> 写一个组名 ->点击ok
-
导出结果如下:(有的时候右侧界面展示不出来,保存一下试试)
三、导出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
# 退出容器