Select to view content in your preferred language

How to run batch geoprocessings where the processing takes place on the database

395
0
06-18-2020 09:20 AM
SebastianKrings
Frequent Contributor

Hi,

I have to check for a set of 20 - 100 points (a elem A) which other points (b elem B) from a database table (~78.000) are laying inside a specific buffer range of that point A.

We are using .NET c# and developing and ArcGisPro 2.5 AddIn.

Currently I am doing as follows:

1) iterate over all points a elem A

   2) foreach point a create a buffer of a given range

   3) load all points b elem B from SDE

   4) foreach point b rund a contains-geoprocessing

       

GeometryEngine.Instance.Contains(a, b);

Loading the Points from database  takes bout 7 minutes to finish.

Processing the Contains takes for only one point a about 15 minutes per 10.000 points b, so approximately 105 minutes for all 77.000 points (just for one point a)

If there were as said about 100 points this will take days to finish.

Well we want to use that processing within a dialog which should not take more time than a minute.

The only other way I know is achieving that in almost that time is to use an Oracle spatial query.

But I try to avoid direct sqls.

So my question in short is:

How do i run batch processings where the calculations are done fully on the database and the client only receives the result?

0 Kudos
0 Replies