GeoServer系列-java发布shp文件

pom引入

        <dependency>
            <groupId>it.geosolutions</groupId>
            <artifactId>geoserver-manager</artifactId>
            <version>1.7.0</version>
        </dependency>

单元测试



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.RESTLayer;
import it.geosolutions.geoserver.rest.encoder.datastore.GSShapefileDatastoreEncoder;
import org.apache.hc.core5.http.message.BasicNameValuePair;

import java.io.File;
import java.io.IOException;
import java.net.URL;
import java.nio.charset.Charset;
import java.util.List;

public class GeoShpTest {
    
    
    public static void main(String[] args) throws IOException {
    
    
        //GeoServer的连接配置
        //String url = "http://192.168.10.151:8993/geoserver";
        String url = "http://127.0.0.1:8016/geoserver";
        String username = "admin";
        String passwd = "geoserver";
        //RESTManager 发布shp图层
        GeoserverPublishShapefileData(url, username, passwd);
    }


    public static void GeoserverPublishShapefileData(String url, String username, String passwd) throws IOException {
    
    
		//工作空间        
		String ws = "test";
		//存储目录
        String store_name = "yule";
		//申明坐标系
        String srs = "EPSG:4490";
        //压缩文件的完整路径,用户本地目录,压缩包和解压后的文件不能包含中文
        File zipFile = new File("C:\\Users\\CDLX\\Desktop\\cad\\224cadtest\\224cadtest\\224cadtest.zip");
		//图层名称
        String layername = "224cadtest";
        // shp文件所在的位置,geoserver 服务器所在目录,这个目录具体未知可以参考web界面上上传时显示的地址
        String urlDatastore = "file:data/test/yule/224cadtest.shp";
        //判断工作区(workspace)是否存在,不存在则创建cccc
        URL restURL = new URL(url);

        //获取管理对象
        GeoServerRESTManager manager = new GeoServerRESTManager(restURL, username, passwd);
        //获取发布对象
        GeoServerRESTPublisher publisher = manager.getPublisher();
        //获取所有的工作空间名称
        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);
        }

        //判断数据存储(datastore)是否已经存在,不存在则创建
        URL urlShapefile = new URL(urlDatastore);
        RESTDataStore restStore = manager.getReader().getDatastore(ws, store_name);
//        System.out.println(restStore);
        if (restStore == null) {
    
    
            //创建shape文件存储 , 设置编码支持中文
            GSShapefileDatastoreEncoder store = new GSShapefileDatastoreEncoder(store_name, urlShapefile);
            store.setCharset(Charset.forName("gb2312"));
//            System.out.println("ddd"+store.getCharset());
            boolean createStore = manager.getStoreManager().create(ws, store);
            System.out.println("create store : " + createStore);
        } else {
    
    
            System.out.println("数据存储已经存在了,store:" + store_name);
        }

        //判断图层是否已经存在,不存在则创建并发布
        GeoServerRESTReader reader = new GeoServerRESTReader(url, username, passwd);
        RESTLayer layer = reader.getLayer(ws, layername);
        if (layer == null) {
    
    
            //发布shp文件
            boolean publish = publisher.publishShp(ws, store_name, layername, zipFile, srs, new BasicNameValuePair("charset", "gbk"));
            System.out.println("发布shp文件 : " + layername + ":" + publish);
        } else {
    
    
            System.out.println("shp已经发布过了,layer:" + layername);
        }
    }
}

猜你喜欢

转载自blog.csdn.net/u012796085/article/details/130941374