2013-05-03 20 views
5

Vấn đề:JTS/GeoTools Đúng đoàn/chênh lệch nhiều hình học

Tôi có một tập tin hình có chứa các khu vực mục tiêu (màu vàng).

Tôi có tệp hình dạng chứa các tòa nhà (màu xanh lục).

Tôi cần khoảng trắng trong vùng màu vàng.

ảnh:: //db.tt/kjjXZlQF

giải pháp của tôi:

  1. Nhận tất cả các tòa nhà trong khu vực đó

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

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

  2. Từ mỗi tòa nhà có được nó là hình học và sử dụng sự khác biệt về các khu vực mục tiêu

    toCover = toCover.Difference(building);

HOẶC thứ hai giải pháp:

Liên minh của tất cả các tòa nhà và sau đó sự khác biệt ở phần cuối.

HOẶC giải pháp thứ ba:

Đặt chúng tất cả trong một liên minh gọi GeomtryCollection và sau đó sử dụng sự khác biệt

Mọi người đều của các giải pháp này cho tôi một cái gì đó giống như hình ảnh sau

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

Để cho rõ ràng, tôi đã thử một số cách để giải quyết vấn đề này, bằng cách sử dụng các cách tạo/tạo hoặc sử dụng nó khác nhau. Ngay cả với mã đã cho trong trang web bên dưới, nó không hoạt động chính xác.

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

+0

bạn có thể nhận được nhiều phản ứng trên http://gis.stackexchange.com/ –

+1

Bạn thử gọi '.buffer (0)' trên tập hợp các tòa nhà? – mdup

Trả lời

1

vấn đề của tôi đã được giải quyết cuối cùng như @mdup đã gợi ý việc sử dụng

.buffer(0)