我正在尝试使用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);
然而,结果并不好:只显示了几个节点,它们在图像的左上角部分可见。任何帮助超过欢迎。
答案 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