Générer du code KML dans SQL 2008

J'ai une table avec la structure suivante:

id, – Clé primaire

minlatitude – point limite d'un carré

minlongitude – point limite d'un carré maxlatitude – point limite d'un carré maxlongitude – point limite d'un carré

CetnerLatitude – Centre d'un centre SquareLongigtude – Centre d'un Square

Les champs min max créent un carré et le centre Lat / Long est pour le point central du carré.

Je veux générer un file KML en utilisant "path xml". Le file KML généré doit ressembler à ceci:

<?xml version="1.0" encoding="UTF-8"?> <kml xmlns="http://www.opengis.net/kml/2.2"> <Document> <Placemark> <name>example</name> <description> dafdafdsaf </description> <Point> <coordinates>102.594411,14.998518</coordinates> </Point> <Polygon> <extrude>1</extrude> <altitudeMode>relativeToGround</altitudeMode> <outerBoundaryIs> <LinearRing> <coordinates> -77.05788457660967,38.87253259892824,100 -77.05465973756702,38.87291016281703,100 -77.05315536854791,38.87053267794386,100 -77.05788457660967,38.87253259892824,100 </coordinates> </LinearRing> </outerBoundaryIs> </Polygon> </Placemark> </Document> </kml>""" 

J'ai commencé à travailler sur la requête SQL xmlpath et j'ai obtenu le résultat suivant:

 declare @id int set @id = 22438 declare @kml xml; with XMLNAMESPACES( 'http://www.opengis.net/gml' as gml, 'http://www.georss.org/georss' as georss ) select @kml = (select some as id , cast([cent_latt] as varchar) + ', ' + cast([cent_long] as varchar) as Point from mytable Where some = @id for xml path('Placemark'), root('Document') ) select @kml 

Quelqu'un peut-il aider à générer le file exact comme mentionné ci-dessus?
Ou est-il un moyen d'utiliser xslt pour le même?

Je ne pouvais pas vraiment comprendre quels noms de colonnes vous avez pour quelles informations, j'ai donc créé un exemple de tableau qui vous montrera comment vous pouvez get les différentes parties dans le XML.

 declare @T table ( Name varchar(50), Description varchar(50), Point varchar(50), Extrude int, AltitudeMode varchar(50), Coordinates varchar(200) ); insert into @T values ('example', 'dafdafdsaf', '102.594411,14.998518', 1, 'relativeToGround', '-77.05788457660967,38.87253259892824,100 -77.05465973756702,38.87291016281703,100 -77.05315536854791,38.87053267794386,100 -77.05788457660967,38.87253259892824,100'); with xmlnamespaces(default 'http://www.opengis.net/kml/2.2') select ( select Name as name, Description as description, Point as 'Point/coordinates', ( select Extrude as extrude, AltitudeMode as altitudeMode, Coordinates as 'outerBoundaryIs/LinearRing/coordinates' for xml path('Polygon'), type ) from @T for xml path('Placemark'), type ) for xml path('Document'), root('kml'); 

Résultat:

 <kml xmlns="http://www.opengis.net/kml/2.2"> <Document> <Placemark xmlns="http://www.opengis.net/kml/2.2"> <name>example</name> <description>dafdafdsaf</description> <Point> <coordinates>102.594411,14.998518</coordinates> </Point> <Polygon xmlns="http://www.opengis.net/kml/2.2"> <extrude>1</extrude> <altitudeMode>relativeToGround</altitudeMode> <outerBoundaryIs> <LinearRing> <coordinates>-77.05788457660967,38.87253259892824,100 -77.05465973756702,38.87291016281703,100 -77.05315536854791,38.87053267794386,100 -77.05788457660967,38.87253259892824,100</coordinates> </LinearRing> </outerBoundaryIs> </Polygon> </Placemark> </Document> </kml>