Skip to main content

Hi,

 

I have a parcel data with various years in the postgis database and I need to executed topology year wise to find out the topology errors across the years. I have query to filter out the data in year wise and the query is (column1 < Year and column2 >= Year).

 

My first question is how to retrieve the various years in DB for that particular area and my second question is how to pass the years to fetch the data pertain to that particular year and pass it on to the dissolver transformer, kindly let me know.

 

 

 

 

 

@kumarkannan1980​ Hi there, thanks for your question. If I understand your ask correctly, you have some data which spans a few years of interest, and you would like to first filter the data by an area of interest, and then split that data out by year and dissolve each year's data. If this is the case, you could use a SpatialFilter transformer to extract the data by an area of interest. Or, there may also be a Spatial Filter parameter for the object that you're using to perform you DB query.

 

Once you've extracted your data by area, you could use an AttributeFilter transformer to split your data into different streams based on year. Just make sure that, when you set up the AttributeFilter, you choose to Import your year values from the dataset or feature cache. This will bring the years of interest into the Possible Attribute Values table of the transformer. See the screenshot below:

 

AttributeFilter_ImportValues Hopefully that helps out! If you need any further assistance, don't hesitate to reach out again 🙂


Hi @natalieatsafe​ 

 

Thanks for the reply . I tried the solution but I am facing difficulty to add the condition like (column1 > year AND column2<year) in attribute filter , could you please help me in this regard . In addition I need to loop the year starting from 2000 to 1830 and for each year I need to apply above condition to fetch the parcel from DB and find the topology errors if any.


I expect your data contains the year when each parcel is created, and the year when the parcel expires. In that case, create a copy of the parcel for each year it exists, and perform your tests for each year (group by year). See the demo below.

Parcels_and_Years


I expect your data contains the year when each parcel is created, and the year when the parcel expires. In that case, create a copy of the parcel for each year it exists, and perform your tests for each year (group by year). See the demo below.

Parcels_and_Years

Hi @geomancer​ 

 

Thanks for the reply, I tried your solution but I didn't get the expected result. Let me describe my task in more detail.

 

I need to check the fabric topology year by year starting from 2000 to 1830 (I have the list of years in a text file). For that I need to use one condition (column1 < year and column2 <=year) . For that I am using the test filter, dissolver and dotnutholeextracter. My question is how can I pass the year one by one to the test filter , so that dissolver and dotnutholeextracter will identify the gaps in that particular year.

 

 


Hi, I think there may be a problem in my workflow with parcels that have no expiration year. If that is the case, you should make a provision for that in the Cloner.

In your workflow, the DonutHoleExtractor will not find overlapping polygons, only holes between polygons. Is that enough to find all topology errors?

If you can provide us with some sample data (all parcels of all years in a small region of your data set) it will be easier to help you.


Same idea, but with better dummy parcels.

Parcels_and_Years_v2


Same idea, but with better dummy parcels.

Parcels_and_Years_v2

Hi @geomancer​ ,

 

Thanks for your effort to clear my doubts, please find the sample data and sample condition which I need to apply for my fabric topology check.

 

Sample Condition:

"col1" < 1961 AND "col2" >=1961

"col1" < 1950 AND "col2" >=1950

 

Yes I need to find the gap only in the specific conditions fabric data.

 

1961gap_sample1950gap_sampleAnd please find snapshot for the gaps in the specific year query.

 

 


Hi @kumarkannan1980​ , thank you for the sample data!

Passing your sample data through either of the workbenches I provided (using "col1" as Year_Originate and "col2" as Year_Expire), and grouping the parcels by year in an Inspector, I get exactly the same results you want to get.

Parcels_and_Years_v3So you should be able to proceed with these data.


Adding a Dissolver and a DonutHoleExtractor, as you described, gives the holes per year.

Parcels_and_Years_v3a


Adding a Dissolver and a DonutHoleExtractor, as you described, gives the holes per year.

Parcels_and_Years_v3a

Hi @geomancer​ 

Thanks for the solution , when I executed in Live data with 55541 parcels , it is taking lot of time . Around 2500 parcels only processed in half an hour after that it throws memory error, even though I tried in high end machine.


Adding a Dissolver and a DonutHoleExtractor, as you described, gives the holes per year.

Parcels_and_Years_v3a

Ahhhhhhhhhhh, that's a pity!

You can use a variation of the workspace with the selection of one year each time you run it (use a Published Parameter to set the year each time the workspace is run).

Parcels_and_Years_v4 

 


Or you can create a master workspace, which runs a second workspace from a WorkspaceRunner.

The master workspace sends Year values, the second workspace processes each year seperately, and exports the holes to shapefiles.

Parcels_and_Years_WorkspaceRunner


Hi @geomancer​ 

Thanks for the solution , when I executed in Live data with 55541 parcels , it is taking lot of time . Around 2500 parcels only processed in half an hour after that it throws memory error, even though I tried in high end machine.

Hi @geomancer​ 

 

Thanks a lot for helping me to find the solution for my task. It is working fine.


Adding a Dissolver and a DonutHoleExtractor, as you described, gives the holes per year.

Parcels_and_Years_v3a

Hi @geomancer​ ,

 

I need one more help from you. I need to have couple of workspacerunner in my master workbench. If the first workspacerunner completes the job second workspacerunner need to start. Could you please help me in this regard?

 


Hi @geomancer​ ,

 

I need one more help from you. I need to have couple of workspacerunner in my master workbench. If the first workspacerunner completes the job second workspacerunner need to start. Could you please help me in this regard?

 

Hi, cannot really help you here (this was the first WorkspaceRunner I ever used).

But I expect you can add just string them together (add your second WorkspaceRunner to the Succeeded gate of the first WorkspaceRunner). Or maybe you can add the logic to the 'inner' workspace. My best advise here is to work it out yourself with some sample data.


Hi @geomancer​ ,

 

I need one more help from you. I need to have couple of workspacerunner in my master workbench. If the first workspacerunner completes the job second workspacerunner need to start. Could you please help me in this regard?

 

Hi,

 

Thanks for the reply.

 

Yes, I tried the succeeded gate but it is not working, anyway I will try and let you know.

 


Reply