h3 기하학적 데이터의vertex count

9666 단어 Node.jsgeo
h3 밀도 통계로 된 물통은 쉽게 사용할 수 있다.지구 데이터의 구성 분수의 밀도 통계를 시도해 보았다.

결실


지구지도 일본 해안선 데이터가 점수를 구성하는 밀도 통계를 시도해 봤다.이미지를 클릭하면 GiitHub 웹 사이트로 이동합니다.

소스 코드

const shapefile = require('shapefile')
const h3 = require('h3-js')

let dict = {}
const add = (h3) => {
  if (dict[h3]) {
    dict[h3]++
  } else {
    dict[h3] = 1
  }
}

const push = f => {
  if (!f.geometry.type === 'LineString') {
    throw new Error(`${f.geometry.type} not supported.`)
  }
  for (let a of f.geometry.coordinates) {
    add(h3.geoToH3(a[1], a[0], 5))
  }
}

shapefile.open('coastl_jpn.shp')
  .then(source => source.read()
    .then(function process (result) {
      if (result.done) return
      push(result.value)
      return source.read().then(process)
    }))
  .then(() => {
    let geojson = {
      type: 'FeatureCollection',
      features: []
    }
    for (const k in dict) {
      let coords = h3.h3ToGeoBoundary(k)
      for (let i = 0; i < coords.length; i++) {
        let v = coords[i][0]
        coords[i][0] = coords[i][1]
        coords[i][1] = v
      }
      coords.push(coords[0])
      geojson.features.push({
        type: 'Feature',
        geometry: {
          type: 'Polygon',
          coordinates: [coords]
        },
        properties: {
          'h3': k,
          'count': dict[k]
        }
      })
    }
    console.log(JSON.stringify(geojson))
  })
  .catch(error => console.error(error.stack))

감상


h3 API의 경위도 순서는 GeoJSON의 경위도 순서와 상반되기 때문에 좀 부자연스럽다.

좋은 웹페이지 즐겨찾기