2015-09-07 57 views
0

我想绘制使用GIS纬度和经度值的顶点,并用StaticLayout绘制出顶点。问题是我有值为负值,如:如何在JUNG中使用GIS坐标来绘制顶点

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

+0

所有这些坐标都是关于纽约州的,我正在研究这个例子,但是我无法真正理解我需要从样本中挑选出来以便完成我需要的转换......是LatLonPixelTransformer类吗? – user299791

+0

LatLonPixelTransformer至少是指导您进行这种转换的一种方式,是的。输入内容可能有所不同(它们是格式化的字符串,并且不清楚他们将东/西视为正面还是负面),因此您需要详细说明细节,如果您的所有输入都在纽约,您可能会想要适当扩展它。 –