栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

java将postgres图层表发布为geoserver服务

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

java将postgres图层表发布为geoserver服务

1、需要引入geoserver-manager依赖

        
            nl.pdok
            geoserver-manager
            1.7.0-pdok2
        

2、发布服务的思路
(1)创建geoserver的连接对象(连接上geoserver)
(2)创建工作区(已有就不用创建)
(3)创建数据源(已有就不用创建)
(4)发布图层服务
代码如下

package com.example.forestry.util.geoserver;

import it.geosolutions.geoserver.rest.GeoServerRESTManager;
import it.geosolutions.geoserver.rest.GeoServerRESTPublisher;
import it.geosolutions.geoserver.rest.GeoServerRESTReader;
import it.geosolutions.geoserver.rest.decoder.RESTDataStore;
import it.geosolutions.geoserver.rest.decoder.RESTStyle;
import it.geosolutions.geoserver.rest.encoder.GSLayerEncoder;
import it.geosolutions.geoserver.rest.encoder.datastore.GSPostGISDatastoreEncoder;
import it.geosolutions.geoserver.rest.encoder.feature.GSFeatureTypeEncoder;

import java.io.File;
import java.net.URL;

public class ServerUtil {

    
    public boolean publishGeoserver(){

        String host = "192.168.10.xx";   //postgres的ip
        Integer port = 5432;             //postgres的端口
        String username = "postgres";    //postgres的账号
        String password = "postgres";    //postgres的密码
        String database = "forestry";    //postgres的数据库名称
        String schema = "public";        //postgres的模块

        String url = "http://192.168.10.xx:8080/geoserver";    //geoserver的地址
        String un = "admin";         //geoserver的账号
        String pw = "geoserver";     //geoserver的密码

        String workspace = "shapefile";     //工作区名称
        String storename = "posttt";     //数据源名称
        String layername = "testxian";     //发布的图层名称,必须与数据库里的表名相同
        String title = "县级行政区";         //发布的图层标题

        try {
            //  1、获取geoserver连接对象
            GeoServerRESTManager manager = null;

            try {
                manager = new GeoServerRESTManager(new URL(url) , un , pw);
                System.out.println("连接geoserver服务器成功");
            }catch (Exception e){
                e.printStackTrace();
                System.out.println("geoserver服务器连接失败");
                return false;
            }
            GeoServerRESTPublisher publisher = manager.getPublisher();
            GeoServerRESTReader reader = manager.getReader();

            //  2、创建工作区,已有此工作区则不在创建
            boolean b3 = reader.existsWorkspace(workspace);
            if(!b3){
                boolean b = publisher.createWorkspace(workspace);
                if(!b){
                    System.out.println("工作区创建失败");
                    return false;
                }
            }

            //  3、创建数据源,已有此数据源则不再创建
            RESTDataStore restDataStore = reader.getDatastore(workspace, storename);
            if(restDataStore==null){
                //创建postgis连接对象
                GSPostGISDatastoreEncoder postgisDatastore = new GSPostGISDatastoreEncoder(storename);
                postgisDatastore.setHost(host);
                postgisDatastore.setPort(port);
                postgisDatastore.setUser(username);
                postgisDatastore.setPassword(password);
                postgisDatastore.setDatabase(database);
                postgisDatastore.setSchema(schema);

                boolean b1 = manager.getStoreManager().create(workspace, postgisDatastore);
                if(!b1){
                    System.out.println("创建数据源失败");
                    return false;
                }
            }

            //  4、发布图层服务
            GSFeatureTypeEncoder featureTypeEncoder = new GSFeatureTypeEncoder();
            featureTypeEncoder.setName(layername);
            featureTypeEncoder.setTitle(title);
            featureTypeEncoder.setSRS("EPSG:4326");

            GSLayerEncoder layerEncoder = new GSLayerEncoder();

            //  4.1、设置图层的样式(这一步也可以不设置,不设置则图层用的是默认样式)
            String styleName = "xianStyle";
            boolean b = reader.existsStyle(workspace, styleName);
            if(!b){
                File sldFile = new File("D:\data\sld\zhenjunSld\xianStyle.sld");
                publisher.publishStyleInWorkspace(workspace, sldFile);
            }
            layerEncoder.setDefaultStyle(workspace , styleName);

            //  4.2、进行发布
            boolean b2 = publisher.publishDBLayer(workspace, storename, featureTypeEncoder, layerEncoder);
            if(!b2){
                System.out.println("服务发布失败");
                return false;
            }

            return true;
        }catch (Exception e){
            e.printStackTrace();
            return false;
        }
    }



	//进行测试
    public static void main(String[] args) {
        ServerUtil serverUtil = new ServerUtil();
        boolean b = serverUtil.publishGeoserver();
        System.out.println(b);
    }


}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/708954.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号