首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用OpenTripPlanner接口获得正确的凹面外壳?

如何使用OpenTripPlanner接口获得正确的凹面外壳?
EN

Stack Overflow用户
提问于 2018-01-19 03:57:05
回答 1查看 299关注 0票数 0

下面的代码没有给出我所期望的结果。我希望所有的点都作为多边形的节点,多边形包含所有的点。如何正确使用API?另外,如果我设置的阈值小于1,程序就会进入某种无限循环。

代码语言:javascript
复制
import com.vividsolutions.jts.geom.Coordinate;
import com.vividsolutions.jts.geom.Geometry;
import com.vividsolutions.jts.geom.GeometryCollection;
import com.vividsolutions.jts.geom.GeometryFactory;
import com.vividsolutions.jts.geom.Point;
import java.util.Set;
import org.geotools.geometry.jts.JTSFactoryFinder;
import org.opensphere.geometry.algorithm.ConcaveHull;


public class ConcaveHullTrial {

    public static void main(String args[]) {

        ConcaveHull cch = null;
        com.vividsolutions.jts.geom.Point point[] = new Point[5];
        Set<GeometryFactory> testing = JTSFactoryFinder.getGeometryFactories();
        for (GeometryFactory f : testing) {
            System.out.println(f);
        }
        GeometryFactory gf = JTSFactoryFinder.getGeometryFactory();
        point[0] = gf.createPoint(new Coordinate(0.0, 0.0));
        point[1] = gf.createPoint(new Coordinate(0.0, 2.0));
        point[2] = gf.createPoint(new Coordinate(2.0, 0.0));
        point[3] = gf.createPoint(new Coordinate(2.0, 2.0));
        point[4] = gf.createPoint(new Coordinate(1.8, 1.5));

        GeometryCollection gc = new GeometryCollection(point, gf);
        double threshold = 4;
        cch = new ConcaveHull(gc, threshold);
        Geometry hull = cch.getConcaveHull();
        for (int i = 0; i < 5; i++) {
            System.out.println(hull.covers(point[i]));
        }
        for (Coordinate c: hull.getCoordinates()) {
            System.out.println(c);
        }
    }
}

结果:

代码语言:javascript
复制
false
true
false
true
false
(0.0, 2.0, NaN)
(2.0, 2.0, NaN)
EN

回答 1

Stack Overflow用户

发布于 2019-01-15 10:27:06

它对我来说很好。我使用了ConcaveHull-0.2和geospark-1.1.3库。这是我在运行你的代码后的结果:

com.vividsolutions.jts.geom.GeometryFactory@1e81f4dc true (0.0,0.0,NaN) (2.0,0.0,NaN) (2.0,2.0,NaN) (0.0,2.0,NaN) (0.0,0.0,NaN)

此外,它可以在阈值小于1.0的情况下工作

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

https://stackoverflow.com/questions/48329347

复制
相关文章

相似问题

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