将顶点药水转换成相对于美国的比例的公式?

时间:2013-11-19 02:03:16

标签: java coordinates formula vertex jgrapht

我正在使用JGraphModelAdapter将Jgraph转换为JGrapht。它的工作正常,我的顶点显示在gui上。

在编辑GUI上顶点的位置时,我已经获得了一些基本代码。 (见下文)

private void positionVertices() {
    for (MapLocation aVertex : this.graphContents.vertexSet()) {
        double xPostion = (?);
        double yPostion = (?);
        this.positionAVertex(aVertex, xPostion, yPostion);
    }
}

private void positionAVertex(Object vertex, double x, double y) {
    DefaultGraphCell vertexDisplayCell = this.theModelAdapter
            .getVertexCell(vertex);
    AttributeMap cellAttributes = vertexDisplayCell.getAttributes();

    Rectangle2D bounds = GraphConstants.getBounds(cellAttributes);
    Rectangle2D newBounds = new Rectangle2D.Double(x, y, bounds.getWidth(),
            bounds.getHeight());

    GraphConstants.setBounds(cellAttributes, newBounds);

    HashMap<DefaultGraphCell, AttributeMap> cellAttributeMap = new HashMap<>();
    cellAttributeMap.put(vertexDisplayCell, cellAttributes);
    this.theModelAdapter.edit(cellAttributeMap, null, null, null);
}

每个MapLocation(Vertex)对象代表美国某个地方的邮政编码,它可以访问精确的纬度和经度吸气剂。 使用它们我应该能够将顶点定位在我的gui上按比例逼真的位置。但是我很难确定在这种情况下哪种公式(由(?)表示)会很好。

框架设置为MAXIMIZED_BOTH,但必须适用于任何显示器尺寸。

感谢您提前获得任何帮助。

2 个答案:

答案 0 :(得分:1)

根据您的意见,我将做出以下假设。

  1. 你只会展示48个连续的州,即没有阿拉斯加州或夏威夷州。
  2. 您不需要球形三角法所带来的精确度 - 将北美视为扁平矩形就足够了。
  3. 你的纬度以正北数度给出。
  4. 你的经度是西方的正数度(你可能想要检查一下 - 我希望这个数据仅限于美国,尽管国际上常用的东西是积极的度数,而西方的积极度是负的)
  5. 您想要显示的区域的边界是西经125度和65度,北纬50度和25度。
  6. 屏幕上绘制地图的区域从(left, top)(left + width, top + height)
  7. 鉴于这些假设,以下是将longitudelatitude转换为(x,y)的方式。

    x = left + width * ( 125 - longitude ) / 60;
    y = top + height * ( 50 - latitude ) / 25;
    

    请注意,如果您的经度实际上对西方度数为负,则可以在-的表达式中将+替换为x

答案 1 :(得分:0)

这是可行的代码

 double xPostion = (124 - Math.abs(aVertex.getLongitude()));
        xPostion = xPostion / 57;           
        xPostion = xPostion * this.myWidth;
 double yPostion = 49 - aVertex.getLatitude();
        yPostion = yPostion / 25;
        yPostion = yPostion * this.myHeight ;
57美国东部最东部和西部地区的经度差异很大。

25是纬度与美国大陆最北部和最南部的差异

124是美国西部最西部的经度。

49是美国大陆最北部的纬度。