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


Java Osmformat类代码示例

本文整理汇总了Java中org.openstreetmap.osmosis.osmbinary.Osmformat的典型用法代码示例。如果您正苦于以下问题:Java Osmformat类的具体用法?Java Osmformat怎么用?Java Osmformat使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。


Osmformat类属于org.openstreetmap.osmosis.osmbinary包,在下文中一共展示了Osmformat类的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的Java代码示例。

示例1: parseNodes

import org.openstreetmap.osmosis.osmbinary.Osmformat; //导入依赖的package包/类
@Override
protected void parseNodes(List<Osmformat.Node> pbfNodes) {
	for (Osmformat.Node pbfNode : pbfNodes) {
		Map<String, String> tags = new HashMap<String, String>();
		for (int j = 0; j < pbfNode.getKeysCount(); j++) {
			tags.put(getStringById(pbfNode.getKeys(j)), getStringById(pbfNode.getVals(j)));
		}
		Node osmNode = null;
		long id = pbfNode.getId();
		double latf = parseLat(pbfNode.getLat()), lonf = parseLon(pbfNode.getLon());

     	boolean visible = true;
     	
		if (pbfNode.hasInfo()) {
			Osmformat.Info info = pbfNode.getInfo();
			if (info.hasVisible()) visible = info.getVisible();
			osmNode = new Node(OsmElementType.NODE, id, info.getUid(), getStringById(info.getUserSid()),
					getDate(info), (int) info.getChangeset(), (short) info.getVersion(), visible, tags,
					(info.getVisible() ? new Coordinate(lonf, latf) : null));
		}
		osmDataConsumer.process(osmNode);
	}
}
 
开发者ID:SGroe,项目名称:vgi-analytics-framework,代码行数:24,代码来源:OsmPbfParser.java

示例2: parse

import org.openstreetmap.osmosis.osmbinary.Osmformat; //导入依赖的package包/类
@Override
public void parse(Osmformat.HeaderBlock block) {
	for (String s : block.getRequiredFeaturesList()) {
		if (s.equals("OsmSchema-V0.6")) {
			continue;
		}
		if (s.equals("DenseNodes")) {
			continue;
		}
		if (s.equals("HistoricalInformation")) {
			continue;
		}
		log.error("Cannot parse file");
		System.exit(0);
	}
}
 
开发者ID:SGroe,项目名称:vgi-analytics-framework,代码行数:17,代码来源:OsmPbfParser.java

示例3: parseNodes

import org.openstreetmap.osmosis.osmbinary.Osmformat; //导入依赖的package包/类
@Override
protected void parseNodes(List<Osmformat.Node> nodes) {
	for (Osmformat.Node n : nodes) {
		Node n2 = new Node();
		Primitive p = getPrimitive(n.getInfo());
		p.setId(n.getId());
		p.setTags(getTags(n.getKeysList(), n.getValsList()));
		n2.setCommon(p);
		n2.setLatitude(parseLat(n.getLat()));
		n2.setLongitude(parseLon(n.getLon()));
		try {
			nodeWriter.append(n2);
		}
		catch (IOException e) {
			LOGGER.error("Unable to write node", e);
		}
	}
}
 
开发者ID:ngageoint,项目名称:geowave-osm,代码行数:19,代码来源:OsmPbfParser.java

示例4: parseWays

import org.openstreetmap.osmosis.osmbinary.Osmformat; //导入依赖的package包/类
@Override
protected void parseWays(List<Osmformat.Way> ways) {
	for (Osmformat.Way w : ways) {
		Way w2 = new Way();
		Primitive p = getPrimitive(w.getInfo());
		p.setId(w.getId());
		p.setTags(getTags(w.getKeysList(), w.getValsList()));
		w2.setCommon(p);

		long lastRef = 0;
		List<Long> nodes = new ArrayList<>(w.getRefsCount());
		for (Long ref : w.getRefsList()) {
			lastRef+= ref;
			nodes.add(lastRef);
		}
		w2.setNodes(nodes);

		try {
			wayWriter.append(w2);
		}
		catch (IOException e) {
			LOGGER.error("Unable to write way", e);
		}
	}
}
 
开发者ID:ngageoint,项目名称:geowave-osm,代码行数:26,代码来源:OsmPbfParser.java

