[mapguide-users] Re: intersection with two polygones

saloua wakrim wakrimsaloua.wakrim at gmail.com
Fri Jun 5 07:52:38 EDT 2009


i've tried this code too to create polygon intersection and it gives me the
same error


Dim query2 As MgFeatureQueryOptions = New MgFeatureQueryOptions()

query2.SetFilter("FeatId<>0")

Dim batiments As MgLayer = map.GetLayers().GetItem("batiments")

Dim featureReader2 As MgFeatureReader = batiments.SelectFeatures(query2)

For i As Integer = 0 To polygones.Count - 1

'While featureReader2.ReadNext()



 Dim geometrybati As MgByteReader = featureReader2.GetGeometry("Geometry")

 Dim geometryReaderWriter2 As MgAgfReaderWriter = New MgAgfReaderWriter()

Dim batiment As MgPolygon = geometryReaderWriter2.Read(geometrybati)

listbatiments.Add(batiment)

Dim polyintersection As MgPolygon = polygones(i).Difference(batiment)











 End While

Next


2009/6/5 saloua wakrim <wakrimsaloua.wakrim at gmail.com>

> hi all developpers! i draw polygones in map on layer wich named "
> champs_reels" (as my code shows it), i want to draw intersection betwen
> these polygones and polygones of another layer wich named "batiments" (as my
> code shows), i want drw a polygones wich constitute difference between both
> of these polygones (on layers" champs_reels" and "batiments"), this my
> code when i compile it it gives me this error:
> A geometry exception occurred.
> "TopologyException: side location conflict (893583,107815)", if some one
> has any idea please tell it me, thanks a lot in advance: what's wrong???
>
>
> Dim query As MgFeatureQueryOptions = New MgFeatureQueryOptions()
>
> query.SetFilter(
> "ID<>0")
>
> Dim clalque_vue_cam As MgLayer = map.GetLayers().GetItem("champs_reels")
>
> Dim featureReader As MgFeatureReader =
> clalque_vue_cam.SelectFeatures(query)
>
> While featureReader.ReadNext()
>
> Dim geometrypoly As MgByteReader = featureReader.GetGeometry(
> "BufferGeometry")
>
> Dim geometryReaderWriter As MgAgfReaderWriter = New MgAgfReaderWriter()
>
> Dim poly As MgPolygon = geometryReaderWriter.Read(geometrypoly)
>
> polygones.Add(poly)
>
>
>
> End While
>
> Dim propertyValues As MgPropertyCollection = New MgPropertyCollection()
>
> Dim coordcol As MgCoordinateCollection = New MgCoordinateCollection()
>
> Dim query2 As MgFeatureQueryOptions = New MgFeatureQueryOptions()
>
> query2.SetFilter(
> "FeatId<>0")
>
> Dim batiments As MgLayer = map.GetLayers().GetItem("batiments")
>
> Dim featureReader2 As MgFeatureReader = batiments.SelectFeatures(query2)
>
>
>
> While featureReader2.ReadNext()
>
>
>
> Dim geometrybati As MgByteReader = featureReader2.GetGeometry("Geometry")
>
> Dim geometryReaderWriter2 As MgAgfReaderWriter = New MgAgfReaderWriter()
>
> Dim batiment As MgPolygon = geometryReaderWriter2.Read(geometrybati)
>
> 'listbatiments.Add(batiment)
>
> ' If polygones(i).Touches(batiment) Then
>
> Dim polyintersection As MgPolygon = polygones(i).Difference(batiment)
>
> 'Dim cord As MgCoordinateIterator = polyintersection.GetCoordinates()
>
>
>
> 'While cord.MoveNext()
>
> 'Dim cordonees As MgCoordinate = cord.GetCurrent()
>
> 'coordcol.Add(cordonees)
>
> 'Dim outring As MgLinearRing = geomfactory.CreateLinearRing(coordcol)
>
> 'Dim poly As MgPolygon = geomfactory.CreatePolygon(outring, Nothing)
>
> propertyValues.Add(
> New MgGeometryProperty("BufferGeometry", NewMgAgfReaderWriter().Write(polyintersection )))
>
> Dim insert As MgInsertFeatures = New MgInsertFeatures(
> "BufferLayerSchema2:BufferClass2", propertyValues)
>
>
>
> Dim commands As MgFeatureCommandCollection = NewMgFeatureCommandCollection()
>
> commands.Add(insert)
>
>
>
> feature.UpdateFeatures(bufferFeatureResId2, commands,
> False)
>
> End While
>
>
>
>
>
>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.osgeo.org/pipermail/mapguide-users/attachments/20090605/ca2ddaef/attachment.html


More information about the mapguide-users mailing list