プロジェクト

全般

プロフィール

« | » 

リビジョン b912a32e

高徹 高橋 徹 さんが約9年前に追加

  • ID b912a32e8e1722cdb7e1fd43afa8da0b977393d1
  • ed537b0e

サンソン図法(真球モデル)の投影を自前で実装

差分を表示:

src/com/torutk/tinymap/TinyMapModel.java
* @author Toru Takahashi
*/
public class TinyMapModel {
public static final double R = 6_371_007.181; // m
private File mapFile;
private List<TinyMapPolyline> polylines = new ArrayList<>();
private Function<PointData, Point2D> projection;
private Function<PointData, Point2D> sansonProjection = p -> {
double y = Math.toRadians(p.getY());
double sx = R * Math.toRadians(p.getX()) * Math.cos(y);
double sy = R * y;
return new Point2D(sx, sy);
};
public TinyMapModel(File selected) {
mapFile = selected;
projection = p -> new Point2D(p.getX() * 100_000, p.getY() * 100_000); // 1度100kmとした直交座標変換
}
// 1度100kmとした直交座標変換
//projection = p -> new Point2D(p.getX() * 100_000, p.getY() * 100_000);
projection = sansonProjection;
}
public void setProjection(Function<PointData, Point2D> projection) {
this.projection = projection;
}

他の形式にエクスポート: Unified diff