OpenLayers에서 두 다각형을 병합하는 방법은 무엇입니까?


11

두 개의 다각형이 있습니다.

polygon1 = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon([linearRing1]))
polygon2 = new OpenLayers.Feature.Vector(new OpenLayers.Geometry.Polygon([linearRing2]))

OpenLayers를 사용하여 두 다각형을 하나로 병합하는 방법은 무엇입니까?

http://i.stack.imgur.com/SrqYF.png


1
질문을 설명해주세요. 무슨 말인지 잘 모르겠습니다.
drnextgis 2012

답변:


14

클라이언트 측의 지오메트리 조작을 위해 JSTS Topology Suite를 사용할 수 있습니다 . 다음은 문제 해결의 작은 예입니다. Union example . 소스 코드:

var reader = new jsts.io.WKTReader();  

var a = reader.read('POLYGON((10 10, 100 10, 100 100, 10 100, 10 10))');
var b = reader.read('POLYGON((50 50, 200 50, 200 200, 50 200, 50 50))');

var union = a.union(b);

var parser = new jsts.io.OpenLayersParser();

union = parser.write(union);

var map = new OpenLayers.Map('map', {
  maxExtent: new OpenLayers.Bounds(0, 0, 300, 300),
  maxResolution: 100,
  units: 'm',
 controls: [new OpenLayers.Control.MousePosition(), new OpenLayers.Control.Navigation()]
});

var layer = new OpenLayers.Layer.Vector('test', {isBaseLayer: true});
map.addLayer(layer);

var unionOutput = new OpenLayers.Feature.Vector(union, null, { fillColor: 'green', fillOpacity: 1});

layer.addFeatures([unionOutput ]);
map.zoomToMaxExtent();

4
(+1) 항상 여기서 새로운 것을 배우십시오. JSTS는 매우 편리해 보입니다.
CaptDragon

좋은 편리한 바이올린 예제. Kudos :)
Rob Quincey

1

귀하의 질문에서 이해하는 것은 두 개의 다각형 기능을 병합하려는 것입니다. PostGIS Geometry Processing Functions에있는 ST_Union 기능을 사용하여 서버 측에서이 작업을 수행해야한다고 생각합니다. 그런 다음 결과를 가져 와서 앱에 추가 할 수 있습니다. 당신이 원하는대로. 병합하려면 ...

postgis에서 다음과 같이 많은 다각형을 결합 할 수 있습니다.

SELECT ST_AsText(ST_Union(ST_GeomFromText('POINT(1 2)'),
    ST_GeomFromText('POINT(1 2)') ) );

우선 당신은 당신의 지오 컬렉션에 대한 오픈 레이어 요청을해야합니다.

GeoDjango에서는 GeoDjango Topological Methods를 사용하여이 작업을 쉽게 수행 할 수 있습니다.

polygon.union( secondpolygon )


GEOSGeometry.union(other)
Returns a GEOSGeometry representing all the points in this geometry and the other.

이것이 도움이되기를 바랍니다 ...


0

모든 다각형은 하나의 기능으로 간주됩니다. 벡터 레이어에 다각형을 추가 할 때마다 해당 지형지 물이 저장됩니다. 레이어 개체에서 독립적 인 기능을 얻을 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.