superMap iobject java 拆分数据集;生成shp文件;

package com.createw.web.modules.superMap.util;

import java.io.File;
import java.sql.*;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import com.supermap.data.*;
import com.supermap.data.conversion.DataExport;
import com.supermap.data.conversion.ExportSetting;
import com.supermap.data.conversion.ExportSettings;
import com.supermap.data.conversion.FileType;

/**

  • Title:拆分数据集,生成shp文件

*/
public class SampleRun {

public static void main(String[] args) {
	
	// 打开工作空间,得到数据源
	Workspace workspace = new Workspace();
	Datasources datasources = workspace.getDatasources();
	DatasourceConnectionInfo datasourceConnectionInfo = new DatasourceConnectionInfo(
			"D://supermapDemo/demo.udb", "sqlquery", "");
	Datasource datasource = datasources.open(datasourceConnectionInfo);
	
	// 得到数据集集合类,得到面数据集,通过数据源复制数据集
	Datasets datasets = datasource.getDatasets();
	String datasetVectorName = "数据源名称";
	if (datasets.contains(datasetVectorName))
		datasets.delete(datasetVectorName);
	
	//快速拆分数据集
	Dataset dataset = datasets.get("数据集名称");
	DatasetVector datasetVector = (DatasetVector) datasource.copyDataset(
			dataset, datasetVectorName, EncodeType.NONE);
	queryParameterTest(datasetVector, datasets);//快速拆分数据集
	
	//批量生成shp文件
	//toShp(datasource,datasets);
	
	// 释放相关资源
	datasources.closeAll();
	datasourceConnectionInfo.dispose();
	workspace.close();
	workspace.dispose();
	printWithStar("程序退出");
}


/**
 * 生成shp文件
 */
private static void toShp(Datasource datasource, Datasets datasets) {
	int count = datasets.getCount();
	ExportSettings exportSettings=new ExportSettings();
	
	for (int i = 0; i < count; i++) {
		Dataset dataset = datasets.get(i);
		System.out.println(String.format("%-25s", dataset.getName()));
		DatasetVector datasetVector = (DatasetVector) datasource.copyDataset(
				dataset,dataset.getName()+"_"+System.currentTimeMillis() , EncodeType.NONE);
		
		//生成文件夹
		File f = new File("D:\\aa"+"\\"+dataset.getName());
		f.mkdirs();
		
		ExportSetting exportSetting = new
				ExportSetting(datasetVector, "D:\\aa\\"+dataset.getName()+"\\"+dataset.getName()+".shp", FileType.SHP);
		exportSettings.add(exportSetting);
	}
	
	DataExport dataExport = new DataExport();
	dataExport.setExportSettings(exportSettings);
	dataExport.run();
	dataExport.dispose();
}

/**
 * 拆分数据集
 * @param dataset_world
 * @param datasets
 */
public static void queryParameterTest(DatasetVector dataset_world,Datasets datasets)
{
	List<Map<String, String>>  maps = executeSql();
	int index=0;
	for(int i=0;i<maps.size();i++){
		System.out.println(index++);
		String code = maps.get(i).get("编码");
		String name = maps.get(i).get("名称");
		System.out.println(code+":::"+name);
		
		// 设置查询参数
		QueryParameter parameter = new QueryParameter();
		parameter.setAttributeFilter("GBCODE = '"+code+"'");
		parameter.setCursorType(CursorType.STATIC);
		
		// 进行查询
		Recordset recordset = dataset_world.query(parameter);

		// 以 dataset_world 为模板创建数据集
		DatasetVector dataset_result = (DatasetVector) datasets.
				createFromTemplate(datasets.getAvailableDatasetName("文件名称"), dataset_world);

		// 将空间查询结果追加到新建的数据集中
		dataset_result.append(recordset);

		// 依次关闭所有对象
		dataset_result.close();
		recordset.dispose();
	}
	dataset_world.close();
}


/**
 * 连接数据库 省略 
 */
public  static List<Map<String, String>> executeSql() {
	// 定义一个list用于接受数据库查询到的内容
	List<Map<String, String>>  list = new ArrayList();
Map<String, String> map = new HashMap<>();
				map.put("编码",rs.getString("dm"));
				map.put("名称",rs.getString("mc"));
				list.add(map);
	return list;
}


/**
 * 输出数据集全部记录
 * 
 * @param datasetVector 目标数据集
 */
private static void listAll(DatasetVector datasetVector) {

	// 获得数据集全部记录
	Recordset recordset = datasetVector.getRecordset(false,
			CursorType.DYNAMIC);

	// 输出记录集记录
	printWithStar("输出数据集全部记录");
	listAll(recordset);
	// 以 dataset_world 为模板创建数据集
	printWithStar("输出数据集全部记录");
	// 释放记录集
	recordset.dispose();
}



/**
 * 遍历记录集,输出记录集的记录信息
 * 
 * @param recordset 遍历的记录集对象
 */
private static void listAll(Recordset recordset) {

	// 输出字段名称
	FieldInfos fieldInfos = recordset.getFieldInfos();
	int count = fieldInfos.getCount();
	for (int i = 0; i < count; i++) {
		String fieldname = fieldInfos.get(i).getName();
		System.out.print(String.format("%-25s", fieldname));
	}
	System.out.println();

	// 输出字段值
	for (recordset.moveFirst(); !recordset.isEOF(); recordset.moveNext()) {
		for (int i = 0; i < count; i++) {
			String value = recordset.getFieldValue(i).toString();
			System.out.print(String.format("%-25s", value));
		}
		System.out.println();
	}
}

/**
 * 以星星的修饰方式输出字符串
 * 
 * @param content 原字符串
 */
private static void printWithStar(String content) {
	String star = "****************************";
	content = star + content + star;
	System.out.println(content);
}

}

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值