用GeoServer发布本地Shapefile地图数据

本文详细介绍了如何使用GeoServer部署和发布Shapefile格式的地图数据,包括新建工作区、数据存储和图层发布的过程。通过具体操作步骤,确保数据成功发布并可在线访问。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这是GeoServer官方网站提供的一份Shapefile测试数据 nyc_roads.zip ,包含了部分纽约的道路信息,我们本次就使用此Shapefile来进行部署和发布。

如果用户没有对GeoServer的文件系统进行更改的话,那复制解压上面文件完成后的文件目录应该是:geoserver/data_dir/data/nyc_roads,然后就是四个所需的Shapefile格式文件。

新建一个工作区

部署地图数据第一个步骤即为新建一个工作区,工作区(WorkSpace)是一个用于组织类似图层数据的容器。我们常常会把一些相关的图层数据放到一个工作区里。

新建工作区的操作流程为:

登录GeoServer的Web管理界面,依次点击右侧的工作区–添加新的工作区,进入新建工作区的界面,在这里需要输入工作区的名字和命名空间URL。


工作区名字就是一个标志符,用来区分你的不同的项目,而命名空间URL(Uniform Resource Identifier)通常是一个与你项目有关的超链接,如果你的服务器接入了互联网,做好了相关配置与发布,那么可以在互联网上通过这个URL来访问你的数据。

最后点击提交完成创建。

新建数据存储

为了添加nyc_roads中的Shapefile地图数据,你必须建立一个数据存储。数据存储实际上维护着地图数据和文件系统中的文件夹的映射关系。

点击数据存储–添加新的数据存储,我们可以看到GeoServer支持的众多矢量数据和栅格数据源:


因为我们要发布的是Shapefile地图数据格式,我们点选Shapefile – ESRI(tm) Shapefiles (*.shp)即可。

然后按照图中所示填写好相关信息。

要注意的是工作区应该选择我们第一步建立的,Shapefile文件的位置通过浏览选择我们在准备工作中复制到数据目录下data文件夹中的Shapefile。然后数据表的字符集应该和源数据一致,如果不知道源数据的字符集,建议选择UTF-8,保证对中文系统和用户的支持。


最后点击保存完成创建。

创建一个图层

新建数据存储后,默认会停留在新建图层的界面,我们直接在此开始建立图层。因为只有一个图层nyc_roads,点击发布进入图层编辑界面。图层编辑界面定义了图层的数据和发布参数。填入了名称、标题、摘要等基本信息后,我们需要定义重要的SRS信息和边框信息。


本机SRS是指地图数据本身的坐标参考系统,这是由地图数据本身的属性决定的,也是不可修改的。GeoServer会自动从数据文件中读取这一信息。

相对应的Native Bounding Box则是根据本机SRS自动计算出来的边框,我们点击从数据中计算就能计算出来边框范围。

定义SRS是指我们自己想要定义显示地图数据的坐标参考系统,我们通过右边的查找按钮进行查找选择。

对于国内用户来说,常用的坐标系统可以通过键入“beijing”、”xian”或者4326(WGS-84的编码序号)进行查找选择。选择确定后,通过点击“compute from nativ bounds”可以计算出在这个坐标系统下的边界。

最后点击保存进行发布。

图层预览

为了验证我们部署发布Shapefile地图数据成功与否,可以对刚刚发布的数据进行预览,点击左侧的Layer Preview,找到我们刚刚发布的地图图层,点击”Openlayers“进行预览,如果成功你可以看到下图所示的道路分布。


在这里,我们已经可以通过默认的控制条来进行放大缩小与平移,还能点击图中的地理要素来查看属性。

测试得到的URL为:

http://localhost:8080/geoserver/newyorkroad/wms?service=WMS&version=1.1.0&request=GetMap&layers=newyorkroad:nyc_roads&styles=&bbox=984018.1663741902,207673.09513056703,991906.4970533887,219622.53973435296&width=337&height=512&srs=EPSG:4326&format=application/openlayers

小结

至此,通过GeoServer部署发布Shapefile地图数据已经介绍完毕。

### 如何在 Cesium 中加载 GeoServer 发布的 SHIP 数据 为了在 Cesium 中加载由 GeoServer 发布的 SHIP (Shapefile) 数据,需遵循特定流程来配置和集成这些地理空间数据。 #### 配置 GeoServer发布 SHIP 数据 确保已通过 GeoServerWeb 管理界面设置好工作区(WorkSpace),创建了用于存储 Shapefile 文件的数据存储(Store)[^1]。完成此操作后,定义图层(Layer),使 SHIP 数据可通过 WFS(Web Feature Service) 或 WMS(Web Map Service) 协议访问。 #### 使用 Cesium 加载来自 GeoServer 的 SHIP 数据 对于基于矢量特性的 SHIP 数据而言,推荐采用 WFS-T (Transactional) 来获取要素集合;而如果仅需要图像形式的地图服务,则可以利用 WMS 请求方式。 ##### 方法一:WMS 图像叠加 当选择 WMS 方式时,可以通过 `Cesium.WebMapServiceImageryProvider` 类轻松实现地图瓦片显示: ```javascript var viewer = new Cesium.Viewer('cesiumContainer'); viewer.imageryLayers.addImageryProvider( new Cesium.WebMapServiceImageryProvider({ url : 'http://localhost:8080/geoserver/wms', layers : 'workspace_name:layer_name', // 替换 workspace 和 layer 名字 parameters : { transparent : true, format : 'image/png' } }) ); ``` ##### 方法二:WFS 要素查询与渲染 针对更复杂的交互需求或精确的空间分析场景下,建议运用 WFS 接口请求原始几何对象,借助于 `Cesium.GeoJsonDataSource` 解析呈现: ```javascript fetch(`http://localhost:8080/geoserver/ows?service=WFS&version=1.0.0&request=GetFeature&typeName=workspace_name%3Alayer_name&srsname=EPSG%3A4326`) .then(response => response.text()) .then(text => { var dataSource = new Cesium.GeoJsonDataSource(); return Cesium.GeoJsonDataSource.load(text, { stroke: Cesium.Color.HOTPINK, fill: Cesium.Color.PINK.withAlpha(0.5), strokeWidth: 3 }); }) .then(function(dataSource){ viewer.dataSources.add(dataSource); }); ``` 上述两种方法均能有效支持在 Cesium 应用程序内展示由 GeoServer 托管的服务资源。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值