首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何到达WKT区域?

如何到达WKT区域?
EN

Stack Overflow用户
提问于 2015-06-08 06:49:11
回答 1查看 2K关注 0票数 3

我使用jts.jar,package是com.vividsolutions.jts.geom,得到一个几何区域。但是getArea()方法没有给出正确的结果。我的代码是

代码语言:javascript
复制
public static void main(String[] args) throws ParseException {
        GeometryFactory geometryFactory = new GeometryFactory();
        WKTReader reader = new WKTReader(geometryFactory);
        String s = "MULTIPOLYGON (((114.273193 40.480272, 114.274645 
        MultiPolygon mpolygon = null;
            mpolygon = (MultiPolygon) reader.read(s);
            System.out.println(mpolygon.getArea());
    }
EN

回答 1

Stack Overflow用户

发布于 2018-06-03 15:02:56

在寻找类似问题的答案时,我发现了这个问题,于是我想分享一下我的发现:

在解释您试图解决的问题时,从博客文章中获取的描述:

GIS上反复出现的问题之一是“JTS getArea()计算的面积是多少”。似乎不重要的是,多少次人们说,这些都不是答案,因为这取决于你的数据投影。这个问题不会消失,所以我编写了一些代码,应该给大多数多边形一个贴切的答案。 与大多数这些问题一样,诀窍是将多边形转换为平坦的笛卡儿平面(这是JTS工作的最佳位置)。我们可以使用GeoTools自动投影(假设多边形足够小),然后简单地调用.getArea()方法。

解决方案:

代码语言:javascript
复制
public static void main(String[] args) throws Exception {
  GeometryFactory geometryFactory = new GeometryFactory();
  WKTReader reader = new WKTReader(geometryFactory);
  String s = "MULTIPOLYGON (((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)))";
  MultiPolygon mpolygon = (MultiPolygon) reader.read(s);
  Point centroid = mpolygon.getCentroid();
  String autoCode = "AUTO:42001," + centroid.getX() + "," + centroid.getY();
  CoordinateReferenceSystem auto = CRS.decode(autoCode);
  MathTransform transform = CRS.findMathTransform(DefaultGeographicCRS.WGS84, auto);
  MultiPolygon projed = (MultiPolygon) JTS.transform(mpolygon, transform);
  Measure<Double, Area> measure = Measure.valueOf(projed.getArea(), SI.SQUARE_METRE);
  System.out.println(measure);
}

输出:

代码语言:javascript
复制
8.146055550674082E12 m²

参考资料:https://blog.ianturton.com/geotools,/projections/2017/08/01/area-of-a-polygon.html

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30702731

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档