前言
GIS工具包,根据jts工具,结合实际使用场景提取出来的常用工具集合;涵盖几何格式转换(WKT,GeoJSON等)与geometry转换、gis距离计算、度距离单位换算、角度计算、buffer运算、映射截取、几何穿串等操作
gis-tools使用说明
gis-tools源码库地址文章来源地址https://www.toymoban.com/news/detail-455366.html
1. 格式转换
1.1 WktTool使用说明
wkt格式与geometry互转;
- 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)");
- geometry转wkt操作
//转换不带Z
WktTool.geoToWkt2D(geometry);
//转换带Z
WktTool.geoToWkt3D(geometry);
1.2 GeoJsonTool使用说明
- geoJson字符串转Geometry
GeoJsonTool.read(String geoJson)
- Geometry转GeoJson
GeoJsonTool.toJSONString(Geometry geometry)
2. 扩圈工具
2.1 BufferTool使用说明
将geometry进行扩圈处理,线场景使用最广,支持延线的方向左右扩、单边扩;
- 圆角扩圈(上下是矩形,左右是圆角)
//distance单位米
BufferTool.bufferCapRound(Geometry geometry, double distance)
- 扩圈(上下左右四个方向,外接多边形)
//distance单位米
BufferTool.bufferCapSquare(Geometry geometry, double distance)
- 上下扩圈(扩完是矩形)
//distance单位米
BufferTool.bufferCapFat(Geometry geometry, double distance)
- 左扩X米右扩X米
//distance单位米 leftDistance 左扩x米 rightDistance 右扩X米
BufferTool.bufferGeoLeftRight(Geometry geometry, double leftDistance, double rightDistance)
- 左扩X米
//distance单位米 distance 左扩x米
BufferTool.bufferGeoLeft(Geometry geometry, double distance)
- 右扩X米
//distance单位米 distance 右扩x米
BufferTool.bufferGeoRight(Geometry geometry, double distance)
3. 距离工具
3.1 DistanceTool使用说明
点到点距离计算,线距离计算,点到线距离计算,度距离相关转换等工具类,半径采用地球平均半径6371.0087714;
- 距离转换为度 cmToDegree
- 距离(KM)转换为度 kmToDegree
- 度转换为距离(单位KM) degreeToKm
- 度转换为距离(单位M) degreeToM
- 度转换为厘米 degreeToCm
- 获取几何距离单位(米) getLengthM(Geometry geometry)
- 获取几何距离单位(千米) getLengthKM(Geometry geometry)
- 获取两点的距离 p2pLenDegrees(Coordinate coordinate0, Coordinate coordinate1)
- 获取两点距离(KM) p2pLenKm(Coordinate coordinate0, Coordinate coordinate1)
- 获取两点距离(M) p2pLenM(Coordinate coordinate0, Coordinate coordinate1)
- 点到线的最近距离 p2LineDegrees(Point point, LineString lineString)
- 点到线的最近距离(KM) p2LineKM(Point point, LineString lineString)
- 点到线的最近距离(M) p2LineM(Point point, LineString lineString)
4. 角度工具
4.1 AngleTool使用说明
- 获取顺时针夹角 getCwAngle(Coordinate p0, Coordinate p1, Coordinate p2)
p1: po,p2的交点坐标
- 获取 逆时针夹角 getCCwAngle(Coordinate p0, Coordinate p1, Coordinate p2)
p1: po,p2的交点坐标
- 获取两条线段的逆时针夹角 getCCwAngle(Geometry lineString0, Geometry lineString1)
- 获取两条线段的顺时针夹角 getCwAngle(Geometry lineString0, Geometry lineString1)
- 判断点coordinate在线lineString的左边还是右边 isLeft(Geometry lineString, Coordinate coordinate)
- 判断whereLineString在lineString的左侧还是右侧 isLeft(Geometry lineString, Geometry whereLineString)
5. 操作工具
5.1 PointTool使用说明
- 通过线设置point的Z值 getPointZ(Geometry linkString, Point point)
- 获取平均Z getAvgZ(Geometry geometry)
5.2 LineTool使用说明
- 获取点到线的垂线 verticalLine(Point point, Geometry lineString)
- 获取垂足(点到线的垂足) (Point point, Geometry lineString)
- 截取l1在点coordinate0与coordinate1之间的线段 (Geometry l1, Coordinate coordinate0, Coordinate coordinate1)
- 获取l2在l1上面的线段 getExtractLine(Geometry l1, Geometry l2)
- 获取l2在l1上面的线段,并借用l1距离垂足xm的形状点,没有的话返回垂足做起、终点 getExtractLine(Geometry l1, Geometry l2, double xm)
- 获取point在l1上面的位置点(索引位置) PointLocation getLinearLocation(Geometry l1, Geometry point)
PointLocation index:索引位置 segmentFraction:同一个index下面的占比. 应用场景:点到线做映射,然后排序映射后的点文章来源:https://www.toymoban.com/news/detail-455366.html
- 获取 pointGeoList 在线 l1上面的投影线 getExtractLineByPoints(Geometry l1, List pointGeoList)
- 当geometry两两形状点的跨度大于XM的时候往geometry里面加入形状点 sewing(Geometry geometry, int XM)
gis-tools源码库地址
到了这里,关于GIS工具包的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!