【问题标题】:Storing Longitude and Latitude values存储经度和纬度值
【发布时间】:2015-05-09 00:14:18
【问题描述】:

所以我有 5000 多个船舶坐标,它们是经度和纬度坐标。我想知道为每艘船存储这些的最佳方式是什么。每艘船都有未知数量的坐标。
最初我也在考虑类似的双二维数组:

double [][] array = new double[][]; 

但我不知道我需要多大。
我不知道Hashmap 是否会起作用,因为没有真正的“钥匙”,我在想List 的ArrayList,但我不确定实施是否是最切实可行的选项。

【问题讨论】:

  • 首先创建一个包含纬度和经度的坐标类。然后,如果您需要可变长度的坐标列表,请使用 List.
  • 真正的问题是什么?这是一张船舶地图到他们的 lat/lng 对列表。你真的需要它在内存中吗?
  • 这是现实生活问题还是学校/学习问题?如果这是一个现实生活中的问题,我建议你从设计数据库表开始
  • @ControlAltDel 谁在这里谈到了数据库?也许他没有使用数据库。你是在无中生有地做出假设。
  • 您应该认真考虑使用BigDecimal 表示坐标而不是双精度/浮点数。

标签: java


【解决方案1】:

创建一个ShipCoordinatesclass

public class ShipCoordinates {
    public final double latitude;
    public final double longitude;

    public ShipCoordinates(double lat, double lon) {
        latitude = lat;
        longitude = lon;
    }
}

并将这些对象存储到一个列表中

List<ShipCoordinates> shipCoordinates = new ArrayList<>();
// Example of valid ship coordinates off the coast of California :-)
shipCoordinates.add(new ShipCoordinates(36.385913, -127.441406));

【讨论】:

  • 我认为 (90, 180) 坐标对于船舶位置是非法的:它们完全被冰覆盖 :)
【解决方案2】:

也许hashmap毕竟不是那么糟糕。考虑一下?

static class Coords {
 ...
}

Map<Coords, String> map = new HashMap<Coords, String>();
map.put(new Coords(1700, 1272), "Some_ship");

【讨论】:

  • 需要为Coords 实现hashCode 和equals...这看起来不是一个好主意,除非 OP 真正阐明了地图的用途。
【解决方案3】:
class Ship {
    ArrayList<Coordinate> coordinates;
}

ArrayList<Ship> ships;

【讨论】:

    【解决方案4】:

    如果没有要查看的数据文件的 sn-p,很难回答这个问题。 ArrayList 看起来很理想,可以创建带有坐标的船舶对象。

    如果你想做 hashmap,我猜最好的关键是船。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-11-16
      • 1970-01-01
      • 2012-03-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多