Ejemplo n.º 1
0
void
LineMerger::merge()
{
	if (mergedLineStrings!=NULL) return;

	// reset marks (this allows incremental processing)
	GraphComponent::setMarkedMap(graph.nodeIterator(), graph.nodeEnd(),
	                                                              false);
	GraphComponent::setMarked(graph.edgeIterator(), graph.edgeEnd(),
	                                                              false);

	for (size_t i=0, n=edgeStrings.size(); i<n; ++i) 
		delete edgeStrings[i];
	edgeStrings.clear();

	buildEdgeStringsForObviousStartNodes();
	buildEdgeStringsForIsolatedLoops();

	unsigned numEdgeStrings = edgeStrings.size();
	mergedLineStrings=new vector<LineString*>(numEdgeStrings);
	for (size_t i=0; i<numEdgeStrings; ++i)
	{
		EdgeString *edgeString=edgeStrings[i];
		(*mergedLineStrings)[i]=edgeString->toLineString();
	}    
}
Ejemplo n.º 2
0
void
LineMerger::merge()
{
	if (mergedLineStrings!=NULL) { 
		return;
	}

	edgeStrings=new vector<EdgeString*>();
	buildEdgeStringsForObviousStartNodes();
	buildEdgeStringsForIsolatedLoops();
	mergedLineStrings=new vector<LineString*>();    
	for (int i=0;i<(int)edgeStrings->size();i++) {
		EdgeString *edgeString=(*edgeStrings)[i];
		mergedLineStrings->push_back(edgeString->toLineString());
	}    
}
Ejemplo n.º 3
0
void
LineMerger::merge()
{
	if (mergedLineStrings!=NULL) return;

	buildEdgeStringsForObviousStartNodes();
	buildEdgeStringsForIsolatedLoops();

	unsigned numEdgeStrings = edgeStrings.size();
	mergedLineStrings=new vector<LineString*>(numEdgeStrings);
	for (size_t i=0; i<numEdgeStrings; ++i)
	{
		EdgeString *edgeString=edgeStrings[i];
		(*mergedLineStrings)[i]=edgeString->toLineString();
	}    
}