misc/persolijn

osm-protobuf/src/main/java/osm/message/Node.java in master
Repositories | Summary | Log | Files

Node.java (2101B) download


 1package osm.message;
 2
 3import java.util.Iterator;
 4
 5import osm.routing.RoutingNode;
 6import protobuf.ProtobufReader;
 7
 8// required sint64 id = 1;
 9// repeated uint32 keys = 2 [packed = true]; // String IDs.
10// repeated uint32 vals = 3 [packed = true]; // String IDs.
11// optional Info info = 4; // May be omitted in omitmeta
12// required sint64 lat = 8;
13// required sint64 lon = 9;
14public class Node extends AbstractEntity<Node> implements RoutingNode<Node> {
15    protected double latitude, longitude;
16
17    protected Node parent = null;
18    protected long score = Long.MAX_VALUE;
19    protected long heuristicScore = Long.MAX_VALUE;
20
21    public Node(PrimitiveBlock block) {
22        super(block);
23    }
24
25    @Override
26    public Node parseRemaining(Iterator<ProtobufReader> tags) {
27        while (tags.hasNext()) {
28            ProtobufReader message = tags.next();
29            switch (message.tag()) {
30                case 4 -> message.skip();
31                case 8 -> latitude = block.latitudeOffset + block.granularity * message.svarint64();
32                case 9 -> longitude = block.longitudeOffset + block.granularity * message.svarint64();
33                default -> message.throwUnexpected();
34            }
35        }
36        return null;
37    }
38
39    @Override
40    public double getLatitude() {
41        return latitude;
42    }
43
44    @Override
45    public double getLongitude() {
46        return longitude;
47    }
48
49    @Override
50    public Node getParent() {
51        return parent;
52    }
53
54    @Override
55    public void setParent(Node parent) {
56        this.parent = parent;
57    }
58
59    @Override
60    public boolean hasParent() {
61        return parent != null;
62    }
63
64    @Override
65    public long getScore() {
66        return score;
67    }
68
69    @Override
70    public void setScore(long value) {
71        score = value;
72    }
73
74    @Override
75    public long getHeuristicScore() {
76        return heuristicScore;
77    }
78
79    @Override
80    public void setHeuristicScore(long value) {
81        heuristicScore = value;
82    }
83
84    @Override
85    public String toString() {
86        return String.format("Node#%d", id);
87    }
88}