Determining if raster can be clipped with polygon using ArcObjects? The Next CEO of Stack...
Fastest way to shutdown Ubuntu Mate 18.10
How to safely derail a train during transit?
Does it take more energy to get to Venus or to Mars?
Why do remote companies require working in the US?
How do I go from 300 unfinished/half written blog posts, to published posts?
Visit to the USA with ESTA approved before trip to Iran
Would this house-rule that treats advantage as a +1 to the roll instead (and disadvantage as -1) and allows them to stack be balanced?
I believe this to be a fraud - hired, then asked to cash check and send cash as Bitcoin
What is the point of a new vote on May's deal when the indicative votes suggest she will not win?
Why is there a PLL in CPU?
Anatomically Correct Mesopelagic Aves
Is there a good way to store credentials outside of a password manager?
How to use tikz in fbox?
What does this shorthand mean?
What can we do to stop prior company from asking us questions?
What's the point of interval inversion?
How do spells that require an ability check vs. the caster's spell save DC work?
% symbol leads to superlong (forever?) compilations
Opposite of a diet
Customer Requests (Sometimes) Drive Me Bonkers!
Trouble understanding the speech of overseas colleagues
Removing read access from a file
Is a stroke of luck acceptable after a series of unfavorable events?
When did Lisp start using symbols for arithmetic?
Determining if raster can be clipped with polygon using ArcObjects?
The Next CEO of Stack OverflowOutput raster extents when using the Spatial Analyst Extract By Mask tool to clip a raster“There is not enough memory” Error when accessing IArea.LabelPointExample of a “bleeding” raster in GIS?Clipping raster python script stops abruptly?Merging attributes from point with containing polygon?Cannot set boolean operator within ArcMap ModelBuilder as TrueGetting catalog path from IFeatureClass using ArcObjects?Clipping raster by mask layer polygon produces Nodata values in QGISST_Intersection between two raster returning different results depending on input orderDetermining validity of odd polygon using ArcObjects?
Using ArcGIS 10.4.1 ArcObjects with geoprocessing. I have an input feature class with 100s of polygons and also one raster. I iterate through each polygon and clip the raster and then do additional work. It has performed well up to today. It seems some our polygons are outside of the raster area.
So my code in VB.NET looks like this:
'create an IVariantArray to hold the parameter values.
Dim parameters As IVariantArray = New VarArray
'populate the variant array with parameter values.
parameters.Add(inSurfaceFullName) 'input surface
parameters.Add("") 'rectangle to be used as the clipper
parameters.Add(outClippedRasterFullName) 'the output raster (ex Raster_3)
parameters.Add(inClippingPolyFullName) 'the input template dataset to be used as a clipper. in this case our sub feature class (NOT the input feature class)
parameters.Add("") 'all the pixels with the specified value will be set to NoData in the output raster dataset.
parameters.Add("ClippingGeometry") 'the raster dataset is clipped based on the perimeter of the polygon shape.
'execute the model tool by name.
Dim res As IGeoProcessorResult = GP.Execute("Clip_management", parameters, Nothing)
When it gets to the polygon that does not intersect the raster I get this error:
System.Runtime.InteropServices.COMException (0x80004005): Error HRESULT E_FAIL has been returned from a call to a COM component.
at ESRI.ArcGIS.Geoprocessing.GeoProcessorClass.Execute(String Name, IVariantArray ipValues, ITrackCancel pTrackCancel)
I have been looking in the ESRI SDK for a pre-process where I can check if the polygon intersects the raster with a True/False as the result. Is that something that exists? Or another way to check the intersection of a geometry with a raster?
The only thing I have tried is to check if the extents intersect but I can see where this may fail. For example a circle geometry just at the corner of the raster. the envelopes will intersect but the geometry and raster will not.
With help from @MichaelStimson, I ended up testing the raster envelope against the polygon geometry. Seems to work rather well. Here is the function I use to test all features in a feature class against the raster:
''' <summary>
''' this function will determine if the polygon feature class is outside of the raster boundary. it will test all features in the
''' feature class and return one result for the overall disjoint result.
''' <param name="pInSurfaceEnv">the input surface envelope</param>
''' <param name="pPolyDsName">the input polygon Dataset name object</param>
''' </summary>
''' <returns></returns>
''' <remarks></remarks>
Private Function IsFeatureClassDisjointWithRaster(pInSurfaceEnv As IEnvelope, pPolyDsName As IDatasetName) As Boolean
Try
Dim pRelOp As IRelationalOperator2 = CType(pInSurfaceEnv, IRelationalOperator2)
Dim pFeatClass As IFeatureClass = OpenFileFeatClassDataset(pPolyDsName.WorkspaceName.PathName, pPolyDsName.Name)
Dim pFeatCursor As IFeatureCursor = pFeatClass.Search(Nothing, True)
Dim IsFeatClassDisjoint As Boolean = True 'we assume the entire feature class is disjoint
Dim pFeature As IFeature = pFeatCursor.NextFeature
Do While Not pFeature Is Nothing
Dim IsFeatureDisjoint As Boolean = pRelOp.Disjoint(pFeature.ShapeCopy)
'we only need one feature to be non disjoint to make the entire feature class non disjoint
If Not IsFeatureDisjoint Then IsFeatClassDisjoint = False
'next feature
pFeature = pFeatCursor.NextFeature
Loop
Return IsFeatClassDisjoint
Catch ex As Exception
Throw
End Try
End Function
raster polygon arcobjects clip intersect
|
show 5 more comments
Using ArcGIS 10.4.1 ArcObjects with geoprocessing. I have an input feature class with 100s of polygons and also one raster. I iterate through each polygon and clip the raster and then do additional work. It has performed well up to today. It seems some our polygons are outside of the raster area.
So my code in VB.NET looks like this:
'create an IVariantArray to hold the parameter values.
Dim parameters As IVariantArray = New VarArray
'populate the variant array with parameter values.
parameters.Add(inSurfaceFullName) 'input surface
parameters.Add("") 'rectangle to be used as the clipper
parameters.Add(outClippedRasterFullName) 'the output raster (ex Raster_3)
parameters.Add(inClippingPolyFullName) 'the input template dataset to be used as a clipper. in this case our sub feature class (NOT the input feature class)
parameters.Add("") 'all the pixels with the specified value will be set to NoData in the output raster dataset.
parameters.Add("ClippingGeometry") 'the raster dataset is clipped based on the perimeter of the polygon shape.
'execute the model tool by name.
Dim res As IGeoProcessorResult = GP.Execute("Clip_management", parameters, Nothing)
When it gets to the polygon that does not intersect the raster I get this error:
System.Runtime.InteropServices.COMException (0x80004005): Error HRESULT E_FAIL has been returned from a call to a COM component.
at ESRI.ArcGIS.Geoprocessing.GeoProcessorClass.Execute(String Name, IVariantArray ipValues, ITrackCancel pTrackCancel)
I have been looking in the ESRI SDK for a pre-process where I can check if the polygon intersects the raster with a True/False as the result. Is that something that exists? Or another way to check the intersection of a geometry with a raster?
The only thing I have tried is to check if the extents intersect but I can see where this may fail. For example a circle geometry just at the corner of the raster. the envelopes will intersect but the geometry and raster will not.
With help from @MichaelStimson, I ended up testing the raster envelope against the polygon geometry. Seems to work rather well. Here is the function I use to test all features in a feature class against the raster:
''' <summary>
''' this function will determine if the polygon feature class is outside of the raster boundary. it will test all features in the
''' feature class and return one result for the overall disjoint result.
''' <param name="pInSurfaceEnv">the input surface envelope</param>
''' <param name="pPolyDsName">the input polygon Dataset name object</param>
''' </summary>
''' <returns></returns>
''' <remarks></remarks>
Private Function IsFeatureClassDisjointWithRaster(pInSurfaceEnv As IEnvelope, pPolyDsName As IDatasetName) As Boolean
Try
Dim pRelOp As IRelationalOperator2 = CType(pInSurfaceEnv, IRelationalOperator2)
Dim pFeatClass As IFeatureClass = OpenFileFeatClassDataset(pPolyDsName.WorkspaceName.PathName, pPolyDsName.Name)
Dim pFeatCursor As IFeatureCursor = pFeatClass.Search(Nothing, True)
Dim IsFeatClassDisjoint As Boolean = True 'we assume the entire feature class is disjoint
Dim pFeature As IFeature = pFeatCursor.NextFeature
Do While Not pFeature Is Nothing
Dim IsFeatureDisjoint As Boolean = pRelOp.Disjoint(pFeature.ShapeCopy)
'we only need one feature to be non disjoint to make the entire feature class non disjoint
If Not IsFeatureDisjoint Then IsFeatClassDisjoint = False
'next feature
pFeature = pFeatCursor.NextFeature
Loop
Return IsFeatClassDisjoint
Catch ex As Exception
Throw
End Try
End Function
raster polygon arcobjects clip intersect
1
I can't speak to vb.net, but you could do a raster to polygon conversion and check against that output. If that's too expensive with a million tiny polygons then convert to a boolean raster before polygonizing.
– mikewatt
22 hours ago
That method has merit @mikewatt, if you have a spatial analyst license you can perform raster to polygon on IsNull(your_raster) then with the query filter of "GRIDCODE = 0" delete searched rows (help.arcgis.com/en/sdk/10.0/arcobjects_net/componenthelp/… FeatureClass implements ITable) to remove the null portion... this is more time consuming but ensures there is actual data in the image the polygon intersects.
– Michael Stimson
22 hours ago
1
Why not just catch and handle the error?
– user2856
22 hours ago
Well I may have many polygons and they can be large. So wouldn't I be doing an extract twice for each polygon that is within the raster?
– sinDizzy
21 hours ago
So test the extents are not disjoint, then do the clip and catch the exception where the envelopes intersect but the geometry and raster don't.
– user2856
20 hours ago
|
show 5 more comments
Using ArcGIS 10.4.1 ArcObjects with geoprocessing. I have an input feature class with 100s of polygons and also one raster. I iterate through each polygon and clip the raster and then do additional work. It has performed well up to today. It seems some our polygons are outside of the raster area.
So my code in VB.NET looks like this:
'create an IVariantArray to hold the parameter values.
Dim parameters As IVariantArray = New VarArray
'populate the variant array with parameter values.
parameters.Add(inSurfaceFullName) 'input surface
parameters.Add("") 'rectangle to be used as the clipper
parameters.Add(outClippedRasterFullName) 'the output raster (ex Raster_3)
parameters.Add(inClippingPolyFullName) 'the input template dataset to be used as a clipper. in this case our sub feature class (NOT the input feature class)
parameters.Add("") 'all the pixels with the specified value will be set to NoData in the output raster dataset.
parameters.Add("ClippingGeometry") 'the raster dataset is clipped based on the perimeter of the polygon shape.
'execute the model tool by name.
Dim res As IGeoProcessorResult = GP.Execute("Clip_management", parameters, Nothing)
When it gets to the polygon that does not intersect the raster I get this error:
System.Runtime.InteropServices.COMException (0x80004005): Error HRESULT E_FAIL has been returned from a call to a COM component.
at ESRI.ArcGIS.Geoprocessing.GeoProcessorClass.Execute(String Name, IVariantArray ipValues, ITrackCancel pTrackCancel)
I have been looking in the ESRI SDK for a pre-process where I can check if the polygon intersects the raster with a True/False as the result. Is that something that exists? Or another way to check the intersection of a geometry with a raster?
The only thing I have tried is to check if the extents intersect but I can see where this may fail. For example a circle geometry just at the corner of the raster. the envelopes will intersect but the geometry and raster will not.
With help from @MichaelStimson, I ended up testing the raster envelope against the polygon geometry. Seems to work rather well. Here is the function I use to test all features in a feature class against the raster:
''' <summary>
''' this function will determine if the polygon feature class is outside of the raster boundary. it will test all features in the
''' feature class and return one result for the overall disjoint result.
''' <param name="pInSurfaceEnv">the input surface envelope</param>
''' <param name="pPolyDsName">the input polygon Dataset name object</param>
''' </summary>
''' <returns></returns>
''' <remarks></remarks>
Private Function IsFeatureClassDisjointWithRaster(pInSurfaceEnv As IEnvelope, pPolyDsName As IDatasetName) As Boolean
Try
Dim pRelOp As IRelationalOperator2 = CType(pInSurfaceEnv, IRelationalOperator2)
Dim pFeatClass As IFeatureClass = OpenFileFeatClassDataset(pPolyDsName.WorkspaceName.PathName, pPolyDsName.Name)
Dim pFeatCursor As IFeatureCursor = pFeatClass.Search(Nothing, True)
Dim IsFeatClassDisjoint As Boolean = True 'we assume the entire feature class is disjoint
Dim pFeature As IFeature = pFeatCursor.NextFeature
Do While Not pFeature Is Nothing
Dim IsFeatureDisjoint As Boolean = pRelOp.Disjoint(pFeature.ShapeCopy)
'we only need one feature to be non disjoint to make the entire feature class non disjoint
If Not IsFeatureDisjoint Then IsFeatClassDisjoint = False
'next feature
pFeature = pFeatCursor.NextFeature
Loop
Return IsFeatClassDisjoint
Catch ex As Exception
Throw
End Try
End Function
raster polygon arcobjects clip intersect
Using ArcGIS 10.4.1 ArcObjects with geoprocessing. I have an input feature class with 100s of polygons and also one raster. I iterate through each polygon and clip the raster and then do additional work. It has performed well up to today. It seems some our polygons are outside of the raster area.
So my code in VB.NET looks like this:
'create an IVariantArray to hold the parameter values.
Dim parameters As IVariantArray = New VarArray
'populate the variant array with parameter values.
parameters.Add(inSurfaceFullName) 'input surface
parameters.Add("") 'rectangle to be used as the clipper
parameters.Add(outClippedRasterFullName) 'the output raster (ex Raster_3)
parameters.Add(inClippingPolyFullName) 'the input template dataset to be used as a clipper. in this case our sub feature class (NOT the input feature class)
parameters.Add("") 'all the pixels with the specified value will be set to NoData in the output raster dataset.
parameters.Add("ClippingGeometry") 'the raster dataset is clipped based on the perimeter of the polygon shape.
'execute the model tool by name.
Dim res As IGeoProcessorResult = GP.Execute("Clip_management", parameters, Nothing)
When it gets to the polygon that does not intersect the raster I get this error:
System.Runtime.InteropServices.COMException (0x80004005): Error HRESULT E_FAIL has been returned from a call to a COM component.
at ESRI.ArcGIS.Geoprocessing.GeoProcessorClass.Execute(String Name, IVariantArray ipValues, ITrackCancel pTrackCancel)
I have been looking in the ESRI SDK for a pre-process where I can check if the polygon intersects the raster with a True/False as the result. Is that something that exists? Or another way to check the intersection of a geometry with a raster?
The only thing I have tried is to check if the extents intersect but I can see where this may fail. For example a circle geometry just at the corner of the raster. the envelopes will intersect but the geometry and raster will not.
With help from @MichaelStimson, I ended up testing the raster envelope against the polygon geometry. Seems to work rather well. Here is the function I use to test all features in a feature class against the raster:
''' <summary>
''' this function will determine if the polygon feature class is outside of the raster boundary. it will test all features in the
''' feature class and return one result for the overall disjoint result.
''' <param name="pInSurfaceEnv">the input surface envelope</param>
''' <param name="pPolyDsName">the input polygon Dataset name object</param>
''' </summary>
''' <returns></returns>
''' <remarks></remarks>
Private Function IsFeatureClassDisjointWithRaster(pInSurfaceEnv As IEnvelope, pPolyDsName As IDatasetName) As Boolean
Try
Dim pRelOp As IRelationalOperator2 = CType(pInSurfaceEnv, IRelationalOperator2)
Dim pFeatClass As IFeatureClass = OpenFileFeatClassDataset(pPolyDsName.WorkspaceName.PathName, pPolyDsName.Name)
Dim pFeatCursor As IFeatureCursor = pFeatClass.Search(Nothing, True)
Dim IsFeatClassDisjoint As Boolean = True 'we assume the entire feature class is disjoint
Dim pFeature As IFeature = pFeatCursor.NextFeature
Do While Not pFeature Is Nothing
Dim IsFeatureDisjoint As Boolean = pRelOp.Disjoint(pFeature.ShapeCopy)
'we only need one feature to be non disjoint to make the entire feature class non disjoint
If Not IsFeatureDisjoint Then IsFeatClassDisjoint = False
'next feature
pFeature = pFeatCursor.NextFeature
Loop
Return IsFeatClassDisjoint
Catch ex As Exception
Throw
End Try
End Function
raster polygon arcobjects clip intersect
raster polygon arcobjects clip intersect
edited 48 secs ago
Hornbydd
26.9k32957
26.9k32957
asked 23 hours ago
sinDizzysinDizzy
257110
257110
1
I can't speak to vb.net, but you could do a raster to polygon conversion and check against that output. If that's too expensive with a million tiny polygons then convert to a boolean raster before polygonizing.
– mikewatt
22 hours ago
That method has merit @mikewatt, if you have a spatial analyst license you can perform raster to polygon on IsNull(your_raster) then with the query filter of "GRIDCODE = 0" delete searched rows (help.arcgis.com/en/sdk/10.0/arcobjects_net/componenthelp/… FeatureClass implements ITable) to remove the null portion... this is more time consuming but ensures there is actual data in the image the polygon intersects.
– Michael Stimson
22 hours ago
1
Why not just catch and handle the error?
– user2856
22 hours ago
Well I may have many polygons and they can be large. So wouldn't I be doing an extract twice for each polygon that is within the raster?
– sinDizzy
21 hours ago
So test the extents are not disjoint, then do the clip and catch the exception where the envelopes intersect but the geometry and raster don't.
– user2856
20 hours ago
|
show 5 more comments
1
I can't speak to vb.net, but you could do a raster to polygon conversion and check against that output. If that's too expensive with a million tiny polygons then convert to a boolean raster before polygonizing.
– mikewatt
22 hours ago
That method has merit @mikewatt, if you have a spatial analyst license you can perform raster to polygon on IsNull(your_raster) then with the query filter of "GRIDCODE = 0" delete searched rows (help.arcgis.com/en/sdk/10.0/arcobjects_net/componenthelp/… FeatureClass implements ITable) to remove the null portion... this is more time consuming but ensures there is actual data in the image the polygon intersects.
– Michael Stimson
22 hours ago
1
Why not just catch and handle the error?
– user2856
22 hours ago
Well I may have many polygons and they can be large. So wouldn't I be doing an extract twice for each polygon that is within the raster?
– sinDizzy
21 hours ago
So test the extents are not disjoint, then do the clip and catch the exception where the envelopes intersect but the geometry and raster don't.
– user2856
20 hours ago
1
1
I can't speak to vb.net, but you could do a raster to polygon conversion and check against that output. If that's too expensive with a million tiny polygons then convert to a boolean raster before polygonizing.
– mikewatt
22 hours ago
I can't speak to vb.net, but you could do a raster to polygon conversion and check against that output. If that's too expensive with a million tiny polygons then convert to a boolean raster before polygonizing.
– mikewatt
22 hours ago
That method has merit @mikewatt, if you have a spatial analyst license you can perform raster to polygon on IsNull(your_raster) then with the query filter of "GRIDCODE = 0" delete searched rows (help.arcgis.com/en/sdk/10.0/arcobjects_net/componenthelp/… FeatureClass implements ITable) to remove the null portion... this is more time consuming but ensures there is actual data in the image the polygon intersects.
– Michael Stimson
22 hours ago
That method has merit @mikewatt, if you have a spatial analyst license you can perform raster to polygon on IsNull(your_raster) then with the query filter of "GRIDCODE = 0" delete searched rows (help.arcgis.com/en/sdk/10.0/arcobjects_net/componenthelp/… FeatureClass implements ITable) to remove the null portion... this is more time consuming but ensures there is actual data in the image the polygon intersects.
– Michael Stimson
22 hours ago
1
1
Why not just catch and handle the error?
– user2856
22 hours ago
Why not just catch and handle the error?
– user2856
22 hours ago
Well I may have many polygons and they can be large. So wouldn't I be doing an extract twice for each polygon that is within the raster?
– sinDizzy
21 hours ago
Well I may have many polygons and they can be large. So wouldn't I be doing an extract twice for each polygon that is within the raster?
– sinDizzy
21 hours ago
So test the extents are not disjoint, then do the clip and catch the exception where the envelopes intersect but the geometry and raster don't.
– user2856
20 hours ago
So test the extents are not disjoint, then do the clip and catch the exception where the envelopes intersect but the geometry and raster don't.
– user2856
20 hours ago
|
show 5 more comments
1 Answer
1
active
oldest
votes
First you can start by obtaining the extent of the raster (IRasterDataset) with IGeodataset.Extent which returns an IEnvelope which can be cast as an IRelationalOperator.
For each polygon geometry (IGeometry) then test your relational operator for Disjoint which is quicker than trying to find Overlaps. If IRelationalOperator.Disjoint then the polygon does not intersect the extent of the raster so skip to the next one.
Thanks for the input. As per my post "The only thing I have tried is to check if the extents intersect but I can see where this may fail. For example a circle geometry just at the corner of the raster. the envelopes will intersect but the geometry and raster will not."
– sinDizzy
21 hours ago
Do you have spatial analyst extension? Does the suggestion by mikewatt sound like a possibility?
– Michael Stimson
20 hours ago
I misread the message. I think it will work. I will test with my data.
– sinDizzy
18 hours ago
add a comment |
Your Answer
StackExchange.ready(function() {
var channelOptions = {
tags: "".split(" "),
id: "79"
};
initTagRenderer("".split(" "), "".split(" "), channelOptions);
StackExchange.using("externalEditor", function() {
// Have to fire editor after snippets, if snippets enabled
if (StackExchange.settings.snippets.snippetsEnabled) {
StackExchange.using("snippets", function() {
createEditor();
});
}
else {
createEditor();
}
});
function createEditor() {
StackExchange.prepareEditor({
heartbeatType: 'answer',
autoActivateHeartbeat: false,
convertImagesToLinks: false,
noModals: true,
showLowRepImageUploadWarning: true,
reputationToPostImages: null,
bindNavPrevention: true,
postfix: "",
imageUploader: {
brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
allowUrls: true
},
onDemand: true,
discardSelector: ".discard-answer"
,immediatelyShowMarkdownHelp:true
});
}
});
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f316932%2fdetermining-if-raster-can-be-clipped-with-polygon-using-arcobjects%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
1 Answer
1
active
oldest
votes
1 Answer
1
active
oldest
votes
active
oldest
votes
active
oldest
votes
First you can start by obtaining the extent of the raster (IRasterDataset) with IGeodataset.Extent which returns an IEnvelope which can be cast as an IRelationalOperator.
For each polygon geometry (IGeometry) then test your relational operator for Disjoint which is quicker than trying to find Overlaps. If IRelationalOperator.Disjoint then the polygon does not intersect the extent of the raster so skip to the next one.
Thanks for the input. As per my post "The only thing I have tried is to check if the extents intersect but I can see where this may fail. For example a circle geometry just at the corner of the raster. the envelopes will intersect but the geometry and raster will not."
– sinDizzy
21 hours ago
Do you have spatial analyst extension? Does the suggestion by mikewatt sound like a possibility?
– Michael Stimson
20 hours ago
I misread the message. I think it will work. I will test with my data.
– sinDizzy
18 hours ago
add a comment |
First you can start by obtaining the extent of the raster (IRasterDataset) with IGeodataset.Extent which returns an IEnvelope which can be cast as an IRelationalOperator.
For each polygon geometry (IGeometry) then test your relational operator for Disjoint which is quicker than trying to find Overlaps. If IRelationalOperator.Disjoint then the polygon does not intersect the extent of the raster so skip to the next one.
Thanks for the input. As per my post "The only thing I have tried is to check if the extents intersect but I can see where this may fail. For example a circle geometry just at the corner of the raster. the envelopes will intersect but the geometry and raster will not."
– sinDizzy
21 hours ago
Do you have spatial analyst extension? Does the suggestion by mikewatt sound like a possibility?
– Michael Stimson
20 hours ago
I misread the message. I think it will work. I will test with my data.
– sinDizzy
18 hours ago
add a comment |
First you can start by obtaining the extent of the raster (IRasterDataset) with IGeodataset.Extent which returns an IEnvelope which can be cast as an IRelationalOperator.
For each polygon geometry (IGeometry) then test your relational operator for Disjoint which is quicker than trying to find Overlaps. If IRelationalOperator.Disjoint then the polygon does not intersect the extent of the raster so skip to the next one.
First you can start by obtaining the extent of the raster (IRasterDataset) with IGeodataset.Extent which returns an IEnvelope which can be cast as an IRelationalOperator.
For each polygon geometry (IGeometry) then test your relational operator for Disjoint which is quicker than trying to find Overlaps. If IRelationalOperator.Disjoint then the polygon does not intersect the extent of the raster so skip to the next one.
answered 22 hours ago
Michael StimsonMichael Stimson
21.7k22460
21.7k22460
Thanks for the input. As per my post "The only thing I have tried is to check if the extents intersect but I can see where this may fail. For example a circle geometry just at the corner of the raster. the envelopes will intersect but the geometry and raster will not."
– sinDizzy
21 hours ago
Do you have spatial analyst extension? Does the suggestion by mikewatt sound like a possibility?
– Michael Stimson
20 hours ago
I misread the message. I think it will work. I will test with my data.
– sinDizzy
18 hours ago
add a comment |
Thanks for the input. As per my post "The only thing I have tried is to check if the extents intersect but I can see where this may fail. For example a circle geometry just at the corner of the raster. the envelopes will intersect but the geometry and raster will not."
– sinDizzy
21 hours ago
Do you have spatial analyst extension? Does the suggestion by mikewatt sound like a possibility?
– Michael Stimson
20 hours ago
I misread the message. I think it will work. I will test with my data.
– sinDizzy
18 hours ago
Thanks for the input. As per my post "The only thing I have tried is to check if the extents intersect but I can see where this may fail. For example a circle geometry just at the corner of the raster. the envelopes will intersect but the geometry and raster will not."
– sinDizzy
21 hours ago
Thanks for the input. As per my post "The only thing I have tried is to check if the extents intersect but I can see where this may fail. For example a circle geometry just at the corner of the raster. the envelopes will intersect but the geometry and raster will not."
– sinDizzy
21 hours ago
Do you have spatial analyst extension? Does the suggestion by mikewatt sound like a possibility?
– Michael Stimson
20 hours ago
Do you have spatial analyst extension? Does the suggestion by mikewatt sound like a possibility?
– Michael Stimson
20 hours ago
I misread the message. I think it will work. I will test with my data.
– sinDizzy
18 hours ago
I misread the message. I think it will work. I will test with my data.
– sinDizzy
18 hours ago
add a comment |
Thanks for contributing an answer to Geographic Information Systems Stack Exchange!
- Please be sure to answer the question. Provide details and share your research!
But avoid …
- Asking for help, clarification, or responding to other answers.
- Making statements based on opinion; back them up with references or personal experience.
To learn more, see our tips on writing great answers.
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
StackExchange.ready(
function () {
StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fgis.stackexchange.com%2fquestions%2f316932%2fdetermining-if-raster-can-be-clipped-with-polygon-using-arcobjects%23new-answer', 'question_page');
}
);
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Sign up or log in
StackExchange.ready(function () {
StackExchange.helpers.onClickDraftSave('#login-link');
});
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Sign up using Google
Sign up using Facebook
Sign up using Email and Password
Post as a guest
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
Required, but never shown
1
I can't speak to vb.net, but you could do a raster to polygon conversion and check against that output. If that's too expensive with a million tiny polygons then convert to a boolean raster before polygonizing.
– mikewatt
22 hours ago
That method has merit @mikewatt, if you have a spatial analyst license you can perform raster to polygon on IsNull(your_raster) then with the query filter of "GRIDCODE = 0" delete searched rows (help.arcgis.com/en/sdk/10.0/arcobjects_net/componenthelp/… FeatureClass implements ITable) to remove the null portion... this is more time consuming but ensures there is actual data in the image the polygon intersects.
– Michael Stimson
22 hours ago
1
Why not just catch and handle the error?
– user2856
22 hours ago
Well I may have many polygons and they can be large. So wouldn't I be doing an extract twice for each polygon that is within the raster?
– sinDizzy
21 hours ago
So test the extents are not disjoint, then do the clip and catch the exception where the envelopes intersect but the geometry and raster don't.
– user2856
20 hours ago