GIS工具包

前言

GIS工具包,根据jts工具,结合实际使用场景提取出来的常用工具集合;涵盖几何格式转换(WKT,GeoJSON等)与geometry转换、gis距离计算、度距离单位换算、角度计算、buffer运算、映射截取、几何穿串等操作

gis-tools使用说明

gis-tools源码库地址

1. 格式转换

1.1 WktTool使用说明

wkt格式与geometry互转;

  1. wkt转geometry操作
Geometry geometry = WktTool.wktToGeo("LINESTRING (116.7262994 35.5153623, 116.726309 35.515362, 116.7263135 35.5153642, 116.72632 35.515364, 116.72633 35.515363, 116.7263355 35.5153617, 116.726343 35.515362)");
  1. geometry转wkt操作
//转换不带Z
WktTool.geoToWkt2D(geometry);
//转换带Z
WktTool.geoToWkt3D(geometry);

1.2 GeoJsonTool使用说明

  1. geoJson字符串转Geometry

GeoJsonTool.read(String geoJson)

  1. Geometry转GeoJson

GeoJsonTool.toJSONString(Geometry geometry)

2. 扩圈工具

2.1 BufferTool使用说明

将geometry进行扩圈处理,线场景使用最广,支持延线的方向左右扩、单边扩;

  1. 圆角扩圈(上下是矩形,左右是圆角)
//distance单位米
BufferTool.bufferCapRound(Geometry geometry, double distance)
  1. 扩圈(上下左右四个方向,外接多边形)
//distance单位米
BufferTool.bufferCapSquare(Geometry geometry, double distance)
  1. 上下扩圈(扩完是矩形)
//distance单位米
BufferTool.bufferCapFat(Geometry geometry, double distance)
  1. 左扩X米右扩X米
//distance单位米 leftDistance 左扩x米 rightDistance 右扩X米
BufferTool.bufferGeoLeftRight(Geometry geometry, double leftDistance, double rightDistance)
  1. 左扩X米
//distance单位米 distance 左扩x米
BufferTool.bufferGeoLeft(Geometry geometry, double distance)
  1. 右扩X米
//distance单位米 distance 右扩x米
BufferTool.bufferGeoRight(Geometry geometry, double distance)

3. 距离工具

3.1 DistanceTool使用说明

点到点距离计算,线距离计算,点到线距离计算,度距离相关转换等工具类,半径采用地球平均半径6371.0087714;

  1. 距离转换为度 cmToDegree
  2. 距离(KM)转换为度 kmToDegree
  3. 度转换为距离(单位KM) degreeToKm
  4. 度转换为距离(单位M) degreeToM
  5. 度转换为厘米 degreeToCm
  6. 获取几何距离单位(米) getLengthM(Geometry geometry)
  7. 获取几何距离单位(千米) getLengthKM(Geometry geometry)
  8. 获取两点的距离 p2pLenDegrees(Coordinate coordinate0, Coordinate coordinate1)
  9. 获取两点距离(KM) p2pLenKm(Coordinate coordinate0, Coordinate coordinate1)
  10. 获取两点距离(M) p2pLenM(Coordinate coordinate0, Coordinate coordinate1)
  11. 点到线的最近距离 p2LineDegrees(Point point, LineString lineString)
  12. 点到线的最近距离(KM) p2LineKM(Point point, LineString lineString)
  13. 点到线的最近距离(M) p2LineM(Point point, LineString lineString)

4. 角度工具

4.1 AngleTool使用说明

  1. 获取顺时针夹角 getCwAngle(Coordinate p0, Coordinate p1, Coordinate p2)

p1: po,p2的交点坐标

  1. 获取 逆时针夹角 getCCwAngle(Coordinate p0, Coordinate p1, Coordinate p2)

p1: po,p2的交点坐标

  1. 获取两条线段的逆时针夹角 getCCwAngle(Geometry lineString0, Geometry lineString1)
  2. 获取两条线段的顺时针夹角 getCwAngle(Geometry lineString0, Geometry lineString1)
  3. 判断点coordinate在线lineString的左边还是右边 isLeft(Geometry lineString, Coordinate coordinate)
  4. 判断whereLineString在lineString的左侧还是右侧 isLeft(Geometry lineString, Geometry whereLineString)

5. 操作工具

5.1 PointTool使用说明

  1. 通过线设置point的Z值 getPointZ(Geometry linkString, Point point)
  2. 获取平均Z getAvgZ(Geometry geometry)

5.2 LineTool使用说明

  1. 获取点到线的垂线 verticalLine(Point point, Geometry lineString)
  2. 获取垂足(点到线的垂足) (Point point, Geometry lineString)
  3. 截取l1在点coordinate0与coordinate1之间的线段 (Geometry l1, Coordinate coordinate0, Coordinate coordinate1)
  4. 获取l2在l1上面的线段 getExtractLine(Geometry l1, Geometry l2)
  5. 获取l2在l1上面的线段,并借用l1距离垂足xm的形状点,没有的话返回垂足做起、终点 getExtractLine(Geometry l1, Geometry l2, double xm)
  6. 获取point在l1上面的位置点(索引位置) PointLocation getLinearLocation(Geometry l1, Geometry point)

PointLocation index:索引位置 segmentFraction:同一个index下面的占比. 应用场景:点到线做映射,然后排序映射后的点

  1. 获取 pointGeoList 在线 l1上面的投影线 getExtractLineByPoints(Geometry l1, List pointGeoList)
  2. 当geometry两两形状点的跨度大于XM的时候往geometry里面加入形状点 sewing(Geometry geometry, int XM)

gis-tools源码库地址

你可能感兴趣的:(GIS,gis,几何学,jts,java)