当前位置: 首页 > news >正文

合肥做公司网站如何推广网店

合肥做公司网站,如何推广网店,网站免费正能量直接进入app,做全屏轮播的网站有哪些文章目录JTS使用实践一、前言简介环境二、正文基础说明使用记录创建几何要素操作示例JTS使用实践 一、前言 简介 JTS Topology Suite#xff08;Java Topology Suite#xff09;是一个开源的Java软件库#xff0c;它为欧几里得平面线性几何提供了一个对象模型以及一组基本… 文章目录JTS使用实践一、前言简介环境二、正文基础说明使用记录创建几何要素操作示例JTS使用实践 一、前言 简介 JTS Topology SuiteJava Topology Suite是一个开源的Java软件库它为欧几里得平面线性几何提供了一个对象模型以及一组基本的几何函数。 环境 开发工具IntelliJ IDEAJDK1.8 locationtechJTShttps://locationtech.github.io/jts/ JTS 特性https://locationtech.github.io/jts/jts-features.html GitHubJTShttps://github.com/locationtech/jts JTS java dochttp://locationtech.github.io/jts/javadoc/overview-summary.html GeoToolsJTShttps://docs.geotools.org/latest/userguide/library/jts/index.html wikipediaJTShttps://en.wikipedia.org/wiki/JTS_Topology_Suite wikipediaWKThttps://en.wikipedia.org/wiki/Well-known_text_representation_of_geometry PostGIS 拓扑关系https://postgis.net/docs/reference.html#idm15481 polygon 和 multipolygon 的区别https://gis.stackexchange.com/questions/225368/understanding-difference-between-polygon-and-multipolygon-for-shapefiles-in-qgis/225373 二、正文 基础说明 输入/输出格式WKT、WKB、GML、Java Swing/AWT ShapeWKT 格式 几何类型WKTPointPOINT (30 10)LineStringLINESTRING (30 10, 10 30, 40 40)PolygonPOLYGON ((35 10, 45 45, 15 40, 10 20, 35 10),(20 30, 35 35, 30 20, 20 30))Polygon-with-holePOLYGON ((35 10, 45 45, 15 40, 10 20, 35 10), (20 30, 35 35, 30 20, 20 30))MultiPointMULTIPOINT ((10 40), (40 30), (20 20), (30 10))MultiPointMULTIPOINT (10 40, 40 30, 20 20, 30 10)MultiLineStringMULTILINESTRING ((10 10, 20 20, 10 40),(40 40, 30 30, 40 20, 30 10))MultiPolygonMULTIPOLYGON (((30 20, 45 40, 10 40, 30 20)), ((15 5, 40 10, 10 20, 5 10, 15 5)))MultiPolygon-with-holeMULTIPOLYGON (((40 40, 20 45, 45 30, 40 40)), ((20 35, 10 30, 10 10, 30 5, 45 20, 20 35), (30 20, 20 15, 20 25, 30 20)))GeometryCollectionGEOMETRYCOLLECTION (POINT (40 10), LINESTRING (10 10, 20 20, 10 40), POLYGON ((40 40, 20 45, 45 30, 40 40))) 拓扑关系 关键字说明参考equals 相等如果两个几何在空间中包含相同的一组点则返回 trueST_Equalsdisjoint不相交如果两个几何在空间上不相交它们没有共同点则返回 trueST_Disjointintersects相交如果两个几何/地理在 2D 空间上相交至少有一个共同点则返回 trueST_Intersectstouches接触如果两个几何体至少有一个共同点但它们的内部不相交则返回 trueST_Touchescrosses交叉如果两个几何具有一些但不是全部共同的内部点则返回 trueST_Crosseswithin内含如果几何 A 完全在几何 B 内部则返回 trueST_Withincontains 包含当且仅当 B 的任何点都不在 A 的外部并且 B 内部的至少一个点在 A 的内部时才返回 trueST_Containsoverlaps重叠如果两个几何体相交并具有相同的维度但彼此不完全包含则返回 trueST_Overlaps 叠加分析 关键字说明参考buffer缓冲区返回一个几何图形该几何图形涵盖距几何图形给定距离内的所有点ST_BufferconvexHull凸壳计算几何的凸壳ST_ConvexHullintersection交集返回表示几何 A 和 B 共享部分的几何ST_Intersectionunion合并返回表示输入几何的点集合并的几何ST_Uniondifference差异返回表示几何 A 中不与几何 B 相交的部分的几何ST_DifferencesymDifference对称差异返回表示几何 A 和 B 不相交部分的几何ST_SymDifference 使用记录 添加依赖 !-- https://mvnrepository.com/artifact/org.locationtech.jts/jts-core -- dependencygroupIdorg.locationtech.jts/groupIdartifactIdjts-core/artifactIdversion1.18.2/version /dependency创建几何要素 package com.example;import org.locationtech.jts.geom.*; import org.locationtech.jts.io.ParseException; import org.locationtech.jts.io.WKTReader; import java.util.List; import java.util.Map;/*** JTS 几何模型* 几何类型点( POINT )、多点( MULTIPOINT )* 线( LINESTRING )、多线MULTILINESTRING * 面POLYGON 、多面MULTIPOLYGON * 圆* 创建方式几何工厂 和 WKT* */ public class JTSGeometryUtil {// 几何工厂对象private GeometryFactory geometryFactory new GeometryFactory();/*** 获取点* param lng 经度* param lat 纬度* */public Point getPoint(Double lng, Double lat){Coordinate coordinate new Coordinate(lng, lat);return geometryFactory.createPoint(coordinate);}/*** 获取点通过 WKT 创建* param lng 经度* param lat 纬度* */public Point getPointByWKT(Double lng, Double lat) throws ParseException {StringBuilder wktSB new StringBuilder();// POINT(111 22)wktSB.append(POINT).append(().append( lng ).append( ).append( lat ).append());return (Point) createGeometry(wktSB.toString());}/*** 获取多点* param coordinates 坐标集合* */public MultiPoint getMultiPoint(Coordinate [] coordinates){return geometryFactory.createMultiPointFromCoords(coordinates);}/*** 获取多点通过 WKT 创建* param coordinates 坐标集合* */public MultiPoint getMultiPointByWKT(Coordinate [] coordinates) throws ParseException {// MULTIPOINT(111 22 ,111 22)String wktStr createWktString(MULTIPOINT, coordinates);return (MultiPoint) createGeometry(wktStr);}/*** 获取线* param coordinates 坐标集合* */public LineString getLineString(Coordinate [] coordinates){return geometryFactory.createLineString(coordinates);}/*** 获取线通过 WKT 创建* param coordinates 坐标集合* */public LineString getLineStringByWKT(Coordinate [] coordinates) throws ParseException {String wktStr createWktString(LINESTRING, coordinates);return (LineString) createGeometry(wktStr);}/*** 获取多线* param coordList 多个坐标集合* */public MultiLineString getMultiLineString(ListCoordinate [] coordList){LineString [] lineStrings new LineString[coordList.size()];for(int m0; mcoordList.size(); m){lineStrings[m] getLineString(coordList.get(m));}return geometryFactory.createMultiLineString(lineStrings);}/*** 获取多线通过 WKT 创建* param coordList 多个坐标集合* */public MultiLineString getMultiLineStringByWKT(ListCoordinate [] coordList) throws ParseException {String wktStr createMultiWktString(MULTILINESTRING, coordList);return (MultiLineString) createGeometry(wktStr);}/*** 获取面* param coordinates 坐标集合* */public Polygon getPolygon(Coordinate [] coordinates){return geometryFactory.createPolygon(coordinates);}/*** 获面* param shellCoordinates 面边界坐标集合* param holeCoordList 多个孔洞坐标集合* */public Polygon getPolygon(Coordinate [] shellCoordinates, ListCoordinate [] holeCoordList){LinearRing shell geometryFactory.createLinearRing(shellCoordinates);LinearRing[] holes new LinearRing[holeCoordList.size()];for(int m0; mholeCoordList.size(); m){Coordinate [] holeCoordinates holeCoordList.get(m);holes[m] geometryFactory.createLinearRing(holeCoordinates);}return geometryFactory.createPolygon(shell, holes);}/*** 获取面通过 WKT 创建* param coordinates 坐标集合* */public Polygon getPolygonByWKT(Coordinate [] coordinates) throws ParseException {String wktStr createWktStringWithPolygon(POLYGON, coordinates, null);return (Polygon) createGeometry(wktStr);}/*** 获取面通过 WKT 创建* param shellCoordinates 面边界坐标集合* param holeCoordList 多个孔洞坐标集合* */public Polygon getPolygonByWKT(Coordinate [] shellCoordinates, ListCoordinate [] holeCoordList) throws ParseException {String wktStr createWktStringWithPolygon(POLYGON, shellCoordinates, holeCoordList);return (Polygon) createGeometry(wktStr);}/*** 获取多面* param coordList 多个坐标集合* */public MultiPolygon getMultiPolygon(ListCoordinate [] coordList){Polygon [] polygons new Polygon[ coordList.size() ];for(int i0; icoordList.size(); i){polygons[i] geometryFactory.createPolygon(coordList.get(i));}return geometryFactory.createMultiPolygon(polygons);}/*** 获多面* param coordinateMap 面边界和孔洞坐标集合* */public MultiPolygon getMultiPolygon(MapCoordinate [], ListCoordinate [] coordinateMap){Polygon [] polygons new Polygon[ coordinateMap.size() ];int index 0;for(Map.EntryCoordinate[], ListCoordinate[] item : coordinateMap.entrySet()){LinearRing shell geometryFactory.createLinearRing(item.getKey()); // 面边界LinearRing[] holes new LinearRing[item.getValue().size()]; // 孔洞for(int m0; mitem.getValue().size(); m){Coordinate [] holeCoordinates item.getValue().get(m);holes[m] geometryFactory.createLinearRing(holeCoordinates);}polygons[index] geometryFactory.createPolygon(shell, holes);index;}return geometryFactory.createMultiPolygon(polygons);}/*** 获取多面* param coordList 多个坐标集合* */public MultiPolygon getMultiPolygonByWKT(ListCoordinate [] coordList) throws ParseException {StringBuilder wktSB new StringBuilder();wktSB.append(MULTIPOLYGON).append(();int index 0;for(Coordinate [] coordinates : coordList){if(index 0) { wktSB.append(,); }// 1. 处理面边界wktSB.append(();wktSB.append((); // 面边界startwktSB.append(coordinatesToWktStr(coordinates));wktSB.append()); // 面边界endwktSB.append());index;}wktSB.append());return (MultiPolygon) createGeometry(wktSB.toString());}/*** 获多面* param coordinateMap 面边界和孔洞坐标集合* */public MultiPolygon getMultiPolygonByWKT(MapCoordinate [], ListCoordinate [] coordinateMap) throws ParseException {StringBuilder wktSB new StringBuilder();wktSB.append(MULTIPOLYGON).append(();int index 0;for(Map.EntryCoordinate[], ListCoordinate[] item : coordinateMap.entrySet()){Coordinate [] shellCoordinates item.getKey();ListCoordinate [] holeCoordList item.getValue();if(index 0) { wktSB.append(,); }wktSB.append(();wktSB.append(coordinatesToWktStr(shellCoordinates, holeCoordList));wktSB.append());index;}wktSB.append());return (MultiPolygon) createGeometry(wktSB.toString());}/*** 获取圆无孔洞* param lng 经度* param lat 纬度* param radius 半径* */public Polygon getCircle(double lng, double lat, final double radius) {final int arcs 32; // 弧线点数量Coordinate coords[] new Coordinate[ arcs 1 ];for (int i 0; i arcs; i) { // 角度转弧度计算double angle ((double) i / (double) arcs) * Math.PI * 2.0;double dx Math.cos(angle) * radius;double dy Math.sin(angle) * radius;coords[i] new Coordinate((double) lng dx, (double) lat dy);}coords[arcs] coords[0]; // 将第一个数据放在最后形成闭环LinearRing ring geometryFactory.createLinearRing(coords); // 圆环线Polygon polygon geometryFactory.createPolygon(ring, null);return polygon;}/*** 通过 WKT 字符串创建几何对象* param wktStr wkt 字符串* */public Geometry createGeometry(String wktStr) throws ParseException {WKTReader wktReader new WKTReader(geometryFactory);return wktReader.read(wktStr);}/*** 根据几何类型和坐标集合创建 WKT 字符串* param geomType 几何类型* param coordinates 坐标集合* */public String createWktString(String geomType, Coordinate [] coordinates){StringBuilder wktSB new StringBuilder();wktSB.append(geomType).append(();wktSB.append(coordinatesToWktStr(coordinates));wktSB.append());return wktSB.toString();}/*** 将坐标集合转换为 wkt 需要的字符串* param coordinates 坐标集合* */private String coordinatesToWktStr(Coordinate [] coordinates){StringBuilder wktSB new StringBuilder();for(int i0; icoordinates.length; i){Coordinate coordinate coordinates[i];wktSB.append( coordinate.getX() ).append( ).append( coordinate.getY() );if(coordinates.length-1 ! i){ wktSB.append(,); } // 最后一个坐标不需要加逗号}return wktSB.toString();}/*** 将坐标集合转换为 wkt 需要的字符串* */private String coordinatesToWktStr(Coordinate [] shellCoordinates, ListCoordinate [] holeCoordList){StringBuilder wktSB new StringBuilder();// 1. 处理面边界wktSB.append((); // 面边界startwktSB.append(coordinatesToWktStr(shellCoordinates));wktSB.append()); // 面边界end// 2. 处理多个孔洞if(holeCoordList ! null holeCoordList.size() 0){for(int n0; nholeCoordList.size(); n){Coordinate [] holeCoordinates holeCoordList.get(n);wktSB.append(,);wktSB.append((); // 面边界startwktSB.append(coordinatesToWktStr(holeCoordinates));wktSB.append()); // 面边界end}}return wktSB.toString();}/*** 根据几何类型和坐标集合创建 WKT 字符串多个几何图形* param geomType 几何类型* param coordList 多个坐标集合* */public String createMultiWktString(String geomType, ListCoordinate [] coordList){StringBuilder wktSB new StringBuilder();wktSB.append(geomType).append(();for(int m0; mcoordList.size(); m){Coordinate [] coordinates coordList.get(m);wktSB.append(();for(int n0; ncoordList.size(); n){Coordinate coordinate coordinates[n];wktSB.append( coordinate.getX() ).append( ).append( coordinate.getY() );if(coordinates.length-1 ! n){ wktSB.append(,); } // 最后一个坐标不需要加逗号}wktSB.append());if(coordList.size()-1 ! m){ wktSB.append(,); } // 最后一个坐标不需要加逗号}wktSB.append());return wktSB.toString();}/*** 根据几何类型和坐标集合创建 WKT 字符串* param geomType 几何类型* param shellCoordinates 面边界坐标集合* param holeCoordList 多个孔洞坐标集合* */public String createWktStringWithPolygon(String geomType, Coordinate [] shellCoordinates, ListCoordinate [] holeCoordList){StringBuilder wktSB new StringBuilder();wktSB.append(geomType).append(();wktSB.append(coordinatesToWktStr(shellCoordinates, holeCoordList));wktSB.append());return wktSB.toString();} }操作示例 package com.example;import org.locationtech.jts.geom.*;public class App {public static void main( String[] args ){App app new App();// 拓扑关系 containsapp.doContains();// 叠加分析 intersectionapp.doIntersection();}private JTSGeometryUtil jtsGeometryUtil new JTSGeometryUtil();/*** Contains 包含* */public void doContains(){// 点Point point jtsGeometryUtil.getPoint(116.403406,39.93397);// 面Coordinate[] coordinates new Coordinate[4];coordinates[0] new Coordinate(116.361725,39.95676); // 首尾坐标相同coordinates[1] new Coordinate(116.364887,39.908515);coordinates[2] new Coordinate(116.442501,39.909622);coordinates[2] new Coordinate(116.440488,39.955654);coordinates[3] new Coordinate(116.361725,39.95676); // 首尾坐标相同Polygon polygon jtsGeometryUtil.getPolygon(coordinates);// 操作boolean result polygon.contains(point);System.out.println(result);}/*** Intersection 交叉分析* */public void doIntersection(){// 线一Coordinate [] coordinates1 new Coordinate[2];coordinates1[0] new Coordinate(116.361725,39.95676);coordinates1[1] new Coordinate(116.442501,39.909622);LineString lineString1 jtsGeometryUtil.getLineString(coordinates1);// 线二Coordinate [] coordinates2 new Coordinate[2];coordinates2[0] new Coordinate(116.364887,39.908515);coordinates2[1] new Coordinate(116.440488,39.955654);LineString lineString2 jtsGeometryUtil.getLineString(coordinates2);// 操作Geometry geometry lineString1.intersection(lineString2);System.out.println(geometry);} }
http://www.zqtcl.cn/news/556299/

相关文章:

  • 做网站电脑配置要求个高吗电子商务网站的建设包含哪些流程图
  • 青岛做网站大公司wordpress文章页加一言
  • 用哪个网站做相册视频文件夹谷歌ads
  • 注册top域名做公司网站男女做暖网站是什么
  • 郴州本地网站建设高端网站设计多少钱
  • 此网站域名即将过期广告制作属于什么行业
  • 牛牛襄阳网站建设wap网站asp源码
  • 信用网站建设招标书建网站需要什么手续
  • 重庆建网站方法网站开发和维护
  • 做网站需要什么人活动策划流程及细节
  • wordpress企业网站seo上海市
  • 北京建外贸网站公司网络域名是什么
  • 聚美优品网站建设方案上市公司的信息网站
  • 济南做网站比较好的公司知道吗为什么做美食视频网站
  • 药店网站源码宣传方式
  • word如何做网站链接淘宝客建站需要多少钱
  • 凡科网免费建站步骤及视频logo设计网页
  • 天梯网站建设软件开发公司职位
  • 建站公司外贸东方购物网上商城
  • 白银做网站企业免费网站模板
  • 网络公司给我们做的网站_但是我们不知道域名是否属于我们湖北正规网站建设质量保障
  • 本地网站asp iis团队展示网站
  • 企业网站管理系统cmswordpress知识管理系统
  • 创建一个网站需要怎么做销售平台公司
  • 网站域名实名认证吗做斗图的网站
  • 公司在兰州要做网站怎样选择做网站数据库表各字段详情
  • 营销型网站建设的要素搭建本地网站
  • 深圳网站建设V芯ee8888ewordpress瀑布流主 #65533;
  • 股票交易网站开发angular2做的网站有
  • 如何建立免费个人网站angularjs 网站开发