如何在查询按需要素图层后从Polygon获取带有java SDK的质心?

时间:2016-07-30 15:38:27

标签: java polygon arcgis centroid

我是Esri arcgis SDK for Java的新手。我对Javascript API有一些经验,但并不多。在任何情况下,由于要求,我们开发了一小段代码,用于在地图中定位事件。为此,我们需要从Esri服务器中部署的Futurelayer获取特定形状的质心。

为了做到这一点,我们发现了一个非常有用的javascript指令;特征[0] .geometry.getExtent()。getCenter()。现在,我正试图在Java中找到类似的东西。我没有找到任何有意义的东西,假设我的“无能”由于缺乏技能。出于这个原因,在绝望中,我试图在这个论坛和许多其他人中提出这个问题。

希望你不要认为这是一个愚蠢的问题,但正如我之前提到的,我还没有找到任何解决方案。

对此的任何帮助都会非常受欢迎!我很抱歉,如果这个问题或类似的问题已经回答了。我将非常感谢指南的链接,以帮助解决这个问题。

非常感谢和最诚挚的问候。 哈维尔

1 个答案:

答案 0 :(得分:0)

我找到了解决方法。基本上我的解决方案是基于创建一个包含max和min x / y Geometry coodenates的Envelope,然后从那里获得质心。该解决方案仅适用于多边形,但它有助于说明如何扩展代码以支持所有几何类型。

我一直在将结果与javascript函数' features [0] .geometry.getExtent()。getCenter()'进行比较。两者都是平等的。因此,我可以确认该解决方案适合我的用例,因为我只使用多边形。

public static Point getCentroid(Polygon poly) {
enter code hereVector<Double> x = new Vector<Double>();
    Vector<Double> y = new Vector<Double>();
    for (int i = 0; i < poly.getPointCount(); i++) {
       x.add(poly.getPoint(i).getX());
       y.add(poly.getPoint(i).getY());
    }
    Envelope envelope = new Envelope(Collections.min(x), Collections.min(y), Collections.max(x), Collections.max(y));
    return envelope.getCenter();
}

这只是我用例的解决方法,但我正在寻找更正式的Esri解决方案。请对此提出任何帮助。

非常感谢您的时间和支持!!!