오픈 레이어 3에서 원형 다각형을 만드는 방법은 무엇입니까?


10

그래서 나는이 예제를 정말로 수정하고 싶습니다 : 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
  })
});

그리고 질문 : 원형 다각형을 만드는 방법? 내가 볼 수 있듯이 두 가지 선택이 있습니다.

  1. 멍청한 수준에 따라 geom.Circle을 geom.Polygon으로 변환하는 방법

  2. 오픈 레이어 2와 같은 내 자신의 함수를 만드십시오.

    OpenLayers.Geometry.Polygon.createRegularPolygon = 함수 (원점, 반경, 측면, 회전) {
    var angle = Math.PI * ((1 / sides)-(1/2)); if (회전) {각도 + = (회전 / 180) * Math.PI; } var rotatedAngle, x, y; var points = []; for (var i = 0; i

GIS 마스터 라이프에서 같은 시점에 도달 한 사람이 있습니까? 어느 것이 더 낫습니까? 아니면 현명하고 강한 자만이 볼 수있는 숨겨진 길이 있습니까? 도와주세요, 제발!

답변:


13

다른 사람들이 올바르게 지적했듯이 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 tissot 지표 표시기 에서도 확인할 수 있습니다 .

 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
Darren Reid가

또한 writeWKT를 사용하여 wkt에서 형상을 추출하려고 할 때.
Suraj

1
ol.geom.Circle다각형이 아니라 반경과 중심으로 표시되는 간단한 형상입니다. (의 기본 클래스를 볼 수 ol.geom.Circle있습니다 ol.geom.SimpleGeometry하지 ol.geom.Polygon) GeoJSON, WKT 및 KML 자신의 사양에 원형 형상을 가지고 포맷하기 전에 변환이 필요하지 않습니다. ol.geom.Circle실제 다각형 으로 근사값을 구하는 방법은 내 답변을 참조하십시오 .
nagytech
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.