2012-10-11 29 views
1

我有一组给定节点的纬度和经度值。我已经将这些纬度,经度投影到x,y并将它们投影到.dot代码并使用graphviz 2.29生成图形。 的命令是:plot graphviz到地图

neato -Tpng -o sample.png sourcegv.dot 

输出图为: http://www.freeimagehosting.net/brpnt

用于产生此图是源代码:

digraph { 
rankdir=LR; 


subgraph cluster1{ 

label="cluster 1" 

node[style=filled,color=cornflowerblue, fontcolor=white] 
edge[arrowhead=vee, color=maroon] 

n0[label="192.168.8.9" pos = "69.0,15.5!"]; 
n1[label="192.168.8.8" pos = "70.25,12.75!"]; 
n2[label="192.168.8.6" pos = "78.0,9.5!"]; 

n0 -> n1 ; 
n1 -> n2 ; 
n0 -> n2 ; 
n2 -> n1 ; 
n2 -> n0 ; 
n1 -> n0 ; 
}; 

subgraph cluster2{ 

label="cluster 2" 

node[style=filled,color=cornflowerblue, fontcolor=white] 
edge[arrowhead=vee, color=maroon] 

m0[label="192.168.8.9" pos = "70.5,18.25!"]; 
m1[label="192.168.8.8" pos = "75.25,17.75!"]; 
m2[label="192.168.8.6" pos = "70.25,16.5!"]; 

m0 -> m1; 
m1 -> m2 ; 
m0 -> m2 ; 
m2 -> m1 ; 
m2 -> m0 ; 
m1 -> m0 ; 
}; 

} 

我正在寻找一些方法,让我可以在实地图(如google earth或googlemap)中绘制图表,以便节点可以固定到经纬度给定的位置。

谢谢。

+1

我认为你使用的是错误的工具。 Graphviz用于图形,而不是地图。您应该检出Matplotlib的[Basemap](http://matplotlib.org/basemap/)以获得易于使用的工具。它是Python,但你只需要知道一点就可以使用它。 [这是一个很好的教程](http://www.packtpub.com/article/plotting-geographical-data-using-basemap)。 – jmdeldin

+0

此外,更简单的方法是使用[API](https://developers.google.com/maps/documentation/)生成Google地图。您只需传递标签,纬度和经度,即可轻松创建标记。 – jmdeldin

+0

谢谢你的建议和链接 – OSMuser

回答

1

不幸的是,Graphviz是这项工作的错误工具。它用于图表,而不是地图。不过,也有几个非常好的选择:

  1. Matplotlib的Basemap:这是在Python,但你只需要知道一点点来使用它。 Matplotlib有examples吨,但很容易找到好的教程。这也是good tutorial on the Basemap package

  2. Google Maps API:您刚才通过标签,纬度和经度的API绘制一个标记。您也可以生成static images或交互式地图。

  3. 为了完整起见,你可能想看看一个JavaScript库,例如Cartographer.jsPolymaps

可悲的是,这些都不是为dot语言简单,但Matplotlib来八九不离十。