OpenLayers3 ol.interaction.Draw
を使用して、頂点をクリックするか、Shift +ドラッグで自由形状のポリゴンを描くことができます(これは重要です私のアプリケーションに)。図形が描画されると、turf.jsを使用して描画された図形をクライアントのWFSレイヤーと比較し、intersect()
を実行して、WFSフィーチャが描画された図形と交差するかどうかを確認します。しかし、手描きの図形にもわずかな自己交差がある場合、turf.js intersect()
関数は次のエラーで失敗します(行326はintersect()
となります)。turf.js OpenLayers3からの自己交差ポリゴンの交差エラーDraw
turf.min.js:9キャッチされない[対象オブジェクト]
getResultGeometry @ turf.min.js:9
si.overlayOp turf.min.js @:9
交差点@ turf.min。 JS:turf.min.js @ 15
e.exports:16
(匿名関数)main.js @:326
従いますが、私のコードのスケッチです。
var features = new ol.Collection();
var vs = new ol.source.Vector({
format: new ol.format.GeoJSON(),
url: function(extent) {
return XXXXXX;
},
strategy: ol.loadingstrategy.bbox
});
features.on('add', function() {
vs.forEachFeatureIntersectingExtent(extent, function(feature) {
// use to turf.js to intersect each feature with drawn feature
var bt = gjformat.writeFeatureObject(feature, {rightHanded: false});
var dt = gjformat.writeFeatureObject(features.item(0), {rightHanded: false});
var intersection = turf.intersect(bt, dt);
}
});
私は無駄にturf.js simplify()
とol.geom.Geometry.simplify()
の両方を使用しようとしました。 turf.jsを手に入れようとする人はいませんか手描きの自己交差ポリゴンを扱うにはintersect()
?または、交差点を走る前に自己交差点を削除する方法?
Turfjsが自己交差を検出するための方法、[よじれを()](http://turfjs.org/docs/#kinks)があるので、私はそれのために別のライブラリにジャンプする必要はありません、自己交差するポリゴンをきれいにするバッファリングを見ていきます。 –