Hi, I've tested your code snippet under Linux and it works perfectly.
If you are under Windows, I'd suspect you hit a known issue about incompatible new/delete procedures of the C runtime from your module with the ones used by GDAL's C runtime. See http://trac.osgeo.org/gdal/wiki/FAQMiscellaneous#HowshouldIdeallocateresourcesacquaintedfromGDALonWindows So, you should try : OGRMultiPoint * dpoly = (OGRMultiPoint *) OGRGeometryFactory::createGeometry(wkbMultiPoint); OGRPoint * point = (OGRPoint *) OGRGeometryFactory::createGeometry(wkbPoint); OGRGeometryFactory::destroyGeometry(the_geom); Best regards, Even Le Wednesday 07 May 2008 17:10:42 Andrea Battisti, vous avez écrit : > Hi all, > > are the OGRMulti{ LineString | Point | Polygon } geometries supported by > the ESRI Shapefile driver (in creation mode?); if so I am probably > missing something in they way they should be used. > > I am asking this because when I try to write such features (i.e. an > OGRMultiPoint) to a shapefile I get a crash when calling the > addGeometry() method. > I was looking for a working example of OGRMulti* features creation, but > couldn't find one. > > > Example code: > > const char *pszDriverName = "ESRI Shapefile"; > OGRSFDriver *poDriver; > > OGRRegisterAll(); > > poDriver = > OGRSFDriverRegistrar::GetRegistrar()->GetDriverByName( pszDriverName ); > > // ... > > OGRDataSource *poDS; > poDS = poDriver->CreateDataSource( "multi_out.shp", NULL ); > > // ... > > OGRLayer *poLayer; > poLayer = poDS->CreateLayer( "poly_out", NULL, wkbMultiPoint, > NULL ); > > // ... > > OGRFeature *poFeature; > OGRGeometry * the_geom = NULL; > > poFeature = OGRFeature::CreateFeature( poLayer->GetLayerDefn() ); > > > OGRMultiPoint * dpoly = new OGRMultiPoint(); > > > OGRPoint * point = new OGRPoint(); > point->setX( 42.0 ); > point->setY( 42.0 ); > > dpoly->addGeometryDirectly( point ); > // delete point; > > > the_geom = dpoly; > poFeature->SetGeometry( the_geom ); > delete the_geom; > > > if( poLayer->CreateFeature( poFeature ) != OGRERR_NONE ) > { > printf( "Failed to create feature in shapefile.\n" ); > exit( 1 ); > } > > OGRFeature::DestroyFeature( poFeature ); > > OGRDataSource::DestroyDataSource( poDS ); > > > Thanks in advance! > Best Regards, _______________________________________________ gdal-dev mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/gdal-dev
