Pagine

lunedì 19 dicembre 2011

Happy SQL Christmas !!!!

E' natale e siamo tutti più buoni..... Allora mi sono detto.... Perchè non rendere anche SQL Server più buono ? Ma come ? bhè.... Facendogli disegnare un bell'albero di Natale!!! Eh ?!?!? Si si !!! Proprio un albero di Natale.... Ma come fai ? Con i dati Spaziali (come le alabarde di Goldrake !!)
Eccovi lo script :
Set nocount On

Declare @i smallint = 1
Declare @l smallint = 10
Declare @Offset smallint = 10

Declare @x1 smallint = 100
Declare @y1 smallint = 100
Declare @x2 smallint = 150
Declare @y2 smallint = 100
Declare @x3 smallint = 125
Declare @y3 smallint = 115
Declare @x4 smallint = 100
Declare @y4 smallint = 100

Declare @Albero Table
( 
 Id Tinyint IDENTITY (1,1), 
 Triangolo geometry
 
); 
Declare @Palline Table
( 
 Id Tinyint IDENTITY (1,1), 
 Pallina geometry
); 

/***********************************************************/
/* Crea l'albero */
/***********************************************************/
While @i<=@l
Begin

 Insert into @Albero (Triangolo) values
  (geometry::STGeomFromText ('POLYGON (('
     +cast(@x1 as varchar(5))+' '+cast(@y1 as varchar(5))+','
     +cast(@x2 as varchar(5))+' '+cast(@y2 as varchar(5))+','
     +cast(@x3 as varchar(5))+' '+cast(@y3 as varchar(5))+','
     +cast(@x4 as varchar(5))+' '+cast(@y4 as varchar(5))+'))', 0)
  )
 
 Insert into @Palline (Pallina) values
  (geometry::STGeomFromText('POINT(' + cast(@x1 as varchar(5)) + ' ' +cast(@y1 as varchar(5)) +')',0))
 Insert into @Palline (Pallina)  values
  (geometry::STGeomFromText('POINT(' + cast(@x2 as varchar(5)) + ' ' +cast(@y2 as varchar(5)) +')',0))
 Insert into @Palline (Pallina)  values
  (geometry::STGeomFromText('POINT(' + cast(@x3 as varchar(5)) + ' ' +cast(@y3 as varchar(5)) +')',0))

 
 Set @x1 -= @Offset
 Set @x2 += @Offset
 Set @x4 -= @Offset

 Set @y1 -= @Offset
 Set @y2 -= @Offset
 Set @y3 -= @Offset  
 Set @y4 -= @Offset 
 
 Set @i += 1

end

/***********************************************************/
/* Crea il tronco */
/***********************************************************/

Set @x1 = @x3-@Offset
Set @x2 = @x3+@Offset
Set @x3 = @x3+@Offset
Set @x4 = @x2

Insert into @Albero (Triangolo) values
   (geometry::STGeomFromText ('POLYGON (('
     +cast(@x1 as varchar(5))+' '+cast(@y1 as varchar(5))+','
     +cast(@x2 as varchar(5))+' '+cast(@y2 as varchar(5))+','
     +cast(@x2 as varchar(5))+' '+cast(@y3 as varchar(5))+','
     +cast(@x1 as varchar(5))+' '+cast(@y3 as varchar(5))+','
     +cast(@x1 as varchar(5))+' '+cast(@y1 as varchar(5))+'))', 0))

Select 'Happy SQL Christmass !!!'
Select Triangolo from @Albero
union all
Select Pallina.STBuffer(3) from @Palline


Ed ecco il risultato che troverete nel tab Spatial data :

Nessun commento:

Posta un commento