相关的功能也可以使用jts.jar包实现

import java.sql.Connection;

import java.sql.DriverManager;

import java.sql.PreparedStatement;

import java.sql.ResultSet;

import java.sql.SQLException;

import java.sql.Statement;

import org.junit.Before;

import org.junit.Test;

import org.postgresql.geometric.PGcircle;

import org.postgresql.geometric.PGpoint;

public class GeometricTest {

private Connection conn;

@Before

public void init() throws Exception {

Class.forName("org.postgresql.Driver");

String url = "jdbc:postgresql://localhost:5432/postgis";

conn = DriverManager.getConnection(url, "username", "password");

Statement stmt = conn.createStatement();

stmt.execute("CREATE TEMP TABLE geomtest(mycirc circle)");

stmt.close();

}

public void destroy() throws SQLException {

if (conn != null) {

conn.close();

}

}

@Test

public void insertCircle() throws SQLException {

PGpoint center = new PGpoint(1, 2.5);

// PGpolygon polygon = new PGpolygon(points);

double radius = 4;

PGcircle circle = new PGcircle(center, radius);

PreparedStatement ps = conn.prepareStatement("INSERT INTO geomtest(mycirc) VALUES (?)");

ps.setObject(1, circle);

ps.executeUpdate();

ps.close();

}

@Test

public void retrieveCircle() throws SQLException {

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery("SELECT mycirc, area(mycirc) FROM geomtest");

rs.next();

PGcircle circle = (PGcircle) rs.getObject(1);

double area = rs.getDouble(2);

// PG

PGpoint center = circle.center;

double radius = circle.radius;

System.out.println("Center (X, Y) = (" + center.x + ", " + center.y + ")");

System.out.println("Radius = " + radius);

System.out.println("Area = " + area);

}

@Test

public void getWKTFromGEOM() throws SQLException {

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery("SELECT ST_AsText(geom) FROM sheng where name = '新疆维吾尔自治区'");

rs.next();

String wkt = rs.getString(1);

System.out.println(wkt);

}

@Test

public void getWKBFromGEOM() throws SQLException {

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery("SELECT ST_AsBinary(geom) FROM sheng");

rs.next();

String wkt = rs.getString(1);

System.out.println("wkt = " + wkt);

}

@Test

public void getEWKTFromGEOM() throws SQLException {

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery("SELECT ST_AsEWKT(geom) FROM sheng");

rs.next();

String wkt = rs.getString(1);

System.out.println("wkt = " + wkt);

}

@Test

public void getBufferFromGEOM() throws SQLException {

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery("SELECT ST_AsEWKT(ST_Buffer(geom, 0.2)), ST_AsEWKT(geom) FROM sheng where id = 1");

rs.next();

String wkt = rs.getString(1);

String wkt2 = rs.getString(2);

//System.out.println("tt " + wkt.substring(0, 100));

//System.out.println("tt " + wkt2.substring(0, 100));

}

/**

* 需要在postGis中模拟一个dual表(注意指明空间字段)

*/

@Test

public void getBufferFromWKT() throws SQLException {

// 新疆维吾尔自治区

String wkt = PropertiesUtility.getInstance().findFileValue("system.properties", "wkt");

long startTime = new java.util.Date().getTime();

System.out.println(startTime);

String sql = "SELECT ST_AsText(ST_Buffer(st_geomfromtext('" + wkt + "'), 0.2)) FROM dual";

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(sql);

rs.next();

long endTime = new java.util.Date().getTime();

System.out.println(endTime);

System.out.println("缓冲时间:" + (endTime - startTime));

System.out.println("坐标点数:" + wkt.split(",").length);

}

/**

* 根据指定的缓冲距离进行缓冲,以米为单位

*/

@Test

public void getBufferFromWKT2() throws SQLException {

// 新疆维吾尔自治区 wkt=MULTIPOLYGON(((79.036744 34.3364.............

String wkt = PropertiesUtility.getInstance().findFileValue("system.properties", "wkt");

long startTime = new java.util.Date().getTime();

System.out.println(startTime);

// 缓冲距离为10.8KM

String sql = "SELECT ST_AsText(st_transform(st_setsrid(ST_Buffer(st_transform(st_setsrid(st_geomfromtext('" + wkt

+ "'), 4326), 2333), 10800), 2333), 4326)) FROM dual";

Statement stmt = conn.createStatement();

ResultSet rs = stmt.executeQuery(sql);

rs.next();

String resultWKT = rs.getString(1);

System.out.println(resultWKT);

long endTime = new java.util.Date().getTime();

System.out.println(endTime);

System.out.println("缓冲时间:" + (endTime - startTime));

System.out.println("坐标点数:" + wkt.split(",").length);

}

// 判断点是否在多边形内

@Test

public void getWithin() throws SQLException {

Statement stmt = conn.createStatement();

String sql = "SELECT name FROM sheng where ST_Within(ST_MakePoint(116.561, 40.276), geom)";

ResultSet rs = stmt.executeQuery(sql);

while (rs.next()) {

String wkt = rs.getString(1);

System.out.println(wkt);

}

}

}