示例5: endBlock

import org.openstreetmap.osmosis.osmbinary.Osmformat; //导入依赖的package包/类
/** We always add one primitive group of less that 8k elements to each primitive block. */
private void endBlock () {
    if (nEntitiesInBlock > 0) {
        if (currEntityType == OSMEntity.Type.NODE) {
            primitiveGroupBuilder.setDense(denseNodesBuilder);
        }
        // Pass the block off to the compression/writing thread
        try {
            Osmformat.PrimitiveBlock primitiveBlock = Osmformat.PrimitiveBlock.newBuilder()
                    .setStringtable(stringTable.toBuilder()).addPrimitivegroup(primitiveGroupBuilder).build();
            synchronousQueue.put(primitiveBlock);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }
    }
}
 
开发者ID:conveyal,项目名称:osm-lib,代码行数:17,代码来源:PBFOutput.java

示例6: writeBegin

import org.openstreetmap.osmosis.osmbinary.Osmformat; //导入依赖的package包/类
@Override
public void writeBegin() throws IOException {

    LOG.info("Writing PBF format...");

    // Write out a header block
    Osmformat.HeaderBlock.Builder builder = Osmformat.HeaderBlock.newBuilder();
    builder.addRequiredFeatures("DenseNodes").setWritingprogram("Vanilla Extract").build();
    if (timestamp > 0) {
        builder.setOsmosisReplicationTimestamp(timestamp);
    }
    writeOneBlob(builder.build());

    // Start another thread that will handle compression and writing in parallel.
    writerThread = new Thread(this);
    writerThread.start();

}
 
开发者ID:conveyal,项目名称:osm-lib,代码行数:19,代码来源:PBFOutput.java

示例7: writeWay

import org.openstreetmap.osmosis.osmbinary.Osmformat; //导入依赖的package包/类
@Override
public void writeWay(long id, Way way) throws IOException {

    checkBlockTransition(OSMEntity.Type.WAY);
    Osmformat.Way.Builder builder = Osmformat.Way.newBuilder().setId(id);

    /* Tags */
    if (way.tags != null) {
        for (OSMEntity.Tag tag : way.tags) {
            if (tag.value == null) tag.value = "";
            builder.addKeys(stringTable.getCode(tag.key));
            builder.addVals(stringTable.getCode(tag.value));
        }
    }

    /* Node References */
    long prevNodeRef = 0;
    for (long ref : way.nodes) {
        builder.addRefs(ref - prevNodeRef); // delta-coded node references
        prevNodeRef = ref;
    }

    /* TODO Should we trigger the build here or just call with the builder? */
    primitiveGroupBuilder.addWays(builder.build());

}
 
开发者ID:conveyal,项目名称:osm-lib,代码行数:27,代码来源:PBFOutput.java

示例8: run

import org.openstreetmap.osmosis.osmbinary.Osmformat; //导入依赖的package包/类
/** Runnable interface implementation that compresses and writes output blocks asynchronously. */
@Override
public void run() {
    while (true) {
        try {
            Osmformat.PrimitiveBlock block = synchronousQueue.take(); // block until work is available
            if (block.getPrimitivegroupCount() == 0) {
                break; // a block with no primitive groups tells the writer thread to shut down.
            }
            writeOneBlob(block);
        } catch (InterruptedException ex) {
            LOG.error("Block writer thread was interrupted while waiting for work.");
            break;
        }
    }
    try {
        downstream.flush();
        downstream.close();
    } catch (IOException e) {
        throw new RuntimeException(e);
    }
}
 
开发者ID:conveyal,项目名称:osm-lib,代码行数:23,代码来源:PBFOutput.java

示例9: parseNodes

import org.openstreetmap.osmosis.osmbinary.Osmformat; //导入依赖的package包/类
/** Note that in many PBF files this function is never called because all nodes are dense. */
@Override
protected void parseNodes(List<Osmformat.Node> nodes) {
    try {
        for (Osmformat.Node n : nodes) {
            if (nodeCount++ % 10000000 == 0) {
                LOG.info("node {}", human(nodeCount));
            }
            Node node = new Node(parseLat(n.getLat()), parseLon(n.getLon()));
            for (int k = 0; k < n.getKeysCount(); k++) {
                String key = getStringById(n.getKeys(k));
                String val = getStringById(n.getVals(k));
                if (retainTag(key)) node.addTag(key, val);
            }
            entitySink.writeNode(n.getId(), node);
        }
    } catch (IOException ex) {
        LOG.error("An I/O exception occurred in the OSM entity sink.");
        ex.printStackTrace();
    }
}
 
