openlayers 3で円形ポリゴンを作成する方法は?


9

だから私はこの例を本当に変更したいと思います:http : //openlayers.org/en/v3.0.0/examples/tissot.html?q=circle

問題は、マップに適用しようとしても機能しないことです。おそらく、球状ではないOSMスタイルを使用しているためです。

var map = new ol.Map({
  layers: [
    new ol.layer.Tile({
        source: new ol.source.OSM()
      }),
    new ol.layer.Vector({
      source: vectorSource
    })
  ],
  renderer: 'canvas',
  target: 'map',
  view: new ol.View({
    center: ol.proj.transform([2.1833, 41.3833], 'EPSG:4326', 'EPSG:3857'),
    zoom: 2
  })
});

そして質問:円形ポリゴンを作成する方法?ご覧のとおり、2つの選択肢があります。

  1. どういうわけか、私のnoobレベルに基づいて、geom.Circleをgeom.Polygonに変換します。

  2. それを行うために、openlayers 2のような独自の関数を作成します。

    OpenLayers.Geometry.Polygon.createRegularPolygon = function(origin、radius、sides、rotation){
    var angle = Math.PI *((1 / sides)-(1/2)); if(回転){角度+ =(回転/ 180)* Math.PI; } var rotateAngle、x、y; var points = []; for(var i = 0; i

誰かがGISマスターライフの同じポイントに到達しましたか?どっちがいいですか?それとも、賢明な人だけが見ることができる隠された道がありますか?お願い助けて!

回答:


11

他の人が正しく指摘しているように、GeoJSONおよびWKT形式は円形ジオメトリをサポートしていません。サークルもKML仕様には含まれていません。これにより、マップフレームをKML、GeoJSON、またはWKTに書き出そうとすると、面倒になります。

OpenLayers v3には、円をポリゴンで近似する方法はありますが、大きな円の距離に変換する必要があるため、きれいではありません。ol.geom.Polygon.circularメソッドについては、APIリファレンス(http://openlayers.org/en/v3.5.0/apidoc/ol.geom.Polygon.html#circular)を参照してください。

ol.geom.Polygon.circularメソッドの例を以下に示しますが、このOpenLayersティソインディカトリックスの例でも確認できます。

 var lowpoly = ol.geom.Polygon.circular(
  /* WGS84 Sphere */
  new ol.Sphere(6378137),
  circle.getCenter(),
  circle.getRadius(),
  /* Number of verticies */
  12);

あるいは、fromCircleこの投稿の時点で実験的なものを使用できます。

var lowpoly = ol.geom.Polygon.fromCircle(
  circle,
  /* Number of verticies (optional) */
  12,
  /* Start angle (optional) */
  90
);

あなたが遊ぶことができるものについては、私のjsFiddleをここで見てください:https://jsfiddle.net/a1syw4od/9/


私が編集を提案することもできますが、あなたはそれを修正する場合は、多分それは簡単です:最後の例では使うべきol.geom.Polygon.fromCircle ではなくol.geom.Polygon.circular。乾杯!
Arjan

0

単純な円形ポリゴンの作成に興味がある場合は、次を使用します。

new ol.geom.Circle(
            ol.proj.transform([longitude, latitude], 'EPSG:4326', 'EPSG:3857'),
            radius_meters),
            'XY'
        )

出典:http : //openlayers.org/en/v3.0.0/apidoc/ol.geom.Circle.html (ページ上部の安定したティックを削除)


これは有効ですが、機能をGeoJSONに変換しようとする場合、現在問題があります。参照してくださいgithub.com/openlayers/ol3/pull/3237#issuecomment-78475413
ダレン・リード

また、writeWKTを使用してwktでジオメトリを抽出しようとした場合。
スラジュ2015

1
ol.geom.Circleはポリゴンではなく、半径と中心で表される単純なジオメトリです。(の基本クラスを参照ol.geom.Circleされol.geom.SimpleGeometryないol.geom.Polygon)にGeoJSON、WKT、およびKMLはその仕様で、円形の形状を持っているし、フォーマットする前に変換する必要がありません。ol.geom.Circle真のポリゴンでを近似する方法については、私の回答を参照してください。
nagytech 2015年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.