postgis java_PostGIS之Java入门相关推荐

  1. Java入门培训班怎么选择

    想要学习java技术,小编一直给小伙伴推荐的是报班学习,目前市面上的java培训机构有很多,对于java培训班的选择很多小伙伴都比较迷茫,下面小编就为大家详细的介绍一下Java入门培训班怎么选择的问题 ...

  2. Java入门学习注意事项有哪些?

    想要学好java技术,做好学习规划路线和注意事项是非常重要的,尤其是零基础学员,Java涉及到的知识点非常多,我们需要制定合理的Java学习路线图,这样会事半功倍,下面小编和大家总结一下Java入门学 ...

  3. Java实用教程笔记 Java入门

    Java入门 JDBC Java数据库连接,(Java Database Connectivity,简称JDBC)是Java语言中用来规范客户端程序如何来访问数据库的应用程序接口,提供了诸如查询和更新 ...

  4. Java入门(一):Hello World !

    前言 从今天开始,准备写Java Web开发的系列文章,毕竟自己主攻的还是Java方向,Python只是业余学习的兴趣使然,在第二技能还没有培养成熟前,做好第一技能的巩固和提高是很有必要的.从正式入行 ...

  5. 《Java入门经典(第7版)》—— 6.11 练习

    本节书摘来异步社区<Java入门经典(第7版)>一书中的第6章,第6.11节,作者:[美]Rogers Cadenhead(罗格斯 卡登海德),更多章节内容可以访问云栖社区"异步 ...

  6. [Java入门笔记] 面向对象编程基础(二):方法详解

    2019独角兽企业重金招聘Python工程师标准>>> 什么是方法? 简介 在上一篇的blog中,我们知道了方法是类中的一个组成部分,是类或对象的行为特征的抽象. 无论是从语法和功能 ...

  7. 【极客学院每日1课 】Java入门与常用技巧

    2019独角兽企业重金招聘Python工程师标准>>> Java是Android开发者必学的基础编程语言.你的基础怎么样? 遥想当年,小乔还未出嫁,小编在大学里面,啃书本,听教授在课 ...

  8. Java必备:java入门、java学习

    2019独角兽企业重金招聘Python工程师标准>>> 版权声明:本文为北京尚学堂原创文章,未经允许不得转载. 1.Java入门 1-1.Java具有那些适合在Internet环境中 ...

  9. Java入门学习笔记[狂神说Java]

    写在前面: 本文根据B站狂神说Java 与菜鸟教程 整理而来,仅供个人学习使用,如有侵权,请联系删除. 文章目录 IDEA使用 Java基础01:注释 Java基础02:数据类型 Java基础03:类 ...

最新文章

  1. 【转】VMware虚拟机中CentOS设置固定IP
  2. 拼接多个 wchar_t *
  3. C++: 构造函数和析构函数
  4. Spring中获取bean
  5. 动态规划——最长公共子序列(LCS)
  6. Spring Boot 系列(五)web开发-Thymeleaf、FreeMarker模板引擎
  7. 魔术方法php,PHP中常用的魔术方法
  8. android media apex_APEX英雄主播即将登陆时代广场?人气十强介绍!
  9. Java常见面试题:常用 GC 调优策略有哪些?
  10. android 修改listview item view 的方法
  11. 【Windows socket+IP+UDP+TCP】网络基础
  12. 自主创新生态圈再扩大,深度科技与金格科技完成产品兼容性认证
  13. 第二十七篇 -- 学习第四十五天打卡20190810
  14. 求两个数的最小公倍数(C语言)
  15. Linux编辑器-vim的使用的 “打字练习“
  16. SVL - 共享VLAN学习模式
  17. 将android程序写入内存,android中将数据写入手机内存和sdcard中的文件
  18. Java 12 来了,我们应该采用嘛?
  19. Python异步: 什么时候使用异步?(3)
  20. 华为鸿蒙操作系统有哪些特点和优势?余承东《全场景时代 新体验与新生态》演讲全文

热门文章

  1. 【图像分割】基于FLICM算法实现图像分割含Matlab源码
  2. mysql如何直接打开表_Navicat for MySQL:如何打开 MySQL 表,需要技巧
  3. latex 附录 表格 公式 重新编号
  4. Lombok 插件如何使用
  5. 计算机基础集体备课教研记录,集体备课教研活动记录基础会计教学的集体备课与教研...
  6. 如何修改Kali和Centos7的ip
  7. unity中[SerializeField]特性以及Inspectors中变量的操作
  8. html怎么在手机打不开,手机打不开(进不去)路由器设置网址怎么办?
  9. 使用阈值调优改进分类模型性能
  10. matlab中结束脚本运行_MBD开发过程中的持续集成应用