I don't think the filter fallback you mention (used only when redering) is causing the problem of being unable to tell how many rings make up a multi-polygon when using the feature service API, which is what Maciej seems to be asking.
Maciej, did you also try iterating over the interior rings, using GetInteriorRingCount() and GetInteriorRing(). Even though the polygon is made up of two outer rings, it is possible that in the data source it is described as a Polygon, in which case the second ring would have to necessarily be put in the InteriorRings collection. Traian From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On Behalf Of Zac Spitzer Sent: Tuesday, January 22, 2008 10:09 AM To: MapGuide Users Mail List Subject: Re: [mapguide-users] Problem whit generate kml from mapguide. Mapguide currently does this stupid silent fall back and returns whole featuresource without the filter if the filter fails.....which would explain this, unpredictably frustrating huh? z On Jan 23, 2008 1:57 AM, Maciej Skorczewski <[EMAIL PROTECTED]<mailto:[EMAIL PROTECTED]>> wrote: Hi! I wrote aplication who generate kml files. all work fine but i have problem whit some polygons (and use API to get coords of this polygon) some screenshot http://img179.imageshack.us/img179/1966/41289677tu3.png The problem is: when i try to get coords of polygon nr.1 (in this place are two object-polygon in one source after use filter guery) ex. i use $featureReader->ReadNext() ...and MG show me 2 polygons (1 polygon) ++++++ ++++++ (second polygon) ====== ====== can't get any coords of this. the code is ______________ $featureService = $siteConnection->CreateService(MgServiceType::FeatureService); $queryOptions = new MgFeatureQueryOptions(); $queryOptions->SetFilter("FID > 253"); $featureReader = $featureService->SelectFeatures(new MgResourceIdentifier($x_adress),$x_layer, $queryOptions); $geometryReaderWriter = new MgAgfReaderWriter(); // // this is loop on FID > 1(next are 2,3,4,...) // // while ($featureReader->ReadNext()) { $muniName = $featureReader->$a7_1($a7_0); $byteReader = $featureReader->GetGeometry('Geometry'); $geometry = $geometryReaderWriter->Read($byteReader); $point = $geometry->GetCentroid(); $x = $point->GetCoordinate()->GetX(); $y = $point->GetCoordinate()->GetY(); echo '<Placemark>'; // // This can be a bug... // question: how to know that there are 2 object-polygon // and $linearRing get coords of first the second, polygon object. // // $linearRing = $geometry->GetExteriorRing(); $coordIter = $linearRing->GetCoordinates(); echo'<MultiGeometry>'; echo'<Polygon>'; echo'<outerBoundaryIs>'; echo'<LinearRing>'; echo'<coordinates>'; // // So when loop is in 1. iterate it show 2 object polygons. // ...and MG don't show any coords // while ($coordIter->MoveNext()) { $coord = $coordIter->GetCurrent(); if ($coord != null) { $coord->GetX().",".$coord->GetY().",0 "; } } echo'</coordinates>'; echo'</LinearRing>'; echo'</outerBoundaryIs>'; echo'</Polygon>'; echo'</MultiGeometry></Placemark>'; } $featureReader->Close(); echo '</Document></kml>'; thx for any help. maciek _______________________________________________ mapguide-users mailing list [email protected]<mailto:[email protected]> http://lists.osgeo.org/mailman/listinfo/mapguide-users -- Zac Spitzer - http://zacster.blogspot.com (My Blog) +61 405 847 168
_______________________________________________ mapguide-users mailing list [email protected] http://lists.osgeo.org/mailman/listinfo/mapguide-users
