Jak spočítat celkovou jezerní oblast v Atlasu

hlasů
0

Poté, co jsem si načetli Atlas objekt v paměti, co je nejlepší způsob, jak spočítat celkovou jezerní oblast? Dělat jednoduché vyhledávání tag najde všechny jednoduché Areajezer, ale já jsem chybí všechny jezera v závislosti na typu = multipolygon Relations, které jsou postaveny na „vnější“ způsobem, který, sešity, aby se plně jezero.

Položena 07/11/2018 v 23:43
zdroj uživatelem
V jiných jazycích...                            


1 odpovědí

hlasů
0

Atlas přichází s ComplexEntitykonceptem, který umožňuje uživateli postavit entit vyšší úrovně na základě konkrétních pojmů. ComplexWaterEntityObjekt by měl přizpůsobit tuto potřebu:

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());
Odpovězeno 07/11/2018 v 23:43
zdroj uživatelem

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