⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 linemergegraph.cpp

📁 在Linux下做的QuadTree的程序
💻 CPP
字号:
/********************************************************************** * $Id: LineMergeGraph.cpp 1820 2006-09-06 16:54:23Z mloskot $ * * GEOS - Geometry Engine Open Source * http://geos.refractions.net * * Copyright (C) 2005 R-2006efractions Research Inc. * Copyright (C) 2001-2002 Vivid Solutions Inc. * * This is free software; you can redistribute and/or modify it under * the terms of the GNU Lesser General Public Licence as published * by the Free Software Foundation.  * See the COPYING file for more information. * **********************************************************************/#include <geos/operation/linemerge/LineMergeGraph.h>#include <geos/operation/linemerge/LineMergeEdge.h>#include <geos/operation/linemerge/LineMergeDirectedEdge.h>#include <geos/planargraph/DirectedEdge.h>#include <geos/planargraph/Node.h>#include <geos/geom/CoordinateSequence.h>#include <geos/geom/LineString.h>#include <vector>#ifndef GEOS_DEBUG#define GEOS_DEBUG 0#endif#ifdef GEOS_DEBUG#include <iostream>#endifusing namespace std;//using namespace geos::planargraph;using namespace geos::geom;namespace geos {namespace operation { // geos.operationnamespace linemerge { // geos.operation.linemergevoidLineMergeGraph::addEdge(const LineString *lineString){	if (lineString->isEmpty()) return;#if GEOS_DEBUG	cerr<<"Adding LineString "<<lineString->toString()<<endl;#endif	CoordinateSequence *coordinates = 		CoordinateSequence::removeRepeatedPoints(lineString->getCoordinatesRO());	const Coordinate& startCoordinate=coordinates->getAt(0);	const Coordinate& endCoordinate=coordinates->getAt(coordinates->getSize()-1);	planargraph::Node* startNode=getNode(startCoordinate);	planargraph::Node* endNode=getNode(endCoordinate);#if GEOS_DEBUG	cerr<<" startNode: "<<*startNode<<endl;	cerr<<" endNode: "<<*endNode<<endl;#endif	planargraph::DirectedEdge *directedEdge0=new LineMergeDirectedEdge(startNode,			endNode,coordinates->getAt(1),			true);	newDirEdges.push_back(directedEdge0);	planargraph::DirectedEdge *directedEdge1=new LineMergeDirectedEdge(endNode,			startNode,coordinates->getAt(coordinates->getSize()-2),			false);	newDirEdges.push_back(directedEdge1);	planargraph::Edge *edge=new LineMergeEdge(lineString);	newEdges.push_back(edge);	edge->setDirectedEdges(directedEdge0, directedEdge1);#if GEOS_DEBUG	cerr<<" planargraph::Edge: "<<*edge<<endl;#endif	add(edge);#if GEOS_DEBUG	cerr<<" After addition to the graph:"<<endl;	cerr<<"  startNode: "<<*startNode<<endl;	cerr<<"  endNode: "<<*endNode<<endl;#endif	delete coordinates;}planargraph::Node *LineMergeGraph::getNode(const Coordinate &coordinate){	planargraph::Node *node=findNode(coordinate);	if (node==NULL) {		node=new planargraph::Node(coordinate);		newNodes.push_back(node);		add(node);	}	return node;}LineMergeGraph::~LineMergeGraph(){	unsigned int i;	for (i=0; i<newNodes.size(); i++)		delete newNodes[i];	for (i=0; i<newEdges.size(); i++)		delete newEdges[i];	for (i=0; i<newDirEdges.size(); i++)		delete newDirEdges[i];}} // namespace geos.operation.linemerge} // namespace geos.operation} // namespace geos/********************************************************************** * $Log$ * Revision 1.15  2006/03/22 10:13:54  strk * opLinemerge.h split * * Revision 1.14  2006/03/21 21:42:54  strk * planargraph.h header split, planargraph:: classes renamed to match JTS symbols * **********************************************************************/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -