use of de.topobyte.osm4j.core.model.impl.Node in project osm4j-pbf by topobyte.
the class PrimParser method convert.
public OsmNode convert(Osmformat.Node n) {
long id = n.getId();
double lat = parseLat(n.getLat());
double lon = parseLon(n.getLon());
List<OsmTag> tags = new ArrayList<>();
for (int j = 0; j < n.getKeysCount(); j++) {
tags.add(new Tag(strings[n.getKeys(j)], strings[n.getVals(j)]));
}
OsmMetadata metadata = null;
if (fetchMetadata && n.hasInfo()) {
Osmformat.Info info = n.getInfo();
metadata = convertMetadata(info);
}
return new Node(id, lon, lat, tags, metadata);
}
use of de.topobyte.osm4j.core.model.impl.Node in project osm4j-pbf by topobyte.
the class PrimParser method convert.
public List<OsmNode> convert(Osmformat.DenseNodes nodes) {
List<OsmNode> results = new ArrayList<>(nodes.getIdCount());
Osmformat.DenseInfo denseInfo = null;
boolean hasVisible = false;
if (fetchMetadata && nodes.hasDenseinfo()) {
denseInfo = nodes.getDenseinfo();
hasVisible = denseInfo.getVisibleCount() != 0;
}
long id = 0, lat = 0, lon = 0;
int version = 0, uid = 0, userSid = 0;
long timestamp = 0, changeset = 0;
// Index into the keysvals array.
int j = 0;
for (int i = 0; i < nodes.getIdCount(); i++) {
id += nodes.getId(i);
lat += nodes.getLat(i);
lon += nodes.getLon(i);
double latf = parseLat(lat), lonf = parseLon(lon);
List<OsmTag> tags = new ArrayList<>();
OsmMetadata metadata = null;
if (fetchMetadata && nodes.hasDenseinfo()) {
version = denseInfo.getVersion(i);
timestamp += denseInfo.getTimestamp(i);
uid += denseInfo.getUid(i);
userSid += denseInfo.getUserSid(i);
changeset += denseInfo.getChangeset(i);
boolean visible = true;
if (hasVisible) {
visible = denseInfo.getVisible(i);
}
metadata = new Metadata(version, timestamp * dateGranularity, uid, strings[userSid], changeset, visible);
}
// If empty, assume that nothing here has keys or vals.
if (nodes.getKeysValsCount() > 0) {
while (nodes.getKeysVals(j) != 0) {
int keyid = nodes.getKeysVals(j++);
int valid = nodes.getKeysVals(j++);
tags.add(new Tag(strings[keyid], strings[valid]));
}
// Skip over the '0' delimiter.
j++;
}
results.add(new Node(id, lonf, latf, tags, metadata));
}
return results;
}
use of de.topobyte.osm4j.core.model.impl.Node in project osm4j-core by topobyte.
the class ListDataSetLoader method read.
public static InMemoryListDataSet read(OsmReader reader, final boolean keepNodeTags, final boolean keepWayTags, final boolean keepRelationTags) throws OsmInputException {
final InMemoryListDataSet dataSet = new InMemoryListDataSet();
final List<OsmNode> nodes = dataSet.getNodes();
final List<OsmWay> ways = dataSet.getWays();
final List<OsmRelation> relations = dataSet.getRelations();
reader.setHandler(new OsmHandler() {
@Override
public void handle(OsmBounds bounds) throws IOException {
dataSet.setBounds(bounds);
}
@Override
public void handle(OsmNode node) throws IOException {
if (!keepNodeTags) {
node = new Node(node.getId(), node.getLongitude(), node.getLatitude());
}
nodes.add(node);
}
@Override
public void handle(OsmWay way) throws IOException {
if (!keepWayTags) {
TLongArrayList ids = new TLongArrayList();
for (int i = 0; i < way.getNumberOfNodes(); i++) {
ids.add(way.getNodeId(i));
}
way = new Way(way.getId(), ids);
}
ways.add(way);
}
@Override
public void handle(OsmRelation relation) throws IOException {
if (!keepRelationTags) {
List<OsmRelationMember> members = new ArrayList<>();
for (int i = 0; i < relation.getNumberOfMembers(); i++) {
members.add(relation.getMember(i));
}
relation = new Relation(relation.getId(), members);
}
relations.add(relation);
}
@Override
public void complete() throws IOException {
// nothing to do here
}
});
reader.read();
return dataSet;
}
use of de.topobyte.osm4j.core.model.impl.Node in project osm4j-core by topobyte.
the class ListDataSetLoader method read.
public static InMemoryListDataSet read(OsmIterator iterator, boolean keepNodeTags, boolean keepWayTags, boolean keepRelationTags) throws IOException {
InMemoryListDataSet dataSet = new InMemoryListDataSet();
List<OsmNode> nodes = dataSet.getNodes();
List<OsmWay> ways = dataSet.getWays();
List<OsmRelation> relations = dataSet.getRelations();
if (iterator.hasBounds()) {
dataSet.setBounds(iterator.getBounds());
}
while (iterator.hasNext()) {
EntityContainer container = iterator.next();
switch(container.getType()) {
case Node:
OsmNode node = (OsmNode) container.getEntity();
if (!keepNodeTags) {
node = new Node(node.getId(), node.getLongitude(), node.getLatitude());
}
nodes.add(node);
break;
case Way:
OsmWay way = (OsmWay) container.getEntity();
if (!keepWayTags) {
TLongArrayList ids = new TLongArrayList();
for (int i = 0; i < way.getNumberOfNodes(); i++) {
ids.add(way.getNodeId(i));
}
way = new Way(way.getId(), ids);
}
ways.add(way);
break;
case Relation:
OsmRelation relation = (OsmRelation) container.getEntity();
if (!keepRelationTags) {
List<OsmRelationMember> members = new ArrayList<>();
for (int i = 0; i < relation.getNumberOfMembers(); i++) {
members.add(relation.getMember(i));
}
relation = new Relation(relation.getId(), members);
}
relations.add(relation);
break;
}
}
return dataSet;
}
use of de.topobyte.osm4j.core.model.impl.Node in project osm4j-core by topobyte.
the class MapDataSetLoader method read.
public static InMemoryMapDataSet read(OsmIterator iterator, boolean keepNodeTags, boolean keepWayTags, boolean keepRelationTags) throws IOException {
InMemoryMapDataSet dataSet = new InMemoryMapDataSet();
TLongObjectMap<OsmNode> nodes = dataSet.getNodes();
TLongObjectMap<OsmWay> ways = dataSet.getWays();
TLongObjectMap<OsmRelation> relations = dataSet.getRelations();
if (iterator.hasBounds()) {
dataSet.setBounds(iterator.getBounds());
}
while (iterator.hasNext()) {
EntityContainer container = iterator.next();
switch(container.getType()) {
case Node:
OsmNode node = (OsmNode) container.getEntity();
if (!keepNodeTags) {
node = new Node(node.getId(), node.getLongitude(), node.getLatitude());
}
nodes.put(node.getId(), node);
break;
case Way:
OsmWay way = (OsmWay) container.getEntity();
if (!keepWayTags) {
TLongArrayList ids = new TLongArrayList();
for (int i = 0; i < way.getNumberOfNodes(); i++) {
ids.add(way.getNodeId(i));
}
way = new Way(way.getId(), ids);
}
ways.put(way.getId(), way);
break;
case Relation:
OsmRelation relation = (OsmRelation) container.getEntity();
if (!keepRelationTags) {
List<OsmRelationMember> members = new ArrayList<>();
for (int i = 0; i < relation.getNumberOfMembers(); i++) {
members.add(relation.getMember(i));
}
relation = new Relation(relation.getId(), members);
}
relations.put(relation.getId(), relation);
break;
}
}
return dataSet;
}
Aggregations