# [geos-devel] strange behaviour of LinearRing::within()

Marco Hugentobler marco.hugentobler at karto.baug.ethz.ch
Fri May 11 12:41:18 EDT 2007

```Dear geos developers,

I'm quite new to geos development, so I hope this is the right place for my
(probably stupid beginer) question:

I have two linearRings and like to use the function within() with them.
However, the results are strange. And if I create two polygons with the
rings, the result of Polygon::within() is correct. This happens for me with
both geos2.2.3 and geos-3.0.0rc4.tar.bz2. Probably I'm doing something wrong.
Find below a simple example program.

Thanks for your help,
Marco

#include <geos.h>
#include <iostream>

/**Little program to test the within() function of geos*/
int main(void)
{
geos::geom::GeometryFactory factory;

std::vector<geos::geom::Geometry*> innerHoles; //no holes
std::vector<geos::geom::Geometry*> outerHoles;

//inner ring
geos::geom::DefaultCoordinateSequence* innerSequence=new
geos::geom::DefaultCoordinateSequence();
geos::geom::LinearRing* innerRing = factory.createLinearRing(innerSequence);
geos::geom::Polygon* innerPolygon = factory.createPolygon(innerRing,
&innerHoles);

//outer ring
geos::geom::DefaultCoordinateSequence* outerSequence=new
geos::geom::DefaultCoordinateSequence();
geos::geom::LinearRing* outerRing = factory.createLinearRing(outerSequence);
geos::geom::Polygon* outerPolygon = factory.createPolygon(outerRing,
&outerHoles);

//if(innerPolygon->within(outerPolygon))
if(innerRing->within(outerRing))
{
std::cout << "inner feature is within outer feature" << std::endl;
}
else
{
std::cout << "outer feature is within inner feature, something must be
wrong" << std::endl;
}

return 0;
}

--
Dr. Marco Hugentobler
Institute of Cartography
ETH Zurich
marco.hugentobler at karto.baug.ethz.ch

```