Проблема:
У меня есть файл формы, содержащий целевую область (желтый).
У меня есть файл формы, содержащий здания (зеленые).
Мне нужно белое пространство в желтой области.
фото: ://db.tt/kjjXZlQF
Мои решения:
Получить все здания в этой области
Filter inPolygon = CQL.toFilter("WITHIN(the_geom,"+wktwriter.write(targetarea) + ")");
FeatureCollection<SimpleFeatureType, SimpleFeature> collection = featureSource.getFeatures(inPolygon);//this works
Из каждого здания получите его геометрию и используйте разницу в целевой области.
toCover = toCover.Difference(building);
ИЛИ второе решение:
Объединение каждого здания, а затем различие в конце.
ИЛИ третье решение:
Поместите их все в объединение вызовов GeomtryCollection, а затем используйте разницу
Каждое из этих решений дает мне что-то вроде следующей картинки
изображение: https://dl.dropboxusercontent.com/u/639458/stackoverflow/stfr2.png
Да будет ясно, что я испробовал несколько способов решения этой проблемы, используя разные способы ее создания/создания или использования. Даже с данным кодом на сайте ниже он не работал правильно.
http://docs.geotools.org/latest/userguide/library/jts/combine.html
.buffer(0)
по набору зданий? - person mdup   schedule 05.06.2013