[gdal-dev] PointOnSurface returning (0, 0, 0)

Reynolds, Scott scott at agi.com
Wed Mar 15 07:17:17 PDT 2023


Hi,

I'm trying to use PointOnSurface but get (0, 0, 0) no matter what geometry I use.  I'm using the MapServer libraries from gisinternals.com.  One thing I'm seeing is osgeo::proj::io::FactoryException being thrown when I call SetWellKnownGeogCS("WGS84").  Any ideas what I'm doing wrong?

Thanks,
Scott

#include <iostream>

#include "ogrsf_frmts.h"
#include "ogr_geometry.h"

static void CPL_STDCALL CplErrorHandler(CPLErr cplErr, int nError, char* pszErrorTxt) {
    std::cout << "GDAL(" << nError << "): " << pszErrorTxt << "\n";
}

int main()
{
    (void)_putenv("GDAL_DATA=D:\\Temp\\GeosTest\\gdal\\bin\\gdal-data");
    (void)_putenv("PROJ_DATA=D:\\Temp\\GeosTest\\gdal\\bin\\proj9\\share"); // PROJ 9.1
    (void)_putenv("PROJ_LIB=D:\\Temp\\GeosTest\\gdal\\bin\\proj9\\share"); // pre PROJ 9.1
    (void)_putenv("PROJ_DEBUG=3");

    OGRErr ogrErr;

    CPLSetConfigOption("GDAL_DATA", "D:\\Temp\\GeosTest\\gdal\\bin\\gdal-data");
    CPLSetConfigOption("PROJ_DATA", "D:\\Temp\\GeosTest\\gdal\\bin\\proj9\\share"); // PROJ 9.1
    CPLSetConfigOption("PROJ_LIB", "D:\\Temp\\GeosTest\\gdal\\bin\\proj9\\share"); // pre PROJ 9.1

    CPLPushErrorHandler((CPLErrorHandler)CplErrorHandler);

    GDALAllRegister();

    OGRSpatialReference* pSrs = new OGRSpatialReference();
    pSrs->SetWellKnownGeogCS("WGS84");

    const char* pszWkt = "POLYGON ((-5.0 5.0, 5.0 5.0, 5.0 -5.0, 3.0 -5.0, 3.0 3.0, -5.0 3.0, -5.0 5.0))";

    OGRGeometry* pGeom;
    OGRGeometryFactory::createFromWkt(pszWkt, pSrs, &pGeom);
    OGRPoint pointOnSurface;

    OGRSurface* pSurface = pGeom->toSurface();
    pSurface->PointOnSurface(&pointOnSurface);

    char* pszWkt2;
    pGeom->exportToWkt(&pszWkt2);
    std::cout << pszWkt2 << "\n";
    std::cout << "PointOnSurface = (" << pointOnSurface.getX() << ", " << pointOnSurface.getY() << ")\n";
}

Disclaimer

The information contained in this electronic message and any attachments to this message are intended only for the individual(s) addressed in the message and may contain proprietary and confidential information. If you are not the intended recipient, you should not disseminate, distribute or copy this e-mail. Please notify the sender and delete this message. WARNING: Computer viruses can be transmitted via email. The recipient should scan this email before opening it. The company accepts no liability for any damage caused by any virus transmitted by this email.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/gdal-dev/attachments/20230315/657d8e5b/attachment-0001.htm>


More information about the gdal-dev mailing list