java 操作gis geometry空间类型数据方式

java操作gis geometry类型数据

      最近做的gis方面的业务,所以需要操作postgis中的geometry对象,找了很多的库,比如geotools,但是莫名下载不下来。

还有就是jts,但是不好用,操作起来很复杂。找到了一个其他的类库--geolatte-geom 和geolatte-geojson。

用于操作geometry和String以及json的互相转化。而json和geojson个人理解就是输出格式不同。多了一些geometry特有的属性。

主要用于将String转geometry对象、wkt和wkb方便好用。

pom.xml文件如下

<!-- https://mvnrepository.com/artifact/org.geolatte/geolatte-geom -->
<dependency>
     <groupId>org.geolatte</groupId>
     <artifactId>geolatte-geom</artifactId>
     <version>1.6.0</version>
</dependency>
 
<!-- https://mvnrepository.com/artifact/org.geolatte/geolatte-geojson -->
<dependency>
     <groupId>org.geolatte</groupId>
     <artifactId>geolatte-geojson</artifactId>
     <version>1.6.0</version>
</dependency>

我们在main方法中测试一下

public static void main(String[] args) {
     // 模拟数据库中直接取出的geometry对象值(他是二进制的)
     // WKT 是字符串形式,类似"POINT(1 2)"的形式
     // 所以WKT转 geometry,相当于是字符串转geometry
     // WKB转 geometry,相当于是字节转geometry
     String s="01020000800200000097E5880801845C404D064F3AF4AE36400000000000000000290A915F01845C40DC90B1A051AE36400000000000000000";
     Geometry geo = Wkb.fromWkb(ByteBuffer.from(s));
 
     // geometry对象和WKT输出一致
// Geometry geometry1 = Wkt.fromWkt(wkt);
     System.out.println("-----Geometry------"+geo.getPositionN(1));
     System.out.println("-----wkt------"+ Wkt.toWkt(geo));
     System.out.println("-----wkb------"+Wkb.toWkb(geo));
     }

Geometry空间类型主要有那些如下:

类型说明简介例子
Geometry间数据任意一种空间类型
Point坐标值POINT(104.00924 30.46872)
LineString线线,由一系列点连接而成LINESTRING(1 1, 1 1, 1 1)
Polygon多边形由多条线组成POLYGON((1 1, 2 2, 3 3, 4 4, 5 5))
MultiPoint点集合集合类,包含多个点MULTIPOINT(1 1, 2 2, 1 1)
MultiLineString线集合集合类,包含多条线MULTILINESTRING((1 1, 2 2), (1 1, 1 1))
MultiPolygon多边形集合集合类,包含多个多边形MULTIPOLYGON(((0 0, 1 0, 1 1, 0 1, 0 0)), ((1 1, 1 1, 1 1, 1 1, 1 1)))
GeometryCollection空间数据集合集合类,可以包括多个点、线、多边形GEOMETRYCOLLECTION(POINT(1 1), POINT(3 3), LINESTRING(1 1, 2 2))

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

angelasp

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值