当前位置: 首页>>代码示例>>Java>>正文


Java Osmformat.Relation方法代码示例

本文整理汇总了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);
    }
}
 
开发者ID:SGroe,项目名称:vgi-analytics-framework,代码行数:39,代码来源:OsmPbfParser.java

示例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);
		}
	}
}
 
开发者ID:ngageoint,项目名称:geowave-osm,代码行数:41,代码来源:OsmPbfParser.java

示例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 );
    }
}
 
开发者ID:abrensch,项目名称:brouter,代码行数:13,代码来源:BPbfBlobDecoder.java

示例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 );
    }
}
 
开发者ID:abrensch,项目名称:brouter,代码行数:13,代码来源:BPbfBlobDecoder2.java

示例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();
    }
}
 
开发者ID:conveyal,项目名称:osm-lib,代码行数:44,代码来源:PBFInput.java

示例6: parseRelations

import org.openstreetmap.osmosis.osmbinary.Osmformat; //导入方法依赖的package包/类
@Override
protected void parseRelations(List<Osmformat.Relation> relations) {
}
 
开发者ID:AReallyGoodName,项目名称:OfflineReverseGeocodeOSM,代码行数:4,代码来源:OSMReader.java

示例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);
		}
	}
}
 
开发者ID:locationtech,项目名称:geowave,代码行数:50,代码来源:OsmPbfParser.java

示例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));
	}
}
 
开发者ID:opensciencemap,项目名称:vtm,代码行数:53,代码来源:OsmPbfParser.java

示例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));
		}
	}
 
开发者ID:opensciencemap,项目名称:vtm-android,代码行数:54,代码来源:OsmPbfParser.java


注:本文中的org.openstreetmap.osmosis.osmbinary.Osmformat.Relation方法示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。