450{
451 uint32_t i;
452 sfcgal_geometry_t *ret_geom = NULL;
453
454 assert(geom);
455
457 {
459 {
462 return sfcgal_point_create();
463
465 }
466 break;
467
469 {
472 return sfcgal_linestring_create();
473
475 }
476 break;
477
479 {
482 return sfcgal_triangle_create();
484 }
485 break;
486
488 {
490 uint32_t nrings = poly->
nrings - 1;
491
493 return sfcgal_polygon_create();
494
496 ret_geom = sfcgal_polygon_create_from_exterior_ring(exterior_ring);
497
498 for (i = 0; i < nrings; i++)
499 {
501 sfcgal_polygon_add_interior_ring(ret_geom, ring);
502 }
503 return ret_geom;
504 }
505 break;
506
511 {
513 ret_geom = sfcgal_multi_point_create();
515 ret_geom = sfcgal_multi_linestring_create();
517 ret_geom = sfcgal_multi_polygon_create();
518 else
519 ret_geom = sfcgal_geometry_collection_create();
520
522 for (i = 0; i < lwc->
ngeoms; i++)
523 {
525 sfcgal_geometry_collection_add_geometry(ret_geom, g);
526 }
527
528 return ret_geom;
529 }
530 break;
531
533 {
535 ret_geom = sfcgal_polyhedral_surface_create();
536
537 for (i = 0; i < lwp->
ngeoms; i++)
538 {
540 sfcgal_polyhedral_surface_add_polygon(ret_geom, g);
541 }
542
543
545 {
546 return sfcgal_solid_create_from_exterior_shell(ret_geom);
547 }
548
549 return ret_geom;
550 }
551 break;
552
554 {
556 ret_geom = sfcgal_triangulated_surface_create();
557
558 for (i = 0; i < lwp->
ngeoms; i++)
559 {
561 sfcgal_triangulated_surface_add_triangle(ret_geom, g);
562 }
563
564 return ret_geom;
565 }
566 break;
567
568 default:
569 lwerror(
"LWGEOM2SFCGAL: Unknown geometry type !");
570 return NULL;
571 }
572}
sfcgal_geometry_t * LWGEOM2SFCGAL(const LWGEOM *geom)
static sfcgal_geometry_t * ptarray_to_SFCGAL(const POINTARRAY *pa, int type)
#define POINTTYPE
LWTYPE numbers, used internally by PostGIS.
#define POLYHEDRALSURFACETYPE
#define FLAGS_GET_SOLID(flags)
void lwerror(const char *fmt,...)
Write a notice out to the error handler.
static int lwgeom_is_empty(const LWGEOM *geom)
Return true or false depending on whether a geometry is an "empty" geometry (no vertices members)