本文整理汇总了Java中org.openstreetmap.osmosis.osmbinary.Osmformat.Relation方法的典型用法代码示例。如果您正苦于以下问题:Java Osmformat.Relation方法的具体用法?Java Osmformat.Relation怎么用?Java Osmformat.Relation使用的例子?那么恭喜您, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类org.openstreetmap.osmosis.osmbinary.Osmformat
的用法示例。
在下文中一共展示了Osmformat.Relation方法的9个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。
示例1: parseRelations
import org.openstreetmap.osmosis.osmbinary.Osmformat; //导入方法依赖的package包/类
@Override
protected void parseRelations(List<Osmformat.Relation> pbfRelations) {
for (Osmformat.Relation pbfRelation : pbfRelations) {
Map<String, String> tags = new HashMap<String, String>();
for (int j = 0; j < pbfRelation.getKeysCount(); j++) {
tags.put(getStringById(pbfRelation.getKeys(j)), getStringById(pbfRelation.getVals(j)));
}
long lastMemberId = 0;
List<RelationMember> nodes = new ArrayList<RelationMember>();
for (int j = 0; j < pbfRelation.getMemidsCount(); j++) {
long memberId = lastMemberId + pbfRelation.getMemids(j);
lastMemberId = memberId;
OsmElementType elementType = OsmElementType.UNKOWN;
if (pbfRelation.getTypes(j) == Osmformat.Relation.MemberType.NODE) {
elementType = OsmElementType.NODE;
} else if (pbfRelation.getTypes(j) == Osmformat.Relation.MemberType.WAY) {
elementType = OsmElementType.WAY;
} else if (pbfRelation.getTypes(j) == Osmformat.Relation.MemberType.RELATION) {
elementType = OsmElementType.RELATION;
}
nodes.add(new RelationMember(memberId, elementType, getStringById(pbfRelation.getRolesSid(j))));
}
boolean visible = true;
Relation osmRelation = null;
if (pbfRelation.hasInfo()) {
Osmformat.Info info = pbfRelation.getInfo();
if (info.hasVisible()) visible = info.getVisible();
osmRelation = new Relation(OsmElementType.RELATION, pbfRelation.getId(), info.getUid(), getStringById(info.getUserSid()), getDate(info), (int) info.getChangeset(), (short) info.getVersion(), visible, tags, nodes);
}
osmDataConsumer.process(osmRelation);
}
}
示例2: parseRelations
import org.openstreetmap.osmosis.osmbinary.Osmformat; //导入方法依赖的package包/类
@Override
protected void parseRelations(List<Osmformat.Relation> rels) {
for (Osmformat.Relation r : rels){
Relation r2 = new Relation();
Primitive p = getPrimitive(r.getInfo());
p.setId(r.getId());
p.setTags(getTags(r.getKeysList(), r.getValsList()));
r2.setCommon(p);
List<RelationMember> members = new ArrayList<>(r.getRolesSidCount());
for (int i = 0; i < r.getRolesSidCount(); i++){
RelationMember rm = new RelationMember();
rm.setMember(r.getMemids(i));
rm.setRole(getStringById(r.getRolesSid(i)));
switch (r.getTypes(i).toString()){
case "NODE": {
rm.setMemberType(MemberType.NODE);
break;
}
case "WAY": {
rm.setMemberType(MemberType.WAY);
break;
}
case "RELATION" : {
rm.setMemberType(MemberType.RELATION);
break;
}
}
}
r2.setMembers(members);
try {
relationWriter.append(r2);
}
catch (IOException e) {
LOGGER.error("Unable to write relation", e);
}
}
}
示例3: processRelations
import org.openstreetmap.osmosis.osmbinary.Osmformat; //导入方法依赖的package包/类
private void processRelations( List<Osmformat.Relation> relations, BPbfFieldDecoder fieldDecoder )
{
for (Osmformat.Relation relation : relations)
{
Map<String, String> tags = buildTags(relation.getKeysList(), relation.getValsList(), fieldDecoder);
LongList wayIds = buildRelationMembers( relation.getMemidsList(), relation.getRolesSidList(),
relation.getTypesList(), fieldDecoder);
parser.addRelation( relation.getId(), tags, wayIds, fromWid, toWid, viaNid );
}
}
示例4: processRelations
import org.openstreetmap.osmosis.osmbinary.Osmformat; //导入方法依赖的package包/类
private void processRelations( List<Osmformat.Relation> relations, BPbfFieldDecoder fieldDecoder )
{
for (Osmformat.Relation relation : relations)
{
Map<String, String> tags = buildTags(relation.getKeysList(), relation.getValsList(), fieldDecoder);
LongList wayIds = buildRelationMembers( relation.getMemidsList(), relation.getRolesSidList(),
relation.getTypesList(), fieldDecoder);
parser.addRelation( relation.getId(), tags, wayIds, roles );
}
}
示例5: parseRelations
import org.openstreetmap.osmosis.osmbinary.Osmformat; //导入方法依赖的package包/类
@Override
protected void parseRelations(List<Osmformat.Relation> rels) {
try {
for (Osmformat.Relation r : rels) {
if (relationCount++ % 100000 == 0) {
LOG.info("relation {}", human(relationCount));
}
Relation rel = new Relation();
/* Handle Tags */
for (int k = 0; k < r.getKeysCount(); k++) {
String key = getStringById(r.getKeys(k));
String val = getStringById(r.getVals(k));
if (retainTag(key)) rel.addTag(key, val);
}
/* Handle members of the relation */
long mid = 0; // member ids, delta coded
for (int m = 0; m < r.getMemidsCount(); m++) {
Relation.Member member = new Relation.Member();
mid += r.getMemids(m);
member.id = mid;
member.role = getStringById(r.getRolesSid(m));
switch (r.getTypes(m)) {
case NODE:
member.type = Type.NODE;
break;
case WAY:
member.type = Type.WAY;
break;
case RELATION:
member.type = Type.RELATION;
break;
default:
LOG.error("Relation type is unexpected.");
}
rel.members.add(member);
}
entitySink.writeRelation(r.getId(), rel);
}
} catch (IOException ex) {
LOG.error("An I/O exception occurred in the OSM entity sink.");
ex.printStackTrace();
}
}
示例6: parseRelations
import org.openstreetmap.osmosis.osmbinary.Osmformat; //导入方法依赖的package包/类
@Override
protected void parseRelations(List<Osmformat.Relation> relations) {
}
示例7: parseRelations
import org.openstreetmap.osmosis.osmbinary.Osmformat; //导入方法依赖的package包/类
@Override
protected void parseRelations(
List<Osmformat.Relation> rels ) {
for (Osmformat.Relation r : rels) {
Relation r2 = new Relation();
Primitive p = getPrimitive(r.getInfo());
p.setId(r.getId());
p.setTags(getTags(
r.getKeysList(),
r.getValsList()));
r2.setCommon(p);
List<RelationMember> members = new ArrayList<>(
r.getRolesSidCount());
for (int i = 0; i < r.getRolesSidCount(); i++) {
RelationMember rm = new RelationMember();
rm.setMember(r.getMemids(i));
rm.setRole(getStringById(r.getRolesSid(i)));
switch (r.getTypes(
i).toString()) {
case "NODE": {
rm.setMemberType(MemberType.NODE);
break;
}
case "WAY": {
rm.setMemberType(MemberType.WAY);
break;
}
case "RELATION": {
rm.setMemberType(MemberType.RELATION);
break;
}
default:
break;
}
}
r2.setMembers(members);
try {
relationWriter.append(r2);
}
catch (IOException e) {
LOGGER.error(
"Unable to write relation",
e);
}
}
}
示例8: parseRelations
import org.openstreetmap.osmosis.osmbinary.Osmformat; //导入方法依赖的package包/类
@Override
protected void parseRelations(List<Osmformat.Relation> rels) {
for (Osmformat.Relation i : rels) {
int tagCnt = i.getKeysCount();
TagSet tags = new TagSet(tagCnt);
for (int j = 0; j < tagCnt; j++)
tags.add(new Tag(getStringById(i.getKeys(j)), getStringById(i.getVals(j))));
long id = i.getId();
long lastMid = 0;
List<OsmMember> nodes = new ArrayList<OsmMember>();
int memberCnt = i.getMemidsCount();
// for (int j = 0; j < memberCnt; j++) {
// long mid = lastMid + i.getMemids(j);
// lastMid = mid;
// String role = getStringById(i.getRolesSid(j));
//
// Osmformat.Relation.MemberType t = i.getTypes(j);
//
// if (t == Osmformat.Relation.MemberType.NODE) {
// etype = EntityType.Node;
// } else if (t == Osmformat.Relation.MemberType.WAY) {
// etype = EntityType.Way;
// } else if (t == Osmformat.Relation.MemberType.RELATION) {
// etype = EntityType.Relation;
// } else {
// assert false; // TODO; Illegal file?
// }
//
// nodes.add(new OsmMember(mid, etype, role));
// }
// long id, int version, TimestampContainer timestampContainer,
// OsmUser user,
// long changesetId, Collection<Tag> tags,
// List<RelationMember> members
OsmRelation tmp = new OsmRelation(tags, id, memberCnt);
// if (i.hasInfo()) {
// Osmformat.Info info = i.getInfo();
// tmp = new Relation(new CommonEntityData(id, info.getVersion(), getDate(info),
// getUser(info), info.getChangeset(), tags), nodes);
// } else {
// tmp = new Relation(new CommonEntityData(id, NOVERSION, NODATE, OsmUser.NONE,
// NOCHANGESET, tags), nodes);
// }
// sink.process(new RelationContainer(tmp));
}
}
示例9: parseRelations
import org.openstreetmap.osmosis.osmbinary.Osmformat; //导入方法依赖的package包/类
@Override
protected void parseRelations(List<Osmformat.Relation> rels) {
for (Osmformat.Relation i : rels) {
int tagCnt = i.getKeysCount();
TagSet tags = new TagSet(tagCnt);
for (int j = 0; j < tagCnt; j++)
tags.add(new Tag(getStringById(i.getKeys(j)), getStringById(i.getVals(j))));
long id = i.getId();
long lastMid = 0;
List<OSMMember> nodes = new ArrayList<OSMMember>();
int memberCnt = i.getMemidsCount();
// for (int j = 0; j < memberCnt; j++) {
// long mid = lastMid + i.getMemids(j);
// lastMid = mid;
// String role = getStringById(i.getRolesSid(j));
//
// Osmformat.Relation.MemberType t = i.getTypes(j);
//
// if (t == Osmformat.Relation.MemberType.NODE) {
// etype = EntityType.Node;
// } else if (t == Osmformat.Relation.MemberType.WAY) {
// etype = EntityType.Way;
// } else if (t == Osmformat.Relation.MemberType.RELATION) {
// etype = EntityType.Relation;
// } else {
// assert false; // TODO; Illegal file?
// }
//
// nodes.add(new OSMMember(mid, etype, role));
// }
// long id, int version, TimestampContainer timestampContainer,
// OsmUser user,
// long changesetId, Collection<Tag> tags,
// List<RelationMember> members
OSMRelation tmp = new OSMRelation(tags, id, memberCnt);
// if (i.hasInfo()) {
// Osmformat.Info info = i.getInfo();
// tmp = new Relation(new CommonEntityData(id, info.getVersion(), getDate(info),
// getUser(info), info.getChangeset(), tags), nodes);
// } else {
// tmp = new Relation(new CommonEntityData(id, NOVERSION, NODATE, OsmUser.NONE,
// NOCHANGESET, tags), nodes);
// }
// sink.process(new RelationContainer(tmp));
}
}