Changeset 15444


Ignore:
Timestamp:
Jun 22, 2017, 11:00:59 PM (6 years ago)
Author:
robe
Message:

ST_AsX3D handle empty geometries
References #3704 for PostGIS 2.4 (trunk)

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/liblwgeom/lwout_x3d.c

    r14869 r15444  
    6262        int type = geom->type;
    6363
     64        /* Empty string for empties */
     65        if( lwgeom_is_empty(geom) )
     66        {
     67                char *ret = NULL;
     68                ret = lwalloc(1);
     69                ret[0] = '\0';
     70                return ret;
     71        }
     72
    6473        switch (type)
    6574        {
     
    157166
    158167        size = pointArray_X3Dsize(line->points, precision)*2;
    159        
     168
    160169        if ( X3D_USE_GEOCOORDS(opts) ) {
    161170                        size += (
     
    395404        else
    396405                size = sizeof("<PointSet><Coordinate point='' /></PointSet>") + defidlen;
    397        
     406
    398407
    399408        /* if ( srs ) size += strlen(srs) + sizeof(" srsName=.."); */
     
    526535        if ( X3D_USE_GEOCOORDS(opts) ) size = sizeof("<IndexedFaceSet convex='false' coordIndex=''><GeoCoordinate geoSystem='\"GD\" \"WE\" \"longitude_first\"' point='' />") + defidlen;
    527536        else size = sizeof("<IndexedFaceSet convex='false' coordIndex=''><Coordinate point='' />") + defidlen;
    528        
     537
    529538
    530539        for (i=0; i<psur->ngeoms; i++)
     
    659668        if ( X3D_USE_GEOCOORDS(opts) ) ptr += sprintf(ptr, "'><GeoCoordinate geoSystem='\"GD\" \"WE\" \"%s\"' point='", ( (opts & LW_X3D_FLIP_XY) ? "latitude_first" : "longitude_first") );
    660669        else ptr += sprintf(ptr, "'><Coordinate point='");
    661        
     670
    662671        for (i=0; i<tin->ngeoms; i++)
    663672        {
     
    782791                {
    783792                        ptr += asx3d3_tin_buf((LWTIN*)subgeom, srs, ptr, precision, opts,  defid);
    784                        
     793
    785794                }
    786795                else if ( subgeom->type == POLYHEDRALSURFACETYPE )
    787796                {
    788797                        ptr += asx3d3_psurface_buf((LWPSURFACE*)subgeom, srs, ptr, precision, opts,  defid);
    789                        
     798
    790799                }
    791800                else if ( lwgeom_is_collection(subgeom) )
     
    863872                                if ( i )
    864873                                        ptr += sprintf(ptr, " ");
    865                                        
     874
    866875                                if ( ( opts & LW_X3D_FLIP_XY) )
    867876                                        ptr += sprintf(ptr, "%s %s", y, x);
  • trunk/regress/tickets.sql

    r15138 r15444  
    2828FROM (SELECT '01020000000200000050E8303FC2E85141B017CFC05A825541000000E0C0E85141000000205C825541'::geometry AS g) a,
    2929         (SELECT 'LINESTRING(4694792.35840419 5638508.89950758,4694793.20840419 5638506.34950758)'::geometry AS g) b;
    30        
     30
    3131-- #21 --
    3232SELECT '#21', ST_AsEWKT(ST_Locate_Along_Measure(g, 4566)) FROM
     
    206206        ST_Covers(geometry(geography(poly.the_geom)),
    207207                geometry(geography(pt.the_geom))) As gm_to_gg_gm_pca
    208        
     208
    209209FROM (SELECT ST_GeomFromEWKT('SRID=4326;POLYGON((-119.5434 34.9438,-119.5437 34.9445,-119.5452 34.9442,-119.5434 34.9438))') As the_geom)
    210210        As poly
     
    10131013SELECT '#3627b', ST_Equals(geom, ST_LineFromEncodedPolyline(ST_AsEncodedPolyline(geom, 7), 7)) FROM (VALUES ('SRID=4326;LINESTRING (0 0, 1 1)')) AS v (geom);
    10141014
     1015-- #3704
     1016SELECT '#3704', ST_AsX3D('LINESTRING EMPTY') = '';
     1017
    10151018-- Clean up
    10161019DELETE FROM spatial_ref_sys;
  • trunk/regress/tickets_expected

    r15138 r15444  
    302302#3627a|o}~~|AdshNoSsBgd@eGoBlm@wKhj@~@?
    303303#3627b|t
     304#3704|t
Note: See TracChangeset for help on using the changeset viewer.