50 lines
1.3 KiB
Java
50 lines
1.3 KiB
Java
package btools.mapcreator;
|
|
|
|
import btools.util.DiffCoderDataInputStream;
|
|
import btools.util.DiffCoderDataOutputStream;
|
|
|
|
/**
|
|
* Container for node data on the preprocessor level
|
|
*
|
|
* @author ab
|
|
*/
|
|
public class NodeData extends MapCreatorBase {
|
|
public long nid;
|
|
public int ilon;
|
|
public int ilat;
|
|
public byte[] description;
|
|
public short selev = Short.MIN_VALUE;
|
|
|
|
public NodeData(long id, double lon, double lat) {
|
|
nid = id;
|
|
ilat = (int) ((lat + 90.) * 1000000. + 0.5);
|
|
ilon = (int) ((lon + 180.) * 1000000. + 0.5);
|
|
}
|
|
|
|
public NodeData(DiffCoderDataInputStream dis) throws Exception {
|
|
nid = dis.readDiffed(0);
|
|
ilon = (int) dis.readDiffed(1);
|
|
ilat = (int) dis.readDiffed(2);
|
|
int mode = dis.readByte();
|
|
if ((mode & 1) != 0) {
|
|
int dlen = dis.readShort();
|
|
description = new byte[dlen];
|
|
dis.readFully(description);
|
|
}
|
|
if ((mode & 2) != 0) selev = dis.readShort();
|
|
}
|
|
|
|
public void writeTo(DiffCoderDataOutputStream dos) throws Exception {
|
|
dos.writeDiffed(nid, 0);
|
|
dos.writeDiffed(ilon, 1);
|
|
dos.writeDiffed(ilat, 2);
|
|
int mode = (description == null ? 0 : 1) | (selev == Short.MIN_VALUE ? 0 : 2);
|
|
dos.writeByte((byte) mode);
|
|
if ((mode & 1) != 0) {
|
|
dos.writeShort(description.length);
|
|
dos.write(description);
|
|
}
|
|
if ((mode & 2) != 0) dos.writeShort(selev);
|
|
}
|
|
}
|