我是Esri arcgis SDK for Java的新手。我对Javascript API有一些经验,但并不多。在任何情况下,由于要求,我们开发了一小段代码,用于在地图中定位事件。为此,我们需要从Esri服务器中部署的Futurelayer获取特定形状的质心。
为了做到这一点,我们发现了一个非常有用的javascript指令;特征[0] .geometry.getExtent()。getCenter()。现在,我正试图在Java中找到类似的东西。我没有找到任何有意义的东西,假设我的“无能”由于缺乏技能。出于这个原因,在绝望中,我试图在这个论坛和许多其他人中提出这个问题。
希望你不要认为这是一个愚蠢的问题,但正如我之前提到的,我还没有找到任何解决方案。
对此的任何帮助都会非常受欢迎!我很抱歉,如果这个问题或类似的问题已经回答了。我将非常感谢指南的链接,以帮助解决这个问题。
非常感谢和最诚挚的问候。 哈维尔
答案 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解决方案。请对此提出任何帮助。
非常感谢您的时间和支持!!!