11 votos

Cómo combinar dos Polígonos en OpenLayers?

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 combinar las dos polígonos en uno con OpenLayers?

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

15voto

Soldarnal Puntos 2646

Para la manipulación de geometría en el lado del cliente puede utilizar JSTS Topología de la Suite. Aquí está mi pequeño ejemplo de la solución de su problema: la Unión de ejemplo. 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();

1voto

texai Puntos 178

Lo que entiendo de tu pregunta es que desea fusionar dos entidades de polígono. Creo que usted tiene que hacer esto en el lado del servidor con ST_Union feauture que está en PostGIS la Geometría de las Funciones de Procesamiento. Entonces usted puede conseguir el resultado y agregar esto a tu aplicación. lo que usted desea. Para combinar...

En postgis puede unión de un montón de polígonos como este:

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

En primer lugar, usted tiene que hacer algunas openlayers petición de su geo colecciones.

Y en GeoDjango usted puede hacer esto fácilmente con GeoDjango Topológico Métodos..

polygon.union( secondpolygon )


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

Espero que esto te ayuda...

0voto

Rushino Puntos 113

Cada polígono se consideran como una característica. cuando alguna vez le agregue el polígono a la capa vectorial, esa función se almacena allí. y usted puede obtener independiente de las características de la capa de objeto.

i-Ciencias.com

I-Ciencias es una comunidad de estudiantes y amantes de la ciencia en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X