geotools 使用 部分代码总结

本文总结了GeoTools库在连接数据库(如PostGIS)、图层操作、编辑及Geometry与JTS的相关功能。示例代码包括数据库链接、图层管理以及使用DropGeometryTable删除PostGIS表的操作。
摘要由CSDN通过智能技术生成
前段时间的一个项目 本来用ae完成了种种的 查询,空间分析等等功能的代码,但是不幸的是 这是一个web项目,无奈 ae各种错误,显然ae放在server端是不好使的 无奈 一咬牙一跺脚 全部换 换成geotools  看文档 看api 从零 开始算是把 原来AE实现的东西 统统改了过来 用起来 反而觉得既稳定 效率还不错哈!

以下是部分功能总结:

1、连接数据库 这里使用的postgis 链接代码如下:

private static void conn(String dbtype, String host, String port,
			String database, String userName, String password) {
		Map<String, Object> params = new HashMap<String, Object>();
		// params.put(PostgisNGDataStoreFactory.DBTYPE.key, "postgis");    // 两种代码方式
		// params.put(PostgisNGDataStoreFactory.HOST.key, "localhost");
		// params.put(PostgisNGDataStoreFactory.PORT.key, new Integer(5432));
		// params.put(PostgisNGDataStoreFactory.DATABASE.key, "postgis");
		// params.put(PostgisNGDataStoreFactory.SCHEMA.key, "public");
		// params.put(PostgisNGDataStoreFactory.USER.key, "postgres");
		// params.put(PostgisNGDataStoreFactory.PASSWD.key, "root");
		params.put(PostgisNGDataStoreFactory.DBTYPE.key, dbtype);
		params.put(PostgisNGDataStoreFactory.HOST.key, host);
		params.put(PostgisNGDataStoreFactory.PORT.key, new Integer(port));
		params.put(PostgisNGDataStoreFactory.DATABASE.key, database);
		params.put(PostgisNGDataStoreFactory.SCHEMA.key, "public");
		params.put(PostgisNGDataStoreFactory.USER.key, userName);
		params.put(PostgisNGDataStoreFactory.PASSWD.key, password);
		try {
			pgDatastore = DataStoreFinder.getDataStore(params);
			if (pgDatastore != null) {
				System.out.println("系统连接到位于:" + host + "的空间数据库" + database
						+ "成功!");
			} else {
				System.out.println("系统连接到位于:" + host + "的空间数据库" + database
						+ "失败!请检查相关参数");
			}
		} catch (IOException e) {
			e.printStackTrace();
			System.out.println("系统连接到位于:" + host + "的空间数据库" + database
					+ "失败!请检查相关参数");
		}

	}
调用方法为:conn("postgis", "localhost", 5432, "postgis", "postgres", "root");

2、图层的操作

2.1 查询
public static ArrayList<SimpleFeature> queryMethod(String filterStr,
			String layerName) {
		//pgDatastore为上文连接数据库获取相当于AE中的workspace
		//SimpleFeatureSource相当于AE中的featureClass
		SimpleFeatureSource featureSource =pgDatastore.getFeatureSource(layerName); 
		ArrayList<SimpleFeature> featureList = new ArrayList<SimpleFeature>();
		if(featureSource==null)
			return featureList;
		try {
			Filter filter;
			filter = CQL.toFilter(filterStr); // filterStr形式 如  name='武汉大学' or code like 'tt123%'
			SimpleFeatureCollection result = featureSource.getFeatures(filter);

			FeatureIterator<SimpleFeature> itertor = result.features();
			while (itertor.hasNext()) {
				SimpleFeature feature = itertor.next();
				featureList.add(feature);
			}
			itertor.close();
			return featureList;
		} catch (CQLException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		return null;
	}
2.2 要素操作  对上面4.1中的 SimpleFeature操作
//获取feature的geometry
Geometry geo&
  • 3
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
以下是一个使用Geotools进行几何修复的简单代码示例: ```java import org.geotools.geometry.jts.JTS; import org.geotools.geometry.jts.JTSFactoryFinder; import org.locationtech.jts.geom.Geometry; import org.locationtech.jts.geom.GeometryFactory; import org.locationtech.jts.geom.Polygon; public class GeometryRepairExample { public static void main(String[] args) { // 创建GeometryFactory GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(); // 创建一个多边形,其中包含重叠的边界和内部环 Polygon polygon = geometryFactory.createPolygon( new Coordinate[]{ new Coordinate(0, 0), new Coordinate(10, 0), new Coordinate(10, 10), new Coordinate(0, 10), new Coordinate(5, 5), new Coordinate(4, 4), new Coordinate(6, 6), new Coordinate(0, 0) }); // 打印原始多边形 System.out.println("原始多边形: " + polygon.toText()); // 使用GeometryFixer修复几何错误 Geometry fixedGeometry = JTS.fix(polygon); // 打印修复后的多边形 System.out.println("修复后的多边形: " + fixedGeometry.toText()); } } ``` 这个示例代码创建了一个包含重叠边界和内部环的多边形,并使用`JTS.fix()`方法修复了几何错误。您可以根据自己的需求修改示例中的多边形,以及添加其他的几何修复操作。 请确保您已经添加了Geotools库的依赖,并且导入了相关的类。这个示例主要展示了使用Geotools进行几何修复的基本流程,具体的修复操作可以根据您的实际情况来选择和使用
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值