Skip to content

入库并发布地图服务 ​

把本地的 Shapefile、GeoJSON 等成果导入 PostGIS,再发布成 GeoServer 的 WMS / WFS 图层并配好样式,一次对话完成从文件到服务。适合把分析成果交给 WebGIS 系统、共享给同事或业务平台使用。

你会得到什么 ​

  • PostGIS 中的新表(带空间索引和系统主键 _id);
  • GeoServer 上的图层,名称为“工作空间:表名”,提供 WMS / WFS;
  • 按字段和几何类型编写的 SLD 样式,已设为图层默认样式。

准备 ​

需要说明
PostgreSQL / PostGIS 连接器填写主机、端口、数据库、用户、密码,权限选「读写」;数据库需要已启用 PostGIS 扩展
GeoServer 连接器服务地址填到 /geoserver 为止,账号需要有 REST 写权限,权限选「读写」
网络GeoServer 服务器要能用 PostGIS 连接器里填的地址访问到数据库

连接器在「设置 → 连接器」里添加,填好后点「测试」,见连接器。密码只保存在本机,大模型看不到。

这样说 ​

把 D:\data\landuse.shp 导入 PostGIS 的 analysis schema,表名 landuse_2024,坐标系 EPSG:4490;然后发布到 GeoServer 的 planning 工作空间,按 dlmc 字段的地类分类设色,耕地黄色、林地绿色、水域蓝色、建设用地红色,其他灰色;发布完告诉我图层名和范围。

智能体会怎么做 ​

  1. 检查数据:用 GDAL 查看 Shapefile 的坐标系、字段和要素数;
  2. 转换格式:PostGIS 插件导入的是 GeoJSON / GeoJSONSeq,先用 GDAL 把 Shapefile 转成 GeoJSON;
  3. 入库:建表并导入,属性列自动推断类型,几何列建空间索引。整个导入在一个事务里完成,失败自动回滚,不会留下半张表。写库需要审批;
  4. 发布:把 PostGIS 表发布为 GeoServer 图层,工作空间和数据存储不存在时自动创建,需要审批;
  5. 配置样式:根据字段取值和几何类型写一份 SLD,上传并设为图层默认样式,需要审批;
  6. 核对:查询图层清单和范围,在回复里告诉你图层名和经纬度范围。

如果某一步缺少权限(例如连接器是「只读」),会直接报错并说明原因,不会绕过。

检查成果 ​

  • 打开 GeoServer 管理页面的图层预览,查看样式效果;
  • 在 QGIS 里加载这个 WMS / WFS 图层检查(见在 QGIS / ArcGIS 里出图);
  • 在「数据源」页面点「刷新」,新表和 GeoServer 图层会出现在对应分组里,见数据源。

接着可以说 ​

  • “列出 GeoServer 上的工作空间和图层”
  • “看一下 analysis.landuse_2024 的字段、坐标系和要素数”
  • “把今天新做的 result.geojson 追加到这张表”
  • “把 _id 为 12 的记录的 dlmc 改成林地”
  • “样式里加上地类名称标注,1:1 万以上比例尺才显示”
  • “数据量太大了,改成矢量瓦片发布”(见Web 地图瓦片与三维)

注意 ​

  • 只发布 PostGIS 表:GeoServer 插件发布的数据源仅限 PostGIS 表,Shapefile、GeoTIFF 等文件需要先入库;
  • 连接权限:只浏览和查询可以用只读账号;入库、发布、改样式都需要「读写」连接器,只读连接器会直接拒绝;
  • 数据库地址:PostGIS 连接器里的主机、端口、账号会写入 GeoServer 的数据存储。你在本机用 localhost 连数据库、而 GeoServer 在另一台机器上时,GeoServer 会连不上,这种情况连接器里要填服务器能访问的地址;
  • 命名:schema、表、工作空间等名称只允许字母、数字、下划线和连字符,不能用中文;
  • MySQL:MySQL 插件同样支持 GeoJSON 入库,但 GeoServer 插件只能发布 PostGIS 表;
  • 加密连接:PostGIS、MySQL 连接目前不支持 SSL 加密。