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
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).
[^] # Re: Pénurie nominative
Posté par MaelR . En réponse à la dépêche OrbisGIS : un SIG open source pour la recherche. Évalué à 2.
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 !