@@ -204,6 +204,7 @@ QgsAbstractGeometryV2* QgsGeos::symDifference( const QgsAbstractGeometryV2& geom
204
204
205
205
double QgsGeos::distance ( const QgsAbstractGeometryV2& geom ) const
206
206
{
207
+ Q_UNUSED ( geom );
207
208
return 0.0 ;
208
209
}
209
210
@@ -1230,6 +1231,10 @@ bool QgsGeos::pointOnSurface( QgsPointV2& pt ) const
1230
1231
double x, y;
1231
1232
GEOSGeomGetX_r ( geosinit.ctxt , geos, &x );
1232
1233
GEOSGeomGetY_r ( geosinit.ctxt , geos, &y );
1234
+
1235
+ pt.setX ( x );
1236
+ pt.setY ( y );
1237
+
1233
1238
return true ;
1234
1239
}
1235
1240
@@ -1354,69 +1359,67 @@ GEOSCoordSequence* QgsGeos::createCoordinateSequence( const QgsCurveV2* curve )
1354
1359
GEOSGeometry* QgsGeos::createGeosPoint ( const QgsAbstractGeometryV2* point, int coordDims )
1355
1360
{
1356
1361
const QgsPointV2* pt = dynamic_cast <const QgsPointV2*>( point );
1357
- if ( pt )
1362
+ if ( !pt )
1363
+ return 0 ;
1364
+
1365
+ GEOSCoordSequence* coordSeq = GEOSCoordSeq_create_r ( geosinit.ctxt , 1 , coordDims );
1366
+ GEOSCoordSeq_setX_r ( geosinit.ctxt , coordSeq, 0 , pt->x () );
1367
+ GEOSCoordSeq_setY_r ( geosinit.ctxt , coordSeq, 0 , pt->y () );
1368
+ if ( pt->is3D () )
1358
1369
{
1359
- GEOSCoordSequence* coordSeq = GEOSCoordSeq_create_r ( geosinit.ctxt , 1 , coordDims );
1360
- GEOSCoordSeq_setX_r ( geosinit.ctxt , coordSeq, 0 , pt->x () );
1361
- GEOSCoordSeq_setY_r ( geosinit.ctxt , coordSeq, 0 , pt->y () );
1362
- if ( pt->is3D () )
1363
- {
1364
- GEOSCoordSeq_setOrdinate_r ( geosinit.ctxt , coordSeq, 0 , 2 , pt->z () );
1365
- }
1366
- if ( pt->isMeasure () )
1367
- {
1368
- GEOSCoordSeq_setOrdinate_r ( geosinit.ctxt , coordSeq, 0 , 3 , pt->m () );
1369
- }
1370
- return GEOSGeom_createPoint_r ( geosinit.ctxt , coordSeq );
1370
+ GEOSCoordSeq_setOrdinate_r ( geosinit.ctxt , coordSeq, 0 , 2 , pt->z () );
1371
1371
}
1372
+ if ( pt->isMeasure () )
1373
+ {
1374
+ GEOSCoordSeq_setOrdinate_r ( geosinit.ctxt , coordSeq, 0 , 3 , pt->m () );
1375
+ }
1376
+ return GEOSGeom_createPoint_r ( geosinit.ctxt , coordSeq );
1372
1377
}
1373
1378
1374
1379
GEOSGeometry* QgsGeos::createGeosLinestring ( const QgsAbstractGeometryV2* curve )
1375
1380
{
1376
1381
const QgsCurveV2* c = dynamic_cast <const QgsCurveV2*>( curve );
1377
- if ( c )
1378
- {
1379
- GEOSCoordSequence* coordSeq = createCoordinateSequence ( c );
1380
- if ( !coordSeq )
1381
- {
1382
- return 0 ;
1383
- }
1384
- return GEOSGeom_createLineString_r ( geosinit.ctxt , coordSeq );
1385
- }
1382
+ if ( !c )
1383
+ return 0 ;
1384
+
1385
+ GEOSCoordSequence* coordSeq = createCoordinateSequence ( c );
1386
+ if ( !coordSeq )
1387
+ return 0 ;
1388
+
1389
+ return GEOSGeom_createLineString_r ( geosinit.ctxt , coordSeq );
1386
1390
}
1387
1391
1388
1392
GEOSGeometry* QgsGeos::createGeosPolygon ( const QgsAbstractGeometryV2* poly )
1389
1393
{
1390
1394
const QgsCurvePolygonV2* polygon = dynamic_cast <const QgsCurvePolygonV2*>( poly );
1391
- if ( polygon )
1392
- {
1393
- const QgsCurveV2* exteriorRing = polygon->exteriorRing ();
1394
- GEOSGeometry* exteriorRingGeos = GEOSGeom_createLinearRing_r ( geosinit.ctxt , createCoordinateSequence ( exteriorRing ) );
1395
+ if ( !polygon )
1396
+ return 0 ;
1395
1397
1396
- int nHoles = polygon->numInteriorRings ();
1397
- GEOSGeometry** holes = 0 ;
1398
- if ( nHoles > 0 )
1399
- {
1400
- holes = new GEOSGeometry*[ nHoles ];
1401
- }
1398
+ const QgsCurveV2* exteriorRing = polygon->exteriorRing ();
1399
+ GEOSGeometry* exteriorRingGeos = GEOSGeom_createLinearRing_r ( geosinit.ctxt , createCoordinateSequence ( exteriorRing ) );
1402
1400
1403
- for ( int i = 0 ; i < nHoles; ++i )
1404
- {
1405
- const QgsCurveV2* interiorRing = polygon->interiorRing ( i );
1406
- holes[i] = GEOSGeom_createLinearRing_r ( geosinit.ctxt , createCoordinateSequence ( interiorRing ) );
1407
- }
1408
- GEOSGeometry* geosPolygon = GEOSGeom_createPolygon_r ( geosinit.ctxt , exteriorRingGeos, holes, nHoles );
1409
- delete[] holes;
1410
- return geosPolygon;
1401
+ int nHoles = polygon->numInteriorRings ();
1402
+ GEOSGeometry** holes = 0 ;
1403
+ if ( nHoles > 0 )
1404
+ {
1405
+ holes = new GEOSGeometry*[ nHoles ];
1406
+ }
1407
+
1408
+ for ( int i = 0 ; i < nHoles; ++i )
1409
+ {
1410
+ const QgsCurveV2* interiorRing = polygon->interiorRing ( i );
1411
+ holes[i] = GEOSGeom_createLinearRing_r ( geosinit.ctxt , createCoordinateSequence ( interiorRing ) );
1411
1412
}
1413
+ GEOSGeometry* geosPolygon = GEOSGeom_createPolygon_r ( geosinit.ctxt , exteriorRingGeos, holes, nHoles );
1414
+ delete[] holes;
1415
+
1416
+ return geosPolygon;
1412
1417
}
1413
1418
1414
1419
QgsAbstractGeometryV2* QgsGeos::offsetCurve ( double distance, int segments, int joinStyle, double mitreLimit ) const
1415
1420
{
1416
1421
if ( !mGeos )
1417
- {
1418
1422
return 0 ;
1419
- }
1420
1423
1421
1424
GEOSGeometry* offset = 0 ;
1422
1425
try
0 commit comments