1

ユーザーがマップ上にポリゴンを描画できるようにするアプリケーションがあり、JSTS ライブラリを使用して WFS レイヤーに対してポリゴンの交差を行い、ユーザーのポリゴンと交差するフィーチャを読み取ります。

エラーが返されるため、ユーザーが選択したポリゴンをマップに描画すると、エラーが発生します。

「未定義のプロパティ「getAxisOrientation」を読み取ることができません」

これは投影に関連する問題のようです (私は EPSG:27700 投影を使用しています)。

ユーザー ポリゴンが描画されたときのコードは次のとおりです。WFS 読み取りフィーチャ メソッドに投影を含める必要はありますか?

draw.on('drawend',function(e){
var extent = e.feature.getGeometry().getExtent();
var geomA = e.feature.getGeometry();

myDrawSource.clear();
mySelectionsSource.clear();
$.ajax('../../geoserver/wfs', {
            type: 'GET',
            data: {
                service: 'WFS',
                version: '1.1.0',
                request: 'GetFeature',
                typename: 'planning:flood_zone_2',
                srsname: 'EPSG:27700',
                bbox: extent.join(',') + ',EPSG:27700'
            }
        }).done(function(resp){
        var formatWFS = new ol.format.WFS();
        var featuresInExtent = formatWFS.readFeatures(resp);
        var featuresOnDrawPoly = new Array();
        for (var i=0;i<featuresInExtent.length;i++){       
        var geomB = featuresInExtent[i].getGeometry();
          if (polyIntersectsPoly(geomA,geomB)===true){
          featuresOnDrawPoly.push(featuresInExtent[i])
          }
        }
        mySelectionsSource.addFeatures(featuresOnDrawPoly);
        //here you may iterate and get the attributes of those falling within the draw polygon
        for (var z=0;z<featuresOnDrawPoly.length;z++){
        console.log("address is ======", featuresOnDrawPoly[z].get('definition'));
        }
        }).fail(function () {
        alert("fail loading layer!!!")
        });

})

これは私の proj4 プロジェクションの定義です。軸について読みましたが、この定義に問題があるのでしょうか?

proj4.defs("EPSG:27700", "+proj=tmerc +lat_0=49 +lon_0=-2 +k=0.9996012717 +x_0=400000 +y_0=-100000 +ellps=airy +towgs84=446.448,-125.157,542.06,0.15,0.247,0.842,-20.489 +units=m +no_defs");
4

2 に答える 2

2

これは GML パーサーによって読み取られる containerSRS であるため、 http://www.opengis.net/gml/srs/epsg.xml#27700toのエイリアスを作成する必要がありますEPSG:27700

https://github.com/openlayers/ol3/issues/3898#issuecomment-120899034

于 2016-03-21T08:01:11.383 に答える
0

OpenLayers 3.17.1 を使用して GeoServer 2.9.1 から WFS 1.1.0 機能をロードするときに、この問題が発生しました。

GML で指定された srsName はurn:x-ogc:def:crs:EPSG:3763だったので、次のように動作しました。

var proj3763 = new ol.proj.Projection({
  code: 'EPSG:' + 3763,
  extent: [-121656.5849, -294200.8899, 172945.8815, 277430.8421],
  axis: 'enu'
});
ol.proj.addProjection(proj3763);
var proj3763OGC = new ol.proj.Projection({ // srsName from GeoServer GML3 (WFS)
  code: 'urn:x-ogc:def:crs:EPSG:' + 3763,
  axis: 'enu',
  extent: [-121656.5849, -294200.8899, 172945.8815, 277430.8421]
});
ol.proj.addProjection(proj3763OGC);
ol.proj.addEquivalentProjections([proj3763OGC, proj3763]);

于 2016-08-08T12:47:04.260 に答える