Un índice espacial sólo se puede crear en una columna espacial, es decir, una columna del tipo geometry o geography
Este sirve para indexar las columnas geometricas y agilizar la busqueda de datos geometricos..
Un indice espacial se compone de 4 datos XMIN, YMIN, XMAX, YMAX tambien llamado extent en map suite..
En el siguiente ejemplos e trata de obtener el indice espacial para las tablas de cierta entidad de la republica..
DECLARE @Geom Geometry
DECLARE @XMin AS DECIMAL(10,0), @YMin AS DECIMAL(10,0), @XMax AS DECIMAL(10,0), @YMax AS DECIMAL(10,0)
SELECT @Geom = Geom FROM Estados WHERE IDEstado = @strEstado
SET @Geom = @Geom.STEnvelope();
SET @XMin = CAST(ROUND(@Geom.STPointN(1).STX, 0) AS DECIMAL(10,0))
SET @YMin = CAST(ROUND(@Geom.STPointN(1).STY, 0) AS DECIMAL(10,0))
SET @XMax = CAST(ROUND(@Geom.STPointN(3).STX, 0) AS DECIMAL(10,0))
SET @YMax = CAST(ROUND(@Geom.STPointN(3).STY, 0) AS DECIMAL(10,0))
ahora, supongamos que no tenemos la entidad pero solo tenemos los municipios.
DECLARE @Geom Geometry SET @Geom = GEOMETRY::STGeomFromText('GEOMETRYCOLLECTION EMPTY', 32614)
select @Geom = @Geom.STUnion(Geom) from dbo.Municipios WHERE Geom IS NOT null;
UPDATE dbo.Estados SET Geom = @Geom WHERE IdEstado = @strIdEstado
la union de todos los municipios da por resultado el contorno de un estado y usando la function geometrica STUnion se logra dicha union..
0 comentarios:
Publicar un comentario en la entrada