Geometry 空间地理对象,Oracle中存储Geometry对象的字段类型是 MDSYS.SDO_GEOMETRY,在数据库中构建Geometry对象的方法:

v_pointarray  MDSYS.sdo_ordinate_array;
MDSYS.SDO_GEOMETRY(2003,
20131028,
null,
MDSYS.SDO_ELEM_INFO_ARRAY(1, 1003, 1),
v_pointarray);

其中 20131028是空间参考系。

在java程序中如何读写带有Geometry对象的表呢,常用的geotools工具包。在maven工程中引用jar包jts-1.13.jar

读取Geometry对象

在java映射的数据库表实体类对象的字段中添加Geometry类型,如下:

@Column(name = "GEOM")
private Geometry geom;

这样就能读取到Geometry 对象,Geometry 有很多空间计算方法,具体可以查看源码。

写入Geometry对象

相对于读取,写入就相对麻烦一些,首先要构建一个Geometry对象,分点线面的构建:

private GeometryFactory geometryFactory = JTSFactoryFinder.getGeometryFactory(null);

点的构建

Envelope e = new Envelope(new Coordinate(x, y));

线的构建

LineString line = geometryFactory.createLineString(Coordinate[]);

line.setSRID(20131028);
rb.setGeometry(line);

其中,rb实体类对象的Geometry的定义格式如下:

@Column(name = "PKG_CONVEX", jdbcType = JdbcType.STRUCT)
private Geometry geometry;

一定要指定jdbcType 类型,Oracle数据库中Geometry对象只接收STRUCT类型的数据。

java程序操作Geometry对象的更多相关文章

  1. Java程序操作数据库SQLserver详解

    数据库基本操作:增删改查(CRUD) crud介绍(增.删.改.查操作) CRUD是指在做计算处理时的增加(Create).查询(Retrieve)(重新得到数据).更新(Update)和删除(Del ...

  2. Java多线程操作同一个对象,线程不安全

    Java多线程操作同一个对象 发现问题:多个线程操作同一资源的情况下,线程不安全,数据紊乱 代码: package multithreading; // Java多线程操作同一个对象 // 买火车票的 ...

  3. 大数据-09-Intellij idea 开发java程序操作HDFS

    主要摘自 http://dblab.xmu.edu.cn/blog/290-2/ 简介 本指南介绍Hadoop分布式文件系统HDFS,并详细指引读者对HDFS文件系统的操作实践.Hadoop分布式文件 ...

  4. 数据库SQL Server2012笔记(七)——java 程序操作sql server

    1.crud(增删改查)介绍:create/retrieve/update/delete 2.JDBC介绍 1)JDBC(java database connectivity,java数据库连接) 2 ...

  5. Java程序操作Hive

    1.hive的lib+jdbc,还要把mysql的连接驱动加载过来 2.编写程序 开启远程服务:[root@zhiyou ~]# hiveserver2 &[1] 4127[root@zhiy ...

  6. Java程序操作HBase

    package com.zy.test; import java.io.IOException; import org.apache.hadoop.conf.Configuration; import ...

  7. Java程序操作HDFS

    1.新建项目2.导包 解压hadoop-2.7.3.tar.gzE:\工具\大数据\大数据提升资料\01-软件资料\06-Hadoop\安装包\Java1.8环境下编译\hadoop-2.7.3\ha ...

  8. JAVA程序操作hbase的Maven配置pom.xml文件

    由于工作需要,用到Java连接Hbase读写数据.原来的方式是直接将依赖的jar包全部下载下来,然后工程里面引用. 现想重构下,改为使用Maven管理,遇到了各种坑,各种不好使,特总结下. <d ...

  9. redis(Springboot中封装整合redis,java程序如何操作redis的5种基本数据类型)

    平常测试redis操作命令,可能用的是cmd窗口 操作redis,记录一下 java程序操作reids, 操作redis的方法 可以用Jedis ,在springboot 提供了两种 方法操作 Red ...

随机推荐

  1. unity 3d孤岛求生案例代码解析

    这是第一人称控制器脚本,如果把摄像机放在胶囊体后面感觉就是第三人称了啊. #pragma strict var speed : float = 6.0; var jumpspeed: float = ...

  2. Linuxmint&win7

    一.选择好Linux发行版,并下载ISO镜像.Linux发行版众多,然而主流的无非Linuxmint.Ubuntu.Fedora.Debian等,当然国内的Deepin也不错.小编旧文已专门就&quo ...

  3. Cdnbes负载均衡的权重用法解释

    (1)相同域名添加两条记录,解析不同的ip,可以设置权重,比如权重2,就意思占百分之20 ,数字越大,优先级越大 (2)这个hash 如果用户访问的源是挂掉的.会去第二个源

  4. User mode and kernel mode

    [User mode and kernel mode] 参考:https://msdn.microsoft.com/en-us/library/windows/hardware/ff554836(v= ...

  5. 什么是业务运维,企业如何实现互联网+业务与IT的融合

    业务运维并不是一个新概念,针对传统信息架构提出的业务服务管理就是把以业务为核心的IT系统与IT基础设施性能进行整合运维的解决方案.然而随着互联网+转型的不断推进,基础设施的智能化和广泛云化成为IT发展 ...

  6. Winfrom实现圆角设计

    主要代码 public partial class Form1 : Form    {        public Form1()        {            InitializeComp ...

  7. Linux入门学习,开启端口号

    之前买了一个阿里云Centos 7服务器,默认开启22端口和80端口,想开启其他端口号如何做 1.开启端口号 [root@localhost ~]# /sbin/iptables -I INPUT - ...

  8. 第十二章 redis-cluster搭建(redis-3.2.5)

    redis集群技术 redis2.x使用客户端分片技术 redis3.x使用cluster集群技术 一.环境 os:centos7 ip:10.211.55.4 redis:3.2.5 gem-red ...

  9. C/C++入门基础----指针(1)

    指针其实就是一个变量, 和其他类型的变量一样.在32位计算机上, 指针占用四字节的变量.指针与其他变量的不同就在于它的值是一个内存地址,指向内存的另外一个地方, 指针能够直接访问内存和操作底层的数据, ...

  10. 关于display:flex

    遇到了一个bug 就是display:flex   遇到的bug原型就是,项目容器的diaplay:flex ,一行项目五个,到最后一行只剩两个的时候 是两端对齐的,如果再添加的话 也就是两端各一个子 ...