Основные шаги здесь:
- Возьмите многоугольник нужной вам области. Ограничительная рамка должна хорошо работать.
- Используйте метод
polyfill
, чтобы заполнить многоугольник шестиугольниками при желаемом разрешении.
- Обведите все шестиугольники и получите границу с помощью функции
h3ToGeoBoundary
.
- Поместите эти границы в файл GeoJSON
- Используйте конвертер типа
ogr2ogr
для преобразования в шейп-файл.
Привязки Python не были выпущены, и я не знаком с привязками R, но версия JavaScript может выглядеть следующим образом:
var h3 = require('h3-js');
var bbox = [
[-123.308821530582, 38.28055644998254],
[-121.30037257250085, 38.28055644998254],
[-121.30037257250085, 37.242722073589164],
[-123.308821530582, 37.242722073589164]
];
var hexagons = h3.polyfill(bbox, 6, true);
var geojson = {
type: 'Feature',
geometry: {
type: 'MultiPolygon',
coordinates: hexagons.map(function toBoundary(hex) {
return [h3.h3ToGeoBoundary(hex, true)];
})
}
};
console.log(JSON.stringify(geojson));
и вы будете использовать скрипт следующим образом:
node bbox-geojson.js | ogr2ogr -f "ESRI Shapefile" bbox-hexagons.shp /vsistdin/