[geos-devel] Re: geos-devel Digest, Vol 81, Issue 17

Jo doublebyte at gmail.com
Mon Jul 20 18:59:20 EDT 2009


And running the program in a third computer, I get a different exception:

Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread 0xb7350a70 (LWP 1795)]
0xb758617b in geos::io::WKBWriter::write (this=0xbfc8605c, g=@0x805b4b8,
    os=@0xbfc85f90) at WKBWriter.cpp:77
77      WKBWriter.cpp: No such file or directory.
        in WKBWriter.cpp
(gdb) backtrace
#0  0xb758617b in geos::io::WKBWriter::write (this=0xbfc8605c, g=@0x805b4b8,
    os=@0xbfc85f90) at WKBWriter.cpp:77
#1  0xb74a456b in GEOSGeomToWKB_buf (g=0x805b4b8, size=0xbfc860ac)
    at geos_c.cpp:563
#2  0xb7aa63c7 in OGRGeometryFactory::createFromGEOS (geosGeom=0x805b4b8)
    at ogrgeometryfactory.cpp:1296
#3  0xb7aac824 in OGRPolygon::Centroid (this=0x8050b30, poPoint=0xbfc861c0)
    at ogrpolygon.cpp:740
#4  0xb7fa2d14 in CreateFeature (poPolygon=0x8050780, newPoLayer=0x8050570,
    poFeature=0x80509a0) at testIndexes.cpp:57
#5  0xb7fa3eae in CalculateShapeIndexes (baseName=0xbfc864e6 "abc",
    outFile=0xbfc864b4 "out") at testIndexes.cpp:221

I start to wonder if my configure.in is picking up the correct location for
geos includes... I am gonna research a bit more about this and post results!
Anyway, it would be great if anybody had some ideas why the program is
crashing with different errors in each pc... this is confusing me a bit!
Could it be because the geos version installed is different from the geos
version that was used when compiling gdal?
(In ubuntu I have some gdal binaries I have no idea-where-they-came-from and
a svn version of geos...)
                                                       cheers,
                                                                 Jo

2009/7/20 <geos-devel-request at lists.osgeo.org>

