Come contare la superficie totale lago in un Atlante

voti
0

Una volta che ho caricato un Atlas oggetto in memoria, qual è il modo migliore per contare la superficie totale del lago? Facendo una semplice ricerca di tag trova tutte le semplici Arealaghi, ma mi manca tutti i laghi in base al tipo = multipolygon Relationsche sono costruiti sui modi esterni che, cuciti insieme, compongono un lago pieno.

È pubblicato 07/11/2018 alle 23:43
fonte dall'utente
In altre lingue...                            


1 risposte

voti
0

Atlas è dotato di un ComplexEntityconcetto che permette all'utente di costruire entità di livello superiore in base a concetti specifici. L' ComplexWaterEntityoggetto dovrebbe andare bene questa necessità:

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());
Risposto il 07/11/2018 a 23:43
fonte dall'utente

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