2016-07-30 4 views
0

私はEsri arcgis SDK for Javaの完全な初心者です。私はJavascript APIについていくつかの経験を持っていますが、それほど多くはありません。いずれにせよ、要件のために、私たちは、発生率を地図内に配置することを意図した小さなコードを開発しました。そのためには、Esriサーバー内に展開されたFuturelayerからの特定の形状の重心を取得する必要がありました。オンデマンドフィーチャレイヤを照会した後、PolygonからJava SDKを使用してセントロイドを取得するにはどうすればよいですか?

そうするために、私たちは本当に便利なjavascript命令を見つけました。 features [0] .geometry.getExtent()。getCenter()。今、私はJavaで似たようなものを見つけようとしています。私はスキルの欠如のために私の「無能」を前提に、私にとって意味のあるものを見つけることはできませんでした。その理由から、私は絶望の中でこのフォーラムや他の多くの人にこの質問をしてみようとしています。

あなたは愚かな質問とは考えていませんが、前に述べたように私はまだ解決策を見つけることができませんでした。

これに関するヘルプは本当に歓迎されるでしょう!この質問やそれに類するものが既に答えられていれば大変申し訳ありません。この問題を解決するためのガイドラインに感謝します。

多くのありがとうございます。 Javier

答えて

0

これには回避策が見つかりました。基本的に私の解決策は最大と最小のx/yジオメトリ座標を持つエンベロープの作成に基づいており、そこから重心が得られます。このソリューションはポリゴンでのみ機能しますが、すべてのジオメトリタイプをサポートするためにコードを拡張する方法を説明すると便利です。

私は、結果を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ソリューションを探しています。これについての助けを歓迎してください。

多くの時間とサポートに感謝します。

関連する問題