`
jjxliu306
  • 浏览: 157670 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

geoserver通过rest自动发布postigs图层

    博客分类:
  • GIS
阅读更多

 geoserver自带rest服务,可以发布shp,postgis等数据源。本文目前只说明怎么通过geoserver的rest发布postgis表数据。

 

1、maven添加geoserver-manager的依赖。

 

 

<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>jcl-over-slf4j</artifactId>
			<version>1.7.5</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-api</artifactId>
			<version>1.7.5</version>
		</dependency>
		<dependency>
			<groupId>org.slf4j</groupId>
			<artifactId>slf4j-log4j12</artifactId>
			<version>1.7.5</version>
		</dependency>
		<dependency>
			<groupId>it.geosolutions</groupId>
			<artifactId>geoserver-manager</artifactId>
			<version>1.5.2</version>
		</dependency>

 

 

2、java代码开始

 

配置数据库连接参数、geoserver连接参数,要发布的图层信息参数

 

String url = "http://localhost:8000/geoserver" ;
		String username = "admin" ; 
		String passwd = "geoserver" ;
		
		//postgis连接配置
		String postgisHost = "localhost" ;
		int postgisPort = 6666 ;
		String postgisUser = "xxx" ;
		String postgisPassword = "xxx" ;
		String postgisDatabase = "xxx" ;
		
		String ws = "lyf" ; //待创建和发布图层的workspace
		String store_name = "lyf" ; //数据库连接要创建的store
		String table_name = "xxx" ; // 数据库要发布的表名称,后面图层名称和表名保持一致

 

 

 

判断workspace是否存在,不存在则创建:

		URL u = new URL(url);
		
		
		GeoServerRESTManager manager = new GeoServerRESTManager(u, username, passwd);
		
		GeoServerRESTPublisher publisher = manager.getPublisher() ;
		//创建一个workspace
		List<String> workspaces = manager.getReader().getWorkspaceNames();
		if(!workspaces.contains(ws)){
			boolean createws = publisher.createWorkspace(ws);
			
			System.out.println("create ws : " + createws);
		}else {
			System.out.println("workspace已经存在了,ws :" + ws);
		}

 

判断datastore是否已经存在,不存在则创建

//store 包含和workspace一致,一个ws一个连接即可
		RESTDataStore restStore = manager.getReader().getDatastore(ws, store_name);
		
		if(restStore == null){
		
			
			GSPostGISDatastoreEncoder store = new GSPostGISDatastoreEncoder(store_name);
            store.setHost(postgisHost);//设置url
            store.setPort(postgisPort);//设置端口
            store.setUser(postgisUser);// 数据库的用户名
            store.setPassword(postgisPassword);// 数据库的密码
            store.setDatabase(postgisDatabase);// 那个数据库;
            store.setSchema("public"); //当前先默认使用public这个schema
            store.setConnectionTimeout(20);// 超时设置
            //store.setName(schema);
            store.setMaxConnections(20); // 最大连接数
            store.setMinConnections(1);		// 最小连接数
            store.setExposePrimaryKeys(true);
            boolean createStore = manager.getStoreManager().create(ws, store);
			
            System.out.println("create store : " + createStore);
            
		} else {
			System.out.println("数据store已经发布过了,store:" + store_name);
		}

 

 

判断图层是否已经存在,不存在则创建

//发布
		
		RESTLayer layer = manager.getReader().getLayer(ws, table_name);
		
		if(layer == null){
			GSFeatureTypeEncoder pds = new GSFeatureTypeEncoder();
			pds.setTitle(table_name);
			pds.setName(table_name);
			pds.setSRS("EPSG:4326");
			  
			GSLayerEncoder layerEncoder = new GSLayerEncoder();
			
			boolean publish = manager.getPublisher().publishDBLayer(ws, store_name,  pds, layerEncoder);
			
			System.out.println("publish : " + publish);
		}else {
			System.out.println("表已经发布过了,table:" + table_name);
		}

 

 

好了,到此就结束了。

 

附件带了完整的demo。

 

0
1
分享到:
评论

相关推荐

    geoserver-rest-python

    综上所述,"geoserver-rest-python" 是一个用于简化GeoServer管理和发布的Python库,它通过REST API实现了对GeoServer的基本操作,支持发布各种地理数据,并且能够与PostGIS数据库集成。对于需要通过编程方式管理...

    geoserver-rest-python-1.1

    这个库允许用户通过Python脚本与Geoserver进行交互,完成如发布图层、管理工作空间、获取地图切片等操作。例如,你可以创建新的工作空间,上传地理数据,定义样式,然后发布为WMS服务。通过REST API,这些操作都可以...

    geoserver发布shp格式的图层 实现步骤(含图).doc

    总结,发布SHP图层到GeoServer涉及的工作主要包括安装GeoServer、配置工作空间、添加数据存储、预览和发布图层、设置图层样式以及配置WMS服务。通过这个过程,你可以将本地的Shapefile数据转换成可在线访问的地图...

    基于GeoServer REST的矢量地图服务自动发布研究与应用.docx

    5. GeoServer 的 REST 接口研究表明,GeoServer 的 REST 接口可以满足个性化地图服务发布的需求,通过设计并实现矢量地图服务自动发布模块,可以实现矢量地图服务的自动发布。 6. 矢量地图服务自动发布模块的应用在...

    geoserver配置图层缓存

    在GIS领域,Geoserver是一款开源的地理信息系统服务器,它能够发布、管理和处理地理空间数据。在处理大量请求时,为了提升服务响应速度和用户体验,配置图层缓存是必不可少的步骤。本篇文章将深入探讨如何在...

    80.(leaflet篇)leaflet调用geoserver发布的postgis数据图层.zip

    **步骤2:发布图层** 在Geoserver中,选择刚创建的数据存储,然后发布一个或多个图层。发布后,Geoserver会生成一个WMS URL,这个URL将用于从客户端(如Leaflet地图)请求地图图像。 **步骤3:创建Leaflet地图** 在...

    PyPI 官网下载 | geoserver-rest-2.0.0.tar.gz

    在"geoserver-rest"库中,Python开发者可以方便地利用这些接口,实现与Geoserver的高效通信,进行地图服务的自动化管理。 "zookeeper"标签暗示了该库可能依赖于Apache ZooKeeper,这是一个分布式的协调服务,用于...

    geoserver发布WMS,图层有SLD符号化

    - 在GeoServer管理界面中,发布图层时要设置本机SRS、定义SRS以及图层边框。 - 如果需要进行动态投影,可以通过定义SRS来改变图层的坐标系。 - 发布图层后,在编辑图层界面设置图层的样式,并保存编辑。 - 最后...

    geoserver-rest-samples:使用GeoServer REST API的样本

    通过其REST API的Geoserver 赫罗纳会议代码和 获取代码 $ git clone https://github.com/michogar/geoserver-rest-samples.git $ cd geoserver-rest-samples $ npm install 入门 为了能够使用这些示例,您必须在URL...

    cesium结合geoserver利用WFS服务实现图层编辑.zip

    在GeoServer管理界面中发布图层,这通常涉及到加载数据存储(如Shapefile、PostGIS数据库等)并创建工作空间。 2. **启用WFS服务**:在GeoServer中,为发布的图层启用WFS服务。在图层配置页面,找到“ WCS & WFS ”...

    geoserver-rest:包装程序库,用于与Geoserver REST API进行交互

    包装程序库,用于与Geoserver REST API进行交互 贡献 发现了错误?是否要实施一项新功能?非常欢迎您的贡献! 较小的更改和错误修复可以通过请求请求提交。在较大的贡献中,推荐了初步计划(在GitHub问题中讨论)。 ...

    geoserver 批量发布

    Geoserver的批量发布功能旨在提高数据管理的效率,通过编写脚本或程序,可以一次性发布大量地理数据,避免手动逐个添加的繁琐过程。这在处理大规模、多源或频繁更新的数据时尤其重要。批量发布通常涉及创建工作空间...

    如何利用Geoserver将矢量数据发布成伪3D服务文章的测试数据

    7. **测试服务**:发布服务后,可以通过Geoserver的预览功能或任何支持WMS/WMTS的客户端(如QGIS、OpenLayers等)来查看和验证发布的伪3D效果。 8. **优化性能**:如果数据量大,可能需要考虑缓存策略,如使用WMTS...

    leaflet结合geoserver利用WFS服务实现图层编辑.zip

    本教程将详细介绍如何通过Leaflet与GeoServer的集成,利用WFS服务来实现地图图层的编辑功能。 首先,了解WFS服务。WFS是一种OGC(开放地理空间联盟)标准,它允许客户端通过HTTP请求获取、修改和删除地理空间特征...

    geoserver-manager测试

    - **发布图层**:调用`storeLayer`,指定数据存储、图层名、坐标参考系等参数。 - **设置图层风格**:使用`setLayerStyle`,可以将图层关联到特定的SLD(Styled Layer Descriptor)文件。 5. **错误处理与调试**...

    测试geoserver-manager

    geoserver-manager 使用Geoserver的REST API

    cesium结合geoserver利用WFS服务实现图层删除.zip

    本教程将详细介绍如何将Cesium与GeoServer集成,通过WFS(Web Feature Service)服务来实现图层的删除操作。以下是详细的知识点讲解: 1. **Cesium**:Cesium是一个基于 WebGL 的JavaScript库,它允许开发者在...

    openlayers 编辑geoserver图层

    GeoServer允许用户通过Web界面进行地图服务的发布、图层管理和权限设置。 结合OpenLayers和GeoServer,我们可以实现地图的编辑功能。在GeoServer中发布数据后,OpenLayers可以通过WFS服务与GeoServer通信,执行CRUD...

    79.(leaflet篇)leaflet使用CQL过滤Geoserver发布的图层.rar

    2. **添加GeoServer WMS图层**:接下来,我们需要通过WMS接口获取GeoServer发布的图层。在URL中包含CQL过滤器,以便仅加载满足条件的数据。 ```javascript var wmsLayer = L.tileLayer.wms('...

Global site tag (gtag.js) - Google Analytics