保存几何元素到oracle spatial

该博客展示了如何使用Cuckoo Framework的GIS扩展来更新Oracle Spatial中的几何元素,包括点和线。通过JGeometry创建几何对象,并用STRUCT存储,然后通过PreparedStatement更新数据库。
Cuckoo Framework GIS扩展计划开始启动。
代码举例: 保存几何元素到oracle spatial
package org.cuckooframework.gis.utils;



import java.sql.*;



import org.cuckooframework.jdbc.JdbcWrapping;



import oracle.spatial.geometry.JGeometry;

import oracle.sql.STRUCT;



public class OracleSpatialUtil {



	private JdbcWrapping jdbc = new JdbcWrapping();



	public void updatePoint(String tableName, String geoColName, String pkName,

			String pkValue, double[] coords) throws SQLException {

		Connection conn = null;

		PreparedStatement ps = null;



		try {

			conn = jdbc.getConnection();



			JGeometry j_geom = JGeometry.createPoint(coords, 1, 8307);



			ps = conn.prepareStatement("UPDATE  " + tableName + " SET "

					+ geoColName + "=? WHERE " + pkName + "='" + pkValue + "'");



			STRUCT obj = JGeometry.store(j_geom, conn);

			ps.setObject(1, obj);

			ps.execute();

		} finally {

			ps.close();

			conn.close();

		}

	}



	public void updateLine(String tableName, String geoColName, String pkName,

			String pkValue, double[] coords) throws SQLException {

		Connection conn = null;

		PreparedStatement ps = null;



		try {

			conn = jdbc.getConnection();



			JGeometry j_geom = JGeometry

					.createLinearLineString(coords, 2, 8307);



			ps = conn.prepareStatement("UPDATE  " + tableName + " SET "

					+ geoColName + "=? WHERE " + pkName + "='" + pkValue + "'");



			STRUCT obj = JGeometry.store(j_geom, conn);

			ps.setObject(1, obj);

			ps.execute();

		} finally {

			ps.close();

			conn.close();

		}

	}



	public static void main(String args[]) throws SQLException {

		/*

		double[] coords4line = { 117.291935, 31.858818, 117.288111, 31.857575,

				117.284476, 31.856351, 117.280028, 31.854988, 117.276361,

				31.85373, 117.269741, 31.851501, 117.269496, 31.852636,

				117.267003, 31.849165, 117.258803, 31.832658, 117.2534,

				31.824521, 117.249716, 31.819603, 117.232726, 31.798573,

				117.229846, 31.7951, 117.225706, 31.789038, 117.22038,

				31.782381, 117.218535, 31.781215, 117.213371, 31.784446,

				117.204668, 31.78445, 117.20463, 31.790516, 117.208053,

				31.799411, 117.210196, 31.810546, 117.210438, 31.820885,

				117.21759, 31.820121, 117.222768, 31.821911, 117.226048,

				31.821141, 117.226585, 31.81131, 117.226925, 31.800918,

				117.227045, 31.79821 };



		new OracleSpatialUtil().updateLine("geo_line", "geoloc", "tid", "1",

				coords4line);

		*/

		double[] coords4point = {117.276361,

				31.85373};

		

		new OracleSpatialUtil().updatePoint("geo_point", "geoloc", "tid", "5",

				coords4point);

	}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值