【问题标题】:How to plot vertices using GIS coordinates in JUNG如何在 JUNG 中使用 GIS 坐标绘制顶点
【发布时间】:2015-09-07 02:12:59
【问题描述】:

我正在尝试使用 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);

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

【问题讨论】:

  • edit 添加更具体的问题陈述——“不好”是什么意思?

标签: java gis jung


【解决方案1】:

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

【讨论】:

  • 所有这些坐标都是关于纽约州的,我正在研究这个例子,但我无法真正理解我需要从样本中挑选出什么来进行我需要的转换......是吗LatLonPixelTransformer 类?
  • LatLonPixelTransformer 至少是进行这种转换的一种方法的指南,是的。输入可能不同(它们是格式化的字符串,尚不清楚它们将东/西视为正/负),因此您必须计算出细节,如果您的所有输入都在纽约,您可能会想要适当地缩放它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-18
  • 1970-01-01
  • 1970-01-01
  • 2018-01-31
  • 1970-01-01
相关资源
最近更新 更多