if (poGeometry_r != NULL && wkbFlatten(poGeometry_r->getGeometryType()) == wkbMultiPolygon)
{
OGRMultiPolygon* mPolygon = (OGRMultiPolygon*) poGeometry_r;
OGRSpatialReference p_spRef;
p_spRef.SetGeogCS( "Mygeographic coordinate system",
"Popular_Visualisation_Datum",
"My WGS84 Spheroid",
SRS_WGS84_SEMIMAJOR, SRS_WGS84_INVFLATTENING,
"Greenwich", 0.0,
"metre");
p_spRef.SetProjection("Mercator_1SP");
mPolygon->transformTo(&p_spRef);
double area = mPolygon->get_Area();
}
原来的矢量文件是WGS_84坐标系的,直接调用get_Area()函数得到的值似乎是度做的单位.需要先转为morcator,然后再去调用get_Area().之前找到解决方法后在stackoverflow回复的帖子