Jak policzyć całkowity obszar jeziora w Atlasie

głosy
0

Raz załadowany jest Atlas obiekt w pamięci, co jest najlepszym sposobem, aby policzyć całkowity obszar jeziora? Wykonując proste wyszukiwanie tag wyszukuje wszystkie proste Areajezior ale brakuje mi wszystkich jezior w oparciu o typ = multipolygon Relationsktóre są budowane na „zewnętrzny” sposób, że zszyte razem czynią pełną jezioro.

Utwórz 07/11/2018 o 23:43
źródło użytkownik
W innych językach...                            


1 odpowiedzi

głosy
0

Atlas jest wyposażony w ComplexEntitykoncepcji, która pozwala użytkownikowi na budowę jednostek wyższego poziomu oparte na konkretnych pojęć. ComplexWaterEntityObiekt powinien dopasować tę potrzebę:

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());
Odpowiedział 07/11/2018 o 23:43
źródło użytkownik

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