开发者ID:conveyal,项目名称:osm-lib,代码行数:22,代码来源:PBFInput.java

示例10: parse

import org.openstreetmap.osmosis.osmbinary.Osmformat; //导入依赖的package包/类
@Override
public void parse(Osmformat.HeaderBlock block) {
    for (String s : block.getRequiredFeaturesList()) {
        if (s.equals("OsmSchema-V0.6")) {
            continue; // We can parse this.
        }
        if (s.equals("DenseNodes")) {
            continue; // We can parse this.
        }
        throw new IllegalStateException("File requires unknown feature: " + s);
    }
    if (block.hasOsmosisReplicationTimestamp()) {
        long timestamp = block.getOsmosisReplicationTimestamp();
        LOG.info("PBF file has a replication timestamp of {}", Instant.ofEpochSecond(timestamp));
        entitySink.setReplicationTimestamp(timestamp);
    } else {
        LOG.info("PBF file has no replication timestamp.");
    }
}
 
开发者ID:conveyal,项目名称:osm-lib,代码行数:20,代码来源:PBFInput.java

示例11: processWays

import org.openstreetmap.osmosis.osmbinary.Osmformat; //导入依赖的package包/类
private void processWays( List<Osmformat.Way> ways, BPbfFieldDecoder fieldDecoder )
{
    for (Osmformat.Way way : ways)
    {
        Map<String, String> tags = buildTags(way.getKeysList(), way.getValsList(), fieldDecoder);

        // Build up the list of way nodes for the way. The node ids are
        // delta encoded meaning that each id is stored as a delta against
        // the previous one.
        long nodeId = 0;
        LongList wayNodes = new LongList( 16 );
        for (long nodeIdOffset : way.getRefsList())
        {
            nodeId += nodeIdOffset;
            wayNodes.add(nodeId);
        }

        parser.addWay( way.getId(), tags, wayNodes );
    }
}
 
开发者ID:abrensch,项目名称:brouter,代码行数:21,代码来源:BPbfBlobDecoder.java

示例12: parseNodes

import org.openstreetmap.osmosis.osmbinary.Osmformat; //导入依赖的package包/类
@Override
protected void parseNodes(
		List<Osmformat.Node> nodes ) {
	for (Osmformat.Node n : nodes) {
		Node n2 = new Node();
		Primitive p = getPrimitive(n.getInfo());
		p.setId(n.getId());
		p.setTags(getTags(
				n.getKeysList(),
				n.getValsList()));
		n2.setCommon(p);
		n2.setLatitude(parseLat(n.getLat()));
		n2.setLongitude(parseLon(n.getLon()));
		try {
			nodeWriter.append(n2);
		}
		catch (IOException e) {
			LOGGER.error(
					"Unable to write node",
					e);
		}
	}
}
 
开发者ID:locationtech,项目名称:geowave,代码行数:24,代码来源:OsmPbfParser.java

示例13: getPrimitive

import org.openstreetmap.osmosis.osmbinary.Osmformat; //导入依赖的package包/类
private Primitive getPrimitive(
		Osmformat.Info info ) {
	Primitive p = new Primitive();
	p.setVersion((long) info.getVersion());
	p.setTimestamp(info.getTimestamp());
	p.setUserId((long) info.getUid());
	try {
		p.setUserName(getStringById(info.getUid()));
	}
	catch (Exception ex) {
		LOGGER.warn(
				"Error, input file doesn't contain a valid string table for user id: " + info.getUid(),
				ex);
		p.setUserName(String.valueOf(info.getUid()));
	}
	p.setChangesetId(info.getChangeset());
	p.setVisible(info.getVisible());
	return p;
}
 
开发者ID:locationtech,项目名称:geowave,代码行数:20,代码来源:OsmPbfParser.java

示例14: 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

示例15: 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


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