Export to GeoJson
まだ誰も着手していません。
評価
調査の方向性
例は InitService にあり、特に h3.polyfill(..., 3)、h3ToGeoBoundary、getGeoJson が該当します。まず、座標の順序と polyfill に渡されるポリゴンを GeoJSON の座標規約に照らして確認してください。出力された FeatureCollection を再現し、その六角形の境界を提供されたフェンスと比較してください。エクスポートされたポリゴンが意図した領域と一致すれば完了です。
索引モデルが issue の本文から書いたものです。
説明
You will need
<dependency>
<groupId>org.json</groupId>
<artifactId>json</artifactId>
<version>20160810</version>
</dependency>
I still getting some strange results like the image in the end where I show the resulting hexagons covers a much bigger area than my fence.
package br.com.cmabreu.hexagon.services;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
import javax.annotation.PostConstruct;
import org.json.JSONArray;
import org.json.JSONObject;
import org.springframework.stereotype.Service;
import com.uber.h3core.H3Core;
import com.uber.h3core.util.GeoCoord;
@Service
public class InitService {
private H3Core h3;
@PostConstruct
public void onInit() {
try {
List<GeoCoord> fence = new ArrayList<GeoCoord>();
fence.add( new GeoCoord(-19.487, -46.747) );
fence.add( new GeoCoord(-19.487, -35.585) );
fence.add( new GeoCoord(-25.275, -35.585) );
fence.add( new GeoCoord(-25.275, -46.747) );
h3 = H3Core.newInstance();
List<Long> hexagons = h3.polyfill(fence, null, 3);
System.out.println( getGeoJson( hexagons ) );
} catch (IOException e) {
e.printStackTrace();
}
}
private JSONObject getGeometry( List<GeoCoord> coordinates ) {
JSONObject geometry = new JSONObject();
JSONArray wrapper = new JSONArray();
JSONArray coords = new JSONArray();
for( int x=0; x < coordinates.size(); x++ ) {
JSONArray coord = new JSONArray();
coord.put(0, coordinates.get(x).lng );
coord.put(1, coordinates.get(x).lat );
wrapper.put( x, coord );
}
// Close the polygon last = first
JSONArray coord = new JSONArray();
coord.put(0, coordinates.get(0).lng );
coord.put(1, coordinates.get(0).lat );
wrapper.put( coordinates.size(), coord );
coords.put( wrapper );
geometry.put("type", "Polygon");
geometry.put("coordinates", coords);
return geometry;
}
private JSONObject getFeature( List<GeoCoord> coordinates ) {
JSONObject feature = new JSONObject();
feature.put("type", "Feature");
feature.put("properties", getProperties() );
feature.put("geometry", getGeometry( coordinates ) );
return feature;
}
private JSONObject getProperties() {
JSONObject properties = new JSONObject();
properties.put("prop01", "value01");
return properties;
}
private String getGeoJson( List<Long> hexagons ) {
JSONObject featureCollection = new JSONObject();
featureCollection.put("type", "FeatureCollection");
JSONArray features = new JSONArray();
for( Long cell : hexagons ) {
features.put( getFeature( h3.h3ToGeoBoundary(cell) ) );
}
featureCollection.put("features", features);
return featureCollection.toString();
}
}


- 主要言語
- Java
- スター
- 333
- フォーク
- 68
- PR マージ指標
- 30日以内にマージされた PR はありません
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
uber/h3-java のほかの issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 68/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 55/100
-
難易度 3/5 1〜2日 初心者へのやさしさ 42/100
-
難易度 4/5 3〜5日 初心者へのやさしさ 35/100
-
難易度 3/5 1〜2日 初心者へのやさしさ 48/100
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 65/100
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
elastic/gradle-plugins#157 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
cryptomator/hub#497 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 75/100
johanhaleby/occurrent#1120 ·