本文整理汇总了C++中geos::geom::GeometryFactory::createGeometryCollection方法的典型用法代码示例。如果您正苦于以下问题:C++ GeometryFactory::createGeometryCollection方法的具体用法?C++ GeometryFactory::createGeometryCollection怎么用?C++ GeometryFactory::createGeometryCollection使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类geos::geom::GeometryFactory
的用法示例。
在下文中一共展示了GeometryFactory::createGeometryCollection方法的1个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: create_relation
/***
* Union linestrings to multilinestring and insert them into table
* relations.
*/
void create_relation(const osmium::Relation &relation,
const osmium::object_id_type relation_id,
bool &contains_nowaterway_ways,
vector<geos::geom::Geometry *> *linestrings) {
if (!(linestrings->size())) {
return;
}
const geos::geom::GeometryFactory geom_factory =
geos::geom::GeometryFactory();
geos::geom::GeometryCollection *geom_collection = nullptr;
try {
geom_collection = geom_factory.createGeometryCollection(
linestrings);
} catch (...) {
cerr << "Failed to create geometry collection at relation: "
<< relation_id << endl;
delete linestrings;
return;
}
geos::geom::Geometry *geos_geom = nullptr;
try {
geos_geom = geom_collection->Union().release();
} catch (...) {
cerr << "Failed to union linestrings at relation: "
<< relation_id << endl;
delete geom_collection;
return;
}
OGRGeometry *ogr_multilinestring = nullptr;
ogr_multilinestring = geos2ogr(geos_geom);
if (!strcmp(ogr_multilinestring->getGeometryName(),"LINESTRING")) {
try {
ogr_multilinestring =
OGRGeometryFactory::forceToMultiLineString(
ogr_multilinestring);
} catch (...) {
delete geom_collection;
delete geos_geom;
return;
}
}
try {
ds.insert_relation_feature(ogr_multilinestring, relation,
contains_nowaterway_ways);
} catch (osmium::geometry_error&) {
OGRGeometryFactory::destroyGeometry(ogr_multilinestring);
cerr << "Inserting to table failed for relation: "
<< relation_id << endl;
} catch (...) {
OGRGeometryFactory::destroyGeometry(ogr_multilinestring);
cerr << "Inserting to table failed for relation: "
<< relation_id << endl;
cerr << " Unexpected error" << endl;
}
delete geom_collection;
delete geos_geom;
OGRGeometryFactory::destroyGeometry(ogr_multilinestring);
}