如何在Javascript中使用H3绘制六边形网格?

4urapxun  于 2022-12-02  发布在  Java
关注(0)|答案(3)|浏览(198)

我想做一个系统,用户将能够绘制一个六边形网格。区域和他们的坐标将被存储在数据库中。我们正在考虑实现H3库为此。如何将图书馆的帮助是在全国各地制作H3六边形?
我已经用h3-js库做了一个节点项目,但是不知道如何在投影/Map上绘制六边形。

ie3xauqp

ie3xauqp1#

最近我发现这个tuto为创建自定义的CSS网格,我认为它会帮助你为你的问题:https://css-tricks.com/css-grid-and-custom-shapes-part-1/#aa-css-grid-of-hexagons

2guxujil

2guxujil2#

通常,要渲染H3单元格,可以使用h3.h3ToGeoBoundary(cell)(v3)或h3.cellToBoundary(cell)(v4)来获取顶点。将true作为第二个参数传递,可以得到[lng, lat]对和适合GeoJSON的闭合循环。可以使用geojson2h3库简化将一个或多个H3单元格转换为GeoJSON的过程,GeoJSON可以使用Mapbox、Google Maps或其他各种Map工具呈现为Map。
有关使用Mapbox将单元格渲染到Map的示例,请参阅https://observablehq.com/@nrabinowitz/h3-tutorial-heatmap-rendering?collection=@nrabinowitz/h3-tutorial

iyzzxitl

iyzzxitl3#

要在JavaScript中使用H3绘制六边形网格,您需要使用提供H3支持的库。H3是由Uber开发的分层六边形地理空间索引系统,它不包含在标准JavaScript库中。
一种选择是使用H3-js库,它是H3的JavaScript实现。要使用这个库,您需要使用npm或yarn之类的包管理器来安装它:

npm install h3-js

// Import the H3 library
import {H3} from 'h3-js';

// Define the center point of the grid
const lat = 37.7749;
const lng = -122.4194;

// Define the radius of the grid in kilometers
const radius = 5;

// Create a new H3 instance
const h3 = new H3();

// Generate the hexagonal grid using the H3 instance
const hexagons = h3.hexagon(lat, lng, radius);

// Loop through the hexagons and draw them on a map
hexagons.forEach(hexagon => {
  // Draw the hexagon on a map
});

这段代码创建了一个H3示例,并使用它生成一个以给定的经纬度坐标为中心、半径为5千米的六边形网格。然后,可以使用H3库提供的坐标在Map上绘制网格中的六边形。
请记住,这只是一个示例,您需要修改它以满足您的特定需求。例如,您可能需要使用不同的 matplotlib 来绘制Map上的六边形,您可能需要自定义网格大小和布局以满足您的需求。您可以在H3 GitHub页面上找到关于H3-js库和H3的更多详细文档。

相关问题