2013-05-03 20 views
5

Problem:WST/Geotools Prawidłowe union/różnica stwardnienia geometrii

Mam shapefile zawierający obszaru docelowego (żółte).

Mam plik kształtu, który zawiera budynki (zielony).

Potrzebuję białej przestrzeni w żółtym obszarze.

obrazku:: //db.tt/kjjXZlQF

Moje rozwiązania:

  1. Uzyskaj wszystkie budynki w tej okolicy

    Filter inPolygon = CQL.toFilter("WITHIN(the_geom,"+wktwriter.write(targetarea) + ")");

    FeatureCollection<SimpleFeatureType, SimpleFeature> collection = featureSource.getFeatures(inPolygon);//this works

  2. Z każdego budynku dostać to geometria i wykorzystanie różnicy na obszarze docelowym

    toCover = toCover.Difference(building);

LUB sekund rozwiązanie:

Unia każdego budynku, a następnie różnica na końcu.

LUB trzeci rozwiązanie:

umieścić je wszystkie w unii połączeń GeomtryCollection a następnie użyć różnica

Każdy z tych rozwiązań nie da mi coś takiego jak na poniższym rysunku

obrazku: https://dl.dropboxusercontent.com/u/639458/stackoverflow/stfr2.png

Niech będzie jasne, że wypróbowałem kilka sposobów rozwiązania tego problemu, używając różnych sposobów jego tworzenia/tworzenia lub używania. Nawet z podanym kodem w witrynie poniżej nie działał poprawnie.

http://docs.geotools.org/latest/userguide/library/jts/combine.html

+0

może uzyskać więcej odpowiedzi na http://gis.stackexchange.com/ –

+1

Próbowałaś wywołanie '.buffer (0)' na zestawie budynków? – mdup

Odpowiedz