2015-09-07 50 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至少是指導您進行這種轉換的一種方式,是的。輸入內容可能有所不同(它們是格式化的字符串,並且不清楚他們將東/西視爲正面還是負面),因此您需要詳細說明細節,如果您的所有輸入都在紐約,您可能會想要適當擴展它。 –