Wie die gesamte Seegebiet in einem Atlas zählen

stimmen
0

Sobald ich ein geladene Atlas Objekt im Speicher, was ist der beste Weg , um das gesamte Seegebiet zu zählen? Eine einfache Tag - Suche zu tun findet alle einfachen AreaSeen , aber ich alle Seen basierend bin fehlt auf Typ = multi , Relationsdie auf „äußere“ Wege gebaut werden, die zusammengenäht, eine vollständige See machen.

Veröffentlicht am 07/11/2018 um 23:43
quelle vom benutzer
In anderen Sprachen...                            


1 antworten

stimmen
0

Atlas kommt mit einem ComplexEntityKonzept , das der Benutzer geordneten Einheiten konstruieren , können auf der Grundlage spezifischer Konzepte. Das ComplexWaterEntityObjekt sollte dieses Bedürfnis passen:

Atlas atlas;
Iterable<ComplexWaterEntity> waterEntities =
    new ComplexWaterEntityFinder().find(atlas);

// Get all water bodies and keep lakes only.
// This will include the multipolygon ones.
Iterable<ComplexWaterBody> lakes = Iterables.stream(waterEntities)
    .filter(entity -> WaterType.LAKE == entity.getWaterType())
    .map(entity -> (ComplexWaterBody) entity);

// Add all the surface areas
Surface result = Surface.MINIMUM;
for (ComplexWaterBody lake : lakes)
{
    result = result.add(lake.getGeometry().getSurface()));
}
System.out.println(result.asKilometerSquared());
Beantwortet am 07/11/2018 um 23:43
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more