¿Cómo fusionar dos polígonos en OpenLayers?

11

Tengo dos polígonos

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

¿Cómo puedo fusionar los dos polígonos en uno usando OpenLayers?

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

Michelle Chan
fuente
1
Por favor explique su pregunta, no estoy seguro de qué quiere decir.
drnextgis

Respuestas:

14

Para la manipulación de geometría en el lado del cliente, puede usar JSTS Topology Suite . Aquí está mi pequeño ejemplo para resolver su problema: ejemplo de la Unión . Código fuente:

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();
drnextgis
fuente
44
(+1) Siempre aprendiendo algo nuevo aquí. JSTS se ve muy útil.
CaptDragon
Buen ejemplo de violín práctico. Felicitaciones :)
Rob Quincey
1

Lo que entiendo de su pregunta es que desea fusionar dos características de polígono. Creo que debe hacer esto en el lado del servidor con la característica ST_Union que se encuentra en las Funciones de procesamiento de geometría PostGIS. Luego puede obtener el resultado y agregarlo a su aplicación. lo que quieras. Fusionar...

En postgis puedes unir muchos polígonos como este:

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

En primer lugar, debe realizar algunas solicitudes de capas abiertas para sus colecciones geográficas.

Y en GeoDjango puede hacerlo fácilmente con los métodos topológicos de GeoDjango.

polygon.union( secondpolygon )


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

Espero que esto te ayude...

Aragón
fuente
0

Cada polígono se considera como una característica. cada vez que agrega el polígono a la capa vectorial, esa característica se almacena allí. y puede obtener características independientes del objeto de capa.

hcn
fuente