|
RE: Encounter Segmentation Fault with GEOS 2.2.2: msg#00072gis.geos.devel
HI: I have tried aString1.c_str(), but I still get the same error. And I even use such code: GEOSGeom aPolygon1,aPolygon2; const char *aString1 = "POLYGON ((125.331 0,3.35823e-06 125.331,-125.331 6.71646e-06,-1.00747e-05 -125.331,125.331 0))"; const char *aString2 = "POLYGON ((245.331 120,120 245.331,-5.331 120,120 -5.331,245.331 120))"; aPolygon1 = GEOSGeomFromWKT(aString1); aPolygon2 = GEOSGeomFromWKT(aString2); GEOSGeom anIntersection = GEOSIntersection(aPolygon1,aPolygon2); And the error is the same. Regards -----Original Message----- From: geos-devel-bounces@xxxxxxxxxxxxxxxxxxxx [mailto:geos-devel-bounces@xxxxxxxxxxxxxxxxxxxx] On Behalf Of Mateusz Loskot Sent: Monday, June 26, 2006 11:49 To: GEOS Development List Subject: Re: [geos-devel] Encounter Segmentation Fault with GEOS 2.2.2 Sheng Liang (SH/CBC) wrote: > Hi: I encountered an error of "Segmentation Fault" with GEOS 2.2.2. > What I am doing is to get intersection of two polygons. The error > happens to the specific polygong: POLYGON ((125.331 0,3.35823e-06 > 125.331,-125.331 6.71646e-06,-1.00747e-05 -125.331,125.331 0)) and > POLYGON ((245.331 120,120 245.331,-5.331 120,120 -5.331,245.331 120)) > There is no error to others polygons. So I think it must be an error > of GEOS 2.2.2 code. > > My code is : GEOSGeom aPolygon1,aPolygon2; string aString1("POLYGON > ((125.331 0,3.35823e-06 125.331,-125.331 6.71646e-06,-1.00747e-05 > -125.331,125.331 0))"); > > string aString2("POLYGON ((245.331 120,120 245.331,-5.331 120,120 > -5.331,245.331 120))"); > > aPolygon1 = GEOSGeomFromWKT(aString1.data()); > aPolygon2 = GEOSGeomFromWKT(aString2.data()); I'm suer in 99% that the problem is in your code above. You should not access internal buffer of std::string with data() member function. It should be used in very rare cases because it breaks OOP rule of encapsulation! It's available only for C compatibility. GEOSGeomFromWKT expects to get const char* : Geometry *GEOSGeomFromWKT(const char *wkt); so, you should call it as follows: aPolygon1 = GEOSGeomFromWKT(aString1.c_str()); std::string::c_str() returns const char*. Cheers -- Mateusz Loskot http://mateusz.loskot.net _______________________________________________ geos-devel mailing list geos-devel@xxxxxxxxxxxxxxxxxxxx http://geos.refractions.net/mailman/listinfo/geos-devel |
|
| <Prev in Thread] | Current Thread | [Next in Thread> |
|---|---|---|
| Previous by Date: | Re: Assertions in CoordinateArraySequence: 00072, Charlie Savage |
|---|---|
| Next by Date: | C API, GEOSGeom_getCoordSeq, quick question...: 00072, Stephen Lime |
| Previous by Thread: | Re: Encounter Segmentation Fault with GEOS 2.2.2i: 00072, Mateusz Loskot |
| Next by Thread: | Re: Encounter Segmentation Fault with GEOS 2.2.2: 00072, strk |
| Indexes: | [Date] [Thread] [Top] [All Lists] |
| News | FAQ | advertise |