> Send geos-devel mailing list submissions to
>        geos-devel at lists.osgeo.org
>
> To subscribe or unsubscribe via the World Wide Web, visit
>        http://lists.osgeo.org/mailman/listinfo/geos-devel
> or, via email, send a message with subject or body 'help' to
>        geos-devel-request at lists.osgeo.org
>
> You can reach the person managing the list at
>        geos-devel-owner at lists.osgeo.org
>
> When replying, please edit your Subject line so it is more specific
> than "Re: Contents of geos-devel digest..."
>
>
> Today's Topics:
>
>   1. Computational Geometry Problem + Exception (Jo)
>
>
> ----------------------------------------------------------------------
>
> Message: 1
> Date: Mon, 20 Jul 2009 23:16:26 +0100
> From: Jo <doublebyte at gmail.com>
> Subject: [geos-devel] Computational Geometry Problem + Exception
> To: geos-devel at lists.osgeo.org
> Message-ID:
>        <23ab5f0a0907201516g4af4646bm272acfeecc8a1fcb at mail.gmail.com>
> Content-Type: text/plain; charset="iso-8859-1"
>
> Hi,
> Sorry to bother you again, but I am getting sometimes this exception from
> GEOS and I don't have a clue what it is:
>
> test: CoordinateArraySequence.cpp:105: virtual const
> geos::geom::Coordinate&
> geos::geom::CoordinateArraySequence::getAt(size_t) const: Assertion
> `pos<vect->size()' failed.
>
> Backtracing it, I discovered that it comes from the ISCCW algorithm:
>
> #0  0xb7119c66 in raise () from /lib/libc.so.6
> #1  0xb711b571 in abort () from /lib/libc.so.6
> #2  0xb7112e60 in __assert_fail () from /lib/libc.so.6
> #3  0xb7884ee6 in geos::geom::CoordinateArraySequence::getAt (this=0x0,
> pos=7117)
>    at
>
> /usr/local/lib/gcc/i686-pc-linux-gnu/3.4.6/../../../../include/c++/3.4.6/bits/stl_vector.h:375
> #4  0xb7876b79 in geos::algorithm::CGAlgorithms::isCCW (ring=0x804f2b8) at
> CGAlgorithms.cpp:175
>
> Does anybody has any ideas in what can be causing this?
> Strangely it breaks in different files in my two computers: both using
> GEOS,
> vs 3.2.0 from svn.
> Any help on this would be much appreciated!
>
> cheers,
>
> Jo
>
> 2009/7/19 <geos-devel-request at lists.osgeo.org>
>
> > Send geos-devel mailing list submissions to
> >        geos-devel at lists.osgeo.org
> >
> > To subscribe or unsubscribe via the World Wide Web, visit
> >        http://lists.osgeo.org/mailman/listinfo/geos-devel
> > or, via email, send a message with subject or body 'help' to
> >        geos-devel-request at lists.osgeo.org
> >
> > You can reach the person managing the list at
> >        geos-devel-owner at lists.osgeo.org
> >
> > When replying, please edit your Subject line so it is more specific
> > than "Re: Contents of geos-devel digest..."
> >
> >
> > Today's Topics:
> >
> >   1. geos svn (Jo)
> >
> >
> > ----------------------------------------------------------------------
> >
> > Message: 1
> > Date: Sun, 19 Jul 2009 23:10:01 +0100
> > From: Jo <doublebyte at gmail.com>
> > Subject: [geos-devel] geos svn
> > To: geos-devel at lists.osgeo.org
> > Message-ID:
> >        <23ab5f0a0907191510s1d567375qdf13e491e1e06933 at mail.gmail.com>
> > Content-Type: text/plain; charset="iso-8859-1"
> >
> > Latest SVN version of geos seems to be incomplete: no libtool and
> > lt-main.sh.
> > Also, the nightly release appears to be a broken tar file (at least I
> > cannot
> > open it in my pc)...
> >  cheers,
> >            Jo
> >
> > 2009/7/19 <geos-devel-request at lists.osgeo.org>
> >
> > > Send geos-devel mailing list submissions to
> > >        geos-devel at lists.osgeo.org
> > >
> > > To subscribe or unsubscribe via the World Wide Web, visit
> > >        http://lists.osgeo.org/mailman/listinfo/geos-devel
> > > or, via email, send a message with subject or body 'help' to
> > >        geos-devel-request at lists.osgeo.org
> > >
> > > You can reach the person managing the list at
> > >        geos-devel-owner at lists.osgeo.org
> > >
> > > When replying, please edit your Subject line so it is more specific
> > > than "Re: Contents of geos-devel digest..."
> > >
> > >
> > > Today's Topics:
> > >
> > >   1. Computational Geometry Problem (Jo)
> > >
> > >
> > > ----------------------------------------------------------------------
> > >
> > > Message: 1
> > > Date: Sun, 19 Jul 2009 22:56:53 +0100
> > > From: Jo <doublebyte at gmail.com>
> > > Subject: [geos-devel] Computational Geometry Problem
> > > To: geos-devel at lists.osgeo.org
> > > Message-ID:
> > >        <23ab5f0a0907191456l5f8d648i4dce9666abf3dcf8 at mail.gmail.com>
> > > Content-Type: text/plain; charset="iso-8859-1"
> > >
> > > Hi Sanak,
> > > Thanks a lot for the modified code: it worked on perfection!
> > > Here is a screenshot of a run with my shapefile:
> > >
> > > http://ladybug.no-ip.org/files/inCircleFinal.png
> > >
> > >        Have a good rest of the weekend!
> > >                                                             Jo
> > >
> > > 2009/7/19 <geos-devel-request at lists.osgeo.org>
> > >
> > > > Send geos-devel mailing list submissions to
> > > >        geos-devel at lists.osgeo.org
> > > >
> > > > To subscribe or unsubscribe via the World Wide Web, visit
> > > >        http://lists.osgeo.org/mailman/listinfo/geos-devel
> > > > or, via email, send a message with subject or body 'help' to
> > > >        geos-devel-request at lists.osgeo.org
> > > >
> > > > You can reach the person managing the list at
> > > >        geos-devel-owner at lists.osgeo.org
> > > >
> > > > When replying, please edit your Subject line so it is more specific
> > > > than "Re: Contents of geos-devel digest..."
> > > >
> > > >
> > > > Today's Topics:
> > > >
> > > >   1. Re: Re: Computational Geometry Problem (Sanak Goe)
> > > >
> > > >
> > > >
> ----------------------------------------------------------------------
> > > >
> > > > Message: 1
> > > > Date: Sun, 19 Jul 2009 21:24:34 +0900
> > > > From: Sanak Goe <geosanak at gmail.com>
> > > > Subject: Re: [geos-devel] Re: Computational Geometry Problem
> > > > To: GEOS Development List <geos-devel at lists.osgeo.org>
> > > > Message-ID:
> > > >        <5f9be0a0907190524n5a8de434y38731cf04e7770d0 at mail.gmail.com>
> > > > Content-Type: text/plain; charset="iso-8859-1"
> > > >
> > > > Skipped content of type multipart/alternative-------------- next part
> > > > --------------
> > > > #include <locale.h>
> > > > #include <iostream>
> > > > #include <vector>
> > > > #include <algorithm>
> > > > #include <stdexcept>
> > > > #include <map> // added by sanak 2009.07.19
> > > > #ifdef _MSC_VER
> > > > #include <io.h>
> > > > #endif // _MSC_VER
> > > >
> > > > //Geos
> > > > #include <geos_c.h>
> > > >
> > > > #include <geos/algorithm/CGAlgorithms.h>
> > > > #include <geos/algorithm/HCoordinate.h>
> > > > #include <geos/geom/Coordinate.h>
> > > > #include <geos/geom/CoordinateArraySequence.h>
> > > > #include <geos/geom/LineString.h>
> > > > #include <geos/geom/MultiPoint.h>
> > > > #include <geos/geom/Point.h>
> > > > #include <geos/geom/Polygon.h>
> > > > #include <geos/io/WKTReader.h>
> > > > #include <geos/io/WKTWriter.h>
> > > >
> > > > // <-- modified by sanak 2009.07.19
> > > > //const double epsilonArea = 100.0;
> > > > const double epsilonRadius = 0.1;
> > > > // --> modified by sanak 2009.07.19
> > > >
> > > > // <-- Boost code
> > > > template < class BidirectionalIterator >
> > > > bool next_combination ( BidirectionalIterator first1 ,
> > > >  BidirectionalIterator last1 ,
> > > >  BidirectionalIterator first2 ,
> > > >  BidirectionalIterator last2 )
> > > > {
> > > >  if (( first1 == last1 ) || ( first2 == last2 )) {
> > > >    return false ;
> > > >  }
> > > >  BidirectionalIterator m1 = last1 ;
> > > >  BidirectionalIterator m2 = last2 ; --m2;
> > > >  while (--m1 != first1 && !(* m1 < *m2 )){
> > > >  }
> > > >  bool result = (m1 == first1 ) && !(* first1 < *m2 );
> > > >  if (! result ) {
> > > >    while ( first2 != m2 && !(* m1 < * first2 )) {
> > > >      ++ first2 ;
> > > >    }
> > > >    first1 = m1;
> > > >    std :: iter_swap (first1 , first2 );
> > > >    ++ first1 ;
> > > >    ++ first2 ;
> > > >  }
> > > >  if (( first1 != last1 ) && ( first2 != last2 )) {
> > > >    m1 = last1 ; m2 = first2 ;
> > > >    while (( m1 != first1 ) && (m2 != last2 )) {
> > > >      std :: iter_swap (--m1 , m2 );
> > > >      ++ m2;
> > > >    }
> > > >    std :: reverse (first1 , m1 );
> > > >    std :: reverse (first1 , last1 );
> > > >    std :: reverse (m2 , last2 );
> > > >    std :: reverse (first2 , last2 );
> > > >  }
> > > >  return ! result ;
> > > > }
> > > >
> > > > template < class BidirectionalIterator >
> > > > bool next_combination ( BidirectionalIterator first ,
> > > >  BidirectionalIterator middle ,
> > > >  BidirectionalIterator last )
> > > > {
> > > >  return next_combination (first , middle , middle , last );
> > > > }
> > > > // Boost Code -->
> > > >
> > > > bool computeIncircle(
> > > >                                         const geos::geom::Polygon*
> > poly,
> > > >                                         const geos::geom::Polygon*
> > > negbuf,
> > > >                                         geos::geom::Coordinate&
> center,
> > > >                                         double& radius)
> > > > {
> > > >        radius = 0.0;
> > > >
> > > >        if (negbuf == NULL)
> > > >        {
> > > >                negbuf = poly;
> > > >        }
> > > >
> > > >        try
> > > >        {
> > > >
> > > >                if (!negbuf->isValid())
> > > >                {
> > > >                        throw std::runtime_error("Invalid polygon.");
> > > >                }
> > > >
> > > >                if (negbuf->getNumInteriorRing() > 0)
> > > >                {
> > > >                        throw std::runtime_error("This sample only
> > > supports
> > > > non-holes polygon.");
> > > >                }
> > > >
> > > >                const geos::geom::LineString* shell =
> > > > negbuf->getExteriorRing();
> > > >                geos::geom::CoordinateArraySequence* coords =
> > > >
> > >
> >
> static_cast<geos::geom::CoordinateArraySequence*>(shell->getCoordinates());
> > > >
> > > >                // compute orientation of ring
> > > >                if (!geos::algorithm::CGAlgorithms::isCCW(coords))
> > > >                {
> > > >                        coords->reverse(coords);
> > > >                }
> > > >
> > > >                // compute angle bisector of every  continuous three
> > > points
> > > > in polygon
> > > >                size_t cnt = coords->size() - 1;
> > > >                // <-- modified by sanak 2009.07.19
> > > >                //std::vector<geos::algorithm::HCoordinate*> bisects;
> > > >                std::vector<size_t> bisectids;
> > > >                std::map<size_t, geos::algorithm::HCoordinate*>
> bisects;
> > > >                // --> modified by sanak 2009.07.19
> > > >                for (size_t i = 0; i < cnt; i++)
> > > >                {
> > > >                        size_t prev = (i == 0) ? cnt - 1 : i - 1;
> > > >                        size_t curr = i;
> > > >                        size_t next = (i == cnt - 1) ? 0 : i + 1;
> > > >
> > > >                        // <-- JTS 1.10 Code
> > > >                        geos::geom::Coordinate a =
> coords->getAt(prev);
> > > >                        geos::geom::Coordinate b =
> coords->getAt(curr);
> > > >                        geos::geom::Coordinate c =
> coords->getAt(next);
> > > >
> > > >                        double len0 = b.distance(a);
> > > >                        double len2 = b.distance(c);
> > > >                        double frac = len0 / (len0 + len2);
> > > >                        double dx = c.x - a.x;
> > > >                        double dy = c.y - a.y;
> > > >
> > > >                        geos::geom::Coordinate splitPt =
> > > > geos::geom::Coordinate(a.x + frac * dx, a.y + frac * dy);
> > > >                        // --> JTS 1.10 Code
> > > >                        // <-- modified by sanak 2009.07.19
> > > >                        //bisects.push_back(new
> > > > geos::algorithm::HCoordinate(b, splitPt));
> > > >                        bisectids.push_back(i);
> > > >                        bisects.insert(std::pair<size_t,
> > > > geos::algorithm::HCoordinate*>(i, new geos::algorithm::HCoordinate(b,
> > > > splitPt)));
> > > >                        // --> modified by sanak 2009.07.19
> > > >                }
> > > >
> > > >                // get intersection points of angle bisectors
> > > >                geos::geom::CoordinateArraySequence intsects;
> > > >                do
> > > >                {
> > > >                        // <-- modified by sanak 2009.07.19
> > > >                        //geos::algorithm::HCoordinate* hc0 =
> > bisects[0];
> > > >                        //geos::algorithm::HCoordinate* hc1 =
> > bisects[1];
> > > >                        geos::algorithm::HCoordinate* hc0 =
> > > > bisects[bisectids[0]];
> > > >                        geos::algorithm::HCoordinate* hc1 =
> > > > bisects[bisectids[1]];
> > > >                        // --> modified by sanak 2009.07.19
> > > >                        geos::algorithm::HCoordinate* hcoord = new
> > > > geos::algorithm::HCoordinate(*hc0, *hc1);
> > > >                        try
> > > >                        {
> > > >                                // get intersection
> > > >                                geos::geom::Coordinate coord =
> > > > geos::geom::Coordinate(hcoord->getX(), hcoord->getY());
> > > >
> > > >                                // TODO:remove duplicate point
> > > >                                intsects.add(coord);
> > > >                        }
> > > >                        catch (std::exception& ex)
> > > >                        {
> > > >                                // no intersection
> > > >                        }
> > > >                        if (hcoord)
> > > >                        {
> > > >                                delete hcoord;
> > > >                        }
> > > >                }
> > > >                // <-- modified by sanak 2009.07.19
> > > >                //while (next_combination(bisects.begin(),
> > bisects.begin()
> > > +
> > > > 2, bisects.end()));
> > > >                while (next_combination(bisectids.begin(),
> > > bisectids.begin()
> > > > + 2, bisectids.end()));
> > > >                // --> modified by sanak 2009.07.19
> > > >
> > > >                // clean up
> > > >                if (bisects.size() > 0)
> > > >                {
> > > >                        std::cout << "bissects ok." << std::endl;
> > > >                        // <-- modified by sanak 2009.07.19
> > > >
> > > >  //std::vector<geos::algorithm::HCoordinate*>::iterator it;
> > > >                        //for (it = bisects.begin(); it !=
> > bisects.end();
> > > > it++)
> > > >                        //{
> > > >                        //      delete *it;
> > > >                        //}
> > > >                        std::map<size_t,
> > > > geos::algorithm::HCoordinate*>::iterator it;
> > > >                        for (it = bisects.begin(); it !=
> bisects.end();
> > > > it++)
> > > >                        {
> > > >                                delete it->second;
> > > >                        }
> > > >                        // --> modified by sanak 2009.07.19
> > > >                }
> > > >                else
> > > >                std::cout << "No bissects." << std::endl;
> > > >
> > > >                std::cout << "intsects.size()" << intsects.size() <<
> > > >  std::endl;
> > > >                if (intsects.size() > 0)
> > > >                {
> > > >                        std::cout << "intsects ok." << std::endl;
> > > >
> > > >                        geos::geom::Point* incenter = NULL;
> > > >
> > > >                        geos::geom::GeometryFactory factory;
> > > >                        const geos::geom::LineString* line =
> > > > poly->getExteriorRing();
> > > >                        //geos::geom::MultiPoint* rcpoints =
> > > > factory.createMultiPoint(intsects); // for debug
> > > >
> > > >                        std::vector<geos::geom::Coordinate*>::iterator
> > it;
> > > >                        for (size_t i = 0; i < intsects.size(); i++)
> > > >                        {
> > > >                                geos::geom::Coordinate coord =
> > > intsects[i];
> > > >                                // exclude points that are outer of
> > > polygon
> > > >                                if
> > > > (geos::algorithm::CGAlgorithms::isPointInRing(coord, coords))
> > > >                                {
> > > >                                        geos::geom::Point* point =
> > > > factory.createPoint(coord);
> > > >                                        // compute distance from every
> > > > candidates of centres to polygon, and choose largest one
> > > >                                        double distance =
> > > > line->distance(point);
> > > >                                        if (radius < distance)
> > > >                                        {
> > > >                                                radius = distance;
> > > >                                                incenter = point;
> > > >                                        }
> > > >                                }
> > > >                                //else std::cout << "Point not in
> Ring."
> > > <<
> > > > std::endl;
> > > >                        }
> > > >
> > > >                        if (incenter != NULL && radius != 0.0)
> > > >                        {
> > > >                                        geos::io::WKTWriter writer;
> > > >                                        std::cout << "wkt : " <<
> > > > writer.write(incenter) << std::endl;
> > > >                                        std::cout << "radius : " <<
> > radius
> > > > << std::endl;
> > > >
> > > >                                center.x = incenter->getX();
> > > >                                center.y = incenter->getY();
> > > >                                //return true; // deleted by sanak
> > > > 2009.07.19
> > > >                        }
> > > >                        // <-- added by sanak 2009.07.19
> > > >                        else
> > > >                        {
> > > >                                geos::geom::Point* intPt =
> > > > negbuf->getInteriorPoint();
> > > >                                center.x = intPt->getX();
> > > >                                center.y = intPt->getY();
> > > >                                radius = line->distance(intPt);
> > > >                        }
> > > >                        return true;
> > > >                        // --> added by sanak 2009.07.19
> > > >                }
> > > >                else
> > > >                {
> > > >                        std::cout << "No intsects." << std::endl;
> > > >                        throw std::runtime_error("Couldn't get
> > > incenter.");
> > > >                }
> > > >        }
> > > >        catch (std::exception& ex)
> > > >        {
> > > >                std::cerr << "Exception : " << ex.what() << std::endl;
> > > >                throw ex;
> > > >                return false;
> > > >        }
> > > >        return false;
> > > > }
> > > >
> > > > int main(int argc, char* argv[])
> > > > {
> > > >        // check stdin
> > > > #ifdef _MSC_VER
> > > >        if (::_isatty(fileno(stdin)))
> > > > #else
> > > >        if (::isatty(fileno(stdin)))
> > > > #endif // _MSC_VER
> > > >        {
> > > >                std::cerr << "Usage: %s < [wktfile(polygon)]" <<
> > > std::endl;
> > > >                return -1;
> > > >        }
> > > >
> > > >        std::string line;
> > > >        geos::io::WKTReader reader;
> > > >        std::vector<geos::geom::Polygon*> g;
> > > >        while (getline(std::cin, line, '\n'))
> > > >        {
> > > >                //std::cout << line << std::endl;
> > > >                geos::geom::Polygon* geom =
> > > >                static_cast<geos::geom::Polygon*>(reader.read(line));
> > > >
> > > >                if (geom == NULL && geom->getGeometryType() !=
> > "Polygon")
> > > >                {
> > > >                        throw std::runtime_error("This sample only
> > > supports
> > > > polygon geometry");
> > > >                }
> > > >
> > > >                geos::geom::Polygon* poly =
> > > > static_cast<geos::geom::Polygon*>(geom);
> > > >                if (!poly->isValid())
> > > >                {
> > > >                        throw std::runtime_error("Invalid polygon.");
> > > >                }
> > > >
> > > >                if (poly->getNumInteriorRing() > 0)
> > > >                {
> > > >                        throw std::runtime_error("This sample only
> > > supports
> > > > non-holes polygon.");
> > > >                }
> > > >
> > > >                g.push_back(poly);
> > > >        }
> > > >
> > > >
> > > >        try
> > > >        {
> > > >
> > > >                for (int i=0 ; i < g.size(); ++i)
> > > >                {
> > > >                        geos::geom::Polygon* negbuf = NULL;
> > > >                        double prevRadius = 0.0; // added by sanak
> > > > 2009.07.19
> > > >                        while (true)
> > > >                        {
> > > >                                geos::geom::Coordinate center;
> > > >                                double radius = 0.0;
> > > >                                if (computeIncircle(g[i], negbuf,
> > center,
> > > > radius))
> > > >                                {
> > > >                                        // <-- modified by sanak
> > > 2009.07.19
> > > >                                        //negbuf =
> > > > static_cast<geos::geom::Polygon*>(g[i]->buffer(-radius));
> > > >                                        //if (negbuf == NULL &&
> > > > negbuf->getGeometryType() != "Polygon")
> > > >                                        //{
> > > >                                        //      // TODO:
> > > >                                        //      throw
> > > > std::runtime_error("Intercepted!!!!!!!");
> > > >                                        //}
> > > >                                        //double area =
> > negbuf->getArea();
> > > >
> > > >                                        //if (area < epsilonArea)
> > > >                                        geos::geom::Geometry* buf =
> > > > g[i]->buffer(-(radius));
> > > >                                        std::string buftype =
> > > > buf->getGeometryType();
> > > >                                        if (buftype == "Polygon")
> > > >                                        {
> > > >                                                negbuf =
> > > > static_cast<geos::geom::Polygon*>(buf);
> > > >                                        }
> > > >                                        else if (buftype ==
> > > "MultiPolygon")
> > > >                                        {
> > > >                                                size_t cnt =
> > > > buf->getNumGeometries();
> > > >                                                double maxradius =
> 0.0;
> > > >                                                double tmpradius =
> 0.0;
> > > >                                                geos::geom::Coordinate
> > > > tmpcenter;
> > > >                                                for (size_t j = 0; j <
> > > cnt;
> > > > j++)
> > > >                                                {
> > > >                                                        const
> > > > geos::geom::Polygon* item = static_cast<const
> > > > geos::geom::Polygon*>(buf->getGeometryN(j));
> > > >                                                        if
> > > > (computeIncircle(g[i], item, tmpcenter, tmpradius))
> > > >                                                        {
> > > >                                                                if
> > > > (tmpradius > maxradius)
> > > >                                                                {
> > > >
> > > >  negbuf = static_cast<geos::geom::Polygon*>(item->clone());
> > > >
> > > >  center = tmpcenter;
> > > >
> > > >  radius = tmpradius;
> > > >
> > > >  maxradius = tmpradius;
> > > >                                                                }
> > > >                                                        }
> > > >                                                }
> > > >                                        }
> > > >
> > > >                                        if ((radius - prevRadius) <
> > > > epsilonRadius)
> > > >                                        // --> modified by sanak
> > > 2009.07.19
> > > >                                        {
> > > >
> > > >                                                std::cout << "center :
> "
> > > <<
> > > > center.toString() << std::endl;
> > > >                                                std::cout << "radius :
> "
> > > <<
> > > > radius << std::endl;
> > > >
> > >  geos::geom::GeometryFactory
> > > > factory;
> > > >                                                geos::geom::Point*
> > > centerPt
> > > > = factory.createPoint(center);
> > > >                                                geos::geom::Geometry*
> > > > incircle = centerPt->buffer(radius);
> > > >                                                geos::io::WKTWriter
> > > writer;
> > > >                                                std::cout << "wkt : "
> <<
> > > > writer.write(incircle) << std::endl;
> > > >                                                // <-- modified by
> sanak
> > > > 2009.07.19
> > > >                                                //return 0;
> > > >                                                break;
> > > >                                                // --> modified by
> sanak
> > > > 2009.07.19
> > > >                                        }
> > > >                                        prevRadius = radius; // added
> by
> > > > sanak 2009.07.19
> > > >                                }
> > > >                                else
> > > >                                {
> > > >                                        std::cout << "Could not
> > compute!"
> > > <<
> > > > std::endl;
> > > >                                        return -2;
> > > >                                }
> > > >                        }
> > > >                }
> > > >        }
> > > >        catch (std::exception& ex)
> > > >        {
> > > >                std::cerr << "Exception : " << ex.what() << std::endl;
> > > >                return -3;
> > > >        }
> > > >
> > > >        return 0;
> > > > }
> > > >
> > > > ------------------------------
> > > >
> > > > _______________________________________________
> > > > geos-devel mailing list
> > > > geos-devel at lists.osgeo.org
> > > > http://lists.osgeo.org/mailman/listinfo/geos-devel
> > > >
> > > > End of geos-devel Digest, Vol 81, Issue 13
> > > > ******************************************
> > > >
> > >
> > >
> > >
> > > --
> > > "#define QUESTION ((bb) || !(bb))"  (Shakespeare)
> > > -------------- next part --------------
> > > An HTML attachment was scrubbed...
> > > URL:
> > >
> >
> http://lists.osgeo.org/pipermail/geos-devel/attachments/20090719/f83b16e1/attachment.html
> > >
> > > ------------------------------
> > >
> > > _______________________________________________
> > > geos-devel mailing list
> > > geos-devel at lists.osgeo.org
> > > http://lists.osgeo.org/mailman/listinfo/geos-devel
> > >
> > > End of geos-devel Digest, Vol 81, Issue 14
> > > ******************************************
> > >
> >
> >
> >
> > --
> > "#define QUESTION ((bb) || !(bb))"  (Shakespeare)
> > -------------- next part --------------
> > An HTML attachment was scrubbed...
> > URL:
> >
> http://lists.osgeo.org/pipermail/geos-devel/attachments/20090719/d602a171/attachment.html
> >
> > ------------------------------
> >
> > _______________________________________________
> > geos-devel mailing list
> > geos-devel at lists.osgeo.org
> > http://lists.osgeo.org/mailman/listinfo/geos-devel
> >
> > End of geos-devel Digest, Vol 81, Issue 15
> > ******************************************
> >
>
>
>
> --
> "#define QUESTION ((bb) || !(bb))"  (Shakespeare)
> -------------- next part --------------
> An HTML attachment was scrubbed...
> URL:
> http://lists.osgeo.org/pipermail/geos-devel/attachments/20090720/40ba7c0d/attachment.html
>
> ------------------------------
>
> _______________________________________________
> geos-devel mailing list
> geos-devel at lists.osgeo.org
> http://lists.osgeo.org/mailman/listinfo/geos-devel
>
> End of geos-devel Digest, Vol 81, Issue 17
> ******************************************
>



-- 
"#define QUESTION ((bb) || !(bb))"  (Shakespeare)
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/geos-devel/attachments/20090720/bcc6c211/attachment-0001.html


More information about the geos-devel mailing list