• [^] # Re: Pénurie nominative

    Posté par . En réponse à la dépêche OrbisGIS : un SIG open source pour la recherche. Évalué à 2.

    Oui, il est possible de faire des requêtes spatiales avec n'importe quel logiciel SIG (c'est la base) ; exemple : trouve-moi les objets de telle "couche" qui se trouvent à moins de 500 m de tel objet (ou de telles coordonnées X, Y).
    Mais ces logiciels font cette requête en utilisant leurs propres routines de calcul. Avec ArcGIS, la bibliothèque ArcObject permet de faire des scripts qui utilise des fonctions / routines spatiales.
    Exemple :


    Dim pTopoOptr As ITopologicalOperator
    Dim dblbufferDist As Double
    Dim pGeom As IGeometry
    Dim pPointInfo as Ipoint
    Dim pBufferPoint as Ipoint

    dblbufferDist = 500
    Set pTopoOptr = pPointInfo
    Set pGeom = pTopoOptr.Buffer(dblbufferDist)
    Set pBufferPoint = pGeom
    Set pSpatialFilterRn.Geometry = pBufferPoint

    'esriSpatialRelContains = on récupère tous les objets de la featureLayerRn
    contenu dans le buffer autour du point

    pSpatialFilterRn.SpatialRel = esriSpatialRelContains
    m_lngI_Rn_Count = g_FeatLayRn.FeatureClass.FeatureCount(pSpatialFilterRn)
    Set m_Rn_FeatureCursor = g_FeatLayRn.FeatureClass.Search(pSpatialFilterRn, False)


    Orbigis utilise du SQL spatial conforme à la norme OGC 1.1. Ainsi, une sélection avec buffer peut s'opérer en enchaînant 2 requêtes SQL simples :

    SELECT Intersection(a.the_geom,b.geom) as the_geom
    FROM
    (SELECT Buffer(the_geom, 500) as the_geom, autonumeric() AS gid
    FROM MaCouche) ;

    (syntaxe à vérifier...)
    Jusqu'à présent seules les bases de données "spatiales" (Oracle et PostGIS) implémentaient ce SQL spatial).

    C'est l'avenir !