2010-05-10 3 views
0

Comment tamponner un IPoint pour faire une vérification d'intersection en utilisant IRelationalOperator?Comment tamponner un IPoint ou un IGeometry? (Comment faire des vérifications d'intersection tamponnée sur un IPoint?)

J'ai, pour des arguments:

IPoint p1 = xxx; 
IPoint p2 = yyy; 
IRelationalOperator rel1 = (IRelationalOperator)p1; 
    if (rel.Intersects (p2)) 
    // Do something 

Mais maintenant, je veux ajouter une tolérance à mon chèque, je suppose donc la bonne façon de le faire est soit mise en mémoire tampon P1 ou P2. Droite? Comment ajouter un tel tampon?

Remarque: la méthode Intersects que j'utilise est une méthode d'extension que j'ai écrite pour simplifier mon code. Le voici:

/// <summary> 
/// Returns true if the IGeometry is intersected. 
/// This method negates the Disjoint method. 
/// </summary> 
/// <param name="relOp">The rel op.</param> 
/// <param name="other">The other.</param> 
/// <returns></returns> 
public static bool Intersects (
    this IRelationalOperator relOp, 
    IGeometry other) 
{ 
    return (!relOp.Disjoint (other)); 
} 
+0

Modification de la balise C#. Voir: http://stackoverflow.com/questions/247621/what-are-the-correct-version-numbers-for-c – chilltemp

Répondre

1

OK, j'ai trouvé la réponse. Ou une réponse. Utilisez l'interface ITopologicalOperator.

IPoint p1 = xxx; 
IPoint p2 = yyy; 
ITopologicalOperator topoOp = (ITopologicalOperator)p2 ; 
IGeometry p2Bufferd = topoOp.Buffer (bufferSize); 

IRelationalOperator rel1 = (IRelationalOperator)p1; 
    if (rel.Intersects (p2Bufferd)) 
    // Do something 
+4

À mon avis, en utilisant IEnvelope.Expand (x, y, false) sur l'enveloppe d'un point de recherche est mieux dans la plupart des cas. Oui, vous pouvez obtenir quelques coups supplémentaires près des coins, mais je pense que les recherches d'enveloppe sont plus rapides que les géométries contenant des arcs circulaires - ce que Buffer renvoie. –

+0

Merci. Je vais regarder dans ça. –

+0

En note, je vois votre nom, mais combien y at-il d'utilisateurs ArcObjects actifs sur stackoverflow? Cela semble assez calme. –

Questions connexes