2016-07-30 33 views
0

Ich bin ein kompletter Neuling mit Esri Arcgis SDK für Java. Ich habe etwas Erfahrung mit der Javascript API, aber nicht viel. Auf jeden Fall haben wir aufgrund einer Anforderung ein kleines Stück Code entwickelt, um Inzidenzen in einer Karte zu lokalisieren. Um dies zu tun, mussten wir den Schwerpunkt einer bestimmten Form erhalten, die von einem Futurelayer kam, der auf einem Esri-Server bereitgestellt wurde.Wie bekomme ich einen Schwerpunkt mit Java SDK von einem Polygon nach Anfrage ein On-Demand-Feature-Layer?

Um dies zu tun, fanden wir eine wirklich nützliche Javascript-Anweisung; features [0] .geometry.getExtent(). getCenter(). Im Moment versuche ich etwas Ähnliches in Java zu finden. Es ist mir nicht gelungen, etwas Sinnvolles für mich zu finden, da ich aufgrund mangelnder Fähigkeiten meine "Inkompetenz" angenommen habe. Aus diesem Grund versuche ich in einer Verzweiflung diese Frage in diesem Forum und vielen anderen zu stellen.

die Hoffnung, Sie nicht Sie es als dumme Frage betrachten, aber wie ich bereits erwähnt habe ich nicht in der Lage war noch keine Lösung zu finden.

Jede Hilfe zu diesem wird wirklich willkommen sein !!! Es tut mir leid, wenn diese Frage oder eine ähnliche Frage bereits beantwortet wurde. Ich werde eine Link-o-Richtlinie zu schätzen wissen, um dieses Problem zu lösen.

Vielen Dank und viele Grüße. Javier

Antwort

0

Ich habe eine Behelfslösung dazu gefunden. Grundsätzlich basierte meine Lösung auf der Erstellung eines Envelopes mit den Max- und Min-X/Y-Geometriekoordinaten und von dort auf den Zentroid. Die Lösung funktioniert nur mit Polygonen, aber es ist nützlich zu veranschaulichen, wie der Code erweitert werden kann, um alle Geometrietypen zu unterstützen.

Ich habe das Ergebnis mit einem der JavaScript-Funktion 'Features [0] .geometry.getExtent(). GetCenter()' verglichen und beide sind gleich. Also, ich kann bestätigen, dass die Lösung für meinen Anwendungsfall geeignet ist, weil ich nur mit Polygonen arbeite.

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(); 
} 

Dies ist nur ein Workaround für meinen Anwendungsfall, aber ich bin auf der Suche nach einer offiziellen Esri-Lösung. Bitte jede Hilfe zu diesem Thema wird begrüßt.

Vielen Dank für Ihre Zeit und Unterstützung !!!