void GDALSpatialLinking::init()
{
	properInit = false;
	if (this->leadingViewName.empty())
		return;
	if (this->leadingViewName.empty())
		return;
	std::map<std::string, DM::View> inViews = getViewsInStream()["city"];
	if (inViews.find(leadingViewName) == inViews.end()) {
		DM::Logger(DM::Warning) << "view " << leadingViewName << " not found in in stream";
		return;
	}
	if (inViews.find(linkViewName) == inViews.end()) {
		DM::Logger(DM::Warning) << "view " << linkViewName << " not found in in stream";
		return;
	}
	this->leadingView = DM::ViewContainer(leadingViewName, inViews[leadingViewName].getType(), DM::READ);

	this->linkView = DM::ViewContainer(linkViewName, inViews[linkViewName].getType(), DM::READ);
	std::stringstream l_name;
	l_name << leadingViewName << "_id";
	link_name = l_name.str();
	this->linkView.addAttribute(link_name, leadingViewName, DM::WRITE);

	std::vector<DM::ViewContainer *> data_stream;
	data_stream.push_back(&leadingView);
	data_stream.push_back(&linkView);

	this->registerViewContainers(data_stream);

	properInit = true;
}
void GDALClusterNeighbourhood::init()
{
	if (this->viewName.empty() || this->neighName.empty()) {
		return;
	}

	std::map<std::string, DM::View> inViews = getViewsInStream()["city"];
	if (inViews.find(viewName) == inViews.end()) {
		DM::Logger(DM::Warning) << "view " << viewName << " not found in in stream";
		return;
	}

	name_id1 = this->viewName + "_id1";
	name_id2 = this->viewName + "_id2";

	leadingView = DM::ViewContainer(this->viewName, DM::FACE, DM::READ);
	leadingView.addAttribute("cluster_id", DM::Attribute::DOUBLE, DM::WRITE);

	ngView = DM::ViewContainer(this->neighName, DM::COMPONENT, DM::READ);

	ngView.addAttribute(name_id1, this->viewName, DM::READ);
	ngView.addAttribute(name_id2, this->viewName, DM::READ);

	std::vector<DM::ViewContainer*> data;
	data.push_back( &leadingView);
	data.push_back( &ngView);
	this->registerViewContainers(data);

}
void GDALMergeFaces::init()
{
	if (this->viewName.empty() || this->combinedViewName.empty()) {
		return;
	}

	std::map<std::string, DM::View> inViews = getViewsInStream()["city"];
	if (inViews.find(viewName) == inViews.end()) {
		DM::Logger(DM::Warning) << "view " << viewName << " not found in in stream";
		return;
	}

	leadingView = DM::ViewContainer(this->viewName, DM::FACE, DM::READ);
	leadingView.addAttribute(attriubteName, DM::Attribute::INT, DM::READ);

	combinedView = DM::ViewContainer(this->combinedViewName, DM::FACE, DM::WRITE);
	combinedView.addAttribute("test_id", DM::Attribute::INT, DM::WRITE);

	std::vector<DM::ViewContainer*> data;
	data.push_back( &leadingView);
	data.push_back( &combinedView);
	this->registerViewContainers(data);
}