首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何使用turfjs正确地在多边形内添加正方形网格?

如何使用turfjs正确地在多边形内添加正方形网格?
EN

Stack Overflow用户
提问于 2019-05-01 21:04:13
回答 1查看 1.4K关注 0票数 2

所以我现在在玩牛粪。我试着在多边形里加一个尖尖的。

这是密码

代码语言:javascript
复制
var triangleCoords = [
  { lat: 25.774, lng: -80.19 },
  { lat: 18.466, lng: -66.118 },
  { lat: 32.321, lng: -64.757 },
  { lat: 25.774, lng: -80.19 }
];

// Construct the polygon.
var bermudaTriangle = new google.maps.Polygon({
  paths: triangleCoords,
  strokeColor: "#FF0000",
  strokeOpacity: 0.8,
  strokeWeight: 2,
  fillColor: "#FF0000",
  fillOpacity: 0.35
});
bermudaTriangle.setMap(map);

const geoJSON = {
  type: 'Polygon',
  coordinates: []
};

// convert to bermudaTriangle path to geojson
for (let point of bermudaTriangle.getPath().getArray()) {
  geoJSON.coordinates.push([point.lat(), point.lng()]);
}

const feature = turf.feature(geoJSON);

const bbox = turf.bbox(feature);

// ERROR: this one's showing Infinity values
console.table(bbox);
const grid = turf.squareGrid(bbox, 50, {
  units: "miles",
  mask: feature
});

map.data.addGeoJson(grid);

然后查看控制台,它显示了bbox的无限值,如代码中的注释。

我为代码https://codepen.io/chan-dev/pen/yrdRoM添加了一个链接

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-05-02 06:56:57

在提供的示例中,geoJSON不是有效的多边形的GeoJSON对象,这就是为什么turf.bbox返回无效结果的原因。多边形的GeoJSON可以通过如下turf.polygon构造:

代码语言:javascript
复制
var triangleCoords = [
  { lat: 25.774, lng: -80.19 },
  { lat: 18.466, lng: -66.118 },
  { lat: 32.321, lng: -64.757 },
  { lat: 25.774, lng: -80.19 }
];

var data = triangleCoords.map(coord => {
  return [coord.lng, coord.lat];
});
var geojson = turf.polygon([data]);    

包围盒的计算方式如下:

代码语言:javascript
复制
const bbox = turf.bbox(geojson);

CodePen

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55942688

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档