Answers:
要在客户端进行几何处理,可以使用JSTS拓扑套件。这是我解决问题的小示例:联合示例。源代码:
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();
我从您的问题中了解到,您想合并两个面要素。我认为您必须使用PostGIS几何处理功能中的ST_Union功能在服务器端执行此操作。然后,您可以获得结果并将其添加到您的应用程序。无论你想要什么。合并...
在postgis中,您可以结合很多这样的多边形:
SELECT ST_AsText(ST_Union(ST_GeomFromText('POINT(1 2)'),
ST_GeomFromText('POINT(1 2)') ) );
首先,您必须对地理集合进行一些openlayers请求。
在GeoDjango中,您可以使用GeoDjango拓扑方法轻松地做到这一点。
polygon.union( secondpolygon )
GEOSGeometry.union(other)
Returns a GEOSGeometry representing all the points in this geometry and the other.
我希望这可以帮助你...