Quantcast
Channel: Forums - Geodatabase & ArcSDE
Viewing all articles
Browse latest Browse all 1584

Performance Issue (I/O bound) when processing geometric network

$
0
0
I have two machines in local area network: one installed with enterprise geodatabase (running ArcSDE service), and the other machine as a client. The client machine connects to the enterprise geodatabase, retrieve feature classes and process the geometric network.

The application basically goes through each edge of the geometric network and retrieves their start and end junctions, does a little processing and then insert the information to a local Oracle database on client machine.

As I observe, the client machine runs constantly under 10% CPU usage. So it seems to be an I/O bound issue. I tried multi-threading which creates several or lots of connections to SDE server, and tried to trieve data in parallel. But it doesn't do much better and CPU usage is constantly under 15%.

Here are some code snippet for processing the data (in VB.NET):

Private featureWorkspace As IFeatureWorkspace
Private netColl As INetworkCollection
Private geometricNetwork As IGeometricNetwork
Private netElements As INetElements
Private netTopology As INetTopology

netColl = featureWorkspace.OpenFeatureDataset("xxx.DISTRIBUTION")
geometricNetwork = netColl.GeometricNetworkByName("xxx.DISTRIBUTION_NET")
netElements = geometricNetwork.Network
netTopology = geometricNetwork.Network

'Get the edge elements
Dim elements As IEnumNetEID = netElements.GetEIDs(clsid, objid, esriElementType.esriETEdge)
elements.Reset()

For i As Integer = 1 To elements.Count
Dim elementClassID, elementOid, elementSubid, fromJcnEid, toJcnEid As Integer
Dim edgeEid As Integer = elements.Next()

netElements.QueryIDs(edgeEid, esriElementType.esriETEdge, elementClassID, elementOid, elementSubid)
netTopology.GetFromToJunctionEIDs(edgeEid, fromJcnEid, toJcnEid)

'individual segment and it's to/from node geometries
Dim segmentGeometry As ICurve = geometricNetwork.GeometryForEdgeEID(edgeEid)
Dim fromPoint As ESRI.ArcGIS.Geometry.IPoint = geometricNetwork.GeometryForJunctionEID(fromJcnEid)
Dim toPoint As ESRI.ArcGIS.Geometry.IPoint = geometricNetwork.GeometryForJunctionEID(toJcnEid)

Next

Does any one know I can overcome the I/O bound issue? Anything I can configure on ArcSDE server to allow faster mutiple connections? Or any code improvement in above can boost performance?

Thanks!

Viewing all articles
Browse latest Browse all 1584

Trending Articles