如何在JUNG中使用GIS坐标绘制顶点

时间:2015-09-07 02:12:59

标签: java gis jung

我正在尝试使用GIS纬度和经度值绘制顶点,并使用StaticLayout进行布局。问题是我有负值的值,如:

40.742151  -73.640223
43.122041  -77.622466
32.812091  -96.840159

布置顶点的最佳方法是什么?现在我正在做:

Transformer<String, Point2D> locationTransformer = new Transformer<String, Point2D>() {
    @Override
    public Point2D transform(String npi) {
       Vertex doctor;
       if (doctors.containsKey(npi)) {
           doctor = doctors.get(npi);
       } else {
           doctor = referredDoctors.get(npi);
       }
       return new Point2D.Double((double) doctor.getXcor(i), (double) doctor.getYcor(i));
    }
};
StaticLayout<String, String> layout = new StaticLayout<>(g, locationTransformer);
Dimension preferredSize = new Dimension(400, 400);
layout.setSize(preferredSize);
然而,结果并不好:只显示了几个节点,它们在图像的左上角部分可见。任何帮助超过欢迎。

1 个答案:

答案 0 :(得分:0)

您需要将GIS坐标转换为您要渲染的坐标系。在这种情况下,这是一个X和Y值从0到400的矩形。

因此,例如,您可以选择将lat = 0,long = 0映射到区域的中间位置(200,200)。

有许多不同的地图投影(https://en.wikipedia.org/wiki/Map_projection),您需要找出最适合您需求的地图投影。 (例如,如果你的所有点都在欧洲,你的转换可能不需要能够显示地球表面上的所有点。)

您可能会发现此演示非常有用:http://jung.sourceforge.net/site/apidocs/edu/uci/ics/jung/samples/WorldMapGraphDemo.html