wkt区域围栏

x33g5p2x  于2022-05-20 转载在 其他  
字(1.5k)|赞(0)|评价(0)|浏览(599)

API文档
http://shengshifeiyang.gitee.io/geotools-learning/

  1. /**
  2. * 判断以x,y为坐标的点point(x,y)是否在geometry表示的Polygon中
  3. * @param x
  4. * @param y
  5. * @param geometry wkt格式 POLYGON((0 0, 10 0, 10 10, 0 10,0 0))
  6. * @return
  7. */
  8. public static boolean withinGeo(double x,double y,String geometry) throws ParseException {
  9. GeometryFactory geometryFactory = new GeometryFactory();
  10. Coordinate coord = new Coordinate(x,y);
  11. Point point = geometryFactory.createPoint( coord );
  12. WKTReader reader = new WKTReader( geometryFactory );
  13. Polygon polygon = (Polygon) reader.read(geometry);
  14. return point.within(polygon);
  15. }
  16. public static void main(String[] args) throws Exception {
  17. //请自行搜素了解wkt格式
  18. //wktPoly 1.点位要有顺序,需要按顺序画成封闭区域;2.最后一个点位和第一个点位相同,完成闭环
  19. String wktPoly = "POLYGON ((121 29, 121 30, 122 30, 122 29,121 29))";
  20. String wktPoint = "POINT (121.664564 29.971667)";
  21. GeometryFactory geometryFactory = new GeometryFactory();
  22. WKTReader reader = new WKTReader(geometryFactory);
  23. Geometry point = reader.read(wktPoint);
  24. Geometry poly = reader.read(wktPoly);
  25. boolean ex = poly.contains(point);
  26. System.out.println("ex = " + ex);
  27. List<String> list = new ArrayList<>();
  28. list.add("121 29");
  29. list.add("121 30");
  30. list.add("122 30");
  31. list.add("122 29");
  32. String polygon = "POLYGON (("+ StringUtils.join(list,",")+","+list.get(0)+"))";
  33. System.out.println(polygon);
  34. String point1 = "POINT ("+"121.664564"+" "+"29.971667"+")";
  35. boolean b = withinGeo(121.664564, 29.971667, polygon);
  36. System.out.println(b);
  37. }

转载:https://blog.51cto.com/u_15127528/4732344

相关文章