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

How to plot vertices using GIS coordinates in 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);

然而,结果并不好:只显示了几个节点,并且在图像的左上角部分可见。欢迎任何帮助。

您需要